diff options
author | Kenneth Russel <[email protected]> | 2009-06-15 23:05:16 +0000 |
---|---|---|
committer | Kenneth Russel <[email protected]> | 2009-06-15 23:05:16 +0000 |
commit | 935d2596c13371bb745d921dbcb9f05b0c11a010 (patch) | |
tree | 7fcc310618ae5a90edc734dc821e75afc0f080aa /src | |
parent | e2332d2f2908e68f1e77454c73f329f8ff2b400d (diff) |
Deleted obsolete source code in preparation for copying JOGL_2_SANDBOX
on to trunk
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/../svn-server-sync/jogl-demos/trunk@351 3298f667-5e0e-4b4a-8ed4-a3559d26a5f4
Diffstat (limited to 'src')
232 files changed, 0 insertions, 98340 deletions
diff --git a/src/demos/applets/GearsApplet.java b/src/demos/applets/GearsApplet.java deleted file mode 100755 index 15ea9c7..0000000 --- a/src/demos/applets/GearsApplet.java +++ /dev/null @@ -1,34 +0,0 @@ -package demos.applets; - -import java.applet.*; -import java.awt.*; -import java.io.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import demos.gears.Gears; - -/** Shows how to deploy an applet using JOGL. This demo must be - referenced from a web page via an <applet> tag. */ - -public class GearsApplet extends Applet { - private Animator animator; - - public void init() { - setLayout(new BorderLayout()); - GLCanvas canvas = new GLCanvas(); - canvas.addGLEventListener(new Gears()); - canvas.setSize(getSize()); - add(canvas, BorderLayout.CENTER); - animator = new FPSAnimator(canvas, 60); - } - - public void start() { - animator.start(); - } - - public void stop() { - // FIXME: do I need to do anything else here? - animator.stop(); - } -} diff --git a/src/demos/applets/GearsJOALApplet.java b/src/demos/applets/GearsJOALApplet.java deleted file mode 100755 index e33733a..0000000 --- a/src/demos/applets/GearsJOALApplet.java +++ /dev/null @@ -1,52 +0,0 @@ -package demos.applets; - -import java.applet.*; -import java.awt.*; -import java.io.*; -import javax.swing.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import demos.gears.Gears; -import demos.devmaster.lesson1.*; -import net.java.games.joal.util.*; - -/** Shows how to deploy an applet using both JOGL and JOAL. This demo - must be referenced from a web page via an <applet> tag. */ - -public class GearsJOALApplet extends Applet { - private Animator animator; - - public void init() { - setLayout(new GridLayout(1, 2)); - GLCanvas canvas = new GLCanvas(); - canvas.addGLEventListener(new Gears()); - canvas.setSize(getSize()); - add(canvas); - JPanel joalDemoParent = new JPanel(); - SingleStaticSource joalDemo = new SingleStaticSource(true, joalDemoParent, false); - add(joalDemoParent); - animator = new FPSAnimator(canvas, 60); - } - - public void start() { - animator.start(); - } - - public void stop() { - // FIXME: do I need to do anything else here? - animator.stop(); - // Note that the SingleStaticSource demo does an alutInit() - // internally (on the Event Dispatch Thread), so we should do an - // alutExit() ourselves - try { - EventQueue.invokeAndWait(new Runnable() { - public void run() { - ALut.alutExit(); - } - }); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/src/demos/cg/runtime_ogl/cgGL_vertex_example.cg b/src/demos/cg/runtime_ogl/cgGL_vertex_example.cg deleted file mode 100644 index dae355e..0000000 --- a/src/demos/cg/runtime_ogl/cgGL_vertex_example.cg +++ /dev/null @@ -1,29 +0,0 @@ - -struct appdata -{ - float4 position : POSITION; - float3 normal : NORMAL; - float3 color : DIFFUSE; - float3 TestColor : SPECULAR; -}; - -struct vfconn -{ - float4 HPOS : POSITION; - float4 COL0 : COLOR0; -}; - -vfconn main(appdata IN, - uniform float4 Kd, - uniform float4x4 ModelViewProj) -{ - vfconn OUT; - - OUT.HPOS = mul(ModelViewProj, IN.position); - - OUT.COL0.xyz = Kd.xyz * IN.TestColor.xyz; - OUT.COL0.w = 1.0; - - return OUT; -} // main - diff --git a/src/demos/cg/runtime_ogl/cgGL_vertex_example.java b/src/demos/cg/runtime_ogl/cgGL_vertex_example.java deleted file mode 100644 index f85e26c..0000000 --- a/src/demos/cg/runtime_ogl/cgGL_vertex_example.java +++ /dev/null @@ -1,289 +0,0 @@ -/* - * Portions Copyright (C) 2003 Sun Microsystems, Inc. - * All rights reserved. - */ - -/* - * - * COPYRIGHT NVIDIA CORPORATION 2003. ALL RIGHTS RESERVED. - * BY ACCESSING OR USING THIS SOFTWARE, YOU AGREE TO: - * - * 1) ACKNOWLEDGE NVIDIA'S EXCLUSIVE OWNERSHIP OF ALL RIGHTS - * IN AND TO THE SOFTWARE; - * - * 2) NOT MAKE OR DISTRIBUTE COPIES OF THE SOFTWARE WITHOUT - * INCLUDING THIS NOTICE AND AGREEMENT; - * - * 3) ACKNOWLEDGE THAT TO THE MAXIMUM EXTENT PERMITTED BY - * APPLICABLE LAW, THIS SOFTWARE IS PROVIDED *AS IS* AND - * THAT NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, - * EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED - * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY - * SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES - * WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS - * OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS - * INFORMATION, OR ANY OTHER PECUNIARY LOSS), INCLUDING ATTORNEYS' - * FEES, RELATING TO THE USE OF OR INABILITY TO USE THIS SOFTWARE, - * EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.cg.runtime_ogl; - -import com.sun.opengl.cg.*; -import javax.media.opengl.*; -import javax.media.opengl.glu.*; - -import java.awt.*; -import java.awt.event.*; -import java.io.*; - -/** - * cgGL_vertex_example: simple demo of Nvidia CgGL API. Based upon C version - * distributed with the NVidia Cg Toolkit. Ported to the Java language by - * Christopher Kline 5/29/2003. - */ -public class cgGL_vertex_example implements GLEventListener -{ - - /******************************************************************************/ - /*** Static Data ***/ - /******************************************************************************/ - - private final int TextureRes = 512; - - private GLU glu = new GLU(); - private static CGcontext Context = null; - private static CGprogram Program = null; - private static CGparameter KdParam = null; - private static CGparameter ModelViewProjParam = null; - private static CGparameter TestColorParam = null; - private static /*CGprofile*/ int profile; - - static - { - String os = System.getProperty("os.name").toLowerCase(); - profile = os.startsWith("mac os") ? CgGL.CG_PROFILE_ARBVP1 : CgGL.CG_PROFILE_VP20; - } - - private float LightDiffuse[] = {1.0f, 0.0f, 0.0f, 1.0f}; - private float LightPosition[] = {1.0f, 1.0f, 1.0f, 0.0f}; - - private float CubeNormals[/*6*/][/*3*/] = - { - {-1.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, - {1.0f, 0.0f, 0.0f}, {0.0f, -1.0f, 0.0f}, - {0.0f, 0.0f, 1.0f}, {0.0f, 0.0f, -1.0f} - }; - - private int CubeFaces[/*6*/][/*4*/] = - { - {0, 1, 2, 3}, {3, 2, 6, 7}, {7, 6, 5, 4}, - {4, 5, 1, 0}, {5, 6, 2, 1}, {7, 4, 0, 3} - }; - - private float CubeVertices[][] = new float[8][3]; - -/******************************************************************************/ - - private int MATRIX_INDEX(int i, int j) { return (j + i * 4); } - - private static void CheckCgError() - { - /*CGerror*/ int err = CgGL.cgGetError(); - - if (err != CgGL.CG_NO_ERROR) - { - System.out.println("CG error: " + CgGL.cgGetErrorString(err)); - System.exit(1); - } - } - - - private void DrawCube(GL gl) - { - int i; - - CgGL.cgGLBindProgram(Program); - CheckCgError(); - - /* - * Set various uniform parameters including the ModelViewProjection - * matrix for transforming the incoming position into HPOS. - */ - if(KdParam != null) - CgGL.cgGLSetParameter4f(KdParam, 1.0f, 1.0f, 0.0f, 1.0f); - - /* Set the concatenate modelview and projection matrices */ - if(ModelViewProjParam != null) - CgGL.cgGLSetStateMatrixParameter(ModelViewProjParam, - CgGL.CG_GL_MODELVIEW_PROJECTION_MATRIX, - CgGL.CG_GL_MATRIX_IDENTITY); - - CgGL.cgGLEnableProfile(profile); - - - /* - * Create cube with per-vertex varying attributes - */ - for(i = 0; i < 6; i++) - { - gl.glBegin(GL.GL_QUADS); - - gl.glNormal3f(CubeNormals[i][0], CubeNormals[i][1], CubeNormals[i][0]); - CgGL.cgGLSetParameter3f(TestColorParam, 1.0f, 0.0f, 0.0f); - float[] verts = CubeVertices[CubeFaces[i][0]]; - gl.glVertex3f(verts[0], verts[1], verts[2]); - - CgGL.cgGLSetParameter3f(TestColorParam, 0.0f, 1.0f, 0.0f); - verts = CubeVertices[CubeFaces[i][1]]; - gl.glVertex3f(verts[0], verts[1], verts[2]); - - CgGL.cgGLSetParameter3f(TestColorParam, 0.0f, 0.0f, 1.0f); - verts = CubeVertices[CubeFaces[i][2]]; - gl.glVertex3f(verts[0], verts[1], verts[2]); - - CgGL.cgGLSetParameter3f(TestColorParam, 1.0f, 1.0f, 1.0f); - verts = CubeVertices[CubeFaces[i][3]]; - gl.glVertex3f(verts[0], verts[1], verts[2]); - - gl.glEnd(); - } - - CgGL.cgGLDisableProfile(profile); - } - - public void display(GLAutoDrawable drawable) - { - GL gl = drawable.getGL(); - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - DrawCube(gl); - //glutSwapBuffers(); - } - - void InitializeCube(float v[/*8*/][/*3*/]) - { - /* Setup cube vertex data. */ - v[0][0] = v[1][0] = v[2][0] = v[3][0] = -1; - v[4][0] = v[5][0] = v[6][0] = v[7][0] = 1; - v[0][1] = v[1][1] = v[4][1] = v[5][1] = -1; - v[2][1] = v[3][1] = v[6][1] = v[7][1] = 1; - v[0][2] = v[3][2] = v[4][2] = v[7][2] = 1; - v[1][2] = v[2][2] = v[5][2] = v[6][2] = -1; - } - - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) - { - // nothing - } - - public void init(GLAutoDrawable drawable) - { - // Note: we initialize Cg in this init() method instead of main() - // because Cg (apparently) requires an active OpenGL context in order to - // initialize correctly (otherwise the CheckCgError() call after - // cgGLLoadProgram() will fail). - - /* Test cgContext creation */ - Context = CgGL.cgCreateContext(); - CheckCgError(); - - /* Test adding source text to context */ - try { - Program = CgGL.cgCreateProgramFromStream( - Context, CgGL.CG_SOURCE, - getClass().getClassLoader().getResourceAsStream("demos/cg/runtime_ogl/cgGL_vertex_example.cg"), - profile, null, null); - } catch (IOException e) { - throw new RuntimeException("Error loading Cg vertex program", e); - } - CheckCgError(); - - System.err.println( - "LAST LISTING----" + CgGL.cgGetLastListing(Context) + "----\n"); - - System.err.println( - "---- PROGRAM BEGIN ----\n"+ - CgGL.cgGetProgramString(Program, CgGL.CG_COMPILED_PROGRAM)+ - "---- PROGRAM END ----\n"); - - if(Program != null) - { - CgGL.cgGLLoadProgram(Program); - CheckCgError(); - - KdParam = CgGL.cgGetNamedParameter(Program, "Kd"); - CheckCgError(); - - ModelViewProjParam = CgGL.cgGetNamedParameter(Program, "ModelViewProj"); - CheckCgError(); - - TestColorParam = CgGL.cgGetNamedParameter(Program, "IN.TestColor"); - CheckCgError(); - } - GL gl = drawable.getGL(); - - InitializeCube(CubeVertices); - - /* Enable a single OpenGL light. */ - gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, LightDiffuse, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, LightPosition, 0); - gl.glEnable(GL.GL_LIGHT0); - if (false) { // #if 0 - gl.glEnable(GL.GL_LIGHTING); - } else { // #else - gl.glDisable(GL.GL_LIGHTING); - } // #endif - - /* Use depth buffering for hidden surface elimination. */ - gl.glEnable(GL.GL_DEPTH_TEST); - - /* Setup the view of the cube. */ - gl.glMatrixMode(GL.GL_PROJECTION); - glu.gluPerspective( /* field of view in degree */ 40.0f, - /* aspect ratio */ 1.0f, - /* Z near */ 1.0f, /* Z far */ 10.0f); - gl.glMatrixMode(GL.GL_MODELVIEW); - glu.gluLookAt(0.0f, 0.0f, 5.0f, /* eye is at (0,0,5) */ - 0.0f, 0.0f, 0.0f, /* center is at (0,0,0) */ - 0.0f, 1.0f, 0.); /* up is in positive Y direction */ - - /* Adjust cube position to be asthetic angle. */ - gl.glTranslatef(0.0f, 0.0f, -1.0f); - if (true) { // #if 1 - gl.glRotatef(60, 1.0f, 0.0f, 0.0f); - gl.glRotatef(-20, 0.0f, 0.0f, 1.0f); - } //#endif - - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) - { - // do nothing - } - - public static void main(String[] argv) - { - Frame frame = new Frame("NVidia Cg Toolkit \"cgGL_vertex_example\" demo"); - GLCanvas canvas = new GLCanvas(); - canvas.addGLEventListener(new cgGL_vertex_example()); - - frame.add(canvas); - frame.setSize(500, 500); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - // Run this on another thread than the AWT event queue to - // avoid deadlocks on shutdown on some platforms - new Thread(new Runnable() { - public void run() { - System.exit(0); - } - }).start(); - } - }); - frame.show(); - } -} diff --git a/src/demos/cg/runtime_ogl_vertex_fragment/demo_frag.cg b/src/demos/cg/runtime_ogl_vertex_fragment/demo_frag.cg deleted file mode 100644 index 70206fa..0000000 --- a/src/demos/cg/runtime_ogl_vertex_fragment/demo_frag.cg +++ /dev/null @@ -1,61 +0,0 @@ -/*********************************************************************NVMH3**** - -Copyright NVIDIA Corporation 2002 -TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED -*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS -BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES -WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, -BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) -ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - -Comments: - -******************************************************************************/ - -// Utility functions that return the appropriate components from the vector -// of lighting coefficients returned by the standard library lighting -// funciton, lit(). - -half diffuse(half4 l) { return l.y; } -half specular(half4 l) { return l.z; } - -// Main shader. - -half4 main(float3 Peye : TEXCOORD0, - half3 Neye : TEXCOORD1, - half2 uv : TEXCOORD2, - half3 Kd : COLOR0, - half3 Ks : COLOR1, - uniform sampler2D diffuseMap, - uniform float3 Plight, - uniform half3 lightColor, - uniform half3 shininess) : COLOR -{ - // Normalize surface normal, vector to light source, and vector - // to the viewer - half3 N = normalize(Neye); - half3 L = normalize(Plight - Peye); - half3 V = normalize(-Peye); - - // Compute half-angle vector for specular lighting - half3 H = normalize(L + V); - - // Compute lighting values. lit() returns the diffuse coefficient - // in y (or zero, if NdotL < 0), and the specular coefficient in z - // (or zero, also if NdotL < 0). - half NdotL = dot(N, L), NdotH = dot(N, H); - half4 lighting = lit(NdotL, NdotH, shininess); - - // Compute overall color for the fragment. Scale sum of diffuse - // and specular contributions together and by the light color. - half3 C = lightColor * - (diffuse(lighting) * Kd * (half3)tex2D(diffuseMap, uv).xyz + - specular(lighting) * Ks); - - // Always set the alpha value to 1. - return half4(C, 1); -} diff --git a/src/demos/cg/runtime_ogl_vertex_fragment/demo_vert.cg b/src/demos/cg/runtime_ogl_vertex_fragment/demo_vert.cg deleted file mode 100644 index e767ad3..0000000 --- a/src/demos/cg/runtime_ogl_vertex_fragment/demo_vert.cg +++ /dev/null @@ -1,46 +0,0 @@ -/*********************************************************************NVMH3**** - -Copyright NVIDIA Corporation 2002 -TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED -*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS -BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES -WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, -BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) -ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - -Comments: - -******************************************************************************/ - -void main(float4 Pobject : POSITION, - float3 Nobject : NORMAL, - float2 TexUV : TEXCOORD0, - float3 diffuse : TEXCOORD1, - float3 specular : TEXCOORD2, - uniform float4x4 ModelViewProj, - uniform float4x4 ModelView, - uniform float4x4 ModelViewIT, - - out float4 HPosition : POSITION, - out float3 Peye : TEXCOORD0, - out float3 Neye : TEXCOORD1, - out float2 uv : TEXCOORD2, - out float3 Kd : COLOR0, - out float3 Ks : COLOR1) -{ - // compute homogeneous position of vertex for rasterizer - HPosition = mul(ModelViewProj, Pobject); - // transform position and normal from model-space to view-space - Peye = mul(ModelView, Pobject).xyz; - Neye = mul(ModelViewIT, float4(Nobject, 0)).xyz; - // pass uv, Kd, and Ks through unchanged; if they are varying - // per-vertex, however, they'll be interpolated before being - // passed to the fragment program. - uv = TexUV; - Kd = diffuse; - Ks = specular; -} diff --git a/src/demos/cg/runtime_ogl_vertex_fragment/runtime_ogl_vertex_fragment.java b/src/demos/cg/runtime_ogl_vertex_fragment/runtime_ogl_vertex_fragment.java deleted file mode 100644 index afafd6f..0000000 --- a/src/demos/cg/runtime_ogl_vertex_fragment/runtime_ogl_vertex_fragment.java +++ /dev/null @@ -1,432 +0,0 @@ -/* - * Portions Copyright (C) 2003 Sun Microsystems, Inc. - * All rights reserved. - */ - -/* - * - * COPYRIGHT NVIDIA CORPORATION 2003. ALL RIGHTS RESERVED. - * BY ACCESSING OR USING THIS SOFTWARE, YOU AGREE TO: - * - * 1) ACKNOWLEDGE NVIDIA'S EXCLUSIVE OWNERSHIP OF ALL RIGHTS - * IN AND TO THE SOFTWARE; - * - * 2) NOT MAKE OR DISTRIBUTE COPIES OF THE SOFTWARE WITHOUT - * INCLUDING THIS NOTICE AND AGREEMENT; - * - * 3) ACKNOWLEDGE THAT TO THE MAXIMUM EXTENT PERMITTED BY - * APPLICABLE LAW, THIS SOFTWARE IS PROVIDED *AS IS* AND - * THAT NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, - * EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED - * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY - * SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES - * WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS - * OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS - * INFORMATION, OR ANY OTHER PECUNIARY LOSS), INCLUDING ATTORNEYS' - * FEES, RELATING TO THE USE OF OR INABILITY TO USE THIS SOFTWARE, - * EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.cg.runtime_ogl_vertex_fragment; - -import com.sun.opengl.cg.*; -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.*; - -import java.awt.*; -import java.awt.event.*; -import java.io.*; -import java.nio.*; -import java.util.*; - -/** - * Basic example of the use of the Cg runtime in a simple OpenGL program. - * Ported to Java from NVidia's original C source by Christopher Kline, 06 - * June 2003. Original NVidia copyright is preserved in the source code. - */ -public class runtime_ogl_vertex_fragment implements GLEventListener -{ - - // Global variables: hold the Cg context that we're storing our programs - // in as well as handles to the vertex and fragment program used in this - // demo. - - private GLU glu = new GLU(); - CGcontext context; - CGprogram vertexProgram, fragmentProgram; - - /////////////////////////////////////////////////////////////////////////// - - // Main program; do basic GLUT and Cg setup, but leave most of the work - // to the display() function. - - public static void main(String[] argv) - { - Frame frame = new Frame("Cg demo (runtime_ogl_vertex_fragment)"); - GLCanvas canvas = new GLCanvas(); - canvas.addGLEventListener(new runtime_ogl_vertex_fragment()); - - frame.add(canvas); - frame.setSize(512, 512); - final Animator animator = new Animator(canvas); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - // Run this on another thread than the AWT event queue to - // make sure the call to Animator.stop() completes before - // exiting - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } - }); - frame.show(); - animator.start(); - - // and all the rest happens in the display function... - } - - public void init(GLAutoDrawable drawable) - { - // Use debug pipeline - // drawable.setGL(new DebugGL(drawable.getGL())); - - GL gl = drawable.getGL(); - - // Basic Cg setup; register a callback function for any errors - // and create an initial context - //cgSetErrorCallback(handleCgError); // not yet exposed in Cg binding - context = CgGL.cgCreateContext(); - - // Do one-time setup only once; setup Cg programs and textures - // and set up OpenGL state. - ChooseProfiles(); - LoadCgPrograms(); - LoadTextures(gl); - - gl.glEnable(GL.GL_DEPTH_TEST); - } - - private void CheckCgError() - { - /*CGerror*/ int err = CgGL.cgGetError(); - - if (err != CgGL.CG_NO_ERROR) - { - throw new RuntimeException("CG error: " + CgGL.cgGetErrorString(err)); - } - } - - private static int curTime = 0; - - // display callback function - public void display(GLAutoDrawable drawable) - { - - GL gl = drawable.getGL(); - - // The usual OpenGL stuff to clear the screen and set up viewing. - gl.glClearColor(.25f, .25f, .25f, 1.0f); - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluPerspective(30.0f, 1.0f, .1f, 100); - - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - glu.gluLookAt(4, 4, -4, 0, 0, 0, 0, 1, 0); - - // Make the object rotate a bit each time the display function - // is called - gl.glRotatef(curTime, 0, 1, 0); - - // Now make sure that the vertex and fragment programs, loaded - // in LoadCgPrograms() are bound. - CgGL.cgGLBindProgram(vertexProgram); - CgGL.cgGLBindProgram(fragmentProgram); - - // Bind uniform parameters to vertex shader - CgGL.cgGLSetStateMatrixParameter(CgGL.cgGetNamedParameter(vertexProgram, "ModelViewProj"), - CgGL.CG_GL_MODELVIEW_PROJECTION_MATRIX, - CgGL.CG_GL_MATRIX_IDENTITY); - CgGL.cgGLSetStateMatrixParameter(CgGL.cgGetNamedParameter(vertexProgram, "ModelView"), - CgGL.CG_GL_MODELVIEW_MATRIX, - CgGL.CG_GL_MATRIX_IDENTITY); - CgGL.cgGLSetStateMatrixParameter(CgGL.cgGetNamedParameter(vertexProgram, "ModelViewIT"), - CgGL.CG_GL_MODELVIEW_MATRIX, - CgGL.CG_GL_MATRIX_INVERSE_TRANSPOSE); - - // We can also go ahead and bind varying parameters to vertex shader - // that we just want to have the same value for all vertices. The - // vertex shader could be modified so that these were uniform for - // better efficiency, but this gives us flexibility for the future. - float Kd[] = { .7f, .2f, .2f }, Ks[] = { .9f, .9f, .9f }; - CgGL.cgGLSetParameter3fv(CgGL.cgGetNamedParameter(vertexProgram, "diffuse"), Kd, 0); - CgGL.cgGLSetParameter3fv(CgGL.cgGetNamedParameter(vertexProgram, "specular"), Ks, 0); - - // Now bind uniform parameters to fragment shader - float lightPos[] = { 3, 2, -3 }; - CgGL.cgGLSetParameter3fv(CgGL.cgGetNamedParameter(fragmentProgram, "Plight"), lightPos, 0); - float lightColor[] = { 1, 1, 1 }; - CgGL.cgGLSetParameter3fv(CgGL.cgGetNamedParameter(fragmentProgram, "lightColor"), - lightColor, 0); - CgGL.cgGLSetParameter1f(CgGL.cgGetNamedParameter(fragmentProgram, "shininess"), 40); - - // And finally, enable the approprate texture for fragment shader; the - // texture was originally set up in LoadTextures(). - CgGL.cgGLEnableTextureParameter(CgGL.cgGetNamedParameter(fragmentProgram, - "diffuseMap")); - // And go ahead and draw the scene geometry - DrawGeometry(gl); - - // Disable the texture now that we're done with it. - CgGL.cgGLDisableTextureParameter(CgGL.cgGetNamedParameter(fragmentProgram, - "diffuseMap")); - - ++curTime; - } - - - // Choose the vertex and fragment profiles to use. Try to use - // CG_PROFILE_ARBVFP1 and CG_PROFILE_ARBFP1, depending on hardware support. - // If those aren't available, fall back to CG_PROFILE_VP30 and - // CG_PROFILE_FP30, respectively. - - int /*CGprofile*/ vertexProfile, fragmentProfile; - - void ChooseProfiles() - { - // Make sure that the appropriate profiles are available on the - // user's system. - if (CgGL.cgGLIsProfileSupported(CgGL.CG_PROFILE_ARBVP1)) - vertexProfile = CgGL.CG_PROFILE_ARBVP1; - else { - // try VP30 - if (CgGL.cgGLIsProfileSupported(CgGL.CG_PROFILE_VP30)) - vertexProfile = CgGL.CG_PROFILE_VP30; - else { - System.out.println("Neither arbvp1 or vp30 vertex profiles supported on this system.\n"); - System.exit(1); - } - } - - if (CgGL.cgGLIsProfileSupported(CgGL.CG_PROFILE_ARBFP1)) - fragmentProfile = CgGL.CG_PROFILE_ARBFP1; - else { - // try FP30 - if (CgGL.cgGLIsProfileSupported(CgGL.CG_PROFILE_FP30)) - fragmentProfile = CgGL.CG_PROFILE_FP30; - else { - System.out.println("Neither arbfp1 or fp30 fragment profiles supported on this system.\n"); - System.exit(1); - } - } - } - - - void LoadCgPrograms() - { - assert(CgGL.cgIsContext(context)); - - // Load and compile the vertex program from demo_vert.cg; hold on to the - // handle to it that is returned. - try { - vertexProgram = CgGL.cgCreateProgramFromStream(context, CgGL.CG_SOURCE, - getClass().getClassLoader().getResourceAsStream("demos/cg/runtime_ogl_vertex_fragment/demo_vert.cg"), - vertexProfile, null, null); - } catch (IOException e) { - throw new RuntimeException("Error loading Cg vertex program", e); - } - if (!CgGL.cgIsProgramCompiled(vertexProgram)) - CgGL.cgCompileProgram(vertexProgram); - - // Enable the appropriate vertex profile and load the vertex program. - CgGL.cgGLEnableProfile(vertexProfile); - CgGL.cgGLLoadProgram(vertexProgram); - - // And similarly set things up for the fragment program. - try { - fragmentProgram = CgGL.cgCreateProgramFromStream(context, CgGL.CG_SOURCE, - getClass().getClassLoader().getResourceAsStream("demos/cg/runtime_ogl_vertex_fragment/demo_frag.cg"), - fragmentProfile, null, null); - } catch (IOException e) { - throw new RuntimeException("Error loading Cg fragment program", e); - } - if (!CgGL.cgIsProgramCompiled(fragmentProgram)) { - CgGL.cgCompileProgram(fragmentProgram); - } - - CgGL.cgGLEnableProfile(fragmentProfile); - CgGL.cgGLLoadProgram(fragmentProgram); - } - - void LoadTextures(GL gl) - { - // There is only one texture needed here--we'll set up a basic - // checkerboard--which is used to modulate the diffuse channel in the - // fragment shader. - int[] handle = new int[1]; - gl.glGenTextures(1, handle, 0); - - // Basic OpenGL texture state setup - gl.glBindTexture(GL.GL_TEXTURE_2D, handle[0]); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_GENERATE_MIPMAP_SGIS, GL.GL_TRUE); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_LINEAR); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE); - - // Fill in the texture map. - final int RES = 512; - float[] data = new float[RES*RES*4]; - int dp = 0; - for (int i = 0; i < RES; ++i) { - for (int j = 0; j < RES; ++j) { - if ((i/32+j/32) % 2 != 0) { - data[dp++] = .7f; - data[dp++] = .7f; - data[dp++] = .7f; - } - else { - data[dp++] = .1f; - data[dp++] = .1f; - data[dp++] = .1f; - } - data[dp++] = 1.0f; - } - } - - gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGBA, RES, RES, 0, GL.GL_RGBA, GL.GL_FLOAT, FloatBuffer.wrap(data)); - - // Tell Cg which texture handle should be associated with the sampler2D - // parameter to the fragment shader. - CgGL.cgGLSetTextureParameter(CgGL.cgGetNamedParameter(fragmentProgram, "diffuseMap"), - handle[0]); - } - - private int VERTEX(int u, int v, int nu) { return (u + v * nu); } - - // Geometry creation and drawing function; we'll just draw a sphere. - - private static FloatBuffer P, N, uv; - private static IntBuffer indices; - void DrawGeometry(GL gl) - { - // Cache the sphere positions, normals, texture coordinates, and - // vertex indices in a local array; we only need to fill them in the - // first time through this function. - int nu = 30, nv = 30; - int nTris = 2*(nu-1)*(nv-1), nVerts = nu*nv; - if (P == null) { - int u, v; - - P = BufferUtil.newFloatBuffer(3*nVerts); - N = BufferUtil.newFloatBuffer(3*nVerts); - uv = BufferUtil.newFloatBuffer(2*nVerts); - - // Fill in the position, normal, and texture coordinate arrays. - // Just loop over all of the vertices, compute their parametreic - // (u,v) coordinates (which we use for texture coordinates as - // well), and call the ParametricEval() function, which turns (u,v) - // coordinates into positions and normals on the surface of the - // object. - int pp = 0, np = 0, uvp = 0; - for (v = 0; v < nv; ++v) { - float fv = (float)v / (float)(nv-1); - for (u = 0; u < nu; ++u) { - float fu = (float)u / (float)(nu-1); - uv.put(uvp, fu); - uv.put(uvp+1, fv); - ParametricEval(fu, fv, pp, P, np, N); - pp += 3; - np += 3; - uvp += 2; - } - } - - // Now fill in the vertex index arrays - indices = BufferUtil.newIntBuffer(3*nTris); - int ip = 0; - for (v = 0; v < nv-1; ++v) { - for (u = 0; u < nu-1; ++u) { - indices.put(ip++, VERTEX(u, v, nu)); - indices.put(ip++, VERTEX(u+1, v, nu)); - indices.put(ip++, VERTEX(u+1, v+1, nu)); - - indices.put(ip++, VERTEX(u, v, nu)); - indices.put(ip++, VERTEX(u+1, v+1, nu)); - indices.put(ip++, VERTEX(u, v+1, nu)); - } - } - // Tell Cg which of these data pointers are associated with which - // parameters to the vertex shader, so that when we call - // cgGLEnableClientState() and then glDrawElements(), the shader - // gets the right input information. - CGparameter param = CgGL.cgGetNamedParameter(vertexProgram, "Pobject"); - CgGL.cgGLSetParameterPointer(param, 3, GL.GL_FLOAT, 0, P); - param = CgGL.cgGetNamedParameter(vertexProgram, "Nobject"); - CgGL.cgGLSetParameterPointer(param, 3, GL.GL_FLOAT, 0, N); - param = CgGL.cgGetNamedParameter(vertexProgram, "TexUV"); - CgGL.cgGLSetParameterPointer(param, 2, GL.GL_FLOAT, 0, uv); - } - - // And now, each time through, enable the bindings to the parameters - // that we set up the first time through - CGparameter param = CgGL.cgGetNamedParameter(vertexProgram, "Pobject"); - CgGL.cgGLEnableClientState(param); - param = CgGL.cgGetNamedParameter(vertexProgram, "Nobject"); - CgGL.cgGLEnableClientState(param); - param = CgGL.cgGetNamedParameter(vertexProgram, "TexUV"); - CgGL.cgGLEnableClientState(param); - - // Enable the texture parameter as well. - param = CgGL.cgGetNamedParameter(fragmentProgram, "diffuseMap"); - CgGL.cgGLEnableTextureParameter(param); - - // And now, draw the geometry. - gl.glDrawElements(GL.GL_TRIANGLES, 3*nTris, GL.GL_UNSIGNED_INT, indices); - - // Be a good citizen and disable the various bindings we set up above. - param = CgGL.cgGetNamedParameter(vertexProgram, "Pobject"); - CgGL.cgGLDisableClientState(param); - param = CgGL.cgGetNamedParameter(vertexProgram, "Nobject"); - CgGL.cgGLDisableClientState(param); - param = CgGL.cgGetNamedParameter(vertexProgram, "TexUV"); - CgGL.cgGLDisableClientState(param); - - param = CgGL.cgGetNamedParameter(fragmentProgram, "diffuseMap"); - CgGL.cgGLDisableTextureParameter(param); - } - - void ParametricEval(float u, float v, int offsetP, FloatBuffer p, int offsetN, FloatBuffer N) - { - float theta = (float)Math.PI * u, phi = (float)(2.0 * Math.PI * v); - P.put(offsetP + 0, (float)(Math.sin(theta) * Math.sin(phi))); - P.put(offsetP + 1, (float)(Math.sin(theta) * Math.cos(phi))); - P.put(offsetP + 2, (float)(Math.cos(theta))); - - N.put(offsetN + 0, P.get(offsetP + 0)); - N.put(offsetN + 1, P.get(offsetP + 1)); - N.put(offsetN + 2, P.get(offsetP + 2)); - } - - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) - { - // nothing - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) - { - // do nothing - } - -} diff --git a/src/demos/common/Demo.java b/src/demos/common/Demo.java deleted file mode 100755 index 00f5956..0000000 --- a/src/demos/common/Demo.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.common; - -import javax.media.opengl.*; - -public abstract class Demo implements GLEventListener { - protected DemoListener demoListener; - private boolean doShutdown = true; - - public void setDemoListener(DemoListener listener) { - this.demoListener = listener; - } - - // Override this with any other cleanup actions - public void shutdownDemo() { - // Execute only once - boolean shouldDoShutdown = doShutdown; - doShutdown = false; - if (shouldDoShutdown) { - demoListener.shutdownDemo(); - } - } -} diff --git a/src/demos/common/DemoListener.java b/src/demos/common/DemoListener.java deleted file mode 100755 index 95b5e9c..0000000 --- a/src/demos/common/DemoListener.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.common; - -/** Defines certain events demos can send. Different harnesses - may respond differently to these events. */ -public interface DemoListener { - /** Indicates that the demo wants to be terminated. */ - public void shutdownDemo(); - - /** Indicates that a repaint should be scheduled later. */ - public void repaint(); -} diff --git a/src/demos/context/DualContext.java b/src/demos/context/DualContext.java deleted file mode 100755 index ae7865f..0000000 --- a/src/demos/context/DualContext.java +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.context; - -import java.awt.*; -import java.awt.event.*; -import javax.swing.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; - -/** This demo illustrates the use of the GLDrawable and GLContext APIs - to create two OpenGL contexts for the same Canvas. The red and - blue portions of the canvas are drawn with separate OpenGL - contexts. The front and back buffers of the GLDrawable are swapped - using the GLDrawable.swapBuffers() API. */ - -public class DualContext extends Canvas { - private GLDrawable drawable; - private GLContext context1; - private GLContext context2; - private GLU glu; - private GLUT glut; - private int repaintNum; - - public DualContext(GLCapabilities capabilities) { - super(unwrap((AWTGraphicsConfiguration) - GLDrawableFactory.getFactory().chooseGraphicsConfiguration(capabilities, null, null))); - drawable = GLDrawableFactory.getFactory().getGLDrawable(this, capabilities, null); - context1 = drawable.createContext(null); - context2 = drawable.createContext(null); - glu = new GLU(); - glut = new GLUT(); - } - - public void addNotify() { - super.addNotify(); - drawable.setRealized(true); - } - - public void removeNotify() { - context1.destroy(); - context2.destroy(); - drawable.setRealized(false); - } - - public void paint(Graphics g) { - int width = getWidth(); - int height = getHeight(); - int mid = width / 2; - String str = "" + (++repaintNum); - int res = context1.makeCurrent(); - if (res != GLContext.CONTEXT_NOT_CURRENT) { - clearAndDraw(context1.getGL(), - 1, 0, 0, - 0, 0, mid, height, str); - context1.release(); - } - - res = context2.makeCurrent(); - if (res != GLContext.CONTEXT_NOT_CURRENT) { - clearAndDraw(context2.getGL(), - 0, 0, 1, - mid, 0, width - mid, height, str); - context2.release(); - } - - drawable.swapBuffers(); - } - - private void clearAndDraw(GL gl, - float br, - float bg, - float bb, - int x, - int y, - int width, - int height, - String str) { - gl.glViewport(x, y, width, height); - gl.glScissor(x, y, width, height); - gl.glEnable(GL.GL_SCISSOR_TEST); - gl.glClearColor(br, bg, bb, 1); - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - float length = glut.glutStrokeLengthf(GLUT.STROKE_ROMAN, str); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluOrtho2D(x, x + width, y, y + height); - gl.glTranslatef(x + (width - length) / 2, y + height / 2, 0); - glut.glutStrokeString(GLUT.STROKE_ROMAN, str); - } - - public static void main(String[] args) { - JFrame frame = new JFrame("Dual OpenGL Context Test"); - final DualContext dc = new DualContext(new GLCapabilities()); - frame.getContentPane().add(dc, BorderLayout.CENTER); - JButton button = new JButton("Repaint"); - button.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - dc.repaint(); - } - }); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.getContentPane().add(button, BorderLayout.SOUTH); - frame.setSize(800, 400); - frame.setVisible(true); - } - - private static GraphicsConfiguration unwrap(AWTGraphicsConfiguration config) { - if (config == null) { - return null; - } - return config.getGraphicsConfiguration(); - } -} diff --git a/src/demos/cubefbo/CubeObject.java b/src/demos/cubefbo/CubeObject.java deleted file mode 100755 index 09a9be5..0000000 --- a/src/demos/cubefbo/CubeObject.java +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.cubefbo; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import java.nio.*; - -class CubeObject { - public CubeObject (boolean useTexCoords) { - // Initialize data Buffers - this.cubeVertices = BufferUtil.newShortBuffer(s_cubeVertices.length); - cubeVertices.put(s_cubeVertices); - cubeVertices.rewind(); - - this.cubeColors = BufferUtil.newByteBuffer(s_cubeColors.length); - cubeColors.put(s_cubeColors); - cubeColors.rewind(); - - this.cubeNormals = BufferUtil.newByteBuffer(s_cubeNormals.length); - cubeNormals.put(s_cubeNormals); - cubeNormals.rewind(); - - this.cubeIndices = BufferUtil.newByteBuffer(s_cubeIndices.length); - cubeIndices.put(s_cubeIndices); - cubeIndices.rewind(); - - if (useTexCoords) { - this.cubeTexCoords = BufferUtil.newShortBuffer(s_cubeTexCoords.length); - cubeTexCoords.put(s_cubeTexCoords); - cubeTexCoords.rewind(); - } - } - - private void perspective(GL gl, float fovy, float aspect, float zNear, float zFar) { - float xmin; - float xmax; - float ymin; - float ymax; - - ymax = zNear * (float)Math.tan((fovy * Math.PI) / 360.0); - ymin = -ymax; - xmin = ymin * aspect; - xmax = ymax * aspect; - - gl.glFrustum(xmin, xmax, ymin, ymax, zNear, zFar); - } - - static final float[] light_position = { -50.f, 50.f, 50.f, 0.f }; - static final float[] light_ambient = { 0.125f, 0.125f, 0.125f, 1.f }; - static final float[] light_diffuse = { 1.0f, 1.0f, 1.0f, 1.f }; - static final float[] material_spec = { 1.0f, 1.0f, 1.0f, 0.f }; - static final float[] zero_vec4 = { 0.0f, 0.0f, 0.0f, 0.f }; - - public void reshape(GL gl, int x, int y, int width, int height) { - float aspect = (height != 0) ? ((float)width / (float)height) : 1.0f; - - gl.glViewport(0, 0, width, height); - gl.glScissor(0, 0, width, height); - - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, light_position, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, light_ambient, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, light_diffuse, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_SPECULAR, zero_vec4, 0); - gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_SPECULAR, material_spec, 0); - - gl.glEnable(GL.GL_NORMALIZE); - gl.glEnable(GL.GL_LIGHTING); - gl.glEnable(GL.GL_LIGHT0); - gl.glEnable(GL.GL_COLOR_MATERIAL); - gl.glEnable(GL.GL_CULL_FACE); - - gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_FASTEST); - - gl.glShadeModel(GL.GL_SMOOTH); - gl.glDisable(GL.GL_DITHER); - - gl.glClearColor(0.0f, 0.1f, 0.0f, 1.0f); - - gl.glEnableClientState(GL.GL_VERTEX_ARRAY); - gl.glEnableClientState(GL.GL_NORMAL_ARRAY); - gl.glEnableClientState(GL.GL_COLOR_ARRAY); - if (cubeTexCoords != null) { - gl.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY); - } else { - gl.glDisableClientState(GL.GL_TEXTURE_COORD_ARRAY); - } - - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - - perspective(gl, 55.f, aspect, 0.1f, 100.f); - gl.glCullFace(GL.GL_BACK); - } - - public void display(GL gl, float xRot, float yRot) { - // System.out.println("CubeObject .. p1: "+this); - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - // Draw a green square using MIDP - //g.setColor(0, 255, 0); - //g.fillRect(20, 20, width - 40, height - 40); - - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - - gl.glTranslatef(0.f, 0.f, -30.f); - // gl.glTranslatef(0.f, 0.f, -30.f); - // gl.glRotatef((float)(time * 29.77f), 1.0f, 2.0f, 0.0f); - // gl.glRotatef((float)(time * 22.311f), -0.1f, 0.0f, -5.0f); - gl.glRotatef(yRot, 0, 1, 0); - gl.glRotatef(xRot, 1, 0, 0); - - gl.glVertexPointer(3, GL.GL_SHORT, 0, cubeVertices); - gl.glColorPointer(4, GL.GL_UNSIGNED_BYTE, 0, cubeColors); - gl.glNormalPointer(GL.GL_BYTE, 0, cubeNormals); - if (cubeTexCoords != null) { - gl.glTexCoordPointer(2, GL.GL_SHORT, 0, cubeTexCoords); - gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_REPLACE); - } - - // System.out.println("CubeObject .. p8: "+this); - gl.glDrawElements(GL.GL_TRIANGLES, 6 * 6, GL.GL_UNSIGNED_BYTE, cubeIndices); - // System.out.println("CubeObject .. p9: "+this); - - // time += 0.01f; - } - - boolean initialized = false; - // float time = 0.0f; - - ShortBuffer cubeVertices; - ShortBuffer cubeTexCoords; - // FloatBuffer cubeTexCoords; - ByteBuffer cubeColors; - ByteBuffer cubeNormals; - ByteBuffer cubeIndices; - - private static final short[] s_cubeVertices = - { - -10, 10, 10, 10, -10, 10, 10, 10, 10, -10, -10, 10, - - -10, 10, -10, 10, -10, -10, 10, 10, -10, -10, -10, -10, - - -10, -10, 10, 10, -10, -10, 10, -10, 10, -10, -10, -10, - - -10, 10, 10, 10, 10, -10, 10, 10, 10, -10, 10, -10, - - 10, -10, 10, 10, 10, -10, 10, 10, 10, 10, -10, -10, - - -10, -10, 10, -10, 10, -10, -10, 10, 10, -10, -10, -10 - }; - - private static final short[] s_cubeTexCoords = - { - 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0, - - 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0, - - 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0, - - 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0, - - 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0, - - 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0, - }; - - private static final byte[] s_cubeColors = - { - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255 - }; - - /* - private static final byte[] s_cubeColors = - { - (byte)40, (byte)80, (byte)160, (byte)255, (byte)40, (byte)80, (byte)160, (byte)255, - (byte)40, (byte)80, (byte)160, (byte)255, (byte)40, (byte)80, (byte)160, (byte)255, - - (byte)40, (byte)80, (byte)160, (byte)255, (byte)40, (byte)80, (byte)160, (byte)255, - (byte)40, (byte)80, (byte)160, (byte)255, (byte)40, (byte)80, (byte)160, (byte)255, - - (byte)128, (byte)128, (byte)128, (byte)255, (byte)128, (byte)128, (byte)128, (byte)255, - (byte)128, (byte)128, (byte)128, (byte)255, (byte)128, (byte)128, (byte)128, (byte)255, - - (byte)128, (byte)128, (byte)128, (byte)255, (byte)128, (byte)128, (byte)128, (byte)255, - (byte)128, (byte)128, (byte)128, (byte)255, (byte)128, (byte)128, (byte)128, (byte)255, - - (byte)255, (byte)110, (byte)10, (byte)255, (byte)255, (byte)110, (byte)10, (byte)255, - (byte)255, (byte)110, (byte)10, (byte)255, (byte)255, (byte)110, (byte)10, (byte)255, - - (byte)255, (byte)70, (byte)60, (byte)255, (byte)255, (byte)70, (byte)60, (byte)255, - (byte)255, (byte)70, (byte)60, (byte)255, (byte)255, (byte)70, (byte)60, (byte)255 - }; - */ - - private static final byte[] s_cubeIndices = - { - 0, 3, 1, 2, 0, 1, /* front */ - 6, 5, 4, 5, 7, 4, /* back */ - 8, 11, 9, 10, 8, 9, /* top */ - 15, 12, 13, 12, 14, 13, /* bottom */ - 16, 19, 17, 18, 16, 17, /* right */ - 23, 20, 21, 20, 22, 21 /* left */ - }; - private static final byte[] s_cubeNormals = - { - 0, 0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127, - - 0, 0, -128, 0, 0, -128, 0, 0, -128, 0, 0, -128, - - 0, -128, 0, 0, -128, 0, 0, -128, 0, 0, -128, 0, - - 0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127, 0, - - 127, 0, 0, 127, 0, 0, 127, 0, 0, 127, 0, 0, - - -128, 0, 0, -128, 0, 0, -128, 0, 0, -128, 0, 0 - }; -} - diff --git a/src/demos/cubefbo/FBCubes.java b/src/demos/cubefbo/FBCubes.java deleted file mode 100755 index 3295c01..0000000 --- a/src/demos/cubefbo/FBCubes.java +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.cubefbo; - -import java.awt.event.*; -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import java.nio.*; - -class FBCubes implements GLEventListener, MouseListener, MouseMotionListener { - private static final int FBO_SIZE = 128; - - public FBCubes () { - cubeInner = new CubeObject(false); - cubeMiddle = new CubeObject(true); - cubeOuter = new CubeObject(true); - fbo1 = new FBObject(FBO_SIZE, FBO_SIZE); - fbo2 = new FBObject(FBO_SIZE, FBO_SIZE); - } - - public void init(GLAutoDrawable drawable) { - drawable.setGL(new DebugGL(drawable.getGL())); - GL gl = drawable.getGL(); - fbo1.init(gl); - fbo2.init(gl); - drawable.addMouseListener(this); - drawable.addMouseMotionListener(this); - } - - int x, y, width, height; - float motionIncr; - float xRot, yRot; - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { - this.x = x; - this.y = y; - this.width = width; - this.height = height; - cubeOuter.reshape(drawable.getGL(), x, y, width, height); - motionIncr = 180.f / Math.max(width, height); - } - - public void display(GLAutoDrawable drawable) { - // System.out.println("display"); - GL gl = drawable.getGL(); - - fbo1.bind(gl); - cubeInner.reshape(gl, 0, 0, FBO_SIZE, FBO_SIZE); - cubeInner.display(gl, xRot, yRot); - fbo1.unbind(gl); - - FBObject tex = fbo1; - FBObject rend = fbo2; - - int MAX_ITER = 1; - - for (int i = 0; i < MAX_ITER; i++) { - rend.bind(gl); - gl.glEnable (GL.GL_TEXTURE_2D); - gl.glBindTexture(GL.GL_TEXTURE_2D, tex.getTextureName()); // to use it .. - cubeMiddle.reshape(gl, 0, 0, FBO_SIZE, FBO_SIZE); - cubeMiddle.display(gl, xRot, yRot); - gl.glBindTexture(GL.GL_TEXTURE_2D, 0); - gl.glDisable (GL.GL_TEXTURE_2D); - rend.unbind(gl); - FBObject tmp = tex; - tex = rend; - rend = tmp; - } - - // System.out.println("display .. p6"); - cubeOuter.reshape(gl, x, y, width, height); - // System.out.println("display .. p7"); - - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - gl.glClearColor(0, 0, 0, 1); - - gl.glEnable (GL.GL_TEXTURE_2D); - gl.glBindTexture(GL.GL_TEXTURE_2D, tex.getTextureName()); // to use it .. - cubeOuter.display(gl, xRot, yRot); - // System.out.println("display .. p8"); - gl.glBindTexture(GL.GL_TEXTURE_2D, 0); - gl.glDisable (GL.GL_TEXTURE_2D); - } - - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) { - } - - private boolean dragging; - private int lastDragX; - private int lastDragY; - - public void mouseClicked(MouseEvent e) {} - public void mousePressed(MouseEvent e) {} - public void mouseReleased(MouseEvent e) { - dragging = false; - } - public void mouseEntered(MouseEvent e) {} - public void mouseExited(MouseEvent e) {} - public void mouseDragged(MouseEvent e) { - if (!dragging) { - dragging = true; - lastDragX = e.getX(); - lastDragY = e.getY(); - } else { - yRot += (e.getX() - lastDragX) * motionIncr; - xRot += (e.getY() - lastDragY) * motionIncr; - lastDragX = e.getX(); - lastDragY = e.getY(); - } - } - public void mouseMoved(MouseEvent e) {} - - CubeObject cubeInner; - CubeObject cubeMiddle; - CubeObject cubeOuter; - FBObject fbo1; - FBObject fbo2; -} - diff --git a/src/demos/cubefbo/FBObject.java b/src/demos/cubefbo/FBObject.java deleted file mode 100755 index a55096f..0000000 --- a/src/demos/cubefbo/FBObject.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.cubefbo; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import java.nio.*; - -class FBObject { - private int fb, fbo_tex, depth_rb, stencil_rb, width, height; - - public FBObject(int width, int height) { - - this.width = width; - this.height = height; - } - - public void init(GL gl) { - // generate fbo .. - int name[] = new int[1]; - - gl.glGenTextures(1, name, 0); - fbo_tex = name[0]; - System.out.println("fbo_tex: "+fbo_tex); - - gl.glBindTexture(GL.GL_TEXTURE_2D, fbo_tex); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); - gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGB8, width, height, 0, - GL.GL_RGB, GL.GL_UNSIGNED_BYTE, null); - - gl.glGenRenderbuffersEXT(1, name, 0); - depth_rb = name[0]; - System.out.println("depth_rb: "+depth_rb); - - // Initialize the depth buffer: - gl.glBindRenderbufferEXT(GL.GL_RENDERBUFFER_EXT, depth_rb); - gl.glRenderbufferStorageEXT(GL.GL_RENDERBUFFER_EXT, - GL.GL_DEPTH_COMPONENT24, width, height); - - // gl.glGenRenderbuffersEXT(1, name, 0); - // stencil_rb = name[0]; - stencil_rb = 0; - System.out.println("stencil_rb: "+stencil_rb); - - gl.glGenFramebuffersEXT(1, name, 0); - fb = name[0]; - System.out.println("fb: "+fb); - - // bind fbo .. - gl.glBindFramebufferEXT(GL.GL_FRAMEBUFFER_EXT, fb); - - // Set up the color buffer for use as a renderable texture: - gl.glFramebufferTexture2DEXT(GL.GL_FRAMEBUFFER_EXT, - GL.GL_COLOR_ATTACHMENT0_EXT, - GL.GL_TEXTURE_2D, fbo_tex, 0); - - // Set up the depth buffer attachment: - gl.glFramebufferRenderbufferEXT(GL.GL_FRAMEBUFFER_EXT, - GL.GL_DEPTH_ATTACHMENT_EXT, - GL.GL_RENDERBUFFER_EXT, depth_rb); - - if(stencil_rb!=0) { - // Initialize the stencil buffer: - gl.glBindRenderbufferEXT(GL.GL_RENDERBUFFER_EXT, stencil_rb); - - gl.glRenderbufferStorageEXT(GL.GL_RENDERBUFFER_EXT, - GL.GL_STENCIL_INDEX8_EXT, width, height); - - gl.glFramebufferRenderbufferEXT(GL.GL_FRAMEBUFFER_EXT, - GL.GL_STENCIL_ATTACHMENT_EXT, - GL.GL_RENDERBUFFER_EXT, stencil_rb); - } - unbind(gl); - } - - public void bind(GL gl) { - gl.glBindFramebufferEXT(GL.GL_FRAMEBUFFER_EXT, fb); - } - - public void unbind(GL gl) { - // gl.glBindTexture(GL.GL_TEXTURE_2D, 0); - // gl.glDisable (GL.GL_TEXTURE_2D); - gl.glBindFramebufferEXT(GL.GL_FRAMEBUFFER_EXT, 0); - } - - public int getFBName() { - return fb; - } - public int getTextureName() { - return fbo_tex; - } -} - diff --git a/src/demos/cubefbo/Main.java b/src/demos/cubefbo/Main.java deleted file mode 100755 index bb2d479..0000000 --- a/src/demos/cubefbo/Main.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.cubefbo; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import java.nio.*; -import java.awt.*; -import java.awt.event.*; -import java.applet.*; - -public class Main -{ - - private Animator animator; - -/** - public void init() { - setLayout(new BorderLayout()); - GLCanvas canvas = new GLCanvas(); - canvas.addGLEventListener(new FBCubes()); - canvas.setSize(getSize()); - add(canvas, BorderLayout.CENTER); - animator = new FPSAnimator(canvas, 30); - } - - public void start() { - animator.start(); - } - - public void stop() { - // FIXME: do I need to do anything else here? - animator.stop(); - } - */ - - public static void main(String[] args) { - Frame frame = new Frame("FBCubes Demo ES 1.1"); - GLCapabilities caps = new GLCapabilities(); - GLCanvas canvas = new GLCanvas(caps); - canvas.addGLEventListener(new FBCubes()); - frame.add(canvas); - frame.setSize(800, 480); - final Animator animator = new FPSAnimator(canvas, 60); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - // Run this on another thread than the AWT event queue to - // make sure the call to Animator.stop() completes before - // exiting - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } - }); - - frame.show(); - animator.start(); - } -} - diff --git a/src/demos/data/cubemaps/CloudyHills_negx.tga b/src/demos/data/cubemaps/CloudyHills_negx.tga Binary files differdeleted file mode 100644 index 2528709..0000000 --- a/src/demos/data/cubemaps/CloudyHills_negx.tga +++ /dev/null diff --git a/src/demos/data/cubemaps/CloudyHills_negy.tga b/src/demos/data/cubemaps/CloudyHills_negy.tga Binary files differdeleted file mode 100644 index d59e9c2..0000000 --- a/src/demos/data/cubemaps/CloudyHills_negy.tga +++ /dev/null diff --git a/src/demos/data/cubemaps/CloudyHills_negz.tga b/src/demos/data/cubemaps/CloudyHills_negz.tga Binary files differdeleted file mode 100644 index ff025e6..0000000 --- a/src/demos/data/cubemaps/CloudyHills_negz.tga +++ /dev/null diff --git a/src/demos/data/cubemaps/CloudyHills_posx.tga b/src/demos/data/cubemaps/CloudyHills_posx.tga Binary files differdeleted file mode 100644 index 08f4cc9..0000000 --- a/src/demos/data/cubemaps/CloudyHills_posx.tga +++ /dev/null diff --git a/src/demos/data/cubemaps/CloudyHills_posy.tga b/src/demos/data/cubemaps/CloudyHills_posy.tga Binary files differdeleted file mode 100644 index b789c30..0000000 --- a/src/demos/data/cubemaps/CloudyHills_posy.tga +++ /dev/null diff --git a/src/demos/data/cubemaps/CloudyHills_posz.tga b/src/demos/data/cubemaps/CloudyHills_posz.tga Binary files differdeleted file mode 100644 index 43d27ba..0000000 --- a/src/demos/data/cubemaps/CloudyHills_posz.tga +++ /dev/null diff --git a/src/demos/data/cubemaps/uffizi_negx.png b/src/demos/data/cubemaps/uffizi_negx.png Binary files differdeleted file mode 100644 index 7c7905b..0000000 --- a/src/demos/data/cubemaps/uffizi_negx.png +++ /dev/null diff --git a/src/demos/data/cubemaps/uffizi_negy.png b/src/demos/data/cubemaps/uffizi_negy.png Binary files differdeleted file mode 100644 index 1bad34e..0000000 --- a/src/demos/data/cubemaps/uffizi_negy.png +++ /dev/null diff --git a/src/demos/data/cubemaps/uffizi_negz.png b/src/demos/data/cubemaps/uffizi_negz.png Binary files differdeleted file mode 100644 index 471b67d..0000000 --- a/src/demos/data/cubemaps/uffizi_negz.png +++ /dev/null diff --git a/src/demos/data/cubemaps/uffizi_posx.png b/src/demos/data/cubemaps/uffizi_posx.png Binary files differdeleted file mode 100644 index 288563c..0000000 --- a/src/demos/data/cubemaps/uffizi_posx.png +++ /dev/null diff --git a/src/demos/data/cubemaps/uffizi_posy.png b/src/demos/data/cubemaps/uffizi_posy.png Binary files differdeleted file mode 100644 index 7678d46..0000000 --- a/src/demos/data/cubemaps/uffizi_posy.png +++ /dev/null diff --git a/src/demos/data/cubemaps/uffizi_posz.png b/src/demos/data/cubemaps/uffizi_posz.png Binary files differdeleted file mode 100644 index fe3148f..0000000 --- a/src/demos/data/cubemaps/uffizi_posz.png +++ /dev/null diff --git a/src/demos/data/images/decal_image.png b/src/demos/data/images/decal_image.png Binary files differdeleted file mode 100644 index 9998c00..0000000 --- a/src/demos/data/images/decal_image.png +++ /dev/null diff --git a/src/demos/data/images/droplet.tga b/src/demos/data/images/droplet.tga Binary files differdeleted file mode 100644 index f545cbc..0000000 --- a/src/demos/data/images/droplet.tga +++ /dev/null diff --git a/src/demos/data/images/java_logo.png b/src/demos/data/images/java_logo.png Binary files differdeleted file mode 100755 index 94350e5..0000000 --- a/src/demos/data/images/java_logo.png +++ /dev/null diff --git a/src/demos/data/images/nvfixed.tga b/src/demos/data/images/nvfixed.tga Binary files differdeleted file mode 100644 index c9d32c3..0000000 --- a/src/demos/data/images/nvfixed.tga +++ /dev/null diff --git a/src/demos/data/images/nvlogo_spot.png b/src/demos/data/images/nvlogo_spot.png Binary files differdeleted file mode 100644 index 2a77c8e..0000000 --- a/src/demos/data/images/nvlogo_spot.png +++ /dev/null diff --git a/src/demos/data/images/nvspin.tga b/src/demos/data/images/nvspin.tga Binary files differdeleted file mode 100644 index 50401d8..0000000 --- a/src/demos/data/images/nvspin.tga +++ /dev/null diff --git a/src/demos/data/images/opengl_logo.png b/src/demos/data/images/opengl_logo.png Binary files differdeleted file mode 100755 index b6eacb3..0000000 --- a/src/demos/data/images/opengl_logo.png +++ /dev/null diff --git a/src/demos/data/images/stpeters_cross.hdr b/src/demos/data/images/stpeters_cross.hdr Binary files differdeleted file mode 100755 index 66f47ae..0000000 --- a/src/demos/data/images/stpeters_cross.hdr +++ /dev/null diff --git a/src/demos/data/images/test_texture.jpg b/src/demos/data/images/test_texture.jpg Binary files differdeleted file mode 100755 index bf66fbd..0000000 --- a/src/demos/data/images/test_texture.jpg +++ /dev/null diff --git a/src/demos/data/images/test_texture.png b/src/demos/data/images/test_texture.png Binary files differdeleted file mode 100755 index 6c5563b..0000000 --- a/src/demos/data/images/test_texture.png +++ /dev/null diff --git a/src/demos/data/images/test_texture.rgb b/src/demos/data/images/test_texture.rgb Binary files differdeleted file mode 100755 index bbe5662..0000000 --- a/src/demos/data/images/test_texture.rgb +++ /dev/null diff --git a/src/demos/data/images/test_texture.tga b/src/demos/data/images/test_texture.tga Binary files differdeleted file mode 100755 index 4bdc10d..0000000 --- a/src/demos/data/images/test_texture.tga +++ /dev/null diff --git a/src/demos/data/images/test_texture.tiff b/src/demos/data/images/test_texture.tiff Binary files differdeleted file mode 100755 index 9f3e8d4..0000000 --- a/src/demos/data/images/test_texture.tiff +++ /dev/null diff --git a/src/demos/data/images/test_texture_dxt3.dds b/src/demos/data/images/test_texture_dxt3.dds Binary files differdeleted file mode 100755 index 2ab9b81..0000000 --- a/src/demos/data/images/test_texture_dxt3.dds +++ /dev/null diff --git a/src/demos/data/images/test_texture_dxt3_mipmap.dds b/src/demos/data/images/test_texture_dxt3_mipmap.dds Binary files differdeleted file mode 100755 index c58a396..0000000 --- a/src/demos/data/images/test_texture_dxt3_mipmap.dds +++ /dev/null diff --git a/src/demos/data/models/bunny.txt b/src/demos/data/models/bunny.txt deleted file mode 100644 index 56cdb14..0000000 --- a/src/demos/data/models/bunny.txt +++ /dev/null @@ -1,13526 +0,0 @@ -/* -This file was produced by 3D Exploration Plugin: CPP Export filter. - -3D Exploration - -Copyright (c) 1999-2000 X Dimension Software - -WWW http://www.xdsoft.com/explorer/ -eMail [email protected] -*/ - -// 8146 Verticies -// 8127 Normals -// 16301 Triangles - -// face_indices -16301 -// surface - {1538,2410,1101 ,0,1,2 }, {713,6196,101 ,3,4,5 }, {696,704,101 ,6,7,5 }, - {1192,117,1113 ,8,9,10 }, {1260,173,1857 ,11,12,13 }, {540,1192,1113 ,14,8,10 }, - {704,696,398 ,7,6,15 }, {398,696,458 ,15,6,16 }, {1605,772,4540 ,17,18,19 }, - {1192,540,1857 ,8,14,13 }, {772,713,809 ,18,3,20 }, {713,173,1260 ,3,12,11 }, - {173,1192,1857 ,12,8,13 }, {809,713,1260 ,20,3,11 }, {804,4128,4120 ,21,22,23 }, - {1133,804,4120 ,24,21,23 }, {4128,4140,4531 ,22,25,26 }, {4140,1534,4136 ,25,27,28 }, - {4531,4140,4136 ,26,25,28 }, {4136,1534,1254 ,28,27,29 }, {4515,1609,4485 ,30,31,32 }, - {710,1396,889 ,33,34,35 }, {1245,3618,4204 ,36,37,38 }, {2046,1905,768 ,39,40,41 }, - {2453,5699,5698 ,42,43,44 }, {1254,2046,768 ,29,39,41 }, {768,1905,1393 ,41,40,45 }, - {1393,1490,4112 ,45,46,47 }, {5657,5658,5680 ,48,49,50 }, {1490,4281,839 ,46,51,52 }, - {4112,1490,839 ,47,46,52 }, {839,4281,1330 ,52,51,53 }, {6897,8079,3286 ,54,55,56 }, - {920,4291,1937 ,57,58,59 }, {321,1132,1222 ,60,61,62 }, {5338,4915,4914 ,63,64,65 }, - {1093,4537,840 ,66,67,68 }, {4537,1697,840 ,67,69,68 }, {705,659,4158 ,70,71,72 }, - {7248,7323,7322 ,73,74,75 }, {5413,5103,798 ,76,77,78 }, {5244,5289,5266 ,79,80,81 }, - {4197,4217,4258 ,82,83,84 }, {277,360,214 ,85,86,87 }, {4498,4536,4535 ,88,89,90 }, - {4497,4498,4535 ,91,88,90 }, {231,654,775 ,92,93,94 }, {4535,4536,792 ,90,89,95 }, - {8065,6577,8094 ,96,97,98 }, {1595,703,4145 ,99,100,101 }, {5203,1089,4369 ,102,103,104 }, - {2698,5203,4369 ,105,102,104 }, {1653,4491,226 ,106,107,108 }, - {2941,2940,2907 ,109,110,111 }, {6413,6414,3340 ,112,113,114 }, - {5231,3276,922 ,115,116,117 }, {1628,792,883 ,118,95,119 }, {4273,2042,542 ,120,121,122 }, - {4091,4126,4125 ,123,124,125 }, {4077,4091,4125 ,126,123,125 }, - {5618,103,2011 ,127,128,129 }, {2026,934,4251 ,130,131,132 }, - {4123,4173,4172 ,133,134,135 }, {3397,4123,4172 ,136,133,135 }, - {4122,4123,3397 ,137,133,136 }, {82,284,80 ,138,139,140 }, {5113,6120,5845 ,141,142,143 }, - {803,696,101 ,144,6,5 }, {139,1420,2137 ,145,146,147 }, {1348,1310,737 ,148,149,150 }, - {1423,196,396 ,151,152,153 }, {4403,4356,4432 ,154,155,156 }, - {143,781,142 ,157,158,159 }, {1148,1925,4132 ,160,161,162 }, - {1031,804,1133 ,163,21,24 }, {458,1031,1133 ,16,163,24 }, {1318,2137,1420 ,164,147,146 }, - {4255,4328,4301 ,165,166,167 }, {715,174,1652 ,168,169,170 }, - {5483,8116,5261 ,171,172,173 }, {1468,1451,542 ,174,175,122 }, - {2206,2219,4978 ,176,177,178 }, {804,4140,4128 ,21,25,22 }, {1222,1132,4521 ,62,61,179 }, - {4521,1318,606 ,179,164,180 }, {5162,5618,1443 ,181,127,182 }, - {3221,5261,8119 ,183,173,184 }, {4067,4077,4071 ,185,126,186 }, - {4526,1651,4515 ,187,188,30 }, {4526,891,1651 ,187,189,188 }, - {6320,6345,3533 ,190,191,192 }, {4140,779,1534 ,25,193,27 }, - {839,1330,1481 ,52,53,194 }, {1534,544,1254 ,27,195,29 }, {139,1318,1420 ,145,164,146 }, - {1842,940,1840 ,196,197,198 }, {5730,5729,3615 ,199,200,201 }, - {174,715,1147 ,169,168,202 }, {1345,1846,1093 ,203,204,66 }, - {4084,1178,4113 ,205,206,207 }, {3397,4172,1257 ,136,135,208 }, - {2042,1468,542 ,121,174,122 }, {787,4130,175 ,209,210,211 }, - {1461,1311,1310 ,212,213,149 }, {1311,457,1310 ,213,214,149 }, - {4211,321,885 ,215,60,216 }, {116,4211,885 ,217,215,216 }, {3761,4326,1463 ,218,219,220 }, - {544,1905,2046 ,195,40,39 }, {1254,544,2046 ,29,195,39 }, {1310,457,229 ,149,214,221 }, - {57,4160,735 ,222,223,224 }, {4029,4214,4019 ,225,226,227 }, - {4367,4421,4390 ,228,229,230 }, {4255,4301,4300 ,165,167,231 }, - {4411,962,1006 ,232,233,234 }, {2707,1335,4446 ,235,236,237 }, - {888,757,120 ,238,239,240 }, {4980,4547,2163 ,241,242,243 }, - {891,1461,200 ,189,212,244 }, {891,200,1651 ,189,244,188 }, {4838,311,24 ,245,246,247 }, - {169,105,1880 ,248,249,250 }, {1393,4179,1490 ,45,251,46 }, {1490,4179,4281 ,46,251,51 }, - {3263,8102,8089 ,252,253,254 }, {700,757,896 ,255,239,256 }, - {4465,4484,4514 ,257,258,259 }, {4202,700,464 ,260,255,261 }, - {3283,2968,1693 ,262,263,264 }, {1609,4514,4484 ,31,259,258 }, - {4485,1609,4484 ,32,31,258 }, {1609,714,4514 ,31,265,259 }, {606,1318,139 ,180,164,145 }, - {1747,979,970 ,266,267,268 }, {4136,1254,399 ,28,29,269 }, {4473,4451,4497 ,270,271,91 }, - {4057,2420,4263 ,272,273,274 }, {1396,770,889 ,34,275,35 }, {4421,4420,4390 ,229,276,230 }, - {1069,4138,1209 ,277,278,279 }, {3948,3670,1877 ,280,281,282 }, - {2707,5162,1335 ,235,181,236 }, {3484,863,1300 ,283,284,285 }, - {4978,5000,6414 ,178,286,113 }, {190,1161,1021 ,287,288,289 }, - {896,757,888 ,256,239,238 }, {1348,737,497 ,148,150,290 }, {639,1348,497 ,291,148,290 }, - {1112,4202,4194 ,292,260,293 }, {3958,3957,3903 ,294,295,296 }, - {64,613,11 ,297,298,299 }, {1344,456,795 ,300,301,302 }, {27,43,545 ,303,304,305 }, - {1033,888,30 ,306,238,307 }, {1023,4224,1033 ,308,309,306 }, - {4194,4202,464 ,293,260,261 }, {497,737,190 ,290,150,287 }, {737,356,190 ,150,310,287 }, - {2872,1245,4204 ,311,36,38 }, {4375,4531,4136 ,312,26,28 }, {1241,241,1389 ,313,314,315 }, - {4128,4531,4375 ,22,26,312 }, {4120,4128,4375 ,23,22,312 }, {709,1833,653 ,316,317,318 }, - {1793,4150,69 ,319,320,321 }, {69,1319,70 ,321,322,323 }, {1792,1375,24 ,324,325,247 }, - {6320,7500,6345 ,190,326,191 }, {1225,57,1245 ,327,222,36 }, - {1257,4172,4214 ,208,135,226 }, {997,190,1021 ,328,287,289 }, - {464,4224,1023 ,261,309,308 }, {3,464,1023 ,329,261,308 }, {714,639,950 ,265,291,330 }, - {714,950,4514 ,265,330,259 }, {7747,7746,7698 ,331,332,333 }, - {652,1296,1383 ,334,335,336 }, {1203,1204,1202 ,337,338,339 }, - {970,6018,1747 ,268,340,266 }, {4430,4451,4473 ,341,271,270 }, - {120,4362,4411 ,240,342,232 }, {7848,7874,7823 ,343,344,345 }, - {467,466,360 ,346,347,86 }, {1259,4095,4179 ,348,349,251 }, {5,413,315 ,350,351,352 }, - {4098,4057,4263 ,353,272,274 }, {1057,1596,1069 ,354,355,277 }, - {971,1057,1069 ,356,354,277 }, {44,412,1793 ,357,358,319 }, {4019,4255,4300 ,227,165,231 }, - {5378,5412,5377 ,359,360,361 }, {1259,4114,4059 ,348,362,363 }, - {4982,5000,4978 ,364,286,178 }, {4334,965,1419 ,365,366,367 }, - {1564,1085,1595 ,368,369,99 }, {4172,4215,4214 ,135,370,226 }, - {1225,2872,2428 ,327,311,371 }, {4110,1633,503 ,372,373,374 }, - {4328,4378,4354 ,166,375,376 }, {513,1343,376 ,377,378,379 }, - {3997,3998,4039 ,380,381,382 }, {8101,8122,8087 ,383,384,385 }, - {5000,6415,6414 ,286,386,113 }, {660,703,1625 ,387,100,388 }, - {805,2352,24 ,389,390,247 }, {1599,799,1194 ,391,392,393 }, {5850,4011,5784 ,394,395,396 }, - {3871,5850,5784 ,397,394,396 }, {2872,1225,1245 ,311,327,36 }, - {1633,513,376 ,373,377,379 }, {3871,5784,878 ,397,396,398 }, - {659,4171,802 ,71,399,400 }, {708,1222,365 ,401,62,402 }, {117,458,1133 ,9,16,24 }, - {4497,4535,4534 ,91,90,403 }, {1967,1966,1903 ,404,405,406 }, - {3259,4091,4068 ,407,123,408 }, {4185,3113,52 ,409,410,411 }, - {8090,8132,3006 ,412,413,414 }, {211,965,4334 ,415,366,365 }, - {4214,4254,4019 ,226,416,227 }, {1023,2045,211 ,308,417,415 }, - {1923,1023,211 ,418,308,415 }, {4043,2798,2956 ,419,420,399 }, - {4535,792,1628 ,90,95,118 }, {398,458,117 ,15,16,9 }, {139,2137,777 ,145,147,421 }, - {4534,4535,1628 ,403,90,118 }, {4411,4362,962 ,232,342,233 }, - {5199,5198,5177 ,422,423,424 }, {1838,4427,363 ,425,426,427 }, - {5213,5233,5212 ,428,429,430 }, {1419,799,1599 ,367,392,391 }, - {211,30,965 ,415,307,366 }, {347,102,2423 ,431,432,433 }, {138,3871,878 ,434,397,398 }, - {4182,4201,4051 ,435,436,437 }, {2313,1222,708 ,438,62,401 }, - {885,2313,708 ,216,438,401 }, {3327,3977,3513 ,439,440,441 }, - {3535,1345,840 ,442,203,68 }, {915,913,916 ,443,444,445 }, {678,634,682 ,446,447,448 }, - {634,346,682 ,447,449,448 }, {7254,6347,7860 ,450,451,452 }, - {8061,8082,8102 ,453,454,253 }, {1595,1085,703 ,99,369,100 }, - {2660,2753,2349 ,455,456,457 }, {2338,2680,4039 ,458,459,382 }, - {4040,2338,4039 ,460,458,382 }, {5307,5306,4393 ,461,462,463 }, - {4537,705,1697 ,67,70,69 }, {6563,8061,8063 ,464,453,465 }, {1305,4446,1300 ,466,237,285 }, - {4312,4311,490 ,467,468,469 }, {4301,4328,4354 ,167,166,376 }, - {467,503,466 ,346,374,347 }, {4051,1933,1695 ,437,470,471 }, - {6859,6860,6911 ,472,473,474 }, {2455,2212,5001 ,475,476,477 }, - {1197,6341,4983 ,478,479,480 }, {5240,5239,5218 ,481,482,483 }, - {705,1346,1697 ,70,484,69 }, {1731,1747,604 ,485,266,486 }, {491,586,678 ,487,488,446 }, - {833,491,678 ,489,487,446 }, {586,679,678 ,488,490,446 }, {679,86,634 ,490,491,447 }, - {678,679,634 ,446,490,447 }, {1485,346,634 ,492,449,447 }, {86,1485,634 ,491,492,447 }, - {1485,496,346 ,492,493,449 }, {591,638,346 ,494,495,449 }, {496,591,346 ,493,494,449 }, - {29,15,638 ,496,497,495 }, {591,29,638 ,494,496,495 }, {29,438,15 ,496,498,497 }, - {745,961,438 ,499,500,498 }, {745,446,961 ,499,501,500 }, {4187,1023,1923 ,502,308,418 }, - {189,1021,4187 ,503,289,502 }, {365,606,139 ,402,180,145 }, {883,792,146 ,119,95,504 }, - {174,1597,892 ,169,505,506 }, {826,1021,189 ,507,289,503 }, {5570,1350,5641 ,508,509,510 }, - {8072,530,3668 ,511,512,513 }, {5699,5727,5726 ,43,514,515 }, - {2927,2926,2882 ,516,517,518 }, {6912,6943,6942 ,519,520,521 }, - {6341,1197,2808 ,479,478,522 }, {536,1305,1300 ,523,466,285 }, - {5178,5199,5177 ,524,422,424 }, {4311,4383,490 ,468,399,469 }, - {174,1422,1597 ,169,525,505 }, {5642,5658,5657 ,526,49,48 }, - {586,86,679 ,488,491,490 }, {1921,446,745 ,527,501,499 }, {1199,39,446 ,528,529,501 }, - {1625,4222,4251 ,388,530,132 }, {1487,304,2680 ,531,532,459 }, - {304,1487,488 ,532,531,533 }, {2150,964,3084 ,534,535,536 }, - {5726,5727,5764 ,515,514,537 }, {803,4,696 ,144,538,6 }, {3511,4029,4019 ,539,225,227 }, - {4,1031,458 ,538,163,16 }, {696,4,458 ,6,538,16 }, {5727,5765,5764 ,514,540,537 }, - {4369,1089,4393 ,104,103,463 }, {4326,3341,3258 ,219,541,542 }, - {4158,659,802 ,72,71,400 }, {5834,5833,5816 ,543,544,545 }, {3008,7051,7029 ,546,547,548 }, - {965,888,799 ,366,238,392 }, {950,1652,4483 ,330,170,549 }, {4514,950,4483 ,259,330,549 }, - {1112,116,885 ,292,217,216 }, {3862,1973,7810 ,550,551,552 }, - {2093,2257,1749 ,553,554,555 }, {466,416,143 ,347,556,157 }, - {811,4954,812 ,557,558,559 }, {92,1921,745 ,560,527,499 }, {92,446,1921 ,560,501,527 }, - {317,344,93 ,561,562,563 }, {93,344,39 ,563,562,529 }, {1626,3253,349 ,564,565,566 }, - {4379,4431,4430 ,567,568,341 }, {4378,4379,4430 ,375,567,341 }, - {4503,779,4140 ,569,193,25 }, {5283,5284,5337 ,570,571,572 }, - {804,4503,4140 ,21,569,25 }, {2070,1367,1244 ,573,574,575 }, - {360,466,214 ,86,347,87 }, {229,116,1112 ,221,217,292 }, {4077,4109,4076 ,126,576,577 }, - {1023,1033,2045 ,308,306,417 }, {314,1419,1599 ,578,367,391 }, - {875,2155,1920 ,579,580,581 }, {4444,4482,4464 ,582,583,584 }, - {30,888,965 ,307,238,366 }, {4900,4545,5578 ,585,586,587 }, {1260,1461,891 ,11,212,189 }, - {809,1260,891 ,20,11,189 }, {1271,4548,2252 ,588,589,590 }, {2246,351,352 ,591,592,593 }, - {6946,6968,6916 ,594,595,596 }, {6555,2093,1749 ,597,553,555 }, - {235,1292,1517 ,598,599,600 }, {1292,1850,1517 ,599,601,600 }, - {1520,586,491 ,602,488,487 }, {251,1520,491 ,603,602,487 }, {1520,2225,586 ,602,604,488 }, - {63,86,586 ,605,491,488 }, {2225,63,586 ,604,605,488 }, {63,244,1485 ,605,606,492 }, - {86,63,1485 ,491,605,492 }, {1485,244,496 ,492,606,493 }, {244,590,591 ,606,607,494 }, - {496,244,591 ,493,606,494 }, {590,1198,29 ,607,608,496 }, {591,590,29 ,494,607,496 }, - {1198,441,438 ,608,609,498 }, {29,1198,438 ,496,608,498 }, {441,956,745 ,609,610,499 }, - {438,441,745 ,498,609,499 }, {745,956,92 ,499,610,560 }, {92,868,446 ,560,611,501 }, - {1247,1199,446 ,612,528,501 }, {868,1247,446 ,611,612,501 }, - {93,39,1199 ,563,529,528 }, {1247,93,1199 ,612,563,528 }, {2150,3084,832 ,534,536,613 }, - {488,2150,832 ,533,534,613 }, {6044,5933,5934 ,614,615,616 }, - {8076,1295,3040 ,617,618,619 }, {779,544,1534 ,193,195,27 }, - {2338,1487,2680 ,458,531,459 }, {1487,2150,488 ,531,534,533 }, - {1905,4179,1393 ,40,251,45 }, {681,683,302 ,620,621,622 }, {1260,1311,1461 ,11,213,212 }, - {5162,1443,1335 ,181,182,236 }, {4482,4525,4513 ,583,623,624 }, - {4334,1419,314 ,365,367,578 }, {950,715,1652 ,330,168,170 }, - {1305,2707,4446 ,466,235,237 }, {120,4411,1006 ,240,232,234 }, - {4545,3621,5578 ,586,625,587 }, {7264,7263,7222 ,626,627,628 }, - {6698,6699,6750 ,629,630,631 }, {1520,534,63 ,602,632,605 }, - {2225,1520,63 ,604,602,605 }, {63,534,244 ,605,632,606 }, {317,93,4539 ,561,563,633 }, - {3084,964,3094 ,536,535,634 }, {1294,874,169 ,635,636,248 }, - {2789,2832,2831 ,637,638,639 }, {4165,87,2477 ,640,641,642 }, - {832,3084,3094 ,613,536,634 }, {4430,4431,4451 ,341,568,271 }, - {348,249,268 ,643,644,645 }, {5618,5616,1443 ,127,646,182 }, - {715,497,1147 ,168,290,202 }, {4468,3673,3473 ,647,648,649 }, - {7746,7745,7697 ,332,650,651 }, {3749,5380,5304 ,652,653,654 }, - {888,120,1006 ,238,240,234 }, {2132,2131,2085 ,655,656,657 }, - {8107,3006,2731 ,658,414,659 }, {5812,5823,7073 ,660,661,662 }, - {153,1243,1292 ,663,664,599 }, {235,153,1292 ,598,663,599 }, - {1292,1243,1850 ,599,664,601 }, {112,251,1850 ,665,603,601 }, - {1243,112,1850 ,664,665,601 }, {1593,1520,251 ,666,602,603 }, - {112,1593,251 ,665,666,603 }, {1593,172,534 ,666,667,632 }, {1520,1593,534 ,602,666,632 }, - {727,726,627 ,668,669,670 }, {590,589,1198 ,607,671,608 }, {1198,357,441 ,608,672,609 }, - {442,310,956 ,673,674,610 }, {441,442,956 ,609,673,610 }, {310,60,92 ,674,675,560 }, - {956,310,92 ,610,674,560 }, {92,60,868 ,560,675,611 }, {60,1788,1247 ,675,676,612 }, - {868,60,1247 ,611,675,612 }, {1788,113,93 ,676,677,563 }, {1247,1788,93 ,612,676,563 }, - {1059,1294,169 ,678,635,248 }, {105,783,1066 ,249,679,680 }, - {141,4206,4186 ,681,682,683 }, {6860,6912,6911 ,473,519,474 }, - {5013,6484,5455 ,684,685,686 }, {964,1294,1059 ,535,635,678 }, - {3094,964,1059 ,634,535,678 }, {128,883,4594 ,687,119,688 }, - {883,128,76 ,119,687,689 }, {3750,1463,3681 ,690,220,691 }, {6094,3373,3300 ,692,693,694 }, - {4179,1490,4281 ,251,46,51 }, {1490,4310,4281 ,46,695,51 }, {1461,1310,1348 ,212,149,148 }, - {700,896,4224 ,255,256,309 }, {1021,1161,3 ,289,288,329 }, {1350,5642,5641 ,509,526,510 }, - {459,211,4334 ,696,415,365 }, {4237,4257,4275 ,697,698,699 }, - {5801,5817,5800 ,700,701,702 }, {4444,4464,4443 ,582,584,703 }, - {6350,6349,6321 ,704,705,706 }, {2045,1033,30 ,417,306,307 }, - {1742,7051,3008 ,707,547,546 }, {7052,3660,3454 ,708,709,710 }, - {6790,6809,6754 ,711,712,713 }, {1593,16,172 ,666,714,667 }, - {3399,4550,4447 ,715,716,717 }, {526,582,625 ,718,719,720 }, - {725,724,625 ,721,722,720 }, {8129,7693,8116 ,723,724,172 }, - {1195,4395,5194 ,725,726,727 }, {3008,3975,3944 ,546,728,729 }, - {129,128,695 ,730,687,731 }, {129,76,128 ,730,689,687 }, {6149,3701,3648 ,732,733,734 }, - {3495,3494,3434 ,735,736,737 }, {8116,7693,8071 ,172,724,738 }, - {195,4350,4098 ,739,740,353 }, {1150,38,110 ,741,742,743 }, {1311,540,457 ,213,14,214 }, - {497,190,997 ,290,287,328 }, {459,4334,4412 ,696,365,744 }, {1750,4894,1698 ,745,746,747 }, - {4412,4334,314 ,744,365,578 }, {4544,6353,6686 ,748,749,750 }, - {5521,8071,8125 ,751,738,752 }, {314,1599,4244 ,578,391,753 }, - {5536,5522,5557 ,754,755,756 }, {5850,3749,4011 ,394,652,395 }, - {1995,2049,2015 ,757,758,759 }, {6299,404,6417 ,760,761,762 }, - {172,16,1743 ,667,714,763 }, {582,583,625 ,719,764,720 }, {783,688,1066 ,679,765,680 }, - {169,874,105 ,248,636,249 }, {874,783,105 ,636,679,249 }, {615,4281,4310 ,766,51,695 }, - {226,1150,110 ,108,741,743 }, {774,1634,683 ,767,768,621 }, {4174,4217,4197 ,769,83,82 }, - {540,4211,116 ,14,215,217 }, {200,1461,1348 ,244,212,148 }, {464,700,4224 ,261,255,309 }, - {1147,497,997 ,202,290,328 }, {103,2030,2011 ,128,770,129 }, - {4429,1923,459 ,771,418,696 }, {1699,1751,1750 ,772,773,745 }, - {1698,1699,1750 ,747,772,745 }, {4587,4588,4589 ,774,775,776 }, - {1811,1885,1810 ,777,778,779 }, {6553,3252,3283 ,780,781,262 }, - {4482,4513,4464 ,583,624,584 }, {976,4964,4965 ,782,783,784 }, - {2050,2049,1995 ,785,758,757 }, {1950,2050,1995 ,786,785,757 }, - {2050,2075,2049 ,785,787,758 }, {2075,2096,2049 ,787,788,758 }, - {3661,2212,2455 ,789,476,475 }, {1331,1243,153 ,790,664,663 }, - {597,1331,153 ,791,790,663 }, {553,112,1243 ,792,665,664 }, {1331,553,1243 ,790,792,664 }, - {553,1727,1593 ,792,793,666 }, {112,553,1593 ,665,792,666 }, - {1727,1743,16 ,793,763,714 }, {1593,1727,16 ,666,793,714 }, {170,1290,1240 ,794,795,796 }, - {1184,999,1188 ,797,798,799 }, {526,527,582 ,718,800,719 }, {583,626,625 ,764,801,720 }, - {3598,3547,6598 ,802,803,804 }, {2680,304,2662 ,459,532,805 }, - {2853,3190,2416 ,806,807,808 }, {3300,5977,6094 ,694,809,692 }, - {60,145,1788 ,675,810,676 }, {310,2694,60 ,674,811,675 }, {8126,6891,3148 ,812,813,814 }, - {7924,7923,7873 ,815,816,817 }, {3007,4486,6070 ,818,819,820 }, - {1065,1340,1450 ,821,822,823 }, {688,1065,1066 ,765,821,680 }, - {3359,3325,3326 ,824,825,826 }, {5178,5177,4630 ,524,424,827 }, - {1980,2007,1979 ,828,829,830 }, {1984,1916,1917 ,831,832,833 }, - {277,214,1992 ,85,87,834 }, {1539,96,1587 ,835,836,837 }, {4335,4151,1833 ,838,839,317 }, - {768,1393,864 ,41,45,840 }, {457,540,116 ,214,14,217 }, {1652,892,4525 ,170,506,623 }, - {2030,3913,2011 ,770,841,129 }, {2014,1923,736 ,842,418,843 }, - {4392,2341,7051 ,844,845,547 }, {2097,2096,2075 ,846,788,787 }, - {2007,1978,1979 ,829,847,830 }, {1936,1333,2341 ,848,849,845 }, - {1411,1331,597 ,850,790,791 }, {5353,6836,144 ,851,852,853 }, - {1721,1778,1777 ,854,855,856 }, {392,170,1240 ,857,794,796 }, - {1475,1476,1547 ,858,859,860 }, {433,434,485 ,861,862,863 }, - {527,583,582 ,800,764,719 }, {385,386,433 ,864,865,861 }, {434,527,526 ,862,800,718 }, - {337,338,385 ,866,867,864 }, {238,338,237 ,868,867,869 }, {386,434,433 ,865,862,861 }, - {338,386,385 ,867,865,864 }, {338,337,237 ,867,866,869 }, {3382,3381,3356 ,870,871,872 }, - {2582,2474,2585 ,873,874,875 }, {5077,4549,1809 ,876,877,878 }, - {3305,3358,3324 ,879,880,881 }, {3383,3382,3357 ,882,870,883 }, - {3900,3478,3455 ,884,885,886 }, {1066,1065,1450 ,680,821,823 }, - {2036,2081,2035 ,887,888,889 }, {2081,2126,2068 ,888,890,891 }, - {2081,2068,2035 ,888,891,889 }, {2126,2125,2068 ,890,892,891 }, - {2274,1882,4980 ,893,894,241 }, {864,4112,839 ,840,47,52 }, {3341,863,3258 ,541,284,542 }, - {863,536,1300 ,284,523,285 }, {1393,4112,864 ,45,47,840 }, {4211,4212,321 ,215,895,60 }, - {1597,1422,18 ,505,525,896 }, {2014,4187,1923 ,842,502,418 }, - {1923,4429,736 ,418,771,843 }, {736,4429,459 ,843,771,696 }, - {358,189,4184 ,897,503,898 }, {1950,1929,1885 ,786,899,778 }, - {2050,2097,2075 ,785,846,787 }, {1780,1843,1842 ,900,901,196 }, - {1548,1549,1617 ,902,903,904 }, {8130,8120,8098 ,905,906,907 }, - {3080,1302,13 ,908,909,910 }, {1844,1845,1873 ,911,912,913 }, - {2035,2068,1978 ,889,891,847 }, {1059,169,652 ,678,248,334 }, - {485,434,526 ,863,862,718 }, {2650,3981,3054 ,914,915,916 }, - {3453,2650,3054 ,917,914,916 }, {2892,1305,536 ,918,466,523 }, - {7693,8129,3976 ,724,723,919 }, {443,171,444 ,920,921,922 }, - {2743,3687,1378 ,923,924,925 }, {3545,3595,3574 ,926,927,928 }, - {913,2892,536 ,444,918,523 }, {3432,3492,3462 ,929,930,931 }, - {3358,3383,3357 ,880,882,883 }, {5769,5768,5731 ,932,933,934 }, - {6045,6080,5453 ,935,936,937 }, {548,595,645 ,938,939,940 }, - {8070,3534,3668 ,941,942,513 }, {1586,1195,3315 ,943,725,944 }, - {399,1254,768 ,269,29,41 }, {4375,4136,399 ,312,28,269 }, {4212,294,321 ,895,945,60 }, - {356,4194,1161 ,310,293,288 }, {190,356,1161 ,287,310,288 }, - {1422,1147,997 ,525,202,328 }, {1652,174,892 ,170,169,506 }, - {1422,826,18 ,525,507,896 }, {4184,4187,2014 ,898,502,842 }, - {5977,3300,1936 ,809,694,848 }, {1752,1812,1811 ,946,947,777 }, - {1751,1752,1811 ,773,946,777 }, {1886,1885,1811 ,948,778,777 }, - {1812,1886,1811 ,947,948,777 }, {1951,1950,1885 ,949,786,778 }, - {1886,1951,1885 ,948,949,778 }, {1951,1996,1950 ,949,950,786 }, - {2051,2050,1950 ,951,785,786 }, {1996,2051,1950 ,950,951,786 }, - {2098,2097,2050 ,952,846,785 }, {2051,2098,2050 ,951,952,785 }, - {2098,2143,2097 ,952,953,846 }, {595,646,645 ,939,954,940 }, - {3492,3545,3491 ,930,926,955 }, {1045,1144,992 ,956,957,958 }, - {8128,8066,3277 ,959,960,961 }, {1874,1913,1912 ,962,963,964 }, - {386,435,434 ,865,965,862 }, {395,171,59 ,966,921,967 }, {59,171,443 ,967,921,920 }, - {3917,3916,3868 ,968,969,970 }, {3148,6891,3008 ,814,813,546 }, - {743,742,647 ,971,972,973 }, {1403,1404,1475 ,974,975,858 }, - {788,2558,600 ,976,977,978 }, {3542,3573,3541 ,979,980,981 }, - {3958,3959,3998 ,294,982,381 }, {938,4,803 ,983,538,144 }, {4,264,1031 ,538,984,163 }, - {264,4235,804 ,984,985,21 }, {4194,464,3 ,293,261,329 }, {505,5309,469 ,986,987,988 }, - {1635,1699,1442 ,989,772,990 }, {4443,4442,4391 ,703,991,992 }, - {4443,4464,4442 ,703,584,991 }, {4464,4463,4442 ,584,993,991 }, - {1328,1405,1327 ,994,995,996 }, {1838,363,1837 ,425,427,997 }, - {724,816,815 ,722,998,999 }, {1914,1983,1982 ,1000,1001,1002 }, - {1619,1686,1685 ,1003,1004,1005 }, {2124,2193,2123 ,1006,1007,1008 }, - {1681,1682,1739 ,1009,1010,1011 }, {291,336,335 ,1012,1013,1014 }, - {1663,1630,3081 ,1015,1016,1017 }, {726,725,626 ,669,721,801 }, - {627,726,626 ,670,669,801 }, {726,818,725 ,669,1018,721 }, {1476,1548,1547 ,859,902,860 }, - {906,817,818 ,1019,1020,1018 }, {3960,3959,3916 ,1021,982,969 }, - {3917,3960,3916 ,968,1021,969 }, {3960,4000,3999 ,1021,1022,1023 }, - {3959,3960,3999 ,982,1021,1023 }, {7115,7139,7129 ,1024,1025,1026 }, - {3189,3016,2150 ,1027,1028,534 }, {1031,264,804 ,163,984,21 }, - {804,4235,4503 ,21,985,569 }, {4503,4235,779 ,569,985,193 }, - {779,709,544 ,193,316,195 }, {173,704,398 ,12,7,15 }, {1161,4194,3 ,288,293,329 }, - {2352,1792,24 ,390,324,247 }, {4715,4716,4714 ,1029,1030,1031 }, - {6432,3265,1941 ,1032,1033,1034 }, {1603,1636,1635 ,1035,1036,989 }, - {1566,1603,1635 ,1037,1035,989 }, {1703,1752,1702 ,1038,946,1039 }, - {2143,2166,2165 ,953,1040,1041 }, {290,333,289 ,1042,1043,1044 }, - {1405,1404,1327 ,995,975,996 }, {1405,1477,1404 ,995,1045,975 }, - {7003,7002,6963 ,1046,1047,1048 }, {3303,3304,3323 ,1049,1050,1051 }, - {722,723,814 ,1052,1053,1054 }, {627,626,583 ,670,801,764 }, - {528,627,583 ,1055,670,764 }, {4426,6577,6837 ,1056,97,1057 }, - {1908,28,3636 ,1058,1059,1060 }, {3358,3357,3324 ,880,883,881 }, - {4042,2946,4041 ,1061,1062,1063 }, {2946,2571,3194 ,1062,1064,1065 }, - {3190,2555,2416 ,807,1066,808 }, {2558,19,600 ,977,1067,978 }, - {544,4454,1905 ,195,1068,40 }, {4454,4135,1905 ,1068,1069,40 }, - {117,1133,4213 ,9,24,1070 }, {1905,4135,4179 ,40,1069,251 }, - {1805,1490,4179 ,1071,46,251 }, {1805,4310,1490 ,1071,695,46 }, - {1805,615,4310 ,1071,766,695 }, {4521,1591,1318 ,179,1072,164 }, - {106,1207,5146 ,1073,1074,1075 }, {4421,4462,4420 ,229,1076,276 }, - {1338,4214,4029 ,1077,226,225 }, {7457,7515,7539 ,1078,1079,1080 }, - {1495,1567,1566 ,1081,1082,1037 }, {1494,1495,1566 ,1083,1081,1037 }, - {1567,1568,1603 ,1082,1084,1035 }, {1566,1567,1603 ,1037,1082,1035 }, - {1568,1637,1636 ,1084,1085,1036 }, {1603,1568,1636 ,1035,1084,1036 }, - {1637,1704,1703 ,1085,1086,1038 }, {1636,1637,1703 ,1036,1085,1038 }, - {1753,1752,1703 ,1087,946,1038 }, {1704,1753,1703 ,1086,1087,1038 }, - {1753,1795,1752 ,1087,1088,946 }, {1813,1812,1752 ,1089,947,946 }, - {1795,1813,1752 ,1088,1089,946 }, {1887,1886,1812 ,1090,948,947 }, - {1813,1887,1812 ,1089,1090,947 }, {1887,1952,1951 ,1090,1091,949 }, - {1886,1887,1951 ,948,1090,949 }, {1952,1996,1951 ,1091,950,949 }, - {2052,2051,1996 ,1092,951,950 }, {1952,2052,1996 ,1091,1092,950 }, - {2099,2098,2051 ,1093,952,951 }, {2052,2099,2051 ,1092,1093,951 }, - {2099,2143,2098 ,1093,953,952 }, {8080,8094,8069 ,1094,98,1095 }, - {3932,1059,652 ,1096,678,334 }, {6311,8122,1168 ,1097,384,1098 }, - {624,723,623 ,1099,1053,1100 }, {1979,1978,1911 ,830,847,1101 }, - {387,386,338 ,1102,865,867 }, {238,239,338 ,868,1103,867 }, {1687,1782,1781 ,1104,1105,1106 }, - {340,593,909 ,1107,1108,1109 }, {1918,908,1190 ,1110,1111,1112 }, - {5117,350,2291 ,1113,1114,1115 }, {2433,2400,2434 ,1116,1117,1118 }, - {865,776,867 ,1119,1120,1121 }, {4213,1133,4120 ,1070,24,23 }, - {321,294,1132 ,60,945,61 }, {101,173,713 ,5,12,3 }, {655,195,4056 ,1122,739,1123 }, - {195,4098,4056 ,739,353,1123 }, {660,118,67 ,387,1124,1125 }, - {1609,200,714 ,31,244,265 }, {1428,1495,1494 ,1126,1081,1083 }, - {1495,1568,1567 ,1081,1084,1082 }, {1753,1813,1795 ,1087,1089,1088 }, - {3194,2571,3016 ,1065,1064,1028 }, {2032,2123,2122 ,1127,1008,1128 }, - {647,549,2609 ,973,1129,1130 }, {2259,6314,6646 ,1131,1132,1133 }, - {1328,1329,1405 ,994,1134,995 }, {1406,1447,1446 ,1135,1136,1137 }, - {1777,1778,1839 ,856,855,1138 }, {8084,8110,8124 ,1139,1140,1141 }, - {436,435,386 ,1142,965,865 }, {339,387,338 ,1143,1102,867 }, - {486,528,434 ,1144,1055,862 }, {528,583,527 ,1055,764,800 }, - {3456,3566,3861 ,1145,1146,1147 }, {529,528,486 ,1148,1055,1144 }, - {437,486,436 ,1149,1144,1142 }, {1873,1874,1912 ,913,962,964 }, - {1616,1617,1683 ,1150,904,1151 }, {3462,3492,3461 ,931,930,1152 }, - {1880,105,2558 ,250,249,977 }, {3545,3544,3491 ,926,1153,955 }, - {2433,111,2400 ,1116,1154,1117 }, {101,704,173 ,5,7,12 }, {1132,1591,4521 ,61,1072,179 }, - {5765,5801,5764 ,540,700,537 }, {277,781,11 ,85,158,299 }, {613,277,11 ,298,85,299 }, - {879,4123,4122 ,1155,133,137 }, {3421,8113,3278 ,1156,1157,1158 }, - {911,2158,6684 ,1159,1160,1161 }, {1351,1428,8008 ,1162,1126,1163 }, - {1351,1395,1428 ,1162,1164,1126 }, {1567,1568,1495 ,1082,1084,1081 }, - {1814,1813,1753 ,1165,1089,1087 }, {1656,3227,3198 ,1166,1167,1168 }, - {449,547,546 ,1169,1170,1171 }, {3959,3999,3998 ,982,1023,381 }, - {448,449,546 ,1172,1169,1171 }, {647,691,743 ,973,1173,971 }, - {2191,2192,392 ,1174,1175,857 }, {547,644,546 ,1170,1176,1171 }, - {627,628,727 ,670,1177,668 }, {1234,1235,1328 ,1178,1179,994 }, - {1976,2032,2006 ,1180,1127,1181 }, {3323,3322,3303 ,1051,1182,1049 }, - {486,434,435 ,1144,862,965 }, {387,436,386 ,1102,1142,865 }, - {528,527,434 ,1055,800,862 }, {1405,1406,1446 ,995,1135,1137 }, - {304,488,3080 ,532,533,908 }, {3331,3364,3330 ,1183,1184,1185 }, - {1296,1880,2558 ,335,250,977 }, {7397,7453,7424 ,1186,1187,1188 }, - {1318,867,2137 ,164,1121,147 }, {3817,4756,4682 ,1189,1190,1191 }, - {5240,5264,5239 ,481,1192,482 }, {5616,5618,2011 ,646,127,129 }, - {5258,5282,5281 ,1193,1194,1195 }, {2026,1927,4234 ,130,1196,1197 }, - {2258,1263,5455 ,1198,1199,686 }, {3362,6350,6321 ,1200,704,706 }, - {2158,2272,6684 ,1160,1201,1161 }, {7151,3291,3290 ,1202,1203,1204 }, - {1353,1429,1428 ,1205,1206,1126 }, {1395,1353,1428 ,1164,1205,1126 }, - {1496,1495,1428 ,1207,1081,1126 }, {1429,1496,1428 ,1206,1207,1126 }, - {1569,1567,1495 ,1208,1082,1081 }, {1496,1569,1495 ,1207,1208,1081 }, - {1604,1568,1567 ,1209,1084,1082 }, {1569,1604,1567 ,1208,1209,1082 }, - {1638,1637,1568 ,1210,1085,1084 }, {1604,1638,1568 ,1209,1210,1084 }, - {1638,1705,1704 ,1210,1211,1086 }, {1637,1638,1704 ,1085,1210,1086 }, - {1754,1753,1704 ,1212,1087,1086 }, {1705,1754,1704 ,1211,1212,1086 }, - {1815,1814,1753 ,1213,1165,1087 }, {1754,1815,1753 ,1212,1213,1087 }, - {1862,1813,1814 ,1214,1089,1165 }, {1815,1862,1814 ,1213,1214,1165 }, - {1888,1887,1813 ,1215,1090,1089 }, {1862,1888,1813 ,1214,1215,1089 }, - {1953,1952,1887 ,1216,1091,1090 }, {1888,1953,1887 ,1215,1216,1090 }, - {2053,2052,1952 ,1217,1092,1091 }, {1953,2053,1952 ,1216,1217,1091 }, - {2100,2099,2052 ,1218,1093,1092 }, {2053,2100,2052 ,1217,1218,1092 }, - {828,827,741 ,1219,1220,1221 }, {385,433,432 ,864,861,1222 }, - {1842,1843,1910 ,196,901,1223 }, {2009,1188,862 ,1224,799,1225 }, - {1780,1803,1843 ,900,1226,901 }, {436,486,435 ,1142,1144,965 }, - {432,484,483 ,1222,1227,1228 }, {3987,3946,21 ,1229,1230,1231 }, - {1780,1781,1803 ,900,1106,1226 }, {1062,1014,929 ,1232,1233,1234 }, - {1182,1048,953 ,1235,1236,1237 }, {1183,1182,953 ,1238,1235,1237 }, - {2945,3900,3455 ,1239,884,886 }, {7115,7129,7102 ,1024,1026,1240 }, - {4173,4216,4215 ,134,1241,370 }, {4335,4280,642 ,838,1242,1243 }, - {1112,885,4202 ,292,216,260 }, {2026,4234,934 ,130,1197,131 }, - {3818,1907,2785 ,1244,1245,1246 }, {4328,4329,4378 ,166,1247,375 }, - {1207,106,3878 ,1074,1073,1248 }, {6203,322,803 ,1249,1250,144 }, - {4329,4379,4378 ,1247,567,375 }, {2376,6570,1263 ,1251,1252,1199 }, - {5059,1516,3177 ,1253,1254,1255 }, {5502,2208,5081 ,1256,1257,1258 }, - {3319,2245,2336 ,1259,1260,1261 }, {1352,1395,1351 ,1262,1164,1162 }, - {1569,1638,1604 ,1208,1210,1209 }, {2054,2053,1953 ,1263,1217,1216 }, - {3916,3959,3904 ,969,982,1264 }, {908,909,1190 ,1111,1109,1112 }, - {5117,2291,186 ,1113,1115,1265 }, {628,728,727 ,1177,1266,668 }, - {334,335,431 ,1267,1014,1268 }, {2123,2192,2191 ,1008,1175,1174 }, - {1290,1184,2009 ,795,797,1224 }, {1447,1407,1479 ,1136,1269,1270 }, - {3463,3494,3432 ,1271,736,929 }, {1857,540,1311 ,13,14,213 }, - {863,3484,3258 ,284,283,542 }, {4077,4076,4071 ,126,577,186 }, - {4255,4275,4328 ,165,699,166 }, {322,5,4 ,1250,350,538 }, {938,322,4 ,983,1250,538 }, - {5,315,264 ,350,352,984 }, {4,5,264 ,538,350,984 }, {4275,4329,4328 ,699,1247,166 }, - {6619,2245,1265 ,1272,1260,1273 }, {625,624,581 ,720,1099,1274 }, - {582,625,581 ,719,720,1274 }, {1781,1782,1803 ,1106,1105,1226 }, - {1779,1841,1840 ,1275,1276,198 }, {1918,2009,908 ,1110,1224,1111 }, - {2192,2193,170 ,1175,1007,794 }, {1145,1144,1045 ,1277,957,956 }, - {2122,2123,2191 ,1128,1008,1174 }, {524,525,580 ,1278,1279,1280 }, - {4518,1928,1879 ,1281,1282,1283 }, {926,1011,1010 ,1284,1285,1286 }, - {926,925,827 ,1284,1287,1220 }, {2068,2033,2034 ,891,1288,1289 }, - {6295,3283,8103 ,1290,262,1291 }, {3355,3354,3322 ,1292,1293,1182 }, - {1978,2068,2034 ,847,891,1289 }, {1233,1327,1232 ,1294,996,1295 }, - {221,2768,2541 ,1296,1297,1298 }, {264,315,4235 ,984,352,985 }, - {4235,4159,779 ,985,1299,193 }, {779,4159,709 ,193,1299,316 }, - {5056,5005,4950 ,1300,1301,1302 }, {3702,5520,1990 ,1303,1304,1305 }, - {6562,6299,4554 ,1306,760,1307 }, {1354,1430,1429 ,1308,1309,1206 }, - {1353,1354,1429 ,1205,1308,1206 }, {1430,1497,1496 ,1309,1310,1207 }, - {1429,1430,1496 ,1206,1309,1207 }, {1497,1570,1569 ,1310,1311,1208 }, - {1496,1497,1569 ,1207,1310,1208 }, {1570,1639,1638 ,1311,1312,1210 }, - {1569,1570,1638 ,1208,1311,1210 }, {1706,1705,1638 ,1313,1211,1210 }, - {1639,1706,1638 ,1312,1313,1210 }, {1706,1755,1754 ,1313,1314,1212 }, - {1705,1706,1754 ,1211,1313,1212 }, {1816,1815,1754 ,1315,1213,1212 }, - {1755,1816,1754 ,1314,1315,1212 }, {1863,1862,1815 ,1316,1214,1213 }, - {1816,1863,1815 ,1315,1316,1213 }, {1863,1889,1888 ,1316,1317,1215 }, - {1862,1863,1888 ,1214,1316,1215 }, {1889,1954,1953 ,1317,1318,1216 }, - {1888,1889,1953 ,1215,1317,1216 }, {2055,2054,1953 ,1319,1263,1216 }, - {1954,2055,1953 ,1318,1319,1216 }, {2076,2053,2054 ,1320,1217,1263 }, - {2055,2076,2054 ,1319,1320,1263 }, {2101,2100,2053 ,1321,1218,1217 }, - {2076,2101,2053 ,1320,1321,1217 }, {2168,2167,2100 ,1322,1323,1218 }, - {2101,2168,2100 ,1321,1322,1218 }, {2168,2090,2089 ,1322,1324,1325 }, - {2167,2168,2089 ,1323,1322,1325 }, {862,960,340 ,1225,1326,1107 }, - {908,340,909 ,1111,1107,1109 }, {1617,1684,1683 ,904,1327,1151 }, - {1047,906,2844 ,1328,1019,1329 }, {1326,1325,1231 ,1330,1331,1332 }, - {1143,1142,991 ,1333,1334,1335 }, {1232,1326,1231 ,1295,1330,1332 }, - {1188,999,862 ,799,798,1225 }, {524,580,623 ,1278,1280,1100 }, - {2193,2192,2123 ,1007,1175,1008 }, {433,485,484 ,861,863,1227 }, - {432,433,484 ,1222,861,1227 }, {339,387,239 ,1143,1102,1103 }, - {1234,1233,1142 ,1178,1294,1334 }, {108,2134,35 ,1336,1337,1338 }, - {790,742,743 ,1339,972,971 }, {1113,4213,4212 ,10,1070,895 }, - {540,1113,4211 ,14,10,215 }, {364,365,4362 ,1340,402,342 }, {365,139,4362 ,402,145,342 }, - {139,963,962 ,145,1341,233 }, {703,660,4145 ,100,387,101 }, {1168,4571,6311 ,1098,1342,1097 }, - {8079,3421,8104 ,55,1156,1343 }, {544,653,4454 ,195,318,1068 }, - {4569,2454,2272 ,1344,1345,1201 }, {6071,6377,6082 ,1346,1347,1348 }, - {6950,4981,5006 ,1349,1350,1351 }, {6562,5967,404 ,1306,1352,761 }, - {6570,6562,4554 ,1252,1306,1307 }, {1353,1267,1354 ,1205,1353,1308 }, - {1498,1571,1570 ,1354,1355,1311 }, {1497,1498,1570 ,1310,1354,1311 }, - {1570,1571,1639 ,1311,1355,1312 }, {1144,1145,1234 ,957,1277,1178 }, - {2033,2124,2123 ,1288,1006,1008 }, {3719,3515,959 ,1356,1357,1358 }, - {1547,1616,1615 ,860,1150,1359 }, {1546,1547,1615 ,1360,860,1359 }, - {2084,1048,1049 ,1361,1236,1362 }, {742,828,741 ,972,1219,1221 }, - {689,3315,3828 ,1363,944,1364 }, {526,525,484 ,718,1279,1227 }, - {485,526,484 ,863,718,1227 }, {1240,1290,1918 ,796,795,1110 }, - {828,926,827 ,1219,1284,1220 }, {35,751,6228 ,1338,1365,1366 }, - {744,790,743 ,1367,1339,971 }, {829,828,742 ,1368,1219,972 }, - {5801,5800,5764 ,700,702,537 }, {6577,4426,6837 ,97,1056,1057 }, - {469,468,367 ,988,1369,1370 }, {653,4053,4135 ,318,1371,1069 }, - {4454,653,4135 ,1068,318,1069 }, {376,1343,1564 ,379,378,368 }, - {2259,6646,8103 ,1131,1133,1291 }, {4179,4095,1805 ,251,349,1071 }, - {5843,1028,2958 ,1372,1373,1374 }, {5497,4530,2239 ,1375,1376,1377 }, - {2158,4569,2272 ,1160,1344,1201 }, {3582,3454,3660 ,1378,710,709 }, - {6299,6562,404 ,760,1306,761 }, {1465,1498,1497 ,1379,1354,1310 }, - {1430,1465,1497 ,1309,1379,1310 }, {632,1184,1290 ,1380,797,795 }, - {506,632,690 ,1381,1380,1382 }, {170,506,690 ,794,1381,1382 }, - {3903,3957,3956 ,296,295,1383 }, {1000,860,1876 ,1384,1385,1386 }, - {1782,1844,1843 ,1105,911,901 }, {1777,1839,1838 ,856,1138,425 }, - {1803,1782,1843 ,1226,1105,901 }, {401,448,2445 ,1387,1172,1388 }, - {6612,6648,6611 ,1389,1390,1391 }, {790,829,742 ,1339,1368,972 }, - {198,197,126 ,1392,1393,1394 }, {127,198,126 ,1395,1392,1394 }, - {368,367,197 ,1396,1370,1393 }, {198,368,197 ,1392,1396,1393 }, - {368,469,367 ,1396,988,1370 }, {614,615,1805 ,1397,766,1071 }, - {6646,6295,8103 ,1133,1290,1291 }, {1564,1595,4145 ,368,99,101 }, - {1094,839,1481 ,1398,52,194 }, {2408,5231,2219 ,1399,115,177 }, - {6562,3898,5967 ,1306,1400,1352 }, {1116,5497,2239 ,1401,1375,1377 }, - {7478,7477,7422 ,1402,1403,1404 }, {8020,2320,8019 ,1405,1406,1407 }, - {1355,1354,1267 ,1408,1308,1353 }, {1314,1355,1267 ,1409,1408,1353 }, - {1431,1430,1354 ,1410,1309,1308 }, {1355,1431,1354 ,1408,1410,1308 }, - {1431,1466,1465 ,1410,1411,1379 }, {1430,1431,1465 ,1309,1410,1379 }, - {1466,1499,1498 ,1411,1412,1354 }, {1465,1466,1498 ,1379,1411,1354 }, - {1499,1572,1571 ,1412,1413,1355 }, {1498,1499,1571 ,1354,1412,1355 }, - {1640,1639,1571 ,1414,1312,1355 }, {1572,1640,1571 ,1413,1414,1355 }, - {1640,1707,1706 ,1414,1415,1313 }, {1639,1640,1706 ,1312,1414,1313 }, - {1756,1755,1706 ,1416,1314,1313 }, {1707,1756,1706 ,1415,1416,1313 }, - {1756,1817,1816 ,1416,1417,1315 }, {1755,1756,1816 ,1314,1416,1315 }, - {1817,1818,1863 ,1417,1418,1316 }, {1816,1817,1863 ,1315,1417,1316 }, - {1818,1890,1889 ,1418,1419,1317 }, {1863,1818,1889 ,1316,1418,1317 }, - {1890,1955,1954 ,1419,1420,1318 }, {1889,1890,1954 ,1317,1419,1318 }, - {1955,2056,2055 ,1420,1421,1319 }, {1954,1955,2055 ,1318,1420,1319 }, - {2056,2057,2076 ,1421,1422,1320 }, {2055,2056,2076 ,1319,1421,1320 }, - {2102,2101,2076 ,1423,1321,1320 }, {2057,2102,2076 ,1422,1423,1320 }, - {2102,2169,2168 ,1423,1424,1322 }, {2101,2102,2168 ,1321,1423,1322 }, - {2169,2135,2090 ,1424,1425,1324 }, {2168,2169,2090 ,1322,1424,1324 }, - {631,2090,2135 ,1426,1324,1425 }, {992,906,1045 ,958,1019,956 }, - {902,901,814 ,1427,1428,1054 }, {1845,1874,1873 ,912,962,913 }, - {692,293,1182 ,1429,1430,1235 }, {1683,1777,1776 ,1151,856,1431 }, - {1910,940,1842 ,1223,197,196 }, {1739,1775,1801 ,1011,1432,1433 }, - {1236,1235,1145 ,1434,1179,1277 }, {1980,1979,1911 ,828,830,1101 }, - {991,1142,990 ,1335,1334,1435 }, {1848,1916,1915 ,1436,832,1437 }, - {3654,3712,3653 ,1438,1439,1440 }, {927,926,828 ,1441,1284,1219 }, - {3378,3377,3351 ,1442,1443,1444 }, {3534,8081,8072 ,942,1445,511 }, - {829,927,828 ,1368,1441,1219 }, {4329,4276,4355 ,1247,1446,1447 }, - {864,839,1094 ,840,52,1398 }, {193,768,864 ,1448,41,840 }, {4717,367,468 ,1449,1370,1369 }, - {2245,6344,1265 ,1260,1450,1273 }, {1263,6323,6509 ,1199,1451,1452 }, - {6163,6029,6066 ,1453,1454,1455 }, {1431,1499,1466 ,1410,1412,1411 }, - {1756,1818,1817 ,1416,1418,1417 }, {1981,2008,2037 ,1456,1457,1458 }, - {5587,5626,5586 ,1459,1460,1461 }, {595,596,646 ,939,1462,954 }, - {728,726,727 ,1266,669,668 }, {305,440,243 ,1463,1464,1465 }, - {692,1182,1183 ,1429,1235,1238 }, {154,692,1183 ,1466,1429,1238 }, - {1235,1236,1237 ,1179,1434,1467 }, {2128,2129,2149 ,1468,1469,1470 }, - {1012,1011,926 ,1471,1285,1284 }, {927,1012,926 ,1441,1471,1284 }, - {1012,1060,1011 ,1471,1472,1285 }, {1104,1103,1011 ,1473,1474,1285 }, - {1060,1104,1011 ,1472,1473,1285 }, {1104,1157,1103 ,1473,1475,1474 }, - {1157,1040,1201 ,1475,1476,1477 }, {874,36,3866 ,636,1478,1479 }, - {1103,1157,1201 ,1474,1475,1477 }, {409,150,89 ,1480,1481,1482 }, - {880,4093,1441 ,1483,1484,1485 }, {4109,4149,4090 ,576,1486,1487 }, - {4613,278,4590 ,1488,1489,1490 }, {3898,4987,5967 ,1400,1491,1352 }, - {4568,185,3247 ,1492,1493,1494 }, {1955,2057,2056 ,1420,1422,1421 }, - {484,525,524 ,1227,1279,1278 }, {431,432,483 ,1268,1222,1228 }, - {483,484,524 ,1228,1227,1278 }, {596,647,646 ,1462,973,954 }, - {1687,1781,1780 ,1104,1106,900 }, {1327,1404,1403 ,996,975,974 }, - {1190,909,1189 ,1112,1109,1495 }, {2585,2650,3453 ,875,914,917 }, - {933,692,154 ,1496,1429,1466 }, {155,933,154 ,1497,1496,1466 }, - {990,1141,1140 ,1435,1498,1499 }, {1235,1370,1329 ,1179,1500,1134 }, - {1000,1373,1515 ,1384,1501,1502 }, {1978,1977,1867 ,847,1503,1504 }, - {2130,2198,2197 ,1505,1506,1507 }, {1224,1040,1906 ,1508,1476,1509 }, - {2036,2035,1978 ,887,889,847 }, {3286,8104,79 ,56,1343,1510 }, - {2007,2036,1978 ,829,887,847 }, {3855,3854,3812 ,1511,1512,1513 }, - {3381,3380,3354 ,871,1514,1293 }, {3813,3855,3812 ,1515,1511,1513 }, - {2651,2746,3768 ,1516,1517,1518 }, {1463,3258,3681 ,220,542,691 }, - {1874,1847,1913 ,962,1519,963 }, {2082,2081,2036 ,1520,888,887 }, - {6432,1941,3252 ,1032,1034,781 }, {369,470,469 ,1521,1522,988 }, - {368,369,469 ,1396,1521,988 }, {507,505,469 ,1523,986,988 }, - {470,507,469 ,1522,1523,988 }, {4213,4120,294 ,1070,23,945 }, - {277,1992,781 ,85,834,158 }, {1494,3862,1428 ,1083,550,1126 }, - {4569,2808,2454 ,1344,522,1345 }, {2245,6619,2336 ,1260,1272,1261 }, - {6480,5276,5350 ,1524,1525,1526 }, {7239,7261,7219 ,1527,1528,1529 }, - {1356,1432,1431 ,1530,1531,1410 }, {1355,1356,1431 ,1408,1530,1410 }, - {1500,1499,1431 ,1532,1412,1410 }, {1432,1500,1431 ,1531,1532,1410 }, - {1573,1572,1499 ,1533,1413,1412 }, {1500,1573,1499 ,1532,1533,1412 }, - {1573,1641,1640 ,1533,1534,1414 }, {1572,1573,1640 ,1413,1533,1414 }, - {1708,1707,1640 ,1535,1415,1414 }, {1641,1708,1640 ,1534,1535,1414 }, - {1708,1757,1756 ,1535,1536,1416 }, {1707,1708,1756 ,1415,1535,1416 }, - {1757,1796,1756 ,1536,1537,1416 }, {1796,1819,1818 ,1537,1538,1418 }, - {1756,1796,1818 ,1416,1537,1418 }, {1891,1890,1818 ,1539,1419,1418 }, - {1819,1891,1818 ,1538,1539,1418 }, {1956,1955,1890 ,1540,1420,1419 }, - {1891,1956,1890 ,1539,1540,1419 }, {1956,2058,2057 ,1540,1541,1422 }, - {1955,1956,2057 ,1420,1540,1422 }, {2058,2103,2102 ,1541,1542,1423 }, - {2057,2058,2102 ,1422,1541,1423 }, {2103,2170,2169 ,1542,1543,1424 }, - {2102,2103,2169 ,1423,1542,1424 }, {2226,2135,2169 ,1544,1425,1424 }, - {2170,2226,2169 ,1543,1544,1424 }, {2226,2152,2136 ,1544,1545,1546 }, - {2135,2226,2136 ,1425,1544,1546 }, {1184,1188,2009 ,797,799,1224 }, - {1980,1981,2036 ,828,1456,887 }, {1985,729,730 ,1547,1548,1549 }, - {2197,933,155 ,1507,1496,1497 }, {2196,2197,155 ,1550,1507,1497 }, - {2037,2038,2082 ,1458,1551,1520 }, {2083,2128,2127 ,1552,1468,1553 }, - {2038,2083,2082 ,1551,1552,1520 }, {2198,2199,2216 ,1506,1554,1555 }, - {992,1144,991 ,958,957,1335 }, {6393,3358,3305 ,1556,880,879 }, - {1911,1978,1867 ,1101,847,1504 }, {1263,4554,6323 ,1199,1307,1451 }, - {337,385,336 ,866,864,1013 }, {1549,1548,1476 ,903,902,859 }, - {1477,1476,1404 ,1045,859,975 }, {3664,296,3475 ,1557,1558,1559 }, - {2746,3566,3768 ,1517,1146,1518 }, {526,625,582 ,718,720,719 }, - {2122,2031,2032 ,1128,1560,1127 }, {2148,2147,2126 ,1561,1562,890 }, - {1618,1685,1684 ,1563,1005,1327 }, {525,581,580 ,1279,1274,1280 }, - {3987,4227,3946 ,1229,1564,1230 }, {294,4120,4375 ,945,23,312 }, - {4548,4568,3247 ,589,1492,1494 }, {5113,6098,5914 ,141,1565,1566 }, - {1501,1500,1432 ,1567,1532,1531 }, {2259,8103,6351 ,1131,1291,1568 }, - {860,1238,1183 ,1385,1569,1238 }, {2082,2083,2127 ,1520,1552,1553 }, - {2128,2149,2148 ,1468,1470,1561 }, {2149,2197,2196 ,1470,1507,1550 }, - {2127,2128,2148 ,1553,1468,1561 }, {2148,2149,2196 ,1561,1470,1550 }, - {2130,2131,2198 ,1505,656,1506 }, {724,723,624 ,722,1053,1099 }, - {2199,2200,2216 ,1554,1570,1555 }, {1684,1685,1721 ,1327,1005,854 }, - {1683,1721,1777 ,1151,854,856 }, {1618,1619,1685 ,1563,1003,1005 }, - {240,4183,260 ,1571,1572,1573 }, {3263,2746,2651 ,252,1517,1516 }, - {392,305,2190 ,857,1463,1574 }, {3915,3903,3956 ,1575,296,1383 }, - {2869,2832,2868 ,1576,638,1577 }, {1913,1981,1980 ,963,1456,828 }, - {1885,4698,1810 ,778,1578,779 }, {649,444,492 ,1579,922,1580 }, - {399,768,193 ,269,41,1448 }, {1591,399,1032 ,1072,269,1581 }, - {1032,399,193 ,1581,269,1448 }, {4375,399,1591 ,312,269,1072 }, - {3777,4261,5733 ,1582,1583,1584 }, {1492,1749,5075 ,1585,555,1586 }, - {5889,6163,6066 ,1587,1453,1455 }, {5511,5512,5548 ,1588,1589,1590 }, - {3252,6553,6432 ,781,780,1032 }, {1757,1820,1819 ,1536,1591,1538 }, - {1796,1757,1819 ,1537,1536,1538 }, {1820,1891,1819 ,1591,1539,1538 }, - {2129,2130,2149 ,1469,1505,1470 }, {1913,1914,1981 ,963,1000,1456 }, - {1982,1983,2008 ,1002,1001,1457 }, {1983,2038,2037 ,1001,1551,1458 }, - {1981,1982,2008 ,1456,1002,1457 }, {2008,1983,2037 ,1457,1001,1458 }, - {2067,2005,2006 ,1592,1593,1181 }, {1867,1977,2390 ,1504,1503,1594 }, - {2131,2199,2198 ,656,1554,1506 }, {625,724,624 ,720,722,1099 }, - {741,740,644 ,1221,1595,1176 }, {1239,1240,1190 ,1596,796,1112 }, - {645,741,644 ,940,1221,1176 }, {547,548,644 ,1170,938,1176 }, - {690,632,1290 ,1382,1380,795 }, {2034,2033,1977 ,1289,1288,1503 }, - {2120,2121,2189 ,1597,1598,1599 }, {440,394,243 ,1464,1600,1465 }, - {2609,744,691 ,1130,1367,1173 }, {1779,1780,1842 ,1275,900,196 }, - {4035,4036,2151 ,1601,1602,1603 }, {1088,1186,1452 ,1604,1605,1606 }, - {6347,7254,6348 ,451,450,1607 }, {271,370,369 ,1608,1609,1521 }, - {370,418,369 ,1609,1610,1521 }, {418,471,470 ,1610,1611,1522 }, - {508,507,470 ,1612,1523,1522 }, {471,508,470 ,1611,1612,1522 }, - {566,565,507 ,1613,1614,1523 }, {508,566,507 ,1612,1613,1523 }, - {755,4084,4113 ,1615,205,207 }, {2030,5203,2698 ,770,102,105 }, - {229,1112,356 ,221,292,310 }, {7826,7853,7801 ,1616,1617,1618 }, - {1030,978,4991 ,1619,1620,1621 }, {6736,6790,6754 ,1622,711,713 }, - {6092,6176,5940 ,1623,1624,1625 }, {1357,1356,1315 ,1626,1530,1627 }, - {4576,4596,7524 ,1628,1629,1630 }, {1357,1433,1432 ,1626,1631,1531 }, - {1356,1357,1432 ,1530,1626,1531 }, {1433,1502,1501 ,1631,1632,1567 }, - {1432,1433,1501 ,1531,1631,1567 }, {1535,1500,1501 ,1633,1532,1567 }, - {1502,1535,1501 ,1632,1633,1567 }, {1574,1573,1500 ,1634,1533,1532 }, - {1535,1574,1500 ,1633,1634,1532 }, {1574,1642,1641 ,1634,1635,1534 }, - {1573,1574,1641 ,1533,1634,1534 }, {1642,1709,1708 ,1635,1636,1535 }, - {1641,1642,1708 ,1534,1635,1535 }, {1709,1758,1757 ,1636,1637,1536 }, - {1708,1709,1757 ,1535,1636,1536 }, {1758,1821,1820 ,1637,1638,1591 }, - {1757,1758,1820 ,1536,1637,1591 }, {1892,1891,1820 ,1639,1539,1591 }, - {1821,1892,1820 ,1638,1639,1591 }, {1957,1956,1891 ,1640,1540,1539 }, - {1892,1957,1891 ,1639,1640,1539 }, {1957,2016,1956 ,1640,1641,1540 }, - {2016,2059,2058 ,1641,1642,1541 }, {1956,2016,2058 ,1540,1641,1541 }, - {2104,2103,2058 ,1643,1542,1541 }, {2059,2104,2058 ,1642,1643,1541 }, - {2171,2170,2103 ,1644,1543,1542 }, {2104,2171,2103 ,1643,1644,1542 }, - {2171,2227,2226 ,1644,1645,1544 }, {2170,2171,2226 ,1543,1644,1544 }, - {2227,2161,2152 ,1645,1646,1545 }, {2226,2227,2152 ,1544,1645,1545 }, - {2161,391,2152 ,1646,1647,1545 }, {776,782,777 ,1120,1648,421 }, - {1914,1982,1981 ,1000,1002,1456 }, {1142,1141,990 ,1334,1498,1435 }, - {1403,1475,1474 ,974,858,1649 }, {3645,3644,3591 ,1650,1651,1652 }, - {450,548,547 ,1653,938,1170 }, {548,645,644 ,938,940,1176 }, - {1240,1239,305 ,796,1596,1463 }, {1617,1618,1684 ,904,1563,1327 }, - {221,241,240 ,1296,314,1571 }, {102,221,240 ,432,1296,1571 }, - {109,2039,349 ,1654,1655,566 }, {7747,7745,7746 ,331,650,332 }, - {1104,1040,1157 ,1473,1476,1475 }, {3913,2030,2698 ,841,770,105 }, - {5641,5642,5657 ,510,526,48 }, {1463,4326,3258 ,220,219,542 }, - {5337,5338,4914 ,572,63,65 }, {639,715,950 ,291,168,330 }, {4222,4131,4251 ,530,1656,132 }, - {1357,1315,1316 ,1626,1627,1657 }, {1502,1574,1535 ,1632,1634,1633 }, - {1709,1759,1758 ,1636,1658,1637 }, {6686,3534,8070 ,750,942,941 }, - {1785,1849,1848 ,1659,1660,1436 }, {2216,968,293 ,1555,1661,1430 }, - {1784,1785,1848 ,1662,1659,1436 }, {1875,1917,1916 ,1663,833,832 }, - {1848,1875,1916 ,1436,1663,832 }, {449,450,547 ,1169,1653,1170 }, - {1106,1203,1202 ,1664,337,339 }, {1326,1327,1403 ,1330,996,974 }, - {687,1744,2088 ,1665,1666,1667 }, {596,595,548 ,1462,939,938 }, - {1685,1722,1721 ,1005,1668,854 }, {2216,2200,968 ,1555,1570,1661 }, - {102,1553,221 ,432,1669,1296 }, {7194,7208,7225 ,1670,1671,1672 }, - {1144,1234,1142 ,957,1178,1334 }, {471,566,508 ,1611,1613,1612 }, - {200,1348,714 ,244,148,265 }, {1348,639,714 ,148,291,265 }, {737,229,356 ,150,221,310 }, - {1033,896,888 ,306,256,238 }, {4483,4525,4482 ,549,623,583 }, - {4473,4497,4520 ,270,91,1673 }, {826,189,738 ,507,503,1674 }, - {1822,1821,1758 ,1675,1638,1637 }, {1759,1822,1758 ,1658,1675,1637 }, - {1821,1822,1892 ,1638,1675,1639 }, {1957,2059,2016 ,1640,1642,1641 }, - {2172,2171,2104 ,1676,1644,1643 }, {1849,1875,1848 ,1660,1663,1436 }, - {2033,2032,1976 ,1288,1127,1180 }, {1233,1234,1327 ,1294,1178,996 }, - {339,436,387 ,1143,1142,1102 }, {221,748,241 ,1296,1677,314 }, - {284,4283,1241 ,139,1678,313 }, {2893,5307,4393 ,1679,461,463 }, - {272,371,370 ,1680,1681,1609 }, {271,272,370 ,1608,1680,1609 }, - {371,419,418 ,1681,1682,1610 }, {370,371,418 ,1609,1681,1610 }, - {419,472,471 ,1682,1683,1611 }, {418,419,471 ,1610,1682,1611 }, - {567,566,471 ,1684,1613,1611 }, {472,567,471 ,1683,1684,1611 }, - {715,639,497 ,168,291,290 }, {4483,1652,4525 ,549,170,623 }, - {1021,3,4187 ,289,329,502 }, {4497,4534,136 ,91,403,1685 }, {4525,1673,4513 ,623,1686,624 }, - {1274,1275,1316 ,1687,1688,1657 }, {1275,1358,1357 ,1688,1689,1626 }, - {1316,1275,1357 ,1657,1688,1626 }, {1434,1433,1357 ,1690,1631,1626 }, - {1358,1434,1357 ,1689,1690,1626 }, {1503,1502,1433 ,1691,1632,1631 }, - {1434,1503,1433 ,1690,1691,1631 }, {1575,1574,1502 ,1692,1634,1632 }, - {1503,1575,1502 ,1691,1692,1632 }, {1643,1642,1574 ,1693,1635,1634 }, - {1575,1643,1574 ,1692,1693,1634 }, {1643,1710,1709 ,1693,1694,1636 }, - {1642,1643,1709 ,1635,1693,1636 }, {1710,1711,1709 ,1694,1695,1636 }, - {1711,1760,1759 ,1695,1696,1658 }, {1709,1711,1759 ,1636,1695,1658 }, - {1823,1822,1759 ,1697,1675,1658 }, {1760,1823,1759 ,1696,1697,1658 }, - {1823,1893,1892 ,1697,1698,1639 }, {1822,1823,1892 ,1675,1697,1639 }, - {1893,1958,1957 ,1698,1699,1640 }, {1892,1893,1957 ,1639,1698,1640 }, - {2060,2059,1957 ,1700,1642,1640 }, {1958,2060,1957 ,1699,1700,1640 }, - {2060,2077,2059 ,1700,1701,1642 }, {2105,2104,2059 ,1702,1643,1642 }, - {2077,2105,2059 ,1701,1702,1642 }, {2173,2172,2104 ,1703,1676,1643 }, - {2105,2173,2104 ,1702,1703,1643 }, {2173,2174,2171 ,1703,1704,1644 }, - {2172,2173,2171 ,1676,1703,1644 }, {2174,2228,2227 ,1704,1705,1645 }, - {2171,2174,2227 ,1644,1704,1645 }, {2228,2214,2161 ,1705,1706,1646 }, - {2227,2228,2161 ,1645,1705,1646 }, {680,391,2161 ,1707,1647,1646 }, - {2214,680,2161 ,1706,1707,1646 }, {680,1624,1623 ,1707,1708,1709 }, - {391,680,1623 ,1647,1707,1709 }, {8061,8097,8082 ,453,1710,454 }, - {2038,2069,2083 ,1551,1711,1552 }, {1778,1779,1840 ,855,1275,198 }, - {4426,4021,8100 ,1056,1712,1713 }, {2121,2122,2190 ,1598,1128,1574 }, - {170,690,1290 ,794,1382,795 }, {7977,7976,7927 ,1714,1715,1716 }, - {1847,1914,1913 ,1519,1000,963 }, {242,1688,1389 ,1717,1718,315 }, - {241,242,1389 ,314,1717,315 }, {1688,133,1241 ,1718,1719,313 }, - {1389,1688,1241 ,315,1718,313 }, {3451,3516,2582 ,1720,1721,873 }, - {1912,1980,1911 ,964,828,1101 }, {204,272,271 ,1722,1680,1608 }, - {568,567,472 ,1723,1684,1683 }, {4224,896,1033 ,309,256,306 }, - {888,1006,799 ,238,234,392 }, {4520,4497,136 ,1673,91,1685 }, - {7928,7927,7876 ,1724,1716,1725 }, {1576,1575,1503 ,1726,1692,1691 }, - {1576,1643,1575 ,1726,1693,1692 }, {1643,1711,1710 ,1693,1695,1694 }, - {8124,3271,2810 ,1141,1727,1728 }, {905,904,858 ,1729,1730,1731 }, - {2126,2147,2146 ,890,1562,1732 }, {859,905,858 ,1733,1729,1731 }, - {1841,1842,1840 ,1276,196,198 }, {1619,1618,1549 ,1003,1563,903 }, - {815,903,902 ,999,1734,1427 }, {2541,242,241 ,1298,1717,314 }, - {883,76,146 ,119,689,504 }, {3516,3537,2582 ,1721,1735,873 }, - {3477,5785,4162 ,1736,1737,1738 }, {5480,4527,4162 ,1739,1740,1738 }, - {999,1985,960 ,798,1547,1326 }, {272,204,205 ,1680,1722,1741 }, - {4106,8142,8078 ,1742,1743,1744 }, {4483,4482,4444 ,549,583,582 }, - {174,1147,1422 ,169,202,525 }, {136,4534,1628 ,1685,403,118 }, - {189,4187,4184 ,503,502,898 }, {1644,1643,1576 ,1745,1693,1726 }, - {1643,1644,1711 ,1693,1745,1695 }, {2105,2174,2173 ,1702,1704,1703 }, - {1726,1785,1784 ,1746,1659,1662 }, {1725,1726,1784 ,1747,1746,1662 }, - {1838,1839,4427 ,425,1138,426 }, {2031,2067,2029 ,1560,1592,1748 }, - {273,372,371 ,1749,1750,1681 }, {372,420,419 ,1750,1751,1682 }, - {371,372,419 ,1681,1750,1682 }, {420,473,472 ,1751,1752,1683 }, - {419,420,472 ,1682,1751,1683 }, {569,568,472 ,1753,1723,1683 }, - {473,569,472 ,1752,1753,1683 }, {569,665,664 ,1753,1754,1755 }, - {568,569,664 ,1723,1753,1755 }, {1422,997,826 ,525,328,507 }, - {826,997,1021 ,507,328,289 }, {1034,1127,1172 ,1756,1757,1758 }, - {1172,1127,1221 ,1758,1757,1759 }, {1127,1276,1275 ,1757,1760,1688 }, - {1221,1127,1275 ,1759,1757,1688 }, {1276,1359,1358 ,1760,1761,1689 }, - {1275,1276,1358 ,1688,1760,1689 }, {1359,1435,1434 ,1761,1762,1690 }, - {1358,1359,1434 ,1689,1761,1690 }, {1504,1503,1434 ,1763,1691,1690 }, - {1435,1504,1434 ,1762,1763,1690 }, {1577,1576,1503 ,1764,1726,1691 }, - {1504,1577,1503 ,1763,1764,1691 }, {1645,1644,1576 ,1765,1745,1726 }, - {1577,1645,1576 ,1764,1765,1726 }, {1645,1712,1711 ,1765,1766,1695 }, - {1644,1645,1711 ,1745,1765,1695 }, {1761,1760,1711 ,1767,1696,1695 }, - {1712,1761,1711 ,1766,1767,1695 }, {1761,1824,1823 ,1767,1768,1697 }, - {1760,1761,1823 ,1696,1767,1697 }, {1894,1893,1823 ,1769,1698,1697 }, - {1824,1894,1823 ,1768,1769,1697 }, {1894,1959,1958 ,1769,1770,1699 }, - {1893,1894,1958 ,1698,1769,1699 }, {1959,2061,2060 ,1770,1771,1700 }, - {1958,1959,2060 ,1699,1770,1700 }, {2061,2062,2077 ,1771,1772,1701 }, - {2060,2061,2077 ,1700,1771,1701 }, {2062,2106,2105 ,1772,1773,1702 }, - {2077,2062,2105 ,1701,1772,1702 }, {2106,2175,2174 ,1773,1774,1704 }, - {2105,2106,2174 ,1702,1773,1704 }, {2175,2229,2228 ,1774,1775,1705 }, - {2174,2175,2228 ,1704,1774,1705 }, {2229,1559,2214 ,1775,1776,1706 }, - {2228,2229,2214 ,1705,1775,1706 }, {633,680,2214 ,1777,1707,1706 }, - {1559,633,2214 ,1776,1777,1706 }, {633,1624,680 ,1777,1708,1707 }, - {1187,1186,1624 ,1778,1605,1708 }, {633,1187,1624 ,1777,1778,1708 }, - {1187,1452,1186 ,1778,1606,1605 }, {1187,1919,1452 ,1778,1779,1606 }, - {8110,5521,8125 ,1140,751,752 }, {1326,1403,1402 ,1330,974,1780 }, - {1657,1658,1725 ,1781,1782,1747 }, {1688,134,133 ,1718,1783,1719 }, - {134,80,284 ,1783,140,139 }, {133,134,284 ,1719,1783,139 }, {8125,8071,8068 ,752,738,1784 }, - {272,273,371 ,1680,1749,1681 }, {493,175,492 ,1785,211,1580 }, - {6384,3362,3387 ,1786,1200,1787 }, {1034,1035,1127 ,1756,1788,1757 }, - {1959,2062,2061 ,1770,1772,1771 }, {3712,3758,3711 ,1439,1789,1790 }, - {3445,3648,3596 ,1791,734,1792 }, {1017,3513,3452 ,1793,441,1794 }, - {108,35,36 ,1336,1338,1478 }, {3148,3008,2743 ,814,546,923 }, - {1658,1726,1725 ,1782,1746,1747 }, {5057,8096,6122 ,1795,1796,1797 }, - {3456,3405,2920 ,1145,1798,1799 }, {5237,5600,2086 ,1800,1801,1802 }, - {5151,5171,6114 ,1803,1804,1805 }, {1549,1618,1617 ,903,1563,904 }, - {982,1035,1034 ,1806,1788,1756 }, {943,982,1034 ,1807,1806,1756 }, - {1959,2017,2062 ,1770,1808,1772 }, {3687,2743,3873 ,924,923,1809 }, - {3597,3445,3596 ,1810,1791,1792 }, {2121,2120,2028 ,1598,1597,1811 }, - {3537,2072,2474 ,1735,1812,874 }, {581,624,623 ,1274,1099,1100 }, - {903,990,989 ,1734,1435,1813 }, {2148,2196,2147 ,1561,1550,1562 }, - {453,82,80 ,1814,138,140 }, {5137,4631,5136 ,1815,1816,1817 }, - {1477,1549,1476 ,1045,903,859 }, {4367,4390,4343 ,228,230,1818 }, - {412,4150,1793 ,358,320,319 }, {274,373,372 ,1819,1820,1750 }, - {273,274,372 ,1749,1819,1750 }, {373,374,420 ,1820,1821,1751 }, - {372,373,420 ,1750,1820,1751 }, {374,474,473 ,1821,1822,1752 }, - {420,374,473 ,1751,1821,1752 }, {474,570,569 ,1822,1823,1753 }, - {473,474,569 ,1752,1822,1753 }, {570,666,665 ,1823,1824,1754 }, - {569,570,665 ,1753,1823,1754 }, {666,762,761 ,1824,1825,1826 }, - {665,666,761 ,1754,1824,1826 }, {762,846,845 ,1825,1827,1828 }, - {761,762,845 ,1826,1825,1828 }, {846,944,943 ,1827,1829,1807 }, - {845,846,943 ,1828,1827,1807 }, {943,944,982 ,1807,1829,1806 }, - {944,1036,1035 ,1829,1830,1788 }, {982,944,1035 ,1806,1829,1788 }, - {1036,1128,1127 ,1830,1831,1757 }, {1035,1036,1127 ,1788,1830,1757 }, - {1277,1276,1127 ,1832,1760,1757 }, {1128,1277,1127 ,1831,1832,1757 }, - {1360,1359,1276 ,1833,1761,1760 }, {1277,1360,1276 ,1832,1833,1760 }, - {1360,1436,1435 ,1833,1834,1762 }, {1359,1360,1435 ,1761,1833,1762 }, - {1505,1504,1435 ,1835,1763,1762 }, {1436,1505,1435 ,1834,1835,1762 }, - {1505,1578,1577 ,1835,1836,1764 }, {1504,1505,1577 ,1763,1835,1764 }, - {1578,1646,1645 ,1836,1837,1765 }, {1577,1578,1645 ,1764,1836,1765 }, - {1646,1713,1712 ,1837,1838,1766 }, {1645,1646,1712 ,1765,1837,1766 }, - {1713,1762,1761 ,1838,1839,1767 }, {1712,1713,1761 ,1766,1838,1767 }, - {1825,1824,1761 ,1840,1768,1767 }, {1762,1825,1761 ,1839,1840,1767 }, - {1825,1895,1894 ,1840,1841,1769 }, {1824,1825,1894 ,1768,1840,1769 }, - {1895,1960,1959 ,1841,1842,1770 }, {1894,1895,1959 ,1769,1841,1770 }, - {1960,1997,1959 ,1842,1843,1770 }, {1959,1997,2017 ,1770,1843,1808 }, - {1997,2063,2062 ,1843,1844,1772 }, {2017,1997,2062 ,1808,1843,1772 }, - {2063,2107,2106 ,1844,1845,1773 }, {2062,2063,2106 ,1772,1844,1773 }, - {2107,2108,2106 ,1845,1846,1773 }, {2108,2176,2175 ,1846,1847,1774 }, - {2106,2108,2175 ,1773,1846,1774 }, {2176,2230,2229 ,1847,1848,1775 }, - {2175,2176,2229 ,1774,1847,1775 }, {2230,866,1559 ,1848,1849,1776 }, - {2229,2230,1559 ,1775,1848,1776 }, {866,550,633 ,1849,1850,1777 }, - {1559,866,633 ,1776,1849,1777 }, {550,1244,1187 ,1850,575,1778 }, - {633,550,1187 ,1777,1850,1778 }, {1244,1367,1187 ,575,574,1778 }, - {2195,341,2194 ,1851,1852,1853 }, {7275,7254,7253 ,1854,450,1855 }, - {1977,2033,1976 ,1503,1288,1180 }, {2582,3537,2474 ,873,1735,874 }, - {902,903,901 ,1427,1734,1428 }, {1232,1231,1140 ,1295,1332,1499 }, - {1141,1232,1140 ,1498,1295,1499 }, {2082,2127,2081 ,1520,1553,888 }, - {51,301,453 ,1856,1857,1814 }, {80,51,453 ,140,1856,1814 }, {94,82,301 ,1858,138,1857 }, - {1693,3425,3283 ,264,1859,262 }, {5219,5240,5218 ,1860,481,483 }, - {3344,4221,592 ,1861,1862,1863 }, {772,891,4540 ,18,189,19 }, - {274,374,373 ,1819,1821,1820 }, {4314,1561,1525 ,1864,1865,1866 }, - {3591,3644,3590 ,1652,1651,1867 }, {2743,3931,3873 ,923,1868,1809 }, - {2125,2126,2146 ,892,890,1732 }, {723,815,814 ,1053,999,1054 }, - {2196,155,165 ,1550,1497,1869 }, {2195,2196,165 ,1851,1550,1869 }, - {2939,80,134 ,1870,140,1783 }, {5680,2453,5698 ,50,42,44 }, {274,320,374 ,1819,1871,1821 }, - {2063,2108,2107 ,1844,1846,1845 }, {550,1408,1244 ,1850,1872,575 }, - {1367,2070,614 ,574,573,1397 }, {7510,7509,7452 ,1873,1874,1875 }, - {859,858,816 ,1733,1731,998 }, {305,243,2189 ,1463,1465,1599 }, - {51,355,301 ,1856,1876,1857 }, {94,157,196 ,1858,1877,152 }, - {2743,3008,3944 ,923,546,729 }, {5180,5179,5136 ,1878,1879,1817 }, - {5658,2453,5680 ,49,42,50 }, {770,2352,805 ,275,390,389 }, {4064,4069,3317 ,1880,1881,1882 }, - {375,475,474 ,1883,1884,1822 }, {374,375,474 ,1821,1883,1822 }, - {571,570,474 ,1885,1823,1822 }, {475,571,474 ,1884,1885,1822 }, - {667,666,570 ,1886,1824,1823 }, {571,667,570 ,1885,1886,1823 }, - {763,762,666 ,1887,1825,1824 }, {667,763,666 ,1886,1887,1824 }, - {847,846,762 ,1888,1827,1825 }, {763,847,762 ,1887,1888,1825 }, - {945,944,846 ,1889,1829,1827 }, {847,945,846 ,1888,1889,1827 }, - {1037,1036,944 ,1890,1830,1829 }, {945,1037,944 ,1889,1890,1829 }, - {1129,1128,1036 ,1891,1831,1830 }, {1037,1129,1036 ,1890,1891,1830 }, - {1129,1278,1277 ,1891,1892,1832 }, {1128,1129,1277 ,1831,1891,1832 }, - {1361,1360,1277 ,1893,1833,1832 }, {1278,1361,1277 ,1892,1893,1832 }, - {1437,1436,1360 ,1894,1834,1833 }, {1361,1437,1360 ,1893,1894,1833 }, - {1506,1505,1436 ,1895,1835,1834 }, {1437,1506,1436 ,1894,1895,1834 }, - {1506,1579,1578 ,1895,1896,1836 }, {1505,1506,1578 ,1835,1895,1836 }, - {1579,1647,1646 ,1896,1897,1837 }, {1578,1579,1646 ,1836,1896,1837 }, - {1647,1714,1713 ,1897,1898,1838 }, {1646,1647,1713 ,1837,1897,1838 }, - {1714,1763,1762 ,1898,1899,1839 }, {1713,1714,1762 ,1838,1898,1839 }, - {1826,1825,1762 ,1900,1840,1839 }, {1763,1826,1762 ,1899,1900,1839 }, - {1896,1895,1825 ,1901,1841,1840 }, {1826,1896,1825 ,1900,1901,1840 }, - {1961,1960,1895 ,1902,1842,1841 }, {1896,1961,1895 ,1901,1902,1841 }, - {1961,1997,1960 ,1902,1843,1842 }, {1961,2018,1997 ,1902,1903,1843 }, - {2018,2064,2063 ,1903,1904,1844 }, {1997,2018,2063 ,1843,1903,1844 }, - {2109,2108,2063 ,1905,1846,1844 }, {2064,2109,2063 ,1904,1905,1844 }, - {2109,2177,2176 ,1905,1906,1847 }, {2108,2109,2176 ,1846,1905,1847 }, - {2177,780,2230 ,1906,1907,1848 }, {2176,2177,2230 ,1847,1906,1848 }, - {2230,780,866 ,1848,1907,1849 }, {780,389,550 ,1907,1908,1850 }, - {866,780,550 ,1849,1907,1850 }, {389,1409,1408 ,1908,1909,1872 }, - {550,389,1408 ,1850,1908,1872 }, {1409,1095,1244 ,1909,1910,575 }, - {1408,1409,1244 ,1872,1909,575 }, {1095,2070,1244 ,1910,573,575 }, - {3364,3363,3330 ,1184,1911,1185 }, {5817,5816,5800 ,701,545,702 }, - {3869,3890,3854 ,1912,1913,1512 }, {3975,2812,3684 ,728,1914,1915 }, - {1547,1548,1616 ,860,902,1150 }, {723,722,623 ,1053,1052,1100 }, - {905,992,904 ,1729,958,1730 }, {250,157,94 ,1916,1877,1858 }, - {301,250,94 ,1857,1916,1858 }, {3944,3975,3684 ,729,728,1915 }, - {1455,297,140 ,1917,1918,1919 }, {1192,398,117 ,8,15,9 }, {946,945,847 ,1920,1889,1888 }, - {1764,1826,1763 ,1921,1900,1899 }, {1065,921,1340 ,821,1922,822 }, - {2192,170,392 ,1175,794,857 }, {991,990,903 ,1335,1435,1734 }, - {2149,2130,2197 ,1470,1505,1507 }, {2746,3263,8139 ,1517,252,1923 }, - {173,398,1192 ,12,15,8 }, {772,809,891 ,18,20,189 }, {4514,4483,4465 ,259,549,257 }, - {1038,1037,945 ,1924,1890,1889 }, {946,1038,945 ,1920,1924,1889 }, - {1038,1129,1037 ,1924,1891,1890 }, {1714,1764,1763 ,1898,1921,1899 }, - {1827,1826,1764 ,1925,1900,1921 }, {2110,2109,2064 ,1926,1905,1904 }, - {3997,4039,4038 ,380,382,1927 }, {3996,3997,4038 ,1928,380,1927 }, - {3999,4041,4040 ,1023,1063,460 }, {1106,1204,1203 ,1664,338,337 }, - {906,1046,1045 ,1019,1929,956 }, {909,910,1189 ,1109,1930,1495 }, - {3572,3590,3589 ,1931,1867,1932 }, {1302,1303,13 ,909,1933,910 }, - {1844,1873,1912 ,911,913,964 }, {340,4223,593 ,1107,1934,1108 }, - {1850,251,1517 ,601,603,600 }, {1334,3871,138 ,1935,397,434 }, - {4202,562,700 ,260,1936,255 }, {4682,1376,3899 ,1191,1937,1938 }, - {106,5139,5138 ,1073,1939,1940 }, {1245,57,735 ,36,222,224 }, - {463,467,360 ,1941,346,86 }, {3749,3662,4011 ,652,1942,395 }, - {1135,1285,5067 ,1943,1944,1945 }, {6898,6563,8063 ,1946,464,465 }, - {572,611,571 ,1947,1948,1885 }, {668,667,571 ,1949,1886,1885 }, - {611,668,571 ,1948,1949,1885 }, {764,763,667 ,1950,1887,1886 }, - {668,764,667 ,1949,1950,1886 }, {848,847,763 ,1951,1888,1887 }, - {764,848,763 ,1950,1951,1887 }, {947,946,847 ,1952,1920,1888 }, - {848,947,847 ,1951,1952,1888 }, {1039,1038,946 ,1953,1924,1920 }, - {947,1039,946 ,1952,1953,1920 }, {1039,1129,1038 ,1953,1891,1924 }, - {1039,1173,1129 ,1953,1954,1891 }, {1279,1278,1129 ,1955,1892,1891 }, - {1173,1279,1129 ,1954,1955,1891 }, {1362,1361,1278 ,1956,1893,1892 }, - {1279,1362,1278 ,1955,1956,1892 }, {1438,1437,1361 ,1957,1894,1893 }, - {1362,1438,1361 ,1956,1957,1893 }, {1507,1506,1437 ,1958,1895,1894 }, - {1438,1507,1437 ,1957,1958,1894 }, {1580,1579,1506 ,1959,1896,1895 }, - {1507,1580,1506 ,1958,1959,1895 }, {1580,1648,1647 ,1959,1960,1897 }, - {1579,1580,1647 ,1896,1959,1897 }, {1648,1715,1714 ,1960,1961,1898 }, - {1647,1648,1714 ,1897,1960,1898 }, {1715,1735,1714 ,1961,1962,1898 }, - {1735,1765,1764 ,1962,1963,1921 }, {1714,1735,1764 ,1898,1962,1921 }, - {1828,1827,1764 ,1964,1925,1921 }, {1765,1828,1764 ,1963,1964,1921 }, - {1864,1826,1827 ,1965,1900,1925 }, {1828,1864,1827 ,1964,1965,1925 }, - {1897,1896,1826 ,1966,1901,1900 }, {1864,1897,1826 ,1965,1966,1900 }, - {1962,1961,1896 ,1967,1902,1901 }, {1897,1962,1896 ,1966,1967,1901 }, - {2019,2018,1961 ,1968,1903,1902 }, {1962,2019,1961 ,1967,1968,1902 }, - {2065,2064,2018 ,1969,1904,1903 }, {2019,2065,2018 ,1968,1969,1903 }, - {2111,2110,2064 ,1970,1926,1904 }, {2065,2111,2064 ,1969,1970,1904 }, - {2144,2109,2110 ,1971,1905,1926 }, {2111,2144,2110 ,1970,1971,1926 }, - {2178,2177,2109 ,1972,1906,1905 }, {2144,2178,2109 ,1971,1972,1905 }, - {2178,734,780 ,1972,1973,1907 }, {2177,2178,780 ,1906,1972,1907 }, - {390,389,780 ,1974,1908,1907 }, {734,390,780 ,1973,1974,1907 }, - {1372,1409,389 ,1975,1909,1908 }, {390,1372,389 ,1974,1975,1908 }, - {615,1095,1409 ,766,1910,1909 }, {1372,615,1409 ,1975,766,1909 }, - {3430,3489,3429 ,1976,1977,1978 }, {3380,3430,3379 ,1514,1976,1979 }, - {4038,4039,2662 ,1927,382,805 }, {3489,3488,3429 ,1977,1980,1978 }, - {580,581,623 ,1280,1274,1100 }, {293,1181,1182 ,1430,1981,1235 }, - {1616,1683,1682 ,1150,1151,1010 }, {2037,2082,2036 ,1458,1520,887 }, - {239,2290,2292 ,1103,1982,1983 }, {906,992,905 ,1019,958,1729 }, - {157,91,223 ,1877,1984,1985 }, {681,302,14 ,620,622,1986 }, {694,4165,2477 ,1987,640,642 }, - {562,708,700 ,1936,401,255 }, {467,4110,503 ,346,372,374 }, {3293,7133,7110 ,1988,1989,1990 }, - {765,764,668 ,1991,1950,1949 }, {1174,1173,1039 ,1992,1954,1953 }, - {1174,1279,1173 ,1992,1955,1954 }, {1828,1897,1864 ,1964,1966,1965 }, - {1962,2065,2019 ,1967,1969,1968 }, {2111,2178,2144 ,1970,1972,1971 }, - {2243,2325,2324 ,1993,1994,1995 }, {3323,3355,3322 ,1051,1292,1182 }, - {1142,1233,1141 ,1334,1294,1498 }, {830,928,927 ,1996,1997,1441 }, - {829,830,927 ,1368,1996,1441 }, {526,582,525 ,718,719,1279 }, - {6577,8088,8094 ,97,1998,98 }, {2127,2126,2081 ,1553,890,888 }, - {1980,2036,2007 ,828,887,829 }, {1876,460,822 ,1386,1999,2000 }, - {4244,1599,4223 ,753,391,1934 }, {14,38,681 ,1986,742,620 }, - {3662,3749,5304 ,1942,652,654 }, {4631,5180,5136 ,1816,1878,1817 }, - {959,535,6686 ,1358,2001,750 }, {700,708,757 ,255,401,239 }, - {4187,3,1023 ,502,329,308 }, {765,848,764 ,1991,1951,1950 }, - {1280,1279,1174 ,2002,1955,1992 }, {1363,1362,1279 ,2003,1956,1955 }, - {1280,1363,1279 ,2002,2003,1955 }, {1898,1897,1828 ,2004,1966,1964 }, - {2231,734,2178 ,2005,1973,1972 }, {2697,3327,1211 ,2006,439,2007 }, - {254,2662,2472 ,2008,805,2009 }, {1013,1012,927 ,2010,1471,1441 }, - {928,1013,927 ,1997,2010,1441 }, {1686,1687,1780 ,1004,1104,900 }, - {1089,2893,4393 ,103,1679,463 }, {1260,1857,1311 ,11,13,213 }, - {1319,1521,729 ,322,2011,1548 }, {139,777,963 ,145,421,1341 }, - {2785,3878,3419 ,1246,1248,2012 }, {7515,7573,7538 ,1079,2013,2014 }, - {2141,8085,973 ,2015,2016,2017 }, {3534,8138,8081 ,942,2018,1445 }, - {766,765,668 ,2019,1991,1949 }, {669,766,668 ,2020,2019,1949 }, - {849,848,765 ,2021,1951,1991 }, {766,849,765 ,2019,2021,1991 }, - {948,947,848 ,2022,1952,1951 }, {849,948,848 ,2021,2022,1951 }, - {948,983,947 ,2022,2023,1952 }, {1082,1039,947 ,2024,1953,1952 }, - {983,1082,947 ,2023,2024,1952 }, {1175,1174,1039 ,2025,1992,1953 }, - {1082,1175,1039 ,2024,2025,1953 }, {1281,1280,1174 ,2026,2002,1992 }, - {1175,1281,1174 ,2025,2026,1992 }, {1364,1363,1280 ,2027,2003,2002 }, - {1281,1364,1280 ,2026,2027,2002 }, {1364,1362,1363 ,2027,1956,2003 }, - {1439,1438,1362 ,2028,1957,1956 }, {1364,1439,1362 ,2027,2028,1956 }, - {1508,1507,1438 ,2029,1958,1957 }, {1439,1508,1438 ,2028,2029,1957 }, - {1581,1580,1507 ,2030,1959,1958 }, {1508,1581,1507 ,2029,2030,1958 }, - {1581,1649,1648 ,2030,2031,1960 }, {1580,1581,1648 ,1959,2030,1960 }, - {1649,1716,1715 ,2031,2032,1961 }, {1648,1649,1715 ,1960,2031,1961 }, - {1717,1735,1715 ,2033,1962,1961 }, {1716,1717,1715 ,2032,2033,1961 }, - {1766,1765,1735 ,2034,1963,1962 }, {1717,1766,1735 ,2033,2034,1962 }, - {1766,1829,1828 ,2034,2035,1964 }, {1765,1766,1828 ,1963,2034,1964 }, - {1899,1898,1828 ,2036,2004,1964 }, {1829,1899,1828 ,2035,2036,1964 }, - {1930,1897,1898 ,2037,1966,2004 }, {1899,1930,1898 ,2036,2037,2004 }, - {1963,1962,1897 ,2038,1967,1966 }, {1930,1963,1897 ,2037,2038,1966 }, - {2066,2065,1962 ,2039,1969,1967 }, {1963,2066,1962 ,2038,2039,1967 }, - {2066,2078,2065 ,2039,2040,1969 }, {2112,2111,2065 ,2041,1970,1969 }, - {2078,2112,2065 ,2040,2041,1969 }, {2179,2178,2111 ,2042,1972,1970 }, - {2112,2179,2111 ,2041,2042,1970 }, {2232,2231,2178 ,2043,2005,1972 }, - {2179,2232,2178 ,2042,2043,1972 }, {1448,734,2231 ,2044,1973,2005 }, - {2232,1448,2231 ,2043,2044,2005 }, {775,390,734 ,94,1974,1973 }, - {1448,775,734 ,2044,94,1973 }, {654,1372,390 ,93,1975,1974 }, - {775,654,390 ,94,93,1974 }, {1372,654,615 ,1975,93,766 }, {3080,13,2472 ,908,910,2009 }, - {2922,2923,2972 ,2045,2046,2047 }, {1061,1060,1012 ,2048,1472,1471 }, - {1013,1061,1012 ,2010,2048,1471 }, {1105,1104,1060 ,2049,1473,1472 }, - {1061,1105,1060 ,2048,2049,1472 }, {1521,730,729 ,2011,1549,1548 }, - {5180,5199,5179 ,1878,422,1879 }, {1683,1776,1775 ,1151,1431,1432 }, - {6647,5471,6611 ,2050,2051,1391 }, {1776,1777,1802 ,1431,856,2052 }, - {14,74,38 ,1986,2053,742 }, {3349,3422,3684 ,2054,2055,1915 }, - {3289,3307,3288 ,2056,2057,2058 }, {6139,4240,3797 ,2059,2060,2061 }, - {2045,30,211 ,417,307,415 }, {18,826,738 ,896,507,1674 }, {984,983,948 ,2062,2023,2022 }, - {849,984,948 ,2021,2062,2022 }, {1439,1440,1508 ,2028,2063,2029 }, - {1767,1766,1717 ,2064,2034,2033 }, {1716,1767,1717 ,2032,2064,2033 }, - {1330,654,1481 ,53,93,194 }, {2833,3054,3076 ,2065,916,2066 }, - {593,539,910 ,1108,2067,1930 }, {172,1743,3122 ,667,763,2068 }, - {394,440,1449 ,1600,1464,2069 }, {1615,1682,1614 ,1359,1010,2070 }, - {1239,1190,1449 ,1596,1112,2069 }, {1778,1840,1839 ,855,198,1138 }, - {786,963,777 ,2071,1341,421 }, {2588,74,14 ,2072,2053,1986 }, - {5453,5923,6118 ,937,2073,2074 }, {708,365,757 ,401,402,239 }, - {120,364,4362 ,240,1340,342 }, {365,364,120 ,402,1340,240 }, - {4362,139,962 ,342,145,233 }, {757,365,120 ,239,402,240 }, {5569,3121,5570 ,2075,2076,508 }, - {478,277,613 ,2077,85,298 }, {984,1082,983 ,2062,2024,2023 }, - {8079,8077,3421 ,55,2078,1156 }, {2093,4921,2257 ,553,2079,554 }, - {1536,1582,1581 ,2080,2081,2030 }, {1582,1650,1649 ,2081,2082,2031 }, - {1717,1716,1649 ,2033,2032,2031 }, {1672,1717,1649 ,2083,2033,2031 }, - {1327,1326,1232 ,996,1330,1295 }, {3592,3645,3591 ,2084,1650,1652 }, - {908,862,340 ,1111,1225,1107 }, {2029,2121,2028 ,1748,1598,1811 }, - {2127,2148,2126 ,1553,1561,890 }, {1615,1616,1682 ,1359,1150,1010 }, - {2196,2195,2147 ,1550,1851,1562 }, {1365,1440,1439 ,2085,2063,2028 }, - {5199,5219,5198 ,422,1860,423 }, {423,383,325 ,2086,2087,2088 }, - {4691,324,383 ,2089,2090,2087 }, {669,707,766 ,2020,2091,2019 }, - {850,849,766 ,2092,2021,2019 }, {767,850,766 ,2093,2092,2019 }, - {985,984,849 ,2094,2062,2021 }, {850,985,849 ,2092,2094,2021 }, - {985,1083,1082 ,2094,2095,2024 }, {984,985,1082 ,2062,2094,2024 }, - {1083,1176,1175 ,2095,2096,2025 }, {1082,1083,1175 ,2024,2095,2025 }, - {1176,1282,1281 ,2096,2097,2026 }, {1175,1176,1281 ,2025,2096,2026 }, - {1282,1365,1364 ,2097,2085,2027 }, {1281,1282,1364 ,2026,2097,2027 }, - {3347,4060,3317 ,2098,2099,1882 }, {1521,4244,730 ,2011,753,1549 }, - {4481,4480,4421 ,2100,2101,229 }, {2451,549,450 ,2102,1129,1653 }, - {3948,4326,3670 ,280,219,281 }, {3861,8097,8083 ,1147,1710,2103 }, - {732,283,871 ,2104,2105,2106 }, {4481,1674,4462 ,2100,2107,1076 }, - {1718,1716,1717 ,2108,2032,2033 }, {1768,1767,1716 ,2109,2064,2032 }, - {1718,1768,1716 ,2108,2109,2032 }, {1767,1768,1766 ,2064,2109,2034 }, - {1768,1830,1829 ,2109,2110,2035 }, {1766,1768,1829 ,2034,2109,2035 }, - {1830,1900,1899 ,2110,2111,2036 }, {1829,1830,1899 ,2035,2110,2036 }, - {1899,1900,1930 ,2036,2111,2037 }, {1900,1964,1963 ,2111,2112,2038 }, - {1930,1900,1963 ,2037,2111,2038 }, {2020,2066,1963 ,2113,2039,2038 }, - {1964,2020,1963 ,2112,2113,2038 }, {2079,2078,2066 ,2114,2040,2039 }, - {2020,2079,2066 ,2113,2114,2039 }, {2113,2112,2078 ,2115,2041,2040 }, - {2079,2113,2078 ,2114,2115,2040 }, {2180,2179,2112 ,2116,2042,2041 }, - {2113,2180,2112 ,2115,2116,2041 }, {2233,2232,2179 ,2117,2043,2042 }, - {2180,2233,2179 ,2116,2117,2042 }, {1371,1448,2232 ,2118,2044,2043 }, - {2233,1371,2232 ,2117,2118,2043 }, {231,775,1448 ,92,94,2044 }, - {1371,231,1448 ,2118,92,2044 }, {5180,5220,5199 ,1878,2119,422 }, - {5241,5240,5199 ,2120,481,422 }, {3699,3698,3645 ,2121,2122,1650 }, - {3646,3699,3645 ,2123,2121,1650 }, {7232,3288,7233 ,2124,2058,2125 }, - {26,70,460 ,2126,323,1999 }, {290,335,334 ,1042,1014,1267 }, - {2190,305,2189 ,1574,1463,1599 }, {1914,1943,1983 ,1000,2127,1001 }, - {2198,293,692 ,1506,1430,1429 }, {2197,2198,692 ,1507,1506,1429 }, - {1132,981,1591 ,61,2128,1072 }, {8118,8126,4835 ,2129,812,2130 }, - {8133,8107,2301 ,2131,658,2132 }, {965,799,1419 ,366,392,367 }, - {4131,2026,4251 ,1656,130,132 }, {767,766,707 ,2093,2019,2091 }, - {985,949,1083 ,2094,2133,2095 }, {5030,5061,1130 ,2134,2135,2136 }, - {324,4691,325 ,2090,2089,2088 }, {810,732,716 ,2137,2104,2138 }, - {4441,4481,4421 ,2139,2100,229 }, {412,736,1080 ,358,843,2140 }, - {770,1932,2352 ,275,2141,390 }, {2181,2180,2113 ,2142,2116,2115 }, - {5220,5241,5199 ,2119,2120,422 }, {2582,2585,3372 ,873,875,2143 }, - {3355,3381,3354 ,1292,871,1293 }, {3572,3573,3590 ,1931,980,1867 }, - {6230,3436,5876 ,2144,2145,2146 }, {815,857,903 ,999,2147,1734 }, - {1402,1403,1474 ,1780,974,1649 }, {1682,1681,1614 ,1010,1009,2070 }, - {1337,1845,1844 ,2148,912,911 }, {817,816,724 ,1020,998,722 }, - {1182,1181,1049 ,1235,1981,1362 }, {3316,1295,2810 ,2149,618,1728 }, - {440,1239,1449 ,1464,1596,2069 }, {741,2730,740 ,1221,2150,1595 }, - {2029,2080,2121 ,1748,2151,1598 }, {4202,885,562 ,260,216,1936 }, - {326,423,325 ,2152,2086,2088 }, {479,514,423 ,2153,2154,2086 }, - {4378,4430,4354 ,375,341,376 }, {4214,4215,4254 ,226,370,416 }, - {892,1597,810 ,506,505,2137 }, {767,851,850 ,2093,2155,2092 }, - {58,8128,227 ,2156,959,2157 }, {4972,949,851 ,2158,2133,2155 }, - {850,949,985 ,2092,2133,2094 }, {5029,1130,1083 ,2159,2136,2095 }, - {1083,1130,1176 ,2095,2136,2096 }, {5029,5030,1130 ,2159,2134,2136 }, - {884,614,4095 ,2160,1397,349 }, {1080,459,980 ,2140,696,2161 }, - {732,738,283 ,2104,1674,2105 }, {4180,1258,412 ,2162,2163,358 }, - {1319,980,1521 ,322,2161,2011 }, {732,871,716 ,2104,2106,2138 }, - {1224,1904,3048 ,1508,2164,2165 }, {4426,8100,6837 ,1056,1713,1057 }, - {283,1057,871 ,2105,354,2106 }, {1830,1865,1900 ,2110,2166,2111 }, - {8085,8091,8067 ,2016,2167,2168 }, {5285,5284,5240 ,2169,571,481 }, - {3404,2582,3372 ,2170,873,2143 }, {862,999,960 ,1225,798,1326 }, - {2193,506,170 ,1007,1381,794 }, {989,990,1140 ,1813,1435,1499 }, - {1912,1913,1980 ,964,963,828 }, {1722,1686,1779 ,1668,1004,1275 }, - {1404,1476,1475 ,975,859,858 }, {1290,2009,1918 ,795,1224,1110 }, - {5370,5328,6091 ,2171,2172,2173 }, {8107,8137,3006 ,658,2174,414 }, - {280,279,4692 ,2175,2176,2177 }, {5241,5285,5240 ,2120,2169,481 }, - {424,423,326 ,2178,2086,2152 }, {424,479,423 ,2178,2153,2086 }, - {515,514,479 ,2179,2154,2153 }, {575,574,514 ,2180,2181,2154 }, - {515,575,514 ,2179,2180,2154 }, {1223,4160,57 ,2182,223,222 }, - {635,1854,2657 ,2183,2184,2185 }, {1258,2014,736 ,2163,842,843 }, - {1080,980,25 ,2140,2161,2186 }, {1258,736,412 ,2163,843,358 }, - {4471,5295,4472 ,2187,2188,2189 }, {4354,4430,4402 ,376,341,2190 }, - {1866,1865,1830 ,2191,2166,2110 }, {1866,1901,1900 ,2191,2192,2111 }, - {1865,1866,1900 ,2166,2191,2111 }, {1901,1902,1900 ,2192,2193,2111 }, - {1965,1964,1900 ,2194,2112,2111 }, {1902,1965,1900 ,2193,2194,2111 }, - {1965,1998,1964 ,2194,2195,2112 }, {2021,2020,1964 ,2196,2113,2112 }, - {1998,2021,1964 ,2195,2196,2112 }, {2021,2079,2020 ,2196,2114,2113 }, - {2114,2113,2079 ,2197,2115,2114 }, {2021,2114,2079 ,2196,2197,2114 }, - {2182,2181,2113 ,2198,2142,2115 }, {2114,2182,2113 ,2197,2198,2115 }, - {2215,2180,2181 ,2199,2116,2142 }, {2182,2215,2181 ,2198,2199,2142 }, - {9,2233,2180 ,2200,2117,2116 }, {2215,9,2180 ,2199,2200,2116 }, - {9,1371,2233 ,2200,2118,2117 }, {232,231,1371 ,2201,92,2118 }, - {9,232,1371 ,2200,2201,2118 }, {1094,1481,231 ,1398,194,92 }, - {232,1094,231 ,2201,1398,92 }, {2147,2195,2194 ,1562,1851,1853 }, - {2198,2216,293 ,1506,1555,1430 }, {1744,1059,3932 ,1666,678,1096 }, - {2009,862,908 ,1224,1225,1111 }, {388,437,339 ,2202,1149,1143 }, - {388,339,239 ,2202,1143,1103 }, {1144,1143,991 ,957,1333,1335 }, - {1329,1406,1405 ,1134,1135,995 }, {259,410,455 ,2203,2204,2205 }, - {817,859,816 ,1020,1733,998 }, {1345,1093,840 ,203,66,68 }, {196,124,607 ,152,2206,2207 }, - {576,4907,673 ,2208,2209,2210 }, {4525,892,1673 ,623,506,1686 }, - {4160,1163,2012 ,223,2211,2212 }, {810,1597,18 ,2137,505,896 }, - {5599,5640,5639 ,2213,2214,2215 }, {736,459,1080 ,843,696,2140 }, - {5598,5599,5639 ,2216,2213,2215 }, {5237,5573,5307 ,1800,2217,461 }, - {1206,138,1734 ,2218,434,2219 }, {4520,136,4496 ,1673,1685,2220 }, - {4473,4520,4496 ,270,1673,2220 }, {1831,1866,1830 ,2221,2191,2110 }, - {2182,9,2215 ,2198,2200,2199 }, {1052,1094,232 ,2222,1398,2201 }, - {5339,5338,5284 ,2223,63,571 }, {5285,5339,5284 ,2169,2223,571 }, - {2033,2068,2124 ,1288,891,1006 }, {2068,2125,2124 ,891,892,1006 }, - {1144,1142,1143 ,957,1334,1333 }, {336,385,432 ,1013,864,1222 }, - {1722,1779,1778 ,1668,1275,855 }, {2080,2067,2121 ,2151,1592,1598 }, - {2029,2067,2080 ,1748,1592,2151 }, {239,339,338 ,1103,1143,867 }, - {628,627,528 ,1177,670,1055 }, {3697,3698,3743 ,2224,2122,2225 }, - {582,581,525 ,719,1274,1279 }, {327,326,281 ,2226,2152,2227 }, - {327,384,326 ,2226,2228,2152 }, {425,424,326 ,2229,2178,2152 }, - {384,425,326 ,2228,2229,2152 }, {480,479,424 ,2230,2153,2178 }, - {425,480,424 ,2229,2230,2178 }, {516,515,479 ,2231,2179,2153 }, - {480,516,479 ,2230,2231,2153 }, {576,575,515 ,2208,2180,2179 }, - {516,576,515 ,2231,2208,2179 }, {575,576,673 ,2180,2208,2210 }, - {5817,5834,5816 ,701,543,545 }, {892,810,1673 ,506,2137,1686 }, - {4442,4441,4391 ,991,2139,992 }, {283,738,358 ,2105,1674,897 }, - {459,4412,980 ,696,744,2161 }, {46,739,5 ,2232,2233,350 }, {883,146,76 ,119,504,689 }, - {1057,283,188 ,354,2105,2234 }, {1903,1966,1965 ,406,405,2194 }, - {1902,1903,1965 ,2193,406,2194 }, {1999,1998,1965 ,2235,2195,2194 }, - {1966,1999,1965 ,405,2235,2194 }, {2022,2021,1998 ,2236,2196,2195 }, - {1999,2022,1998 ,2235,2236,2195 }, {2115,2114,2021 ,2237,2197,2196 }, - {2022,2115,2021 ,2236,2237,2196 }, {2115,2145,2114 ,2237,2238,2197 }, - {2183,2182,2114 ,2239,2198,2197 }, {2145,2183,2114 ,2238,2239,2197 }, - {2183,9,2182 ,2239,2200,2198 }, {1513,232,9 ,2240,2201,2200 }, - {1632,76,129 ,2241,689,730 }, {2013,58,877 ,2242,2156,2243 }, - {728,819,726 ,1266,2244,669 }, {1153,6797,8123 ,2245,2246,2247 }, - {1182,1049,1048 ,1235,1362,1236 }, {335,336,431 ,1014,1013,1268 }, - {901,903,989 ,1428,1734,1813 }, {5339,4916,4915 ,2223,2248,64 }, - {1868,3760,1783 ,2249,2250,2251 }, {3784,4884,4239 ,2252,2253,2254 }, - {5338,5339,4915 ,63,2223,64 }, {4513,1673,4481 ,624,1686,2100 }, - {1295,3316,3348 ,618,2149,2255 }, {4244,4223,340 ,753,1934,1107 }, - {730,4244,340 ,1549,753,1107 }, {1114,1115,2047 ,2256,2257,2258 }, - {4480,4462,4421 ,2101,1076,229 }, {798,5103,5378 ,78,77,359 }, - {40,9,2183 ,2259,2200,2239 }, {40,163,9 ,2259,2260,2200 }, {233,1513,9 ,2261,2240,2200 }, - {163,233,9 ,2260,2261,2200 }, {1514,232,1513 ,2262,2201,2240 }, - {233,1514,1513 ,2261,2262,2240 }, {1055,1052,232 ,2263,2222,2201 }, - {1514,1055,232 ,2262,2263,2201 }, {1054,1094,1052 ,2264,1398,2222 }, - {1055,1054,1052 ,2263,2264,2222 }, {1054,865,1094 ,2264,1119,1398 }, - {2893,3946,5307 ,1679,1230,461 }, {227,1482,58 ,2157,2265,2156 }, - {1238,860,1000 ,1569,1385,1384 }, {305,1239,440 ,1463,1596,1464 }, - {1657,1656,1552 ,1781,1166,2266 }, {814,815,902 ,1054,999,1427 }, - {8092,8120,8130 ,2267,906,905 }, {2131,2200,2199 ,656,1570,1554 }, - {817,905,859 ,1020,1729,1733 }, {2032,2033,2123 ,1127,1288,1008 }, - {3946,4227,5307 ,1230,1564,461 }, {249,1664,268 ,644,2268,645 }, - {1234,1328,1327 ,1178,994,996 }, {864,865,867 ,840,1119,1121 }, - {8140,8063,8102 ,2269,465,253 }, {577,576,516 ,2270,2208,2231 }, - {576,577,674 ,2208,2270,2271 }, {358,4184,2014 ,897,898,842 }, - {6553,6295,6646 ,780,1290,1133 }, {1441,23,4181 ,1485,2272,2273 }, - {1927,870,710 ,1196,2274,33 }, {810,716,1674 ,2137,2138,2107 }, - {593,1599,539 ,1108,391,2067 }, {4152,4180,4448 ,2275,2162,2276 }, - {358,4180,4152 ,897,2162,2275 }, {188,358,4152 ,2234,897,2275 }, - {4480,4481,4462 ,2101,2100,1076 }, {941,119,1049 ,2277,2278,1362 }, - {188,4152,4138 ,2234,2275,278 }, {4152,188,4138 ,2275,2234,278 }, - {1674,716,4512 ,2107,2138,2279 }, {6509,6531,8092 ,1452,2280,2267 }, - {4060,4064,3317 ,2099,1880,1882 }, {1999,1966,2022 ,2235,405,2236 }, - {233,1055,1514 ,2261,2263,2262 }, {1055,865,1054 ,2263,1119,2264 }, - {2137,867,776 ,147,1121,1120 }, {3758,3757,3711 ,1789,2281,1790 }, - {3194,3016,3189 ,1065,1028,1027 }, {442,441,357 ,673,609,672 }, - {1910,1911,1867 ,1223,1101,1504 }, {1049,1181,1050 ,1362,1981,2282 }, - {1802,1777,1838 ,2052,856,425 }, {336,432,431 ,1013,1222,1268 }, - {5305,5572,3147 ,2283,2284,2285 }, {904,991,903 ,1730,1335,1734 }, - {1406,1407,1447 ,1135,1269,1136 }, {8114,8108,6797 ,2286,2287,2246 }, - {437,436,339 ,1149,1142,1143 }, {1190,1189,1449 ,1112,1495,2069 }, - {8081,8093,8072 ,1445,2288,511 }, {940,1910,1867 ,197,1223,1504 }, - {328,426,425 ,2289,2290,2229 }, {384,328,425 ,2228,2289,2229 }, - {426,481,480 ,2290,2291,2230 }, {425,426,480 ,2229,2290,2230 }, - {481,517,516 ,2291,2292,2231 }, {480,481,516 ,2230,2291,2231 }, - {578,577,516 ,2293,2270,2231 }, {517,578,516 ,2292,2293,2231 }, - {675,676,677 ,2294,2295,2296 }, {577,578,675 ,2270,2293,2294 }, - {738,189,358 ,1674,503,897 }, {661,1441,4181 ,2297,1485,2273 }, - {4513,4481,4463 ,624,2100,993 }, {5,739,413 ,350,2233,351 }, - {980,4244,1521 ,2161,753,2011 }, {1424,379,608 ,2298,2299,2300 }, - {416,604,502 ,556,486,2301 }, {25,980,1319 ,2186,2161,322 }, - {4448,4180,412 ,2276,2162,358 }, {138,878,1734 ,434,398,2219 }, - {5558,3121,5569 ,2302,2076,2075 }, {4430,4473,4402 ,341,270,2190 }, - {879,3397,3370 ,1155,136,2303 }, {4152,4448,4138 ,2275,2276,278 }, - {4108,4148,4124 ,2304,2305,2306 }, {8131,8075,8107 ,2307,2308,658 }, - {1967,1968,1966 ,404,2309,405 }, {1968,2023,2022 ,2309,2310,2236 }, - {1966,1968,2022 ,405,2309,2236 }, {2116,2115,2022 ,2311,2237,2236 }, - {2023,2116,2022 ,2310,2311,2236 }, {2116,2145,2115 ,2311,2238,2237 }, - {2184,2183,2145 ,2312,2239,2238 }, {2116,2184,2145 ,2311,2312,2238 }, - {83,40,2183 ,2313,2259,2239 }, {2184,83,2183 ,2312,2313,2239 }, - {1001,163,40 ,2314,2260,2259 }, {83,1001,40 ,2313,2314,2259 }, - {234,233,163 ,2315,2261,2260 }, {1001,234,163 ,2314,2315,2260 }, - {1053,1055,233 ,2316,2263,2261 }, {234,1053,233 ,2315,2316,2261 }, - {776,865,1055 ,1120,1119,2263 }, {1053,776,1055 ,2316,1120,2263 }, - {5194,1102,1454 ,727,2317,2318 }, {1744,3932,2088 ,1666,1096,1667 }, - {1721,1722,1778 ,854,1668,855 }, {2197,692,933 ,1507,1429,1496 }, - {1775,1776,1802 ,1432,1431,2052 }, {1240,1918,1190 ,796,1110,1112 }, - {1446,1447,1478 ,1137,1136,2319 }, {3880,3868,3831 ,2320,970,2321 }, - {3832,3880,3831 ,2322,2320,2321 }, {2191,392,2190 ,1174,857,1574 }, - {4587,2320,8020 ,774,1406,1405 }, {1843,1911,1910 ,901,1101,1223 }, - {5013,2256,6484 ,684,2323,685 }, {1867,2390,940 ,1504,1594,197 }, - {578,579,676 ,2293,2324,2295 }, {1338,1257,4214 ,1077,208,226 }, - {4215,4255,4254 ,370,165,416 }, {4412,314,980 ,744,578,2161 }, - {810,18,732 ,2137,896,2104 }, {980,314,4244 ,2161,578,753 }, - {4464,4513,4463 ,584,624,993 }, {1673,810,1674 ,1686,2137,2107 }, - {4463,4481,4441 ,993,2100,2139 }, {8066,8092,8098 ,960,2267,907 }, - {1225,490,1223 ,327,469,2182 }, {412,1080,69 ,358,2140,321 }, - {4150,412,69 ,320,358,321 }, {880,1441,661 ,1483,1485,2297 }, - {3644,3697,3696 ,1651,2224,2325 }, {188,4152,4138 ,2234,2275,278 }, - {83,234,1001 ,2313,2315,2314 }, {782,776,1053 ,1648,1120,2316 }, - {1691,1670,1733 ,2326,2327,2328 }, {392,1240,305 ,857,796,1463 }, - {2122,2191,2190 ,1128,1174,1574 }, {2067,2122,2121 ,1592,1128,1598 }, - {1479,1477,1478 ,1270,1045,2319 }, {1602,1610,749 ,2329,2330,2331 }, - {1478,1477,1405 ,2319,1045,995 }, {3704,6140,6169 ,2332,2333,2334 }, - {1365,1439,1364 ,2085,2028,2027 }, {3918,3917,3868 ,2335,968,970 }, - {517,579,578 ,2292,2324,2293 }, {2223,6484,2256 ,2336,685,2323 }, - {5834,1942,141 ,543,2337,681 }, {1462,4177,4116 ,2338,2339,2340 }, - {130,89,150 ,2341,1482,1481 }, {136,1628,883 ,1685,118,119 }, - {4441,4421,4367 ,2139,229,228 }, {1677,1676,1610 ,2342,2343,2330 }, - {69,1080,25 ,321,2140,2186 }, {3643,3644,3696 ,2344,1651,2325 }, - {1069,188,4138 ,277,2234,278 }, {1660,1053,234 ,2345,2316,2315 }, - {1378,3148,2743 ,925,814,923 }, {3880,3918,3868 ,2320,2335,970 }, - {1094,865,864 ,1398,1119,840 }, {1802,1838,1837 ,2052,425,997 }, - {1634,1423,396 ,768,151,153 }, {742,741,645 ,972,1221,940 }, - {1915,1916,1943 ,1437,832,2127 }, {1914,1915,1943 ,1000,1437,2127 }, - {1682,1683,1775 ,1010,1151,1432 }, {1446,1478,1405 ,1137,2319,995 }, - {1235,1329,1328 ,1179,1134,994 }, {3961,3960,3917 ,2346,1021,968 }, - {3918,3961,3917 ,2335,2346,968 }, {1145,1235,1234 ,1277,1179,1178 }, - {7151,3290,7175 ,1202,1204,2347 }, {329,427,426 ,2348,2349,2290 }, - {328,329,426 ,2289,2348,2290 }, {426,427,481 ,2290,2349,2291 }, - {427,518,517 ,2349,2350,2292 }, {481,427,517 ,2291,2349,2292 }, - {518,519,579 ,2350,2351,2324 }, {517,518,579 ,2292,2350,2324 }, - {519,617,579 ,2351,2352,2324 }, {579,617,677 ,2324,2352,2296 }, - {2026,870,1927 ,130,2274,1196 }, {732,18,738 ,2104,896,1674 }, - {4442,4463,4441 ,991,993,2139 }, {4068,4067,1253 ,408,185,2353 }, - {358,2014,4180 ,897,842,2162 }, {4391,4441,4367 ,992,2139,228 }, - {1226,1321,1320 ,2354,2355,2356 }, {1321,1398,1397 ,2355,2357,2358 }, - {1320,1321,1397 ,2356,2355,2358 }, {1397,1398,1445 ,2358,2357,2359 }, - {1398,1470,1469 ,2357,2360,2361 }, {1445,1398,1469 ,2359,2357,2361 }, - {1470,1542,1541 ,2360,2362,2363 }, {1469,1470,1541 ,2361,2360,2363 }, - {1611,1610,1541 ,2364,2330,2363 }, {1542,1611,1541 ,2362,2364,2363 }, - {1678,1677,1610 ,2365,2342,2330 }, {1611,1678,1610 ,2364,2365,2330 }, - {1720,1676,1677 ,2366,2343,2342 }, {1678,1720,1677 ,2365,2366,2342 }, - {1720,1771,4817 ,2366,2367,2368 }, {4138,4448,412 ,278,2276,358 }, - {1674,4512,4462 ,2107,2279,1076 }, {6837,8088,6577 ,1057,1998,97 }, - {4036,109,2151 ,1602,1654,1603 }, {1969,2024,2023 ,2369,2370,2310 }, - {1968,1969,2023 ,2309,2369,2310 }, {2024,2117,2116 ,2370,2371,2311 }, - {2023,2024,2116 ,2310,2370,2311 }, {2185,2184,2116 ,2372,2312,2311 }, - {2117,2185,2116 ,2371,2372,2311 }, {152,83,2184 ,2373,2313,2312 }, - {2185,152,2184 ,2372,2373,2312 }, {1288,234,83 ,2374,2315,2313 }, - {152,1288,83 ,2373,2374,2313 }, {861,1660,234 ,2375,2345,2315 }, - {1288,861,234 ,2374,2375,2315 }, {998,1053,1660 ,2376,2316,2345 }, - {861,998,1660 ,2375,2376,2345 }, {786,782,1053 ,2071,1648,2316 }, - {998,786,1053 ,2376,2071,2316 }, {4327,1427,561 ,2377,2378,2379 }, - {169,1880,1296 ,248,250,335 }, {652,169,1296 ,334,248,335 }, - {4000,4042,4041 ,1022,1061,1063 }, {3999,4000,4041 ,1023,1022,1063 }, - {3961,4001,4000 ,2346,2380,1022 }, {2129,2069,2130 ,1469,1711,1505 }, - {1981,2037,2036 ,1456,1458,887 }, {858,904,903 ,1731,1730,1734 }, - {647,742,645 ,973,972,940 }, {1943,1916,1983 ,2127,832,1001 }, - {1916,1984,1983 ,832,831,1001 }, {3372,2585,3453 ,2143,875,917 }, - {1046,1145,1045 ,1929,1277,956 }, {6098,5113,6174 ,1565,141,2381 }, - {518,427,519 ,2350,2349,2351 }, {870,1396,710 ,2274,34,33 }, - {1673,1674,4481 ,1686,2107,2100 }, {716,1675,4512 ,2138,2382,2279 }, - {4138,412,44 ,278,358,357 }, {2474,2072,8096 ,874,1812,1796 }, - {5021,1969,5019 ,2383,2369,2384 }, {5019,1969,1968 ,2384,2369,2309 }, - {2186,2185,2117 ,2385,2372,2371 }, {861,786,998 ,2375,2071,2376 }, - {3712,3711,3653 ,1439,1790,1440 }, {6169,6141,6154 ,2334,2386,2387 }, - {3356,3355,3323 ,872,1292,1051 }, {3960,3961,4000 ,1021,2346,1022 }, - {1801,1802,1837 ,1433,2052,997 }, {725,817,724 ,721,1020,722 }, - {2518,448,546 ,2388,1172,1171 }, {2069,2038,2530 ,1711,1551,2389 }, - {1784,1848,1847 ,1662,1436,1519 }, {647,645,646 ,973,940,954 }, - {723,724,815 ,1053,722,999 }, {815,816,857 ,999,998,2147 }, {3698,3744,3743 ,2122,2390,2225 }, - {237,337,336 ,869,866,1013 }, {519,618,617 ,2351,2391,2352 }, - {855,897,951 ,2392,2393,2394 }, {897,952,951 ,2393,2395,2394 }, - {4180,2014,1258 ,2162,842,2163 }, {952,5034,951 ,2395,2396,2394 }, - {1321,1369,1398 ,2355,2397,2357 }, {1678,1771,1720 ,2365,2367,2366 }, - {1596,188,1069 ,355,2234,277 }, {4536,4452,4820 ,89,2398,2399 }, - {393,4042,4000 ,2400,1061,1022 }, {4001,393,4000 ,2380,2400,1022 }, - {632,341,1184 ,1380,1852,797 }, {341,1373,1184 ,1852,1501,797 }, - {1682,1775,1739 ,1010,1432,1011 }, {1475,1547,1546 ,858,860,1360 }, - {2083,2069,2128 ,1552,1711,1468 }, {2069,2129,2128 ,1711,1469,1468 }, - {7175,3290,7196 ,2347,1204,2401 }, {857,858,903 ,2147,1731,1734 }, - {816,858,857 ,998,1731,2147 }, {1325,1326,1402 ,1331,1330,1780 }, - {1303,1302,687 ,1933,909,1665 }, {330,331,329 ,2402,2403,2348 }, - {331,428,427 ,2403,2404,2349 }, {329,331,427 ,2348,2403,2349 }, - {428,520,519 ,2404,2405,2351 }, {427,428,519 ,2349,2404,2351 }, - {520,619,618 ,2405,2406,2391 }, {519,520,618 ,2351,2405,2391 }, - {718,717,618 ,2407,2408,2391 }, {619,718,618 ,2406,2407,2391 }, - {717,718,855 ,2408,2407,2392 }, {1042,1041,952 ,2409,2410,2395 }, - {898,1042,952 ,2411,2409,2395 }, {1136,1135,1041 ,2412,1943,2410 }, - {1042,1136,1041 ,2409,2412,2410 }, {1227,1226,1135 ,2413,2354,1943 }, - {1136,1227,1135 ,2412,2413,1943 }, {1227,1322,1321 ,2413,2414,2355 }, - {1226,1227,1321 ,2354,2413,2355 }, {1321,1322,1369 ,2355,2414,2397 }, - {1322,1399,1398 ,2414,2415,2357 }, {1369,1322,1398 ,2397,2414,2357 }, - {1399,1471,1470 ,2415,2416,2360 }, {1398,1399,1470 ,2357,2415,2360 }, - {1471,1543,1542 ,2416,2417,2362 }, {1470,1471,1542 ,2360,2416,2362 }, - {1543,1612,1611 ,2417,2418,2364 }, {1542,1543,1611 ,2362,2417,2364 }, - {1679,1678,1611 ,2419,2365,2364 }, {1612,1679,1611 ,2418,2419,2364 }, - {1772,1771,1678 ,2420,2367,2365 }, {1679,1772,1678 ,2419,2420,2365 }, - {1835,1834,1771 ,2421,2422,2367 }, {1772,1835,1771 ,2420,2421,2367 }, - {322,6203,843 ,1250,1249,2423 }, {3380,3379,3353 ,1514,1979,2424 }, - {3354,3380,3353 ,1293,1514,2424 }, {4644,4740,1970 ,2425,2426,2427 }, - {1970,2000,1969 ,2427,2428,2369 }, {1969,2000,2024 ,2369,2428,2370 }, - {8090,8065,8080 ,412,96,1094 }, {2118,2117,2024 ,2429,2371,2370 }, - {2025,2118,2024 ,2430,2429,2370 }, {2187,2186,2117 ,2431,2385,2371 }, - {2118,2187,2117 ,2429,2431,2371 }, {2187,2185,2186 ,2431,2372,2385 }, - {161,152,2185 ,2432,2373,2372 }, {2187,161,2185 ,2431,2432,2372 }, - {1193,1288,152 ,2433,2374,2373 }, {161,1193,152 ,2432,2433,2373 }, - {1193,1287,1288 ,2433,2434,2374 }, {907,861,1288 ,2435,2375,2374 }, - {1287,907,1288 ,2434,2435,2374 }, {629,786,861 ,2436,2071,2375 }, - {907,629,861 ,2435,2436,2375 }, {629,962,786 ,2436,233,2071 }, - {3356,3381,3355 ,872,871,1292 }, {3004,2946,4042 ,2437,1062,1061 }, - {8106,8135,3449 ,2438,2439,2440 }, {529,628,528 ,1148,1177,1055 }, - {1848,1915,1914 ,1436,1437,1000 }, {1847,1848,1914 ,1519,1436,1000 }, - {2476,2310,3844 ,2441,2442,2443 }, {1686,1780,1779 ,1004,900,1275 }, - {236,237,336 ,2444,869,1013 }, {330,2393,286 ,2402,2445,2446 }, - {520,521,619 ,2405,2447,2406 }, {8115,8136,8140 ,2448,2449,2269 }, - {1519,79,2544 ,2450,1510,2451 }, {4021,4835,8106 ,1712,2130,2438 }, - {4446,1335,2607 ,237,236,2452 }, {5833,5834,141 ,544,543,681 }, - {3430,3429,3379 ,1976,1978,1979 }, {488,832,1302 ,533,613,909 }, - {3080,488,1302 ,908,533,909 }, {1057,188,1596 ,354,2234,355 }, - {871,594,893 ,2106,2453,2454 }, {716,871,893 ,2138,2106,2454 }, - {393,3004,4042 ,2400,2437,1061 }, {8139,3263,8089 ,1923,252,254 }, - {1876,822,1985 ,1386,2000,1547 }, {822,729,1985 ,2000,1548,1547 }, - {1685,1686,1722 ,1005,1004,1668 }, {2193,632,506 ,1007,1380,1381 }, - {1684,1721,1683 ,1327,854,1151 }, {2131,2201,2200 ,656,2455,1570 }, - {2193,2194,341 ,1007,1853,1852 }, {1184,1373,999 ,797,1501,798 }, - {1779,1842,1841 ,1275,196,1276 }, {286,331,330 ,2446,2403,2402 }, - {428,521,520 ,2404,2447,2405 }, {916,913,863 ,445,444,284 }, - {283,358,188 ,2105,897,2234 }, {1227,1286,1322 ,2413,2456,2414 }, - {1773,1772,1679 ,2457,2420,2419 }, {1871,1835,1872 ,2458,2421,2459 }, - {8074,8092,8066 ,2460,2267,960 }, {3354,3353,3321 ,1293,2424,2461 }, - {2796,304,3080 ,2462,532,908 }, {1675,716,893 ,2382,2138,2454 }, - {1193,907,1287 ,2433,2435,2434 }, {820,629,907 ,2463,2436,2435 }, - {6102,3831,3868 ,2464,2321,970 }, {3004,2087,2571 ,2437,2465,1064 }, - {1006,1100,799 ,234,2466,392 }, {729,822,1319 ,1548,2000,322 }, - {1146,1145,1046 ,2467,1277,1929 }, {1047,1146,1046 ,1328,2467,1929 }, - {1474,1475,1546 ,1649,858,1360 }, {1373,1000,999 ,1501,1384,798 }, - {3264,8144,2301 ,2468,2469,2132 }, {1000,1876,999 ,1384,1386,798 }, - {287,332,331 ,2470,2471,2403 }, {332,429,428 ,2471,2472,2404 }, - {331,332,428 ,2403,2471,2404 }, {429,522,521 ,2472,2473,2447 }, - {428,429,521 ,2404,2472,2447 }, {522,620,619 ,2473,2474,2406 }, - {521,522,619 ,2447,2473,2406 }, {720,718,719 ,2475,2407,2476 }, - {619,620,718 ,2406,2474,2407 }, {812,899,898 ,559,2477,2411 }, - {811,812,898 ,557,559,2411 }, {1043,898,899 ,2478,2411,2477 }, - {1043,1137,1136 ,2478,2479,2412 }, {1137,1228,1227 ,2479,2480,2413 }, - {1136,1137,1227 ,2412,2479,2413 }, {1228,1229,1286 ,2480,2481,2456 }, - {1227,1228,1286 ,2413,2480,2456 }, {1229,1323,1322 ,2481,2482,2414 }, - {1286,1229,1322 ,2456,2481,2414 }, {1323,1400,1399 ,2482,2483,2415 }, - {1322,1323,1399 ,2414,2482,2415 }, {1400,1472,1471 ,2483,2484,2416 }, - {1399,1400,1471 ,2415,2483,2416 }, {1472,1544,1543 ,2484,2485,2417 }, - {1471,1472,1543 ,2416,2484,2417 }, {1613,1612,1543 ,2486,2418,2417 }, - {1544,1613,1543 ,2485,2486,2417 }, {1613,1680,1679 ,2486,2487,2419 }, - {1612,1613,1679 ,2418,2486,2419 }, {1680,1774,1773 ,2487,2488,2457 }, - {1679,1680,1773 ,2419,2487,2457 }, {1800,1772,1773 ,2489,2420,2457 }, - {1774,1800,1773 ,2488,2489,2457 }, {1836,1835,1772 ,2490,2421,2420 }, - {1800,1836,1772 ,2489,2490,2420 }, {1836,1872,1835 ,2490,2459,2421 }, - {296,630,3475 ,1558,2491,1559 }, {2027,2000,2002 ,2492,2428,2493 }, - {1675,893,4512 ,2382,2454,2279 }, {8069,8100,3482 ,1095,1713,2494 }, - {2119,2118,2025 ,2495,2429,2430 }, {2027,2119,2025 ,2492,2495,2430 }, - {2188,2187,2118 ,2496,2431,2429 }, {2119,2188,2118 ,2495,2496,2429 }, - {179,161,2187 ,2497,2432,2431 }, {2188,179,2187 ,2496,2497,2431 }, - {1374,1193,161 ,2498,2433,2432 }, {179,1374,161 ,2497,2498,2432 }, - {954,907,1193 ,2499,2435,2433 }, {1374,954,1193 ,2498,2499,2433 }, - {914,820,907 ,2500,2463,2435 }, {954,914,907 ,2499,2500,2435 }, - {487,629,820 ,2501,2436,2463 }, {914,487,820 ,2500,2501,2463 }, - {1100,962,629 ,2466,233,2436 }, {487,1100,629 ,2501,2466,2436 }, - {3491,3490,3461 ,955,2502,1152 }, {2946,3004,2571 ,1062,2437,1064 }, - {3931,3684,3664 ,1868,1915,1557 }, {1843,1844,1911 ,901,911,1101 }, - {8068,8071,3264 ,1784,738,2468 }, {2087,132,3016 ,2465,2503,1028 }, - {909,593,910 ,1109,1108,1930 }, {1233,1232,1141 ,1294,1295,1498 }, - {1447,1479,1478 ,1136,1270,2319 }, {1844,1912,1911 ,911,964,1101 }, - {3434,3494,3463 ,737,736,1271 }, {2571,2087,3016 ,1064,2465,1028 }, - {1775,1802,1801 ,1432,2052,1433 }, {1876,1985,999 ,1386,1547,798 }, - {718,720,4954 ,2407,2475,558 }, {4258,4217,85 ,84,83,2504 }, - {6853,6905,6892 ,2505,2506,2507 }, {1137,1229,1228 ,2479,2481,2480 }, - {1302,832,1744 ,909,613,1666 }, {832,1059,1744 ,613,678,1666 }, - {222,179,2188 ,2508,2497,2496 }, {2222,2210,6563 ,2509,2510,464 }, - {132,2837,584 ,2503,2511,2512 }, {2364,3342,3343 ,2513,2514,2515 }, - {1548,1617,1616 ,902,904,1150 }, {239,238,2290 ,1103,868,1982 }, - {822,460,70 ,2000,1999,323 }, {3698,3697,3644 ,2122,2224,1651 }, - {5988,5972,4147 ,2516,399,2517 }, {620,720,719 ,2474,2475,2476 }, - {5309,505,469 ,987,986,988 }, {1137,1180,1229 ,2479,2518,2481 }, - {1349,2002,1971 ,2519,2493,2520 }, {3647,3646,3594 ,2521,2123,2522 }, - {2698,4369,5335 ,105,104,2523 }, {3016,132,584 ,1028,2503,2512 }, - {626,725,625 ,801,721,720 }, {290,291,335 ,1042,1012,1014 }, - {992,991,904 ,958,1335,1730 }, {1302,1744,687 ,909,1666,1665 }, - {1978,2034,1977 ,847,1289,1503 }, {289,333,332 ,1044,1043,2471 }, - {333,430,429 ,1043,2524,2472 }, {332,333,429 ,2471,1043,2472 }, - {430,482,429 ,2524,2525,2472 }, {482,523,522 ,2525,2526,2473 }, - {429,482,522 ,2472,2525,2473 }, {523,621,620 ,2526,2527,2474 }, - {522,523,620 ,2473,2526,2474 }, {621,721,720 ,2527,2528,2475 }, - {620,621,720 ,2474,2527,2475 }, {721,813,812 ,2528,2529,559 }, - {720,721,812 ,2475,2528,559 }, {813,900,899 ,2529,2530,2477 }, - {812,813,899 ,559,2529,2477 }, {900,988,899 ,2530,2531,2477 }, - {988,1044,1043 ,2531,2532,2478 }, {899,988,1043 ,2477,2531,2478 }, - {1044,1138,1137 ,2532,2533,2479 }, {1043,1044,1137 ,2478,2532,2479 }, - {1138,1139,1180 ,2533,2534,2518 }, {1137,1138,1180 ,2479,2533,2518 }, - {1139,1230,1229 ,2534,2535,2481 }, {1180,1139,1229 ,2518,2534,2481 }, - {1230,1324,1323 ,2535,2536,2482 }, {1229,1230,1323 ,2481,2535,2482 }, - {1324,1401,1400 ,2536,2537,2483 }, {1323,1324,1400 ,2482,2536,2483 }, - {1473,1472,1400 ,2538,2484,2483 }, {1401,1473,1400 ,2537,2538,2483 }, - {1473,1545,1544 ,2538,2539,2485 }, {1472,1473,1544 ,2484,2538,2485 }, - {1614,1613,1544 ,2070,2486,2485 }, {1545,1614,1544 ,2539,2070,2485 }, - {1614,1681,1680 ,2070,1009,2487 }, {1613,1614,1680 ,2486,2070,2487 }, - {1681,1739,1680 ,1009,1011,2487 }, {1739,1774,1680 ,1011,2488,2487 }, - {1801,1800,1774 ,1433,2489,2488 }, {1739,1801,1774 ,1011,1433,2488 }, - {1801,1837,1836 ,1433,997,2490 }, {1800,1801,1836 ,2489,1433,2490 }, - {1837,380,1836 ,997,2540,2490 }, {5497,3350,4530 ,1375,2541,1376 }, - {2003,2002,1349 ,2542,2493,2519 }, {1349,1971,1948 ,2519,2520,2543 }, - {2028,2027,2002 ,1811,2492,2493 }, {2003,2028,2002 ,2542,1811,2493 }, - {2028,2120,2119 ,1811,1597,2495 }, {2027,2028,2119 ,2492,1811,2495 }, - {2189,2188,2119 ,1599,2496,2495 }, {2120,2189,2119 ,1597,1599,2495 }, - {243,222,2188 ,1465,2508,2496 }, {2189,243,2188 ,1599,1465,2496 }, - {394,179,222 ,1600,2497,2508 }, {243,394,222 ,1465,1600,2508 }, - {1449,1374,179 ,2069,2498,2497 }, {394,1449,179 ,1600,2069,2497 }, - {1449,910,954 ,2069,1930,2499 }, {1374,1449,954 ,2498,2069,2499 }, - {539,914,954 ,2067,2500,2499 }, {910,539,954 ,1930,2067,2499 }, - {77,487,914 ,2544,2501,2500 }, {539,77,914 ,2067,2544,2500 }, - {1194,1100,487 ,393,2466,2501 }, {77,1194,487 ,2544,393,2501 }, - {1194,799,1100 ,393,392,2466 }, {3699,3700,3745 ,2121,2545,2546 }, - {2837,2501,108 ,2511,2547,1336 }, {584,2837,108 ,2512,2511,1336 }, - {2501,107,108 ,2547,2548,1336 }, {929,1014,1013 ,1234,1233,2010 }, - {928,929,1013 ,1997,1234,2010 }, {1014,1062,1061 ,1233,1232,2048 }, - {1013,1014,1061 ,2010,1233,2048 }, {1062,1106,1105 ,1232,1664,2049 }, - {1061,1062,1105 ,2048,1232,2049 }, {1105,1106,1202 ,2049,1664,339 }, - {304,2796,2662 ,532,2462,805 }, {3868,3916,3879 ,970,969,2549 }, - {239,387,339 ,1103,1102,1143 }, {621,622,721 ,2527,2550,2528 }, - {1044,1139,1138 ,2532,2534,2533 }, {391,1623,1088 ,1647,1709,1604 }, - {108,107,2134 ,1336,2548,1337 }, {2243,2324,2242 ,1993,1995,2551 }, - {2121,2190,2189 ,1598,1574,1599 }, {1189,910,1449 ,1495,1930,2069 }, - {107,751,35 ,2548,1365,1338 }, {2134,107,35 ,1337,2548,1338 }, - {5698,5697,5679 ,44,2552,2553 }, {523,622,621 ,2526,2550,2527 }, - {1044,988,1139 ,2532,2531,2534 }, {7271,7270,7229 ,2554,2555,2556 }, - {3547,3546,3494 ,803,2557,736 }, {2742,2029,2003 ,2558,1748,2542 }, - {539,1194,77 ,2067,393,2544 }, {7139,7161,7138 ,1025,2559,2560 }, - {2005,2031,2742 ,1593,1560,2558 }, {290,334,333 ,1042,1267,1043 }, - {334,431,430 ,1267,1268,2524 }, {333,334,430 ,1043,1267,2524 }, - {431,483,482 ,1268,1228,2525 }, {430,431,482 ,2524,1268,2525 }, - {483,524,523 ,1228,1278,2526 }, {482,483,523 ,2525,1228,2526 }, - {524,623,622 ,1278,1100,2550 }, {523,524,622 ,2526,1278,2550 }, - {623,722,721 ,1100,1052,2528 }, {622,623,721 ,2550,1100,2528 }, - {814,813,721 ,1054,2529,2528 }, {722,814,721 ,1052,1054,2528 }, - {901,900,813 ,1428,2530,2529 }, {814,901,813 ,1054,1428,2529 }, - {901,989,988 ,1428,1813,2531 }, {900,901,988 ,2530,1428,2531 }, - {989,1140,1139 ,1813,1499,2534 }, {988,989,1139 ,2531,1813,2534 }, - {1140,1231,1230 ,1499,1332,2535 }, {1139,1140,1230 ,2534,1499,2535 }, - {1231,1325,1324 ,1332,1331,2536 }, {1230,1231,1324 ,2535,1332,2536 }, - {1402,1401,1324 ,1780,2537,2536 }, {1325,1402,1324 ,1331,1780,2536 }, - {1474,1473,1401 ,1649,2538,2537 }, {1402,1474,1401 ,1780,1649,2537 }, - {1474,1546,1545 ,1649,1360,2539 }, {1473,1474,1545 ,2538,1649,2539 }, - {1546,1615,1614 ,1360,1359,2070 }, {1545,1546,1614 ,2539,1360,2070 }, - {2293,2358,292 ,2561,2562,2563 }, {2292,2293,292 ,1983,2561,2563 }, - {253,966,921 ,2564,2565,1922 }, {7129,7139,7138 ,1026,1025,2560 }, - {406,2408,2219 ,2566,1399,177 }, {8085,8073,973 ,2016,2567,2017 }, - {2421,4056,2420 ,2568,1123,273 }, {3315,1195,5194 ,944,725,727 }, - {247,253,921 ,2569,2564,1922 }, {8143,8123,8128 ,2570,2247,959 }, - {2363,2364,2440 ,2571,2513,2572 }, {2914,2895,2857 ,2573,2574,2575 }, - {2437,2436,2358 ,2576,2577,2562 }, {2928,2927,2883 ,2578,516,2579 }, - {3152,3196,1619 ,2580,2581,1003 }, {2626,2732,2625 ,2582,2583,2584 }, - {3151,3152,1550 ,2585,2580,2586 }, {1479,3151,1550 ,1270,2585,2586 }, - {1550,3152,1619 ,2586,2580,1003 }, {2942,554,2366 ,2587,2588,2589 }, - {2857,2765,2914 ,2575,2590,2573 }, {2880,2881,2924 ,2591,2592,2593 }, - {2840,3250,2875 ,2594,2595,2596 }, {2895,2380,2581 ,2574,2597,2598 }, - {3197,3196,3152 ,2599,2581,2580 }, {2515,2599,2598 ,2600,2601,2602 }, - {2890,2889,2848 ,2603,2604,2605 }, {1010,2890,2848 ,1286,2603,2605 }, - {1630,56,3081 ,1016,2606,1017 }, {2635,2388,2389 ,2607,2608,2609 }, - {2952,2489,2570 ,2610,2611,2612 }, {2430,91,2133 ,2613,1984,2614 }, - {6951,6870,6796 ,2615,2616,2617 }, {2804,2786,1062 ,2618,2619,1232 }, - {2786,2829,1062 ,2619,2620,1232 }, {2879,2878,2846 ,2621,2622,2623 }, - {2847,2879,2846 ,2624,2621,2623 }, {2736,2737,2786 ,2625,2626,2619 }, - {2544,2744,3137 ,2451,2627,2628 }, {1201,1200,1103 ,1477,2629,1474 }, - {2508,2507,388 ,2630,2631,2202 }, {6945,6944,6913 ,2632,2633,2634 }, - {2566,2526,2527 ,2635,2636,2637 }, {2566,2614,2526 ,2635,2638,2636 }, - {2476,1304,2300 ,2441,2639,2640 }, {3357,3356,3323 ,883,872,1051 }, - {1010,2848,925 ,1286,2605,1287 }, {2738,2737,2685 ,2641,2626,2642 }, - {2787,2786,2737 ,2643,2619,2626 }, {2738,2787,2737 ,2641,2643,2626 }, - {2684,2683,2612 ,2644,2645,2646 }, {437,2559,2590 ,1149,2647,2648 }, - {2900,2633,2300 ,2649,2650,2640 }, {3596,3648,3595 ,1792,734,927 }, - {2507,2508,2559 ,2631,2630,2647 }, {2508,2590,2559 ,2630,2648,2647 }, - {630,3317,1377 ,2491,1882,2651 }, {2787,2788,2786 ,2643,2652,2619 }, - {4587,135,2320 ,774,2653,1406 }, {2830,2829,2786 ,2654,2620,2619 }, - {2788,2830,2786 ,2652,2654,2619 }, {2830,2866,1107 ,2654,2655,2656 }, - {2829,2830,1107 ,2620,2654,2656 }, {2684,2737,2683 ,2644,2626,2645 }, - {2737,2736,2683 ,2626,2625,2645 }, {2633,2552,2300 ,2650,2657,2640 }, - {2507,437,388 ,2631,1149,2202 }, {2507,2559,437 ,2631,2647,1149 }, - {6435,6480,6479 ,2658,1524,2659 }, {406,2224,746 ,2566,2660,2661 }, - {2265,2297,2296 ,2662,2663,2664 }, {2613,2612,2526 ,2665,2646,2636 }, - {172,244,534 ,667,606,632 }, {2725,2726,2724 ,2666,2667,2668 }, - {172,2543,244 ,667,2669,606 }, {2833,3981,3075 ,2065,915,2670 }, - {6321,7251,3288 ,706,2671,2058 }, {2583,2629,685 ,2672,2673,2674 }, - {2718,2717,2665 ,2675,2676,2677 }, {549,2522,2609 ,1129,2678,1130 }, - {2769,2847,2846 ,2679,2624,2623 }, {6479,6480,6507 ,2659,1524,2680 }, - {2718,2770,2769 ,2675,2681,2679 }, {6809,6860,6859 ,712,473,472 }, - {4672,5892,5878 ,2682,2683,2684 }, {2343,8097,8061 ,2685,1710,453 }, - {966,3039,1090 ,2565,2686,2687 }, {819,818,726 ,2244,1018,669 }, - {3468,3439,3440 ,2688,2689,2690 }, {2445,448,2518 ,1388,1172,2388 }, - {2717,2718,2769 ,2676,2675,2679 }, {691,647,2609 ,1173,973,1130 }, - {921,966,1090 ,1922,2565,2687 }, {1047,2921,1146 ,1328,2691,2467 }, - {3154,3197,3153 ,2692,2599,2693 }, {978,1030,1077 ,1620,1619,2694 }, - {1479,1407,1480 ,1270,1269,2695 }, {7196,3288,7232 ,2401,2058,2124 }, - {2770,2815,2769 ,2681,2696,2679 }, {5328,2238,5301 ,2172,2697,2698 }, - {589,590,244 ,671,607,606 }, {2543,589,244 ,2669,671,606 }, {649,175,702 ,1579,211,2699 }, - {3180,2967,2385 ,2700,2701,2702 }, {2141,4985,6707 ,2015,2703,2704 }, - {2671,2724,2723 ,2705,2668,2706 }, {2193,2125,2563 ,1007,892,2707 }, - {3700,3746,3745 ,2545,2708,2546 }, {8140,8102,3263 ,2269,253,252 }, - {3019,3058,1407 ,2709,2710,1269 }, {204,271,203 ,1722,1608,2711 }, - {2769,2815,2847 ,2679,2696,2624 }, {2636,5650,5452 ,2712,2713,2714 }, - {2343,1074,8073 ,2685,2715,2567 }, {744,743,691 ,1367,971,1173 }, - {1370,3019,1407 ,1500,2709,1269 }, {2553,171,395 ,2716,921,966 }, - {3236,2792,3269 ,2717,2718,2719 }, {2084,860,953 ,1361,1385,1237 }, - {8076,2810,1295 ,617,1728,618 }, {2637,165,1238 ,2720,1869,1569 }, - {2664,2717,628 ,2721,2676,1177 }, {584,108,1294 ,2512,1336,635 }, - {3122,2543,172 ,2068,2669,667 }, {2543,2897,589 ,2669,2722,671 }, - {2897,442,589 ,2722,673,671 }, {289,332,288 ,1044,2471,2723 }, - {3352,3353,3378 ,2724,2424,1442 }, {1098,2760,1096 ,2725,2726,2727 }, - {292,388,239 ,2563,2202,1103 }, {2129,2131,2130 ,1469,656,1505 }, - {6039,6134,5488 ,2728,2729,2730 }, {4881,4293,4957 ,2731,2732,2733 }, - {1477,1550,1549 ,1045,2586,903 }, {4827,4887,5334 ,2734,2735,2736 }, - {2041,1743,553 ,2737,763,792 }, {3273,2543,3122 ,2738,2669,2068 }, - {3273,2623,2543 ,2738,2739,2669 }, {2623,2404,2897 ,2739,2740,2722 }, - {2543,2623,2897 ,2669,2739,2722 }, {2404,442,2897 ,2740,673,2722 }, - {2515,2514,2442 ,2600,2741,2742 }, {748,2541,241 ,1677,1298,314 }, - {252,966,1158 ,2743,2565,2744 }, {3461,3490,3430 ,1152,2502,1976 }, - {4924,1166,7073 ,2745,2746,662 }, {7074,4924,7073 ,2747,2745,662 }, - {3247,6430,144 ,1494,2748,853 }, {7344,7343,7285 ,2749,2750,2751 }, - {2903,2425,1411 ,2752,2753,850 }, {597,2903,1411 ,791,2752,850 }, - {2425,2759,2041 ,2753,2754,2737 }, {1411,2425,2041 ,850,2753,2737 }, - {2759,2458,1743 ,2754,2755,763 }, {2041,2759,1743 ,2737,2754,763 }, - {3122,2623,3273 ,2068,2739,2738 }, {2404,2479,442 ,2740,2756,673 }, - {2842,310,442 ,2757,674,673 }, {2479,2842,442 ,2756,2757,673 }, - {2842,2694,310 ,2757,811,674 }, {4887,5377,5376 ,2735,361,2758 }, - {3353,3379,3378 ,2424,1979,1442 }, {2728,2727,2676 ,2759,2760,2761 }, - {2870,2528,2367 ,2762,2763,2764 }, {2666,2719,2718 ,2765,2766,2675 }, - {2687,2635,2761 ,2767,2607,2768 }, {2718,2719,2770 ,2675,2766,2681 }, - {1407,1406,1370 ,1269,1135,1500 }, {8092,6531,8120 ,2267,2280,906 }, - {2614,2612,2613 ,2638,2646,2665 }, {3153,3197,3152 ,2693,2599,2580 }, - {2597,2640,2596 ,2769,2770,2771 }, {2372,597,2654 ,2772,791,2773 }, - {2372,2903,597 ,2772,2752,791 }, {2458,2546,3122 ,2755,2774,2068 }, - {1743,2458,3122 ,763,2755,2068 }, {2546,2699,3122 ,2774,2775,2068 }, - {3122,2699,2623 ,2068,2775,2739 }, {2479,2627,2842 ,2756,2776,2757 }, - {2627,2694,2842 ,2776,811,2757 }, {2411,2528,2870 ,2777,2763,2762 }, - {2424,2411,2870 ,2778,2777,2762 }, {2635,3250,2388 ,2607,2595,2608 }, - {2556,2430,2388 ,2779,2613,2608 }, {2931,2979,2978 ,2780,2781,2782 }, - {3136,2372,2654 ,2783,2772,2773 }, {2372,2425,2903 ,2772,2753,2752 }, - {2458,2457,2546 ,2755,2784,2774 }, {2546,2828,2623 ,2774,2785,2739 }, - {2699,2546,2623 ,2775,2774,2739 }, {2854,2703,2479 ,2786,2787,2756 }, - {2404,2854,2479 ,2740,2786,2756 }, {2479,2703,2627 ,2756,2787,2776 }, - {2615,2614,2566 ,2788,2638,2635 }, {198,127,199 ,1392,1395,2789 }, - {3236,3269,2456 ,2717,2719,2790 }, {2649,3114,2536 ,2791,2792,2793 }, - {2687,2761,2857 ,2767,2768,2575 }, {2840,2388,3250 ,2594,2608,2595 }, - {3089,3112,3132 ,2794,2795,2796 }, {3181,2425,2372 ,2797,2753,2772 }, - {2758,2759,2425 ,2798,2754,2753 }, {3181,2758,2425 ,2797,2798,2753 }, - {2758,2457,2458 ,2798,2784,2755 }, {2759,2758,2458 ,2754,2798,2755 }, - {2828,2992,2623 ,2785,2799,2739 }, {2992,2348,2404 ,2799,2800,2740 }, - {2623,2992,2404 ,2739,2799,2740 }, {2404,2348,2854 ,2740,2800,2786 }, - {3513,2582,3404 ,441,873,2170 }, {2739,2738,2685 ,2801,2641,2642 }, - {2705,2739,2685 ,2802,2801,2642 }, {3048,1904,3049 ,2165,2164,2803 }, - {2728,2756,2727 ,2759,2804,2760 }, {3090,3994,3993 ,2805,2806,2807 }, - {3112,3090,3993 ,2795,2805,2807 }, {1840,940,1869 ,198,197,2808 }, - {3128,3169,3127 ,2809,2810,2811 }, {2616,3136,2548 ,2812,2783,2813 }, - {2486,2485,7615 ,2814,2815,2816 }, {2616,2372,3136 ,2812,2772,2783 }, - {2642,2758,3181 ,2817,2798,2797 }, {2288,2642,3181 ,2818,2817,2797 }, - {2758,2642,2457 ,2798,2817,2784 }, {2546,2992,2828 ,2774,2799,2785 }, - {2348,2757,2703 ,2800,2819,2787 }, {2854,2348,2703 ,2786,2800,2787 }, - {2757,2632,2627 ,2819,2820,2776 }, {2703,2757,2627 ,2787,2819,2776 }, - {2627,2689,145 ,2776,2821,810 }, {162,238,100 ,2822,868,2823 }, - {2777,2823,2822 ,2824,2825,2826 }, {2788,2787,2738 ,2652,2643,2641 }, - {2739,2788,2738 ,2801,2652,2641 }, {3069,3070,3111 ,2827,2828,2829 }, - {2780,2779,2727 ,2830,2831,2760 }, {2756,2780,2727 ,2804,2830,2760 }, - {2528,3183,3135 ,2763,2832,2833 }, {2367,2528,3135 ,2764,2763,2833 }, - {2838,2372,2616 ,2834,2772,2812 }, {2838,2996,2372 ,2834,2835,2772 }, - {2288,3181,2372 ,2818,2797,2772 }, {2996,2288,2372 ,2835,2818,2772 }, - {2642,2605,2457 ,2817,2836,2784 }, {2605,3225,2546 ,2836,2837,2774 }, - {2457,2605,2546 ,2784,2836,2774 }, {2546,3225,2992 ,2774,2837,2799 }, - {2348,2574,2757 ,2800,2838,2819 }, {2574,2448,2632 ,2838,2839,2820 }, - {2757,2574,2632 ,2819,2838,2820 }, {2632,2448,2627 ,2820,2839,2776 }, - {2448,2553,2689 ,2839,2716,2821 }, {2627,2448,2689 ,2776,2839,2821 }, - {5698,5699,5726 ,44,43,515 }, {2622,2549,2567 ,2840,2841,2842 }, - {2890,2936,2889 ,2603,2843,2604 }, {2830,2867,2866 ,2654,2844,2655 }, - {2692,3081,56 ,2845,1017,2606 }, {2534,198,199 ,2846,1392,2789 }, - {2764,2839,3142 ,2847,2848,2849 }, {1907,1248,3878 ,1245,2850,1248 }, - {3142,2839,90 ,2849,2848,2851 }, {2344,2554,2702 ,2852,2853,2854 }, - {2401,2995,2702 ,2855,2856,2854 }, {2554,2401,2702 ,2853,2855,2854 }, - {3070,3069,3031 ,2828,2827,2857 }, {3032,3070,3031 ,2858,2828,2857 }, - {2804,1062,929 ,2618,1232,1234 }, {3097,2838,2616 ,2859,2834,2812 }, - {2834,3097,2616 ,2860,2859,2812 }, {3097,2996,2838 ,2859,2835,2834 }, - {2904,2288,2996 ,2861,2818,2835 }, {3097,2904,2996 ,2859,2861,2835 }, - {2606,2642,2288 ,2862,2817,2818 }, {2904,2606,2288 ,2861,2862,2818 }, - {2606,2783,2605 ,2862,2863,2836 }, {2642,2606,2605 ,2817,2862,2836 }, - {2783,2519,3225 ,2863,2864,2837 }, {2605,2783,3225 ,2836,2863,2837 }, - {3225,2519,2992 ,2837,2864,2799 }, {2767,299,2348 ,2865,2866,2800 }, - {2992,2767,2348 ,2799,2865,2800 }, {2348,299,2574 ,2800,2866,2838 }, - {8083,8099,5771 ,2103,2867,2868 }, {2820,2819,2773 ,2869,2870,2871 }, - {369,199,271 ,1521,2789,1608 }, {2152,821,2136 ,1545,2872,1546 }, - {5013,5950,8108 ,684,2873,2287 }, {1285,1135,1226 ,1944,1943,2354 }, - {2205,2222,6563 ,2874,2509,464 }, {2839,2202,90 ,2848,2875,2851 }, - {1249,2488,2617 ,2876,2877,2878 }, {2488,2542,2371 ,2877,2879,2880 }, - {2617,2488,2371 ,2878,2877,2880 }, {2269,2506,2505 ,2881,2882,2883 }, - {3207,3237,3206 ,2884,2885,2886 }, {2736,2786,929 ,2625,2619,1234 }, - {2735,2736,929 ,2887,2625,1234 }, {2855,3097,2834 ,2888,2859,2860 }, - {2519,2766,2992 ,2864,2889,2799 }, {2992,2766,2767 ,2799,2889,2865 }, - {3020,3021,3059 ,2890,2891,2892 }, {2665,2717,2664 ,2677,2676,2721 }, - {2006,2005,2742 ,1181,1593,2558 }, {2633,2656,2584 ,2650,2893,2894 }, - {2656,2331,2584 ,2893,2895,2894 }, {3054,2763,1787 ,916,2896,2897 }, - {2504,2331,2461 ,2898,2895,2899 }, {5914,6098,5191 ,1566,1565,2900 }, - {3236,3237,2792 ,2717,2885,2718 }, {1663,3081,115 ,1015,1017,2901 }, - {2786,2804,929 ,2619,2618,1234 }, {3317,1804,3347 ,1882,2902,2098 }, - {3191,2403,4961 ,2903,2904,2905 }, {2403,2970,2834 ,2904,2906,2860 }, - {2970,2855,2834 ,2906,2888,2860 }, {2855,2904,3097 ,2888,2861,2859 }, - {2783,2520,2519 ,2863,2907,2864 }, {2519,2520,2766 ,2864,2907,2889 }, - {2766,3015,299 ,2889,2908,2866 }, {2767,2766,299 ,2865,2889,2866 }, - {3015,3078,299 ,2908,2909,2866 }, {3078,2752,2574 ,2909,2910,2838 }, - {299,3078,2574 ,2866,2909,2838 }, {2752,2951,2448 ,2910,2911,2839 }, - {2574,2752,2448 ,2838,2910,2839 }, {2951,2378,2553 ,2911,2912,2716 }, - {2448,2951,2553 ,2839,2911,2716 }, {2553,2378,171 ,2716,2912,921 }, - {1687,1686,3196 ,1104,1004,2581 }, {2886,2885,2821 ,2913,2914,2915 }, - {2774,2773,2721 ,2916,2871,2917 }, {2526,2612,2565 ,2636,2646,2918 }, - {2626,2839,2764 ,2582,2848,2847 }, {411,2495,2899 ,2919,2920,2921 }, - {3223,2495,2911 ,2922,2920,2923 }, {2899,2495,3223 ,2921,2920,2922 }, - {2495,2366,2911 ,2920,2589,2923 }, {2911,2366,1336 ,2923,2589,2924 }, - {2371,2656,2633 ,2880,2893,2650 }, {3747,3746,3700 ,2925,2708,2545 }, - {2946,2338,4040 ,1062,458,460 }, {2696,2970,2403 ,2926,2906,2904 }, - {2696,2855,2970 ,2926,2888,2906 }, {2603,2904,2855 ,2927,2861,2888 }, - {2898,2606,2904 ,2928,2862,2861 }, {2603,2898,2904 ,2927,2928,2861 }, - {2898,2784,2783 ,2928,2929,2863 }, {2606,2898,2783 ,2862,2928,2863 }, - {2783,2784,2520 ,2863,2929,2907 }, {2766,3043,3015 ,2889,2930,2908 }, - {3015,3043,3078 ,2908,2930,2909 }, {3043,2712,2752 ,2930,2931,2910 }, - {3078,3043,2752 ,2909,2930,2910 }, {2641,2951,2752 ,2932,2911,2910 }, - {2712,2641,2752 ,2931,2932,2910 }, {2641,2498,2378 ,2932,2933,2912 }, - {2951,2641,2378 ,2911,2932,2912 }, {5681,5699,2453 ,2934,43,42 }, - {2638,2592,2666 ,2935,2936,2765 }, {2526,2565,2525 ,2636,2918,2937 }, - {8116,8109,8119 ,172,2938,184 }, {1088,1452,1592 ,1604,1606,2939 }, - {2820,2884,2883 ,2869,2940,2579 }, {2444,2443,2368 ,2941,2942,2943 }, - {2715,3095,3013 ,2944,2945,2946 }, {3179,2617,2503 ,2947,2878,2948 }, - {2666,2667,2719 ,2765,2949,2766 }, {987,3452,3977 ,2950,1794,440 }, - {3327,1387,3636 ,439,2951,1060 }, {1336,785,2085 ,2924,2952,657 }, - {3061,3101,3100 ,2953,2954,2955 }, {2868,2869,2907 ,1577,1576,111 }, - {3237,3236,3206 ,2885,2717,2886 }, {2165,2696,2403 ,1041,2926,2904 }, - {2969,2855,2696 ,2956,2888,2926 }, {2483,2898,2603 ,2957,2928,2927 }, - {3186,2483,2603 ,2958,2957,2927 }, {3220,2784,2898 ,2959,2929,2928 }, - {2483,3220,2898 ,2957,2959,2928 }, {2784,3220,2520 ,2929,2959,2907 }, - {2520,2917,2766 ,2907,2960,2889 }, {2766,2917,3043 ,2889,2960,2930 }, - {2498,2496,171 ,2933,2961,921 }, {2378,2498,171 ,2912,2933,921 }, - {3264,2301,872 ,2468,2132,2962 }, {2492,493,2496 ,2963,1785,2961 }, - {1390,131,151 ,2964,2965,2966 }, {3215,3013,2354 ,2967,2946,2968 }, - {4240,3796,3797 ,2060,2969,2061 }, {8084,8127,8110 ,1139,2970,1140 }, - {2631,2840,2586 ,2971,2594,2972 }, {2380,2586,2581 ,2597,2972,2598 }, - {2599,2600,2673 ,2601,2973,2974 }, {2600,2674,2673 ,2973,2975,2974 }, - {3596,3595,3545 ,1792,927,926 }, {3595,3594,3544 ,927,2522,1153 }, - {1002,2431,1283 ,2976,2977,2978 }, {2363,2362,2297 ,2571,2979,2663 }, - {2362,2363,2439 ,2979,2571,2980 }, {2363,2440,2439 ,2571,2572,2980 }, - {2440,2512,2439 ,2572,2981,2980 }, {2671,2670,2595 ,2705,2982,2983 }, - {3138,2537,1050 ,2984,2985,2282 }, {2515,2600,2599 ,2600,2973,2601 }, - {3504,3468,3441 ,2986,2688,2987 }, {2166,2947,2696 ,1040,2988,2926 }, - {2165,2166,2696 ,1041,1040,2926 }, {2253,2603,2855 ,2989,2927,2888 }, - {2969,2253,2855 ,2956,2989,2888 }, {2253,3186,2603 ,2989,2958,2927 }, - {3220,2561,2520 ,2959,2990,2907 }, {2561,2562,2520 ,2990,2991,2907 }, - {2520,2562,2917 ,2907,2991,2960 }, {3043,2539,2712 ,2930,2992,2931 }, - {2539,2716,2712 ,2992,2993,2931 }, {2490,2641,2712 ,2994,2932,2931 }, - {2716,2490,2712 ,2993,2994,2931 }, {2490,2498,2641 ,2994,2933,2932 }, - {2845,2844,2800 ,2995,1329,2996 }, {2977,2999,2976 ,2997,2998,2999 }, - {2364,2441,2440 ,2513,3000,2572 }, {111,258,1653 ,1154,3001,106 }, - {4543,4547,4980 ,3002,242,241 }, {2929,2930,2928 ,3003,3004,2578 }, - {2493,2467,1789 ,3005,3006,3007 }, {2434,2400,2545 ,1118,1117,3008 }, - {3492,3491,3461 ,930,955,1152 }, {2673,2674,2700 ,2974,2975,3009 }, - {2653,2964,2131 ,3010,3011,656 }, {3382,3432,3407 ,870,929,3012 }, - {1049,119,2084 ,1362,2278,1361 }, {2570,2489,2298 ,2612,2611,3013 }, - {2723,2722,2669 ,2706,3014,3015 }, {2671,2723,2669 ,2705,2706,3015 }, - {2671,2669,2670 ,2705,3015,2982 }, {4554,6299,1989 ,1307,760,3016 }, - {355,250,301 ,1876,1916,1857 }, {2947,2969,2696 ,2988,2956,2926 }, - {2919,2253,2969 ,3017,2989,2956 }, {2253,2483,3186 ,2989,2957,2958 }, - {3220,2562,2561 ,2959,2991,2990 }, {2562,114,2917 ,2991,3018,2960 }, - {2989,3043,2917 ,3019,2930,2960 }, {114,2989,2917 ,3018,3019,2960 }, - {2989,2539,3043 ,3019,2992,2930 }, {2751,2498,2490 ,3020,2933,2994 }, - {2751,2492,2496 ,3020,2963,2961 }, {2498,2751,2496 ,2933,3020,2961 }, - {3431,3461,3430 ,3021,1152,1976 }, {2133,157,250 ,2614,1877,1916 }, - {925,2848,2802 ,1287,2605,3022 }, {3123,3153,3152 ,3023,2693,2580 }, - {4563,2382,126 ,3024,3025,1394 }, {1047,2877,2921 ,1328,3026,2691 }, - {3212,2942,2366 ,3027,2587,2589 }, {3154,1590,3198 ,2692,3028,1168 }, - {1480,3123,3152 ,2695,3023,2580 }, {2625,2732,2839 ,2584,2583,2848 }, - {2732,3116,2839 ,2583,3029,2848 }, {3462,3461,3431 ,931,1152,3021 }, - {835,8127,4106 ,3030,2970,1742 }, {2862,1984,1917 ,3031,831,833 }, - {2069,2530,1984 ,1711,2389,831 }, {2862,2069,1984 ,3031,1711,831 }, - {1238,1000,1515 ,1569,1384,1502 }, {2570,2298,2963 ,2612,3013,3032 }, - {2537,2677,1050 ,2985,3033,2282 }, {1972,2003,1349 ,3034,2542,2519 }, - {8109,8110,8127 ,2938,1140,2970 }, {2619,2969,2947 ,3035,2956,2988 }, - {2089,2619,2947 ,1325,3035,2988 }, {2619,2919,2969 ,3035,3017,2956 }, - {2253,2491,2483 ,2989,3036,2957 }, {2491,3214,3220 ,3036,3037,2959 }, - {2483,2491,3220 ,2957,3036,2959 }, {3214,2562,3220 ,3037,2991,2959 }, - {2482,2539,2989 ,3038,2992,3019 }, {2858,2873,2492 ,3039,3040,2963 }, - {2751,2858,2492 ,3020,3039,2963 }, {2873,494,2492 ,3040,3041,2963 }, - {6430,3777,5733 ,2748,1582,1584 }, {3228,1725,178 ,3042,1747,3043 }, - {3221,8127,835 ,183,2970,3030 }, {3116,3219,2839 ,3029,3044,2848 }, - {2988,1336,2653 ,3045,2924,3010 }, {2604,2964,2653 ,3046,3011,3010 }, - {2768,221,1553 ,1297,1296,1669 }, {3698,3699,3744 ,2122,2121,2390 }, - {2475,3215,2793 ,3047,2967,3048 }, {3433,3432,3382 ,3049,929,870 }, - {3957,3997,3996 ,295,380,1928 }, {3956,3957,3996 ,1383,295,1928 }, - {2343,8085,8067 ,2685,2016,2168 }, {3432,3462,3431 ,929,931,3021 }, - {1337,1844,1782 ,2148,911,1105 }, {2537,2572,968 ,2985,3050,1661 }, - {2851,2908,2503 ,3051,3052,2948 }, {2908,3179,2503 ,3052,2947,2948 }, - {5681,5659,5660 ,2934,3053,3054 }, {2943,2851,2503 ,3055,3051,2948 }, - {2919,2679,2253 ,3017,3056,2989 }, {2679,2463,2491 ,3056,3057,3036 }, - {2253,2679,2491 ,2989,3056,3036 }, {2463,2398,3214 ,3057,3058,3037 }, - {2491,2463,3214 ,3036,3057,3037 }, {2575,2562,3214 ,3059,2991,3037 }, - {2398,2575,3214 ,3058,3059,3037 }, {2575,114,2562 ,3059,3018,2991 }, - {2482,2989,114 ,3038,3019,3018 }, {2762,2716,2539 ,3060,2993,2992 }, - {2482,2762,2539 ,3038,3060,2992 }, {2762,3280,2716 ,3060,3061,2993 }, - {3092,2490,2716 ,3062,2994,2993 }, {3280,3092,2716 ,3061,3062,2993 }, - {3092,2858,2751 ,3062,3039,3020 }, {2490,3092,2751 ,2994,3062,3020 }, - {3192,3285,6689 ,3063,3064,3065 }, {2383,199,127 ,3066,2789,1395 }, - {4254,4255,4019 ,416,165,227 }, {2316,2383,2382 ,3067,3066,3025 }, - {2315,2316,2382 ,3068,3067,3025 }, {2383,127,2382 ,3066,1395,3025 }, - {4031,2650,2585 ,3069,914,875 }, {2646,2614,2615 ,3070,2638,2788 }, - {2686,2685,2614 ,3071,2642,2638 }, {925,2782,2730 ,1287,3072,2150 }, - {845,943,4970 ,1828,1807,3073 }, {2839,3219,2202 ,2848,3044,2875 }, - {3219,650,2202 ,3044,3074,2875 }, {3432,3431,3407 ,929,3021,3012 }, - {3543,3542,3488 ,3075,979,1980 }, {2576,1665,2967 ,3076,3077,2701 }, - {3745,3746,3744 ,2546,2708,2390 }, {2628,3180,2835 ,3078,2700,3079 }, - {2293,2263,2294 ,2561,3080,3081 }, {3592,3591,3542 ,2084,1652,979 }, - {3543,3592,3542 ,3075,2084,979 }, {1183,155,154 ,1238,1497,1466 }, - {2537,3138,2572 ,2985,2984,3050 }, {2619,2902,2919 ,3035,3082,3017 }, - {2919,2902,2679 ,3017,3082,3056 }, {3044,114,2575 ,3083,3018,3059 }, - {3044,2402,114 ,3083,3084,3018 }, {2402,2482,114 ,3084,3038,3018 }, - {2540,2762,2482 ,3085,3060,3038 }, {2762,2540,3280 ,3060,3085,3061 }, - {2794,3092,3280 ,3086,3062,3061 }, {2540,2794,3280 ,3085,3086,3061 }, - {2492,494,493 ,2963,3041,1785 }, {3904,3958,3903 ,1264,294,296 }, - {3183,219,1855 ,2832,3087,3088 }, {2646,2686,2614 ,3070,3071,2638 }, - {3671,978,1077 ,3089,1620,2694 }, {1304,2431,4377 ,2639,2977,3090 }, - {2686,2705,2685 ,3071,2802,2642 }, {2544,3137,2966 ,2451,2628,3091 }, - {2298,2793,2744 ,3013,3048,2627 }, {925,2802,2782 ,1287,3022,3072 }, - {6348,7253,6349 ,1607,1855,705 }, {3064,3063,3025 ,3092,3093,3094 }, - {1336,2604,2653 ,2924,3046,3010 }, {3026,3064,3025 ,3095,3092,3094 }, - {2628,2576,2967 ,3078,3076,2701 }, {3061,3062,3101 ,2953,3096,2954 }, - {3062,3102,3101 ,3096,3097,2954 }, {3024,3062,3023 ,3098,3096,3099 }, - {3878,106,1156 ,1248,1073,3100 }, {3431,3430,3380 ,3021,1976,1514 }, - {460,1876,1853 ,1999,1386,3101 }, {2619,631,2902 ,3035,1426,3082 }, - {2902,631,2679 ,3082,1426,3056 }, {2402,3044,2575 ,3084,3083,3059 }, - {2916,2482,2402 ,3102,3038,3084 }, {2714,2858,3092 ,3103,3039,3062 }, - {2794,2714,3092 ,3086,3103,3062 }, {3082,2873,2858 ,3104,3040,3039 }, - {2714,3082,2858 ,3103,3104,3039 }, {3495,3434,3496 ,735,737,3105 }, - {2619,2090,631 ,3035,1324,1426 }, {845,4970,760 ,1828,3073,3106 }, - {2131,2865,2201 ,656,3107,2455 }, {2973,3021,2972 ,3108,2891,2047 }, - {4614,4613,4590 ,3109,1488,1490 }, {2594,2593,2511 ,3110,3111,3112 }, - {3062,3061,3023 ,3096,2953,3099 }, {3215,2354,2426 ,2967,2968,3113 }, - {2354,3013,3173 ,2968,2946,3114 }, {2793,3215,2426 ,3048,2967,3113 }, - {2924,2925,2974 ,2593,3115,3116 }, {2744,2793,3193 ,2627,3048,3117 }, - {631,2944,2679 ,1426,3118,3056 }, {2395,2463,2679 ,3119,3057,3056 }, - {2480,2398,2463 ,3120,3058,3057 }, {2395,2480,2463 ,3119,3120,3057 }, - {2398,2480,2575 ,3058,3120,3059 }, {2575,3174,2402 ,3059,3121,3084 }, - {2289,2482,2916 ,3122,3038,3102 }, {2482,2289,2540 ,3038,3122,3085 }, - {2836,2873,3082 ,3123,3040,3104 }, {1806,494,2873 ,3124,3041,3040 }, - {2836,1806,2873 ,3123,3124,3040 }, {494,1806,802 ,3041,3124,400 }, - {3890,3926,3889 ,1913,3125,3126 }, {6434,6435,6479 ,3127,2658,2659 }, - {4576,7524,4575 ,1628,1630,3128 }, {203,2383,2316 ,2711,3066,3067 }, - {2317,203,2316 ,3129,2711,3067 }, {270,199,2383 ,3130,2789,3066 }, - {203,270,2383 ,2711,3130,3066 }, {2609,790,744 ,1130,1339,1367 }, - {3011,2624,2914 ,3131,3132,2573 }, {6707,6643,8101 ,2704,3133,383 }, - {3149,2537,3143 ,3134,2985,3135 }, {3064,3104,3063 ,3092,3136,3093 }, - {3104,3103,3063 ,3136,3137,3093 }, {2152,391,821 ,1545,1647,2872 }, - {2669,2668,2593 ,3015,3138,3111 }, {2576,795,1665 ,3076,302,3077 }, - {3193,2630,2894 ,3117,3139,3140 }, {2628,2967,3180 ,3078,2701,2700 }, - {3193,2793,2630 ,3117,3048,3139 }, {2570,2963,2544 ,2612,3032,2451 }, - {2341,8064,3008 ,845,3141,546 }, {4212,4213,294 ,895,1070,945 }, - {928,830,929 ,1997,1996,1234 }, {2644,2944,631 ,3142,3118,1426 }, - {2478,2644,631 ,3143,3142,1426 }, {2644,2679,2944 ,3142,3056,3118 }, - {2396,2395,2679 ,3144,3119,3056 }, {2644,2396,2679 ,3142,3144,3056 }, - {2312,2339,2575 ,3145,3146,3059 }, {2480,2312,2575 ,3120,3145,3059 }, - {2575,2339,3174 ,3059,3146,3121 }, {2339,2648,2402 ,3146,3147,3084 }, - {3174,2339,2402 ,3121,3146,3084 }, {2916,3115,2289 ,3102,3148,3122 }, - {3077,2794,2540 ,3149,3086,3085 }, {2289,3077,2540 ,3122,3149,3085 }, - {2347,2714,2794 ,3150,3103,3086 }, {3077,2347,2794 ,3149,3150,3086 }, - {2836,3082,2714 ,3123,3104,3103 }, {2347,2836,2714 ,3150,3123,3103 }, - {3496,3434,3464 ,3105,737,3151 }, {2316,2275,2317 ,3067,3152,3129 }, - {1165,4831,3472 ,3153,3154,3155 }, {2293,2294,2358 ,2561,3081,2562 }, - {3489,3543,3488 ,1977,3075,1980 }, {2544,2966,2622 ,2451,3091,2840 }, - {6796,8063,8136 ,2617,465,2449 }, {2669,2667,2668 ,3015,2949,3138 }, - {2818,2882,2881 ,3156,518,2592 }, {2882,2926,2925 ,518,517,3115 }, - {2881,2882,2925 ,2592,518,3115 }, {1550,1477,1479 ,2586,1045,1270 }, - {953,1048,2084 ,1237,1236,1361 }, {2926,2975,2974 ,517,3157,3116 }, - {2975,2997,2974 ,3157,3158,3116 }, {2925,2926,2974 ,3115,517,3116 }, - {3155,1552,3100 ,3159,2266,2955 }, {3101,3155,3100 ,2954,3159,2955 }, - {2295,2296,2360 ,3160,2664,3161 }, {3024,3023,2997 ,3098,3099,3158 }, - {2511,2510,2438 ,3112,3162,3163 }, {2975,3024,2997 ,3157,3098,3158 }, - {3156,3155,3101 ,3164,3159,2954 }, {3137,3193,2894 ,2628,3117,3140 }, - {2312,2480,2395 ,3145,3120,3119 }, {2396,2312,2395 ,3144,3145,3119 }, - {2648,2806,2916 ,3147,3165,3102 }, {2402,2648,2916 ,3084,3147,3102 }, - {2916,2806,3115 ,3102,3165,3148 }, {2377,2347,3077 ,3166,3150,3149 }, - {3042,2377,3077 ,3167,3166,3149 }, {2355,1806,2836 ,3168,3124,3123 }, - {3490,3489,3430 ,2502,1977,1976 }, {1923,211,459 ,418,415,696 }, - {1145,1146,1236 ,1277,2467,1434 }, {1187,1367,1919 ,1778,574,1779 }, - {2597,2596,2512 ,2769,2771,2981 }, {2691,2353,2570 ,3169,3170,2612 }, - {3149,3143,968 ,3134,3135,1661 }, {5616,5615,3274 ,646,3171,3172 }, - {2721,2720,2667 ,2917,3173,2949 }, {2669,2721,2667 ,3015,2917,2949 }, - {2817,2818,2881 ,3174,3156,2592 }, {6968,7027,7008 ,595,3175,3176 }, - {3277,8066,8098 ,961,960,907 }, {3155,3156,1552 ,3159,3164,2266 }, - {2438,2437,2360 ,3163,2576,3161 }, {2361,2438,2360 ,3177,3163,3161 }, - {2667,2720,2719 ,2949,3173,2766 }, {3137,2744,3193 ,2628,2627,3117 }, - {119,460,2084 ,2278,1999,1361 }, {1443,5616,3274 ,182,646,3172 }, - {2135,2136,2478 ,1425,1546,3143 }, {2648,298,2806 ,3147,3178,3165 }, - {2806,2860,2289 ,3165,3179,3122 }, {3115,2806,2289 ,3148,3165,3122 }, - {2466,3042,3077 ,3180,3167,3149 }, {2289,2466,3077 ,3122,3180,3149 }, - {2377,2355,2836 ,3166,3168,3123 }, {2347,2377,2836 ,3150,3166,3123 }, - {2355,2465,1806 ,3168,3181,3124 }, {3041,1860,3618 ,3182,3183,37 }, - {553,1743,1727 ,792,763,793 }, {6388,6435,6434 ,3184,2658,3127 }, - {204,203,2317 ,1722,2711,3129 }, {2318,204,2317 ,3185,1722,3129 }, - {5191,6388,6434 ,2900,3184,3127 }, {3228,178,2532 ,3042,3043,3186 }, - {1107,2866,1205 ,2656,2655,3187 }, {3260,3149,968 ,3188,3134,1661 }, - {2909,2911,2678 ,3189,2923,3190 }, {2777,2801,2776 ,2824,3191,3192 }, - {3104,3158,3157 ,3136,3193,3194 }, {2963,2744,2544 ,3032,2627,2451 }, - {1657,1725,3228 ,1781,1747,3042 }, {2874,2628,2386 ,3195,3078,3196 }, - {2818,2817,2771 ,3156,3174,3197 }, {2772,2818,2771 ,3198,3156,3197 }, - {2136,1512,2478 ,1546,3199,3143 }, {3246,2644,2478 ,3200,3142,3143 }, - {1512,3246,2478 ,3199,3200,3143 }, {2399,2396,2644 ,3201,3144,3142 }, - {2399,2529,2312 ,3201,3202,3145 }, {2396,2399,2312 ,3144,3201,3145 }, - {2312,2529,2339 ,3145,3202,3146 }, {3245,298,2648 ,3203,3178,3147 }, - {2339,3245,2648 ,3146,3203,3147 }, {2860,2753,2289 ,3179,456,3122 }, - {2289,2753,2466 ,3122,456,3180 }, {110,111,226 ,743,1154,108 }, - {2590,2589,437 ,2648,3204,1149 }, {5390,5037,6317 ,3205,3206,3207 }, - {2521,2533,2506 ,3208,3209,2882 }, {2867,2940,1205 ,2844,110,3187 }, - {2011,3001,5615 ,129,3210,3171 }, {1208,1668,1942 ,3211,3212,2337 }, - {1687,1740,1782 ,1104,3213,1105 }, {2966,3137,2894 ,3091,2628,3140 }, - {3060,3061,3100 ,3214,2953,2955 }, {2779,2778,2727 ,2831,3215,2760 }, - {165,1373,341 ,1869,1501,1852 }, {787,802,4130 ,209,400,210 }, - {3173,2385,2434 ,3114,2702,1118 }, {2385,2433,2434 ,2702,1116,1118 }, - {2011,3913,3001 ,129,841,3210 }, {2296,2361,2360 ,2664,3177,3161 }, - {2720,2772,2771 ,3173,3198,3197 }, {2719,2720,2771 ,2766,3173,3197 }, - {2883,2882,2818 ,2579,518,3156 }, {2386,2628,2835 ,3196,3078,3079 }, - {2549,2894,2370 ,2841,3140,3216 }, {3102,3156,3101 ,3097,3164,2954 }, - {2266,3246,1512 ,3217,3200,3199 }, {821,2266,1512 ,2872,3217,3199 }, - {2266,2644,3246 ,3217,3142,3200 }, {2414,2399,2644 ,3218,3201,3142 }, - {2266,2414,2644 ,3217,3218,3142 }, {2414,2299,2529 ,3218,3219,3202 }, - {2399,2414,2529 ,3201,3218,3202 }, {2299,2447,2339 ,3219,3220,3146 }, - {2529,2299,2339 ,3202,3219,3146 }, {2339,2447,3245 ,3146,3220,3203 }, - {2447,2446,298 ,3220,3221,3178 }, {3245,2447,298 ,3203,3220,3178 }, - {2806,2753,2860 ,3165,456,3179 }, {2753,2538,3042 ,456,3222,3167 }, - {2466,2753,3042 ,3180,456,3167 }, {3119,2377,3042 ,3223,3166,3167 }, - {2538,3119,3042 ,3222,3223,3167 }, {3119,2747,2355 ,3223,3224,3168 }, - {2377,3119,2355 ,3166,3223,3168 }, {2355,2747,2465 ,3168,3224,3181 }, - {3970,3969,3925 ,3225,3226,3227 }, {2319,204,2318 ,3228,1722,3185 }, - {1211,2255,2697 ,2007,3229,2006 }, {2489,2715,2475 ,2611,2944,3047 }, - {2506,2533,2805 ,2882,3209,3230 }, {3990,3299,3254 ,3231,3232,3233 }, - {2602,2675,2600 ,3234,3235,2973 }, {2417,2874,2386 ,3236,3195,3196 }, - {2427,2379,2677 ,3237,3238,3033 }, {286,287,331 ,2446,2470,2403 }, - {2624,2949,3405 ,3132,3239,1798 }, {3429,3460,3459 ,1978,3240,3241 }, - {2886,2863,2931 ,2913,3242,2780 }, {2863,2932,2931 ,3242,3243,2780 }, - {2512,2511,2438 ,2981,3112,3163 }, {593,4223,1599 ,1108,1934,391 }, - {3199,1726,1658 ,3244,1746,1782 }, {2511,2512,2595 ,3112,2981,2983 }, - {2510,2593,2592 ,3162,3111,2936 }, {2532,1874,1337 ,3186,962,2148 }, - {2549,2370,2567 ,2841,3216,2842 }, {2038,1983,1984 ,1551,1001,831 }, - {2963,2298,2744 ,3032,3013,2627 }, {2819,2883,2818 ,2870,2579,3156 }, - {2475,3013,3215 ,3047,2946,2967 }, {2462,2413,2417 ,3245,3246,3236 }, - {2413,2900,2417 ,3246,2649,3236 }, {2715,2462,2417 ,2944,3245,3236 }, - {2900,2551,2874 ,2649,3247,3195 }, {1304,1255,2576 ,2639,3248,3076 }, - {2551,2576,3175 ,3247,3076,3249 }, {2551,1304,2576 ,3247,2639,3076 }, - {5616,2011,5615 ,646,129,3171 }, {2446,2849,2806 ,3221,3250,3165 }, - {298,2446,2806 ,3178,3221,3165 }, {2849,3144,2806 ,3250,3251,3165 }, - {2806,3144,2753 ,3165,3251,456 }, {2346,3119,2538 ,3252,3223,3222 }, - {2573,2346,2538 ,3253,3252,3222 }, {2747,2681,2465 ,3224,3254,3181 }, - {8118,1218,8126 ,2129,3255,812 }, {135,204,2319 ,2653,1722,3228 }, - {2320,135,2319 ,1406,2653,3228 }, {135,205,204 ,2653,1741,1722 }, - {8138,4106,8078 ,2018,1742,1744 }, {135,273,205 ,2653,1749,1741 }, - {3913,4248,3001 ,841,3256,3210 }, {2369,2445,2368 ,3257,1388,2943 }, - {2351,3149,2201 ,3258,3134,2455 }, {2588,2449,2556 ,2072,3259,2779 }, - {6911,6912,6942 ,474,519,521 }, {6943,6963,6962 ,520,1048,3260 }, - {3428,3429,3459 ,3261,1978,3241 }, {788,1390,3091 ,976,2964,3262 }, - {3260,968,2201 ,3188,1661,2455 }, {3325,3359,3305 ,825,824,879 }, - {2417,2386,2715 ,3236,3196,2944 }, {3199,1658,3156 ,3244,1782,3164 }, - {2439,2512,2438 ,2980,2981,3163 }, {6531,6897,8134 ,2280,54,3263 }, - {2354,3173,2434 ,2968,3114,1118 }, {3103,3104,3157 ,3137,3136,3194 }, - {2622,2966,2894 ,2840,3091,3140 }, {795,456,1665 ,302,301,3077 }, - {336,291,236 ,1013,1012,2444 }, {2356,2909,1785 ,3264,3189,1659 }, - {3267,2356,1785 ,3265,3264,1659 }, {3267,1785,1726 ,3265,1659,1746 }, - {3229,3267,1726 ,3266,3265,1746 }, {5346,5364,5363 ,3267,3268,3269 }, - {2754,2349,2849 ,3270,457,3250 }, {2446,2754,2849 ,3221,3270,3250 }, - {2849,2349,3144 ,3250,457,3251 }, {3144,2349,2753 ,3251,457,456 }, - {2811,2573,2538 ,3271,3253,3222 }, {2753,2811,2538 ,456,3271,3222 }, - {2792,2732,2626 ,2718,2583,2582 }, {8062,8065,8090 ,3272,96,412 }, - {2445,2481,2444 ,1388,3273,2941 }, {2822,2886,2821 ,2826,2913,2915 }, - {3212,2587,2942 ,3027,3274,2587 }, {1383,788,3091 ,336,976,3262 }, - {2932,2979,2931 ,3243,2781,2780 }, {2943,2503,2691 ,3055,2948,3169 }, - {2617,2852,2647 ,2878,3275,3276 }, {4571,972,2162 ,1342,3277,3278 }, - {3158,3200,3199 ,3193,3279,3244 }, {3157,3158,3199 ,3194,3193,3244 }, - {2653,2129,2069 ,3010,1469,1711 }, {2900,2874,2417 ,2649,3195,3236 }, - {2678,2911,1917 ,3190,2923,833 }, {2911,1336,2988 ,2923,2924,3045 }, - {821,3185,2266 ,2872,3280,3217 }, {3005,2414,2266 ,3281,3218,3217 }, - {3272,2754,2446 ,3282,3270,3221 }, {2447,3272,2446 ,3220,3282,3221 }, - {2349,890,2660 ,457,3283,455 }, {2753,2660,2811 ,456,455,3271 }, - {2380,2895,2914 ,2597,2574,2573 }, {2370,1482,227 ,3216,2265,2157 }, - {270,203,271 ,3130,2711,1608 }, {3134,3135,1855 ,3284,2833,3088 }, - {2367,3135,3134 ,2764,2833,3284 }, {643,2676,2602 ,3285,2761,3234 }, - {2760,2749,1096 ,2726,3286,2727 }, {4395,4347,4373 ,726,3287,3288 }, - {2807,2555,2545 ,3289,1066,3008 }, {329,2393,330 ,2348,2445,2402 }, - {3293,3291,7151 ,1988,1203,1202 }, {3089,3088,3048 ,2794,3290,2165 }, - {3049,3089,3048 ,2803,2794,2165 }, {554,2569,2366 ,2588,3291,2589 }, - {554,2268,2085 ,2588,3292,657 }, {3013,3095,3173 ,2946,2945,3114 }, - {2894,2630,2370 ,3140,3139,3216 }, {3231,411,2356 ,3293,2919,3264 }, - {3230,3231,2356 ,3294,3293,3264 }, {3199,3200,3229 ,3244,3279,3266 }, - {3200,3230,3229 ,3279,3294,3266 }, {2653,2069,2862 ,3010,1711,3031 }, - {2462,2715,2489 ,3245,2944,2611 }, {3157,3199,3156 ,3194,3244,3164 }, - {1725,1784,178 ,1747,1662,3043 }, {2031,2067,2006 ,1560,1592,1181 }, - {2551,3175,2874 ,3247,3249,3195 }, {8080,8069,8141 ,1094,1095,3295 }, - {1917,2911,2988 ,833,2923,3045 }, {3159,3158,3104 ,3296,3193,3136 }, - {3105,3159,3104 ,3297,3296,3136 }, {3065,3064,3026 ,3298,3092,3095 }, - {2464,840,1697 ,3299,68,69 }, {1088,3185,821 ,1604,3280,2872 }, - {1088,821,391 ,1604,2872,1647 }, {1088,2266,3185 ,1604,3217,3280 }, - {2309,3005,2266 ,3300,3281,3217 }, {1088,2309,2266 ,1604,3300,3217 }, - {3005,2309,2414 ,3281,3300,3218 }, {2309,2734,2299 ,3300,3301,3219 }, - {2414,2309,2299 ,3218,3300,3219 }, {2734,2311,2447 ,3301,3302,3220 }, - {2299,2734,2447 ,3219,3301,3220 }, {2447,2311,3272 ,3220,3302,3282 }, - {3272,2311,2754 ,3282,3302,3270 }, {2811,2660,2573 ,3271,455,3253 }, - {2591,2592,2638 ,3303,2936,2935 }, {2380,2914,2624 ,2597,2573,3132 }, - {2895,2581,2857 ,2574,2598,2575 }, {2930,2931,2977 ,3004,2780,2997 }, - {3000,3031,2980 ,3304,2857,3305 }, {3165,3207,3164 ,3306,2884,3307 }, - {2587,3256,554 ,3274,3308,2588 }, {2821,2885,2820 ,2915,2914,2869 }, - {3673,4185,52 ,648,409,411 }, {2949,2624,3011 ,3239,3132,3131 }, - {3429,3488,3460 ,1978,1980,3240 }, {2726,2777,2776 ,2667,2824,3192 }, - {5284,5338,5337 ,571,63,572 }, {4904,5377,4887 ,3309,361,2735 }, - {368,2534,369 ,1396,2846,1521 }, {3102,3103,3156 ,3097,3137,3164 }, - {2411,3081,2692 ,2777,1017,2845 }, {2936,2935,2889 ,2843,3310,2604 }, - {5284,5283,5239 ,571,570,482 }, {2268,2132,2085 ,3292,655,657 }, - {2979,3029,2978 ,2781,3311,2782 }, {2617,2647,2353 ,2878,3276,3170 }, - {78,2302,2495 ,3312,3313,2920 }, {2503,2617,2353 ,2948,2878,3170 }, - {3204,3234,3233 ,3314,3315,3316 }, {2302,2741,2495 ,3313,3317,2920 }, - {3162,3204,3203 ,3318,3314,3319 }, {3161,3162,3203 ,3320,3318,3319 }, - {3268,2302,3233 ,3321,3313,3316 }, {3234,3268,3233 ,3315,3321,3316 }, - {2302,2332,2741 ,3313,3322,3317 }, {3160,3161,3202 ,3323,3320,3324 }, - {3203,3233,3232 ,3319,3316,3325 }, {3107,3161,3140 ,3326,3320,3327 }, - {3161,3203,3202 ,3320,3319,3324 }, {3200,3201,3230 ,3279,3328,3294 }, - {2988,2653,2862 ,3045,3010,3031 }, {860,460,1853 ,1385,1999,3101 }, - {2508,2509,2592 ,2630,3329,2936 }, {840,2464,3450 ,68,3299,3330 }, - {2597,2673,2672 ,2769,2974,3331 }, {2311,2750,2754 ,3302,3332,3270 }, - {2750,890,2349 ,3332,3283,457 }, {2754,2750,2349 ,3270,3332,457 }, - {254,109,4036 ,2008,1654,1602 }, {687,1155,831 ,1665,3333,3334 }, - {546,2602,2560 ,1171,3234,3335 }, {2497,2132,2268 ,3336,655,3292 }, - {5264,5284,5239 ,1192,571,482 }, {8094,8088,8100 ,98,1998,1713 }, - {4041,2946,4040 ,1063,1062,460 }, {2456,2792,2626 ,2790,2718,2582 }, - {3207,3206,3164 ,2884,2886,3307 }, {3111,3165,3110 ,2829,3306,3337 }, - {486,437,529 ,1144,1149,1148 }, {2971,3019,1370 ,3338,2709,1500 }, - {2683,2736,2735 ,2645,2625,2887 }, {2704,2683,2735 ,3339,2645,2887 }, - {2730,741,827 ,2150,1221,1220 }, {220,131,8 ,3340,2965,3341 }, - {8093,8078,8076 ,2288,1744,617 }, {2801,2777,2822 ,3191,2824,2826 }, - {2675,2727,2674 ,3235,2760,2975 }, {3232,3233,78 ,3325,3316,3312 }, - {3233,2302,78 ,3316,3313,3312 }, {3203,3204,3233 ,3319,3314,3316 }, - {2445,2444,2368 ,1388,2941,2943 }, {6804,6805,6854 ,3342,3343,3344 }, - {5276,5330,5350 ,1525,3345,1526 }, {1294,108,874 ,635,1336,636 }, - {3684,3422,3664 ,1915,2055,1557 }, {554,90,2987 ,2588,2851,3346 }, - {90,2269,2987 ,2851,2881,3346 }, {3161,3160,3140 ,3320,3323,3327 }, - {3201,3200,3158 ,3328,3279,3193 }, {3159,3201,3158 ,3296,3328,3193 }, - {2630,2948,1482 ,3139,3347,2265 }, {2630,2577,2948 ,3139,3348,3347 }, - {2630,2853,2577 ,3139,806,3348 }, {2977,3028,3027 ,2997,3349,3350 }, - {2817,2881,2880 ,3174,2592,2591 }, {3105,3104,3064 ,3297,3136,3092 }, - {3065,3105,3064 ,3298,3297,3092 }, {2365,2441,2364 ,3351,3000,2513 }, - {3029,3066,3065 ,3311,3352,3298 }, {3028,3029,3065 ,3349,3311,3298 }, - {2978,3029,3028 ,2782,3311,3349 }, {2977,2978,3028 ,2997,2782,3349 }, - {2311,2419,2750 ,3302,3353,3332 }, {787,494,802 ,209,3041,400 }, - {2750,2419,890 ,3332,3353,3283 }, {1211,3636,939 ,2007,1060,3354 }, - {3636,1453,939 ,1060,3355,3354 }, {3487,3541,3540 ,3356,981,3357 }, - {221,2541,748 ,1296,1298,1677 }, {2532,1337,3226 ,3186,2148,3358 }, - {2263,2293,2262 ,3080,2561,3359 }, {3206,3236,3205 ,2886,2717,3360 }, - {3206,3205,3163 ,2886,3360,3361 }, {3165,3164,3110 ,3306,3307,3337 }, - {3036,3074,3035 ,3362,3363,3364 }, {2665,2664,2590 ,2677,2721,2648 }, - {1146,2921,1237 ,2467,2691,1467 }, {1237,2971,1370 ,1467,3338,1500 }, - {2930,2977,2928 ,3004,2997,2578 }, {3994,4036,4035 ,2806,1602,1601 }, - {3283,1556,2968 ,262,3365,263 }, {3182,2536,49 ,3366,2793,3367 }, - {2536,1015,3017 ,2793,3368,3369 }, {2533,2536,3182 ,3209,2793,3366 }, - {2535,2536,2533 ,3370,2793,3209 }, {2649,2536,2535 ,2791,2793,3370 }, - {2597,2672,2671 ,2769,3331,2705 }, {3227,3226,3198 ,1167,3358,1168 }, - {3067,3066,3029 ,3371,3352,3311 }, {3046,3067,3029 ,3372,3371,3311 }, - {3202,3203,3232 ,3324,3319,3325 }, {2781,2780,2756 ,3373,2830,2804 }, - {2729,2728,2676 ,3374,2759,2761 }, {2701,2729,2676 ,3375,3374,2761 }, - {2729,2756,2728 ,3374,2804,2759 }, {8087,8145,6797 ,385,3376,2246 }, - {2879,2923,2922 ,2621,2046,2045 }, {2878,2879,2922 ,2622,2621,2045 }, - {3209,3239,3238 ,3377,3378,3379 }, {199,270,271 ,2789,3130,1608 }, - {3066,3107,3106 ,3352,3326,3380 }, {3085,3066,3106 ,3381,3352,3380 }, - {1071,3661,2455 ,3382,789,475 }, {2822,2821,2776 ,2826,2915,3192 }, - {3027,3065,3026 ,3350,3298,3095 }, {3605,3604,3556 ,3383,3384,3385 }, - {1011,2864,1010 ,1285,3386,1286 }, {1688,451,134 ,1718,3387,1783 }, - {1592,1056,2309 ,2939,3388,3300 }, {1088,1592,2309 ,1604,2939,3300 }, - {2918,2734,2309 ,3389,3301,3300 }, {1056,2918,2309 ,3388,3389,3300 }, - {2918,2412,2311 ,3389,3390,3302 }, {2734,2918,2311 ,3301,3389,3302 }, - {2311,2412,2419 ,3302,3390,3353 }, {2840,2875,2687 ,2594,2596,2767 }, - {2629,2494,794 ,2673,3391,3392 }, {2637,1373,165 ,2720,1501,1869 }, - {3061,3060,3022 ,2953,3214,3393 }, {3236,3235,3205 ,2717,3394,3360 }, - {2565,2612,2524 ,2918,2646,3395 }, {2424,2870,2367 ,2778,2762,2764 }, - {3744,3746,3796 ,2390,2708,2969 }, {2905,2424,2367 ,399,2778,2764 }, - {2931,2930,2885 ,2780,3004,2914 }, {3169,3168,3127 ,2810,3396,2811 }, - {5363,6260,5346 ,3269,3397,3267 }, {2601,2600,2517 ,3398,2973,3399 }, - {2727,2778,2755 ,2760,3215,3400 }, {2597,2598,2673 ,2769,2602,2974 }, - {819,2769,2846 ,2244,2679,2623 }, {2436,2435,2358 ,2577,3401,2562 }, - {2729,2781,2756 ,3374,3373,2804 }, {2698,3187,4248 ,105,3402,3256 }, - {3065,3066,3085 ,3298,3352,3381 }, {2297,2362,2361 ,2663,2979,3177 }, - {3072,3125,3071 ,3403,3404,3405 }, {2999,2977,3027 ,2998,2997,3350 }, - {2359,2437,2358 ,3406,2576,2562 }, {2427,3117,2379 ,3237,3407,3238 }, - {6748,6757,1990 ,3408,3409,1305 }, {2581,2687,2857 ,2598,2767,2575 }, - {455,410,1665 ,2205,2204,3077 }, {2155,5444,2157 ,580,3410,3411 }, - {2443,2515,2442 ,2942,2600,2742 }, {2987,2497,2268 ,3346,3336,3292 }, - {2125,2193,2124 ,892,1007,1006 }, {3129,3086,3130 ,3412,3413,3414 }, - {1346,1806,2465 ,484,3124,3181 }, {2525,2565,2524 ,2937,2918,3395 }, - {2801,2822,2776 ,3191,2826,3192 }, {1740,1337,1782 ,3213,2148,1105 }, - {3405,2949,2920 ,1798,3239,1799 }, {2629,2583,2461 ,2673,2672,2899 }, - {2675,2674,2600 ,3235,2975,2973 }, {3108,3107,3066 ,3415,3326,3352 }, - {3067,3108,3066 ,3371,3415,3352 }, {2488,2693,2542 ,2877,3416,2879 }, - {2673,2725,2724 ,2974,2666,2668 }, {3256,90,554 ,3308,2851,2588 }, - {3011,2914,2965 ,3131,2573,3417 }, {7250,7233,3288 ,3418,2125,2058 }, - {1479,1480,3151 ,1270,2695,2585 }, {1480,3152,3151 ,2695,2580,2585 }, - {2884,2929,2928 ,2940,3003,2578 }, {2296,2297,2361 ,2664,2663,3177 }, - {2672,2673,2671 ,3331,2974,2705 }, {3742,3793,3792 ,3419,3420,3421 }, - {6742,4784,3192 ,3422,3423,3063 }, {3228,3227,1656 ,3042,1167,1166 }, - {2694,145,60 ,811,810,675 }, {2652,2918,1056 ,3424,3389,3388 }, - {2652,2745,2412 ,3424,3425,3390 }, {2918,2652,2412 ,3389,3424,3390 }, - {2412,2420,2419 ,3390,273,3353 }, {2513,2512,2440 ,3426,2981,2572 }, - {5166,6257,5473 ,3427,3428,3429 }, {219,3195,1855 ,3087,3430,3088 }, - {199,369,2534 ,2789,1521,2846 }, {2823,2863,2822 ,2825,3242,2826 }, - {2825,2824,2778 ,3431,3432,3215 }, {4256,4275,4255 ,3433,699,165 }, - {2555,2807,2416 ,1066,3289,808 }, {2915,2631,2711 ,3434,2971,3435 }, - {2525,2524,2485 ,2937,3395,2815 }, {4216,4256,4255 ,1241,3433,165 }, - {4215,4216,4255 ,370,1241,165 }, {2612,2611,2524 ,2646,3436,3395 }, - {4548,3247,2252 ,589,1494,590 }, {2779,2825,2778 ,2831,3431,3215 }, - {2294,2359,2358 ,3081,3406,2562 }, {2925,2924,2881 ,3115,2593,2592 }, - {3162,3161,3107 ,3318,3320,3326 }, {3108,3162,3107 ,3415,3318,3326 }, - {2693,2494,2542 ,3416,3391,2879 }, {6349,7252,6321 ,705,3437,706 }, - {2577,2416,2710 ,3348,808,3438 }, {4190,1265,1271 ,3439,1273,588 }, - {6416,6418,5089 ,3440,3441,3442 }, {2841,2521,2506 ,3443,3208,2882 }, - {2597,2671,2640 ,2769,2705,2770 }, {818,819,2800 ,1018,2244,2996 }, - {2450,3192,6689 ,3444,3063,3065 }, {2802,2827,2781 ,3022,3445,3373 }, - {2802,2848,2827 ,3022,2605,3445 }, {2497,2506,2344 ,3336,2882,2852 }, - {2702,2427,3149 ,2854,3237,3134 }, {2998,3025,2975 ,3446,3094,3157 }, - {3741,3742,3792 ,3447,3419,3421 }, {3744,3795,3794 ,2390,3448,3449 }, - {2782,2802,2781 ,3072,3022,3373 }, {31,2859,2652 ,3450,3451,3424 }, - {1056,1592,1004 ,3388,2939,3452 }, {2859,2695,2745 ,3451,3453,3425 }, - {2652,2859,2745 ,3424,3451,3425 }, {2745,2695,2412 ,3425,3453,3390 }, - {2695,2421,2420 ,3453,2568,273 }, {2412,2695,2420 ,3390,3453,273 }, - {3742,3743,3793 ,3419,2225,3420 }, {3324,3357,3323 ,881,883,1051 }, - {3743,3794,3793 ,2225,3449,3420 }, {1549,1550,1619 ,903,2586,1003 }, - {287,288,332 ,2470,2723,2471 }, {3269,2792,2456 ,2719,2718,2790 }, - {8114,5950,8108 ,2286,2873,2287 }, {2710,2416,2631 ,3438,808,2971 }, - {3166,3209,3208 ,3454,3377,3455 }, {2740,2739,2705 ,3456,2801,2802 }, - {2686,2740,2705 ,3071,3456,2802 }, {503,1633,466 ,374,373,347 }, - {1032,193,867 ,1581,1448,1121 }, {2985,3036,2984 ,3457,3362,3458 }, - {2740,2788,2739 ,3456,2652,2801 }, {7287,7286,7239 ,3459,3460,1527 }, - {2506,2805,2554 ,2882,3230,2853 }, {2437,2510,2509 ,2576,3162,3329 }, - {2436,2437,2509 ,2577,2576,3329 }, {2567,2370,227 ,2842,3216,2157 }, - {2413,2387,2900 ,3246,3461,2649 }, {2367,3134,3116 ,2764,3284,3029 }, - {2387,2633,2900 ,3461,2650,2649 }, {3824,8131,8133 ,3462,2307,2131 }, - {3954,8062,4957 ,3463,3272,2733 }, {2677,2379,886 ,3033,3238,3464 }, - {2445,2517,2481 ,1388,3399,3273 }, {2681,2464,2465 ,3254,3299,3181 }, - {2505,2506,2497 ,2883,2882,3336 }, {2202,650,2841 ,2875,3074,3443 }, - {6809,6808,6754 ,712,3465,713 }, {2514,2515,2513 ,2741,2600,3426 }, - {3743,3744,3794 ,2225,2390,3449 }, {2560,2518,546 ,3335,2388,1171 }, - {2782,2781,2729 ,3072,3373,3374 }, {2730,2782,2729 ,2150,3072,3374 }, - {6353,8121,6686 ,749,3466,750 }, {3460,3488,3487 ,3240,1980,3356 }, - {3478,3900,8141 ,885,884,3295 }, {4377,1255,1304 ,3090,3248,2639 }, - {3697,3743,3742 ,2224,2225,3419 }, {2774,2820,2773 ,2916,2869,2871 }, - {3025,3063,3062 ,3094,3093,3096 }, {3135,3183,1855 ,2833,2832,3088 }, - {7273,7251,7252 ,3467,2671,3437 }, {2567,3277,2901 ,2842,961,3468 }, - {2867,2868,2940 ,2844,1577,110 }, {1387,3372,1908 ,2951,2143,1058 }, - {147,4027,146 ,3469,3470,504 }, {5103,5418,5412 ,77,3471,360 }, - {1318,1032,867 ,164,1581,1121 }, {1787,1098,1908 ,2897,2725,1058 }, - {6735,6711,6308 ,3472,3473,3474 }, {8123,8108,8128 ,2247,2287,959 }, - {3959,3958,3904 ,982,294,1264 }, {2141,6707,8101 ,2015,2704,383 }, - {2816,2880,2879 ,3475,2591,2621 }, {3345,4106,8138 ,3476,1742,2018 }, - {2774,2776,2820 ,2916,3192,2869 }, {2775,2776,2774 ,3477,3192,2916 }, - {2776,2821,2820 ,3192,2915,2869 }, {3216,1657,3228 ,3478,1781,3042 }, - {2610,2682,790 ,3479,3480,1339 }, {2577,2710,2915 ,3348,3438,3434 }, - {220,4522,95 ,3340,3481,3482 }, {2545,2791,1789 ,3008,3483,3007 }, - {3227,2532,3226 ,1167,3186,3358 }, {2923,2973,2972 ,2046,3108,2047 }, - {2885,2930,2884 ,2914,3004,2940 }, {1590,1656,3198 ,3028,1166,1168 }, - {3212,2366,2495 ,3027,2589,2920 }, {3408,3383,3357 ,3484,882,883 }, - {3129,3128,3074 ,3412,2809,3363 }, {3086,3129,3074 ,3413,3412,3363 }, - {2506,2554,2344 ,2882,2853,2852 }, {2901,8098,2659 ,3468,907,3485 }, - {1917,2988,2862 ,833,3045,3031 }, {2353,2952,2570 ,3170,2610,2612 }, - {1235,1237,1370 ,1179,1467,1500 }, {1249,2693,2488 ,2876,3416,2877 }, - {2841,3213,2521 ,3443,3486,3208 }, {8096,8115,8140 ,1796,2448,2269 }, - {1847,178,1784 ,1519,3043,1662 }, {355,51,2939 ,1876,1856,1870 }, - {4248,3187,3972 ,3256,3402,3487 }, {4236,1334,4371 ,3488,1935,3489 }, - {3031,3030,2980 ,2857,3490,3305 }, {2724,2776,2723 ,2668,3192,2706 }, - {3031,3069,3030 ,2857,2827,3490 }, {2416,2807,1789 ,808,3289,3007 }, - {3890,3889,3854 ,1913,3126,1512 }, {3012,1332,2380 ,3491,3492,2597 }, - {1218,6891,8126 ,3255,813,812 }, {3275,2962,74 ,3493,3494,2053 }, - {2791,3275,2588 ,3483,3493,2072 }, {2278,2323,2322 ,3495,3496,3497 }, - {2323,282,281 ,3496,3498,2227 }, {2322,2323,281 ,3497,3496,2227 }, - {2484,2522,2451 ,3499,2678,2102 }, {3111,3110,3069 ,2829,3337,2827 }, - {3275,74,2588 ,3493,2053,2072 }, {2880,2924,2923 ,2591,2593,2046 }, - {2508,2592,2591 ,2630,2936,3303 }, {2493,2388,2840 ,3005,2608,2594 }, - {2986,3037,2985 ,3500,3501,3457 }, {5353,5352,4022 ,851,3502,3503 }, - {3037,3036,2985 ,3501,3362,3457 }, {2631,2467,2840 ,2971,3006,2594 }, - {3239,3241,2411 ,3378,3504,2777 }, {100,7960,162 ,2823,3505,2822 }, - {3213,2533,2521 ,3486,3209,3208 }, {2587,3142,90 ,3274,2849,2851 }, - {2515,2598,2597 ,2600,2602,2769 }, {2513,2515,2597 ,3426,2600,2769 }, - {7747,7797,7745 ,331,3506,650 }, {55,300,1155 ,3507,3508,3333 }, - {3855,3869,3854 ,1511,1912,1512 }, {2656,2461,2331 ,2893,2899,2895 }, - {3364,3390,3363 ,1184,3509,1911 }, {3129,3170,3128 ,3412,3510,2809 }, - {5556,5535,5536 ,3511,3512,754 }, {7702,7752,7701 ,3513,3514,3515 }, - {2835,2385,3173 ,3079,2702,3114 }, {3074,3128,3073 ,3363,2809,3516 }, - {2586,2840,2687 ,2972,2594,2767 }, {4371,1334,3864 ,3489,1935,3517 }, - {5970,2504,4104 ,3518,2898,3519 }, {5445,6577,4293 ,3520,97,2732 }, - {7874,7873,7847 ,344,817,3521 }, {2322,2277,2278 ,3497,3522,3495 }, - {1168,6643,4985 ,1098,3133,2703 }, {2948,2915,1482 ,3347,3434,2265 }, - {2915,2710,2631 ,3434,3438,2971 }, {1201,2986,1200 ,1477,3500,2629 }, - {2986,2985,1200 ,3500,3457,2629 }, {2449,2588,91 ,3259,2072,1984 }, - {1553,102,347 ,1669,432,431 }, {2879,2880,2923 ,2621,2591,2046 }, - {3103,3157,3156 ,3137,3194,3164 }, {2649,2535,2533 ,2791,3370,3209 }, - {2949,3011,2965 ,3239,3131,3417 }, {3213,2649,2533 ,3486,2791,3209 }, - {2875,3250,2635 ,2596,2595,2607 }, {817,906,905 ,1020,1019,1729 }, - {2789,2788,2740 ,637,2652,3456 }, {2948,2577,2915 ,3347,3348,3434 }, - {2435,2436,2508 ,3401,2577,2630 }, {2831,2830,2788 ,639,2654,2652 }, - {2789,2831,2788 ,637,639,2652 }, {6796,8136,8096 ,2617,2449,1796 }, - {2683,2682,2611 ,2645,3480,3436 }, {2807,2545,1789 ,3289,3008,3007 }, - {2533,2709,2805 ,3209,3523,3230 }, {2542,2494,2656 ,2879,3391,2893 }, - {3232,78,411 ,3325,3312,2919 }, {3231,3232,411 ,3293,3325,2919 }, - {411,78,2495 ,2919,3312,2920 }, {3027,3028,3065 ,3350,3349,3298 }, - {3485,3539,2686 ,3524,3525,3071 }, {1787,2620,1098 ,2897,3526,2725 }, - {2831,2868,2867 ,639,1577,2844 }, {2830,2831,2867 ,2654,639,2844 }, - {4240,6139,4260 ,2060,2059,3527 }, {3024,3025,3062 ,3098,3094,3096 }, - {2875,2635,2687 ,2596,2607,2767 }, {2923,2924,2973 ,2046,2593,3108 }, - {1204,1106,1205 ,338,1664,3187 }, {347,2423,2428 ,431,433,371 }, - {5308,5309,564 ,3528,987,3529 }, {2812,3349,3684 ,1914,2054,1915 }, - {3349,296,3422 ,2054,1558,2055 }, {2835,3180,2385 ,3079,2700,2702 }, - {821,1512,2136 ,2872,3199,1546 }, {6707,4985,6643 ,2704,2703,3133 }, - {2650,8096,8140 ,914,1796,2269 }, {8078,8142,8084 ,1744,1743,1139 }, - {2426,3190,2853 ,3113,807,806 }, {6351,8112,6322 ,1568,3530,3531 }, - {6914,6913,6861 ,3532,2634,3533 }, {1804,3317,296 ,2902,1882,1558 }, - {2436,2509,2508 ,2577,3329,2630 }, {2846,2877,1047 ,2623,3026,1328 }, - {2354,2555,3190 ,2968,1066,807 }, {1194,539,1599 ,393,2067,391 }, - {2426,2354,3190 ,3113,2968,807 }, {2741,2332,3212 ,3317,3322,3027 }, - {2609,2610,790 ,1130,3479,1339 }, {2443,2442,2365 ,2942,2742,3351 }, - {2612,2683,2611 ,2646,2645,3436 }, {1255,4377,795 ,3248,3090,302 }, - {2141,8091,8085 ,2015,2167,2016 }, {2400,111,2962 ,1117,1154,3494 }, - {3238,2424,2792 ,3379,2778,2718 }, {2691,2851,2943 ,3169,3051,3055 }, - {2555,2354,2434 ,1066,2968,1118 }, {3278,2851,2691 ,1158,3051,3169 }, - {382,1005,3732 ,3534,3535,3536 }, {2369,2368,2333 ,3257,2943,3537 }, - {3182,49,2709 ,3366,3367,3523 }, {4039,2680,2662 ,382,459,805 }, - {3746,3797,3796 ,2708,2061,2969 }, {2400,3275,2791 ,1117,3493,3483 }, - {2545,2400,2791 ,3008,1117,3483 }, {3915,3956,3955 ,1575,1383,3538 }, - {3939,3915,3955 ,3539,1575,3538 }, {3956,3996,3995 ,1383,1928,3540 }, - {3955,3956,3995 ,3538,1383,3540 }, {4038,4037,3995 ,1927,3541,3540 }, - {3996,4038,3995 ,1928,1927,3540 }, {238,237,100 ,868,869,2823 }, - {1853,1876,860 ,3101,1386,1385 }, {2760,2906,2428 ,2726,3542,371 }, - {2749,2760,2428 ,3286,2726,371 }, {2906,3270,2428 ,3542,3543,371 }, - {3270,347,2428 ,3543,431,371 }, {964,584,1294 ,535,2512,635 }, - {2719,2771,2770 ,2766,3197,2681 }, {2400,2962,3275 ,1117,3494,3493 }, - {4211,1113,4212 ,215,10,895 }, {8141,8069,3478 ,3295,1095,885 }, - {2242,2324,2323 ,2551,1995,3496 }, {2278,2242,2323 ,3495,2551,3496 }, - {2324,2391,282 ,1995,3544,3498 }, {2323,2324,282 ,3496,1995,3498 }, - {3226,1337,1740 ,3358,2148,3213 }, {2742,2031,2029 ,2558,1560,1748 }, - {2523,2564,2522 ,3545,3546,2678 }, {2610,2609,2522 ,3479,1130,2678 }, - {2564,2610,2522 ,3546,3479,2678 }, {5383,5396,6506 ,3547,3548,3549 }, - {2981,3032,3000 ,3550,2858,3304 }, {1103,1200,2890 ,1474,2629,2603 }, - {2353,2462,2489 ,3170,3245,2611 }, {872,836,3264 ,2962,3551,2468 }, - {3086,3074,3036 ,3413,3363,3362 }, {3037,3086,3036 ,3501,3413,3362 }, - {2682,2683,2704 ,3480,2645,3339 }, {5570,5641,5599 ,508,510,2213 }, - {2578,2635,2389 ,3552,2607,2609 }, {3238,3237,3207 ,3379,2885,2884 }, - {3208,3238,3207 ,3455,3379,2884 }, {3109,3108,3067 ,3553,3415,3371 }, - {2516,2600,2515 ,3554,2973,2600 }, {3068,3109,3067 ,3555,3553,3371 }, - {2933,2980,2979 ,3556,3305,2781 }, {2932,2933,2979 ,3243,3556,2781 }, - {3030,3029,2979 ,3490,3311,2781 }, {3030,3046,3029 ,3490,3372,3311 }, - {2980,3030,2979 ,3305,3490,2781 }, {3068,3067,3046 ,3555,3371,3372 }, - {3030,3068,3046 ,3490,3555,3372 }, {3235,2456,3268 ,3394,2790,3321 }, - {2533,3182,2709 ,3209,3366,3523 }, {2388,2430,2389 ,2608,2613,2609 }, - {2497,2865,2132 ,3336,3107,655 }, {8102,8082,8089 ,253,454,254 }, - {3594,3646,3592 ,2522,2123,2084 }, {3544,3594,3543 ,1153,2522,3075 }, - {3646,3645,3592 ,2123,1650,2084 }, {3594,3592,3593 ,2522,2084,3557 }, - {3594,3593,3543 ,2522,3557,3075 }, {4038,2662,4037 ,1927,805,3541 }, - {2662,254,4037 ,805,2008,3541 }, {5371,5404,5350 ,3558,3559,1526 }, - {562,885,708 ,1936,216,401 }, {80,2939,51 ,140,1870,1856 }, {2013,2711,2586 ,2242,3435,2972 }, - {2380,2013,2586 ,2597,2242,2972 }, {1011,1103,2864 ,1285,1474,3386 }, - {1103,2891,2864 ,1474,3560,3386 }, {2620,2760,1098 ,3526,2726,2725 }, - {2620,2305,2906 ,3526,3561,3542 }, {2760,2620,2906 ,2726,3526,3542 }, - {2305,3270,2906 ,3561,3543,3542 }, {1553,347,3270 ,1669,431,3543 }, - {2305,1553,3270 ,3561,1669,3543 }, {7704,7727,7682 ,3562,3563,3564 }, - {124,1423,5482 ,2206,151,3565 }, {2325,2392,2391 ,1994,3566,3544 }, - {2324,2325,2391 ,1995,1994,3544 }, {1929,1950,1884 ,899,786,3567 }, - {2392,328,2391 ,3566,2289,3544 }, {3166,3208,3207 ,3454,3455,2884 }, - {3165,3166,3207 ,3306,3454,2884 }, {3239,2411,2424 ,3378,2777,2778 }, - {2523,2522,2484 ,3545,2678,3499 }, {2967,111,2433 ,2701,1154,1116 }, - {2385,2967,2433 ,2702,2701,1116 }, {2967,3014,111 ,2701,3568,1154 }, - {511,2003,1972 ,3569,2542,3034 }, {1200,2985,2937 ,2629,3457,3570 }, - {2555,2434,2545 ,1066,1118,3008 }, {3237,3238,2792 ,2885,3379,2718 }, - {3048,3088,3047 ,2165,3290,3571 }, {2592,2667,2666 ,2936,2949,2765 }, - {2967,259,3014 ,2701,2203,3568 }, {2517,2516,2444 ,3399,3554,2941 }, - {2481,2517,2444 ,3273,3399,2941 }, {3234,3235,3268 ,3315,3394,3321 }, - {3205,3235,3204 ,3360,3394,3314 }, {3938,3939,3090 ,3572,3539,2805 }, - {3166,3165,3111 ,3454,3306,2829 }, {3088,3087,3047 ,3290,3573,3571 }, - {2586,2687,2581 ,2972,2767,2598 }, {70,1319,822 ,323,322,2000 }, - {3595,3648,3594 ,927,734,2522 }, {3544,3543,3489 ,1153,3075,1977 }, - {3490,3544,3489 ,2502,1153,1977 }, {2846,2844,2845 ,2623,1329,2995 }, - {2846,2845,819 ,2623,2995,2244 }, {3134,1855,2267 ,3284,3088,3574 }, - {3314,2333,2368 ,3575,3537,2943 }, {2150,3016,964 ,534,1028,535 }, - {3048,3047,1224 ,2165,3571,1508 }, {2790,2789,2740 ,3576,637,3456 }, - {2790,2832,2789 ,3576,638,637 }, {2883,2927,2882 ,2579,516,518 }, - {3399,6659,4550 ,715,3577,716 }, {6353,4544,5444 ,749,748,3410 }, - {1908,3453,1787 ,1058,917,2897 }, {2977,2976,2928 ,2997,2999,2578 }, - {3998,3999,4040 ,381,1023,460 }, {113,697,4539 ,677,3578,633 }, - {3134,2267,650 ,3284,3574,3074 }, {2732,2367,3116 ,2583,2764,3029 }, - {3116,3134,3219 ,3029,3284,3044 }, {3219,3134,650 ,3044,3284,3074 }, - {3033,3032,2981 ,3579,2858,3550 }, {2852,2387,2647 ,3275,3461,3276 }, - {906,1047,1046 ,1019,1328,1929 }, {3058,3123,1407 ,2710,3023,1269 }, - {3069,3110,3068 ,2827,3337,3555 }, {4298,141,4186 ,3580,681,683 }, - {1688,242,451 ,1718,1717,3387 }, {3125,3166,3111 ,3404,3454,2829 }, - {3644,3643,3590 ,1651,2344,1867 }, {28,88,3636 ,1059,3581,1060 }, - {4037,254,4036 ,3541,2008,1602 }, {3381,3407,3380 ,871,3012,1514 }, - {3407,3431,3380 ,3012,3021,1514 }, {1200,2937,2890 ,2629,3570,2603 }, - {2614,2684,2612 ,2638,2644,2646 }, {7910,2164,6483 ,3582,3583,3584 }, - {2298,2475,2793 ,3013,3047,3048 }, {7252,7251,6321 ,3437,2671,706 }, - {3016,584,964 ,1028,2512,535 }, {3227,3228,2532 ,1167,3042,3186 }, - {3241,3081,2411 ,3504,1017,2777 }, {2496,492,171 ,2961,1580,921 }, - {3349,1804,296 ,2054,2902,1558 }, {7067,7066,7028 ,3585,3586,3587 }, - {2326,2393,2392 ,3588,2445,3566 }, {2325,2326,2392 ,1994,3588,3566 }, - {2393,329,2392 ,2445,2348,3566 }, {329,328,2392 ,2348,2289,3566 }, - {3434,3382,3408 ,737,870,3484 }, {2936,2983,2935 ,2843,3589,3310 }, - {3240,3241,3239 ,3590,3504,3378 }, {3198,3226,3197 ,1168,3358,2599 }, - {2441,2513,2440 ,3000,3426,2572 }, {2853,2416,2577 ,806,808,3348 }, - {2805,2709,651 ,3230,3523,3591 }, {2764,3142,2587 ,2847,2849,3274 }, - {2702,3149,2351 ,2854,3134,3258 }, {2344,2702,2351 ,2852,2854,3258 }, - {2848,2826,2827 ,2605,3592,3445 }, {2682,830,829 ,3480,1996,1368 }, - {493,492,2496 ,1785,1580,2961 }, {2663,921,688 ,3593,1922,765 }, - {3198,3197,3154 ,1168,2599,2692 }, {3226,1740,3197 ,3358,3213,2599 }, - {2837,930,107 ,2511,3594,2548 }, {2726,2755,2777 ,2667,3400,2824 }, - {2517,2600,2516 ,3399,2973,3554 }, {2602,2600,2601 ,3234,2973,3398 }, - {3072,3071,3033 ,3403,3405,3579 }, {3034,3072,3033 ,3595,3403,3579 }, - {3087,3086,3037 ,3573,3413,3501 }, {2704,2735,830 ,3339,2887,1996 }, - {2682,2704,830 ,3480,3339,1996 }, {1168,8122,6643 ,1098,384,3133 }, - {4901,5591,6162 ,3596,3597,3598 }, {688,921,1065 ,765,1922,821 }, - {921,1090,1340 ,1922,2687,822 }, {2590,529,2589 ,2648,1148,3204 }, - {2097,7910,2096 ,846,3582,788 }, {2942,2587,554 ,2587,3274,2588 }, - {2590,2664,529 ,2648,2721,1148 }, {2763,2620,1787 ,2896,3526,2897 }, - {2763,3120,2620 ,2896,3599,3526 }, {2500,2305,2620 ,3600,3561,3526 }, - {3120,2500,2620 ,3599,3600,3526 }, {2500,2768,1553 ,3600,1297,1669 }, - {2305,2500,1553 ,3561,3600,1669 }, {2982,2981,2934 ,3601,3550,3602 }, - {2935,2982,2934 ,3310,3601,3602 }, {3047,3087,3037 ,3571,3573,3501 }, - {2610,2611,2682 ,3479,3436,3480 }, {2039,1626,349 ,1655,564,566 }, - {2730,2729,2701 ,2150,3374,3375 }, {2770,2816,2847 ,2681,3475,2624 }, - {3059,3099,3058 ,2892,3603,2710 }, {3099,3123,3058 ,3603,3023,2710 }, - {3019,3020,3058 ,2709,2890,2710 }, {2135,2478,631 ,1425,3143,1426 }, - {2770,2771,2816 ,2681,3197,3475 }, {2424,2905,2367 ,2778,399,2764 }, - {2267,1855,2649 ,3574,3088,2791 }, {3648,3647,3594 ,734,2521,2522 }, - {3574,3595,3544 ,928,927,1153 }, {3107,3105,3106 ,3326,3297,3380 }, - {3107,3140,3105 ,3326,3327,3297 }, {2933,2932,2863 ,3556,3243,3242 }, - {1590,3154,3123 ,3028,2692,3023 }, {3124,1590,3123 ,3604,3028,3023 }, - {2084,460,860 ,1361,1999,1385 }, {2674,2726,2700 ,2975,2667,3009 }, - {2727,2755,2726 ,2760,3400,2667 }, {3169,3211,3168 ,2810,3605,3396 }, - {2677,213,123 ,3033,3606,3607 }, {3211,3210,3168 ,3605,3608,3396 }, - {2796,3080,2472 ,2462,908,2009 }, {2255,1211,939 ,3229,2007,3354 }, - {3866,35,783 ,1479,1338,679 }, {2846,2878,2877 ,2623,2622,3026 }, - {2435,388,292 ,3401,2202,2563 }, {2358,2435,292 ,2562,3401,2563 }, - {2833,2763,3054 ,2065,2896,916 }, {2833,3120,2763 ,2065,3599,2896 }, - {2550,2500,3120 ,3609,3600,3599 }, {2833,2550,3120 ,2065,3609,3599 }, - {2550,2768,2500 ,3609,1297,3600 }, {2167,2089,2947 ,1323,1325,2988 }, - {2167,2947,2166 ,1323,2988,1040 }, {388,2435,2508 ,2202,3401,2630 }, - {3069,3068,3030 ,2827,3555,3490 }, {2591,2590,2508 ,3303,2648,2630 }, - {7514,7513,7484 ,3610,3611,3612 }, {2280,2325,2243 ,3613,1994,1993 }, - {2662,2796,2472 ,805,2462,2009 }, {2997,3023,3022 ,3158,3099,3393 }, - {2591,2638,2590 ,3303,2935,2648 }, {2666,2665,2590 ,2765,2677,2648 }, - {2563,2194,2193 ,2707,1853,1007 }, {2983,2982,2935 ,3589,3601,3310 }, - {1098,1096,28 ,2725,2727,1059 }, {1908,1098,28 ,1058,2725,1059 }, - {1197,1987,2808 ,478,3614,522 }, {401,2445,2369 ,1387,1388,3257 }, - {3322,3321,7387 ,1182,2461,3615 }, {2792,2424,2367 ,2718,2778,2764 }, - {3593,3592,3543 ,3557,2084,3075 }, {3090,3955,3994 ,2805,3538,2806 }, - {600,131,1390 ,978,2965,2964 }, {3163,3205,3162 ,3361,3360,3318 }, - {788,600,1390 ,976,978,2964 }, {2626,2764,2587 ,2582,2847,3274 }, - {2332,2626,2587 ,3322,2582,3274 }, {2442,2441,2365 ,2742,3000,3351 }, - {2441,2442,2513 ,3000,2742,3426 }, {2638,2666,2590 ,2935,2765,2648 }, - {2617,2371,2387 ,2878,2880,3461 }, {2887,2933,2863 ,3616,3556,3242 }, - {2827,2826,2780 ,3445,3592,2830 }, {2791,2588,2429 ,3483,2072,3617 }, - {818,2800,2844 ,1018,2996,1329 }, {2593,2668,2667 ,3111,3138,2949 }, - {740,2730,2701 ,1595,2150,3375 }, {2755,2778,2777 ,3400,3215,2824 }, - {2727,2726,2674 ,2760,2667,2975 }, {2885,2884,2820 ,2914,2940,2869 }, - {2332,2587,3212 ,3322,3274,3027 }, {3123,1480,1407 ,3023,2695,1269 }, - {2364,2363,177 ,2513,2571,3618 }, {3357,3382,3356 ,883,870,872 }, - {2768,2460,2541 ,1297,3619,1298 }, {3654,3653,3604 ,1438,1440,3384 }, - {492,444,171 ,1580,922,921 }, {2557,3566,3456 ,3620,1146,1145 }, - {5837,4771,5804 ,3621,3622,3623 }, {2665,2666,2718 ,2677,2765,2675 }, - {2878,2922,2921 ,2622,2045,2691 }, {2550,2460,2768 ,3609,3619,1297 }, - {108,36,874 ,1336,1478,636 }, {2857,2761,2765 ,2575,2768,2590 }, - {7923,7973,7948 ,816,3624,3625 }, {2281,2327,2326 ,3626,3627,3588 }, - {2327,286,2393 ,3627,2446,2445 }, {2326,2327,2393 ,3588,3627,2445 }, - {5038,4743,5702 ,3628,3629,3630 }, {2156,6783,6464 ,3631,3632,3633 }, - {2528,924,3183 ,2763,3634,2832 }, {3195,3114,2649 ,3430,2792,2791 }, - {3494,3546,3492 ,736,2557,930 }, {2143,2099,2166 ,953,1093,1040 }, - {2611,2610,2524 ,3436,3479,3395 }, {3845,6215,1949 ,3635,3636,3637 }, - {3130,4032,3129 ,3414,3638,3412 }, {2982,3033,2981 ,3601,3579,3550 }, - {3071,3125,3111 ,3405,3404,2829 }, {489,3761,2955 ,3639,218,3640 }, - {3163,3162,3108 ,3361,3318,3415 }, {3109,3163,3108 ,3553,3361,3415 }, - {3205,3204,3162 ,3360,3314,3318 }, {3235,3234,3204 ,3394,3315,3314 }, - {5337,4866,4830 ,572,3641,3642 }, {2673,2724,2671 ,2974,2668,2705 }, - {3201,3231,3230 ,3328,3293,3294 }, {7704,7753,7727 ,3562,3643,3563 }, - {2815,2770,2847 ,2696,2681,2624 }, {2781,2827,2780 ,3373,3445,2830 }, - {1984,2530,2038 ,831,2389,1551 }, {1004,2652,1056 ,3452,3424,3388 }, - {7910,2097,2164 ,3582,846,3583 }, {2974,2997,3022 ,3116,3158,3393 }, - {2494,2629,2656 ,3391,2673,2893 }, {2973,2974,3022 ,3108,3116,3393 }, - {2869,2868,2832 ,1576,1577,638 }, {2194,2563,2146 ,1853,2707,1732 }, - {8135,4835,3148 ,2439,2130,814 }, {2952,2353,2489 ,2610,3170,2611 }, - {3216,1656,1657 ,3478,1166,1781 }, {2869,2832,2907 ,1576,638,111 }, - {5653,350,6115 ,3644,1114,3645 }, {2877,2878,2921 ,3026,2622,2691 }, - {2793,2426,2853 ,3048,3113,806 }, {1845,1337,1874 ,912,2148,962 }, - {1519,2990,79 ,2450,3646,1510 }, {6554,6619,4190 ,3647,1272,3439 }, - {777,2137,776 ,421,147,1120 }, {4445,2871,712 ,3648,3649,3650 }, - {2572,3138,1181 ,3050,2984,1981 }, {2868,2907,2940 ,1577,111,110 }, - {3331,3330,3291 ,1183,1185,1203 }, {2497,2201,2865 ,3336,2455,3107 }, - {3032,3031,3000 ,2858,2857,3304 }, {2889,2888,2826 ,2604,3651,3592 }, - {2626,2625,2839 ,2582,2584,2848 }, {2848,2889,2826 ,2605,2604,3592 }, - {3071,3111,3070 ,3405,2829,2828 }, {3071,3070,3032 ,3405,2828,2858 }, - {3033,3071,3032 ,3579,3405,2858 }, {2351,2201,2497 ,3258,2455,3336 }, - {2516,2515,2443 ,3554,2600,2942 }, {2444,2516,2443 ,2941,3554,2942 }, - {2442,2514,2513 ,2742,2741,3426 }, {3545,3574,3544 ,926,928,1153 }, - {3931,3944,3684 ,1868,729,1915 }, {3541,3572,3571 ,981,1931,3652 }, - {3195,219,3114 ,3430,3087,2792 }, {2711,2013,877 ,3435,2242,2243 }, - {689,3828,4206 ,1363,1364,682 }, {5488,6257,6039 ,2730,3428,2728 }, - {3114,2471,2536 ,2792,3653,2793 }, {1238,165,155 ,1569,1869,1497 }, - {2973,3022,3021 ,3108,3393,2891 }, {2930,2929,2884 ,3004,3003,2940 }, - {2387,2531,2647 ,3461,3654,3276 }, {3194,1487,2338 ,1065,531,458 }, - {3022,3060,3059 ,3393,3214,2892 }, {3021,3022,3059 ,2891,3393,2892 }, - {3075,2803,2833 ,2670,3655,2065 }, {2608,2550,2833 ,3656,3609,2065 }, - {2850,2608,2833 ,3657,3656,2065 }, {2608,2470,2460 ,3656,3658,3619 }, - {2550,2608,2460 ,3609,3656,3619 }, {2470,2541,2460 ,3658,1298,3619 }, - {3422,296,3664 ,2055,1558,1557 }, {3060,3100,3099 ,3214,2955,3603 }, - {3194,3189,2150 ,1065,1027,534 }, {3400,2410,3402 ,3659,1,3660 }, - {1218,1742,3008 ,3255,707,546 }, {3170,4032,1160 ,3510,3638,3661 }, - {2099,2100,2166 ,1093,1218,1040 }, {3059,3060,3099 ,2892,3214,3603 }, - {3100,3124,3099 ,2955,3604,3603 }, {2972,3020,3019 ,2047,2890,2709 }, - {3183,924,219 ,2832,3634,3087 }, {2889,2935,2888 ,2604,3310,3651 }, - {2935,2934,2888 ,3310,3602,3651 }, {740,2676,643 ,1595,2761,3285 }, - {2006,2032,2031 ,1181,1127,1560 }, {740,2701,2676 ,1595,3375,2761 }, - {2852,2617,2387 ,3275,2878,3461 }, {2360,2437,2359 ,3161,2576,3406 }, - {2294,2295,2359 ,3081,3160,3406 }, {2971,2972,3019 ,3338,2047,2709 }, - {1224,3047,3037 ,1508,3571,3501 }, {2922,2972,2971 ,2045,2047,3338 }, - {2793,2853,2630 ,3048,806,3139 }, {2592,2593,2667 ,2936,3111,2949 }, - {628,2717,728 ,1177,2676,1266 }, {2921,2922,2971 ,2691,2045,3338 }, - {3100,1590,3124 ,2955,3028,3604 }, {3211,3241,3240 ,3605,3504,3590 }, - {3210,3211,3240 ,3608,3605,3590 }, {2983,3034,2982 ,3589,3595,3601 }, - {3463,3432,3433 ,1271,929,3049 }, {2651,2803,3075 ,1516,3655,2670 }, - {2651,2850,2803 ,1516,3657,3655 }, {2651,2608,2850 ,1516,3656,3657 }, - {2418,2541,2470 ,3662,1298,3658 }, {451,242,2541 ,3387,1717,1298 }, - {2418,451,2541 ,3662,3387,1298 }, {2931,2978,2977 ,2780,2782,2997 }, - {2841,2649,3213 ,3443,2791,3486 }, {596,549,647 ,1462,1129,973 }, - {3034,3033,2982 ,3595,3579,3601 }, {875,6836,6353 ,579,852,749 }, - {2282,2328,2327 ,3663,3664,3627 }, {2328,287,286 ,3664,2470,2446 }, - {2327,2328,286 ,3627,3664,2446 }, {4246,1729,3837 ,3665,3666,3667 }, - {4377,2431,967 ,3090,2977,3668 }, {3020,3059,3058 ,2890,2892,2710 }, - {650,2267,2841 ,3074,3574,3443 }, {219,2471,3114 ,3087,3653,2792 }, - {2823,2824,2863 ,2825,3432,3242 }, {3065,3085,3105 ,3298,3381,3297 }, - {3085,3106,3105 ,3381,3380,3297 }, {2596,2640,2595 ,2771,2770,2983 }, - {2723,2775,2774 ,2706,3477,2916 }, {2722,2723,2774 ,3014,2706,2916 }, - {2509,2510,2592 ,3329,3162,2936 }, {2295,2360,2359 ,3160,3161,3406 }, - {3229,1726,3199 ,3266,1746,3244 }, {2300,1304,2551 ,2640,2639,3247 }, - {1336,2085,2604 ,2924,657,3046 }, {3566,2397,3768 ,1146,3669,1518 }, - {2267,2649,2841 ,3574,2791,3443 }, {1920,2155,2157 ,581,580,3411 }, - {3459,3460,3487 ,3241,3240,3356 }, {1789,2791,2429 ,3007,3483,3617 }, - {2656,2629,2461 ,2893,2673,2899 }, {3110,3164,3109 ,3337,3307,3553 }, - {1224,3037,2986 ,1508,3501,3500 }, {6071,6082,6088 ,1346,1348,3670 }, - {155,1183,1238 ,1497,1238,1569 }, {4978,5592,2206 ,178,3671,176 }, - {3546,3545,3492 ,2557,926,930 }, {2381,2608,2651 ,3672,3656,1516 }, - {2381,2470,2608 ,3672,3658,3656 }, {2468,2418,2470 ,3673,3662,3658 }, - {1313,5085,2251 ,3674,3675,3676 }, {1606,4055,4054 ,3677,3678,3679 }, - {689,1586,3315 ,1363,943,944 }, {2741,3212,2495 ,3317,3027,2920 }, - {2329,288,287 ,3680,2723,2470 }, {2328,2329,287 ,3664,3680,2470 }, - {3345,8138,5352 ,3476,2018,3502 }, {2647,2531,2413 ,3276,3654,3246 }, - {2778,2824,2823 ,3215,3432,2825 }, {2777,2778,2823 ,2824,3215,2825 }, - {2824,2887,2863 ,3432,3616,3242 }, {2387,2371,2633 ,3461,2880,2650 }, - {3202,3201,3159 ,3324,3328,3296 }, {3202,3232,3201 ,3324,3325,3328 }, - {2640,2671,2595 ,2770,2705,2983 }, {2900,2300,2551 ,2649,2640,3247 }, - {2604,2085,2964 ,3046,657,3011 }, {2964,2085,2131 ,3011,657,656 }, - {2677,886,213 ,3033,3464,3606 }, {3268,2456,2302 ,3321,2790,3313 }, - {6436,5255,6480 ,3681,3682,1524 }, {3916,3904,3879 ,969,1264,2549 }, - {2524,2610,2564 ,3395,3479,3546 }, {282,327,281 ,3498,2226,2227 }, - {3421,3278,2851 ,1156,1158,3051 }, {2792,2367,2732 ,2718,2764,2583 }, - {5191,5170,5914 ,2900,3683,1566 }, {2547,2470,2381 ,3684,3658,3672 }, - {2397,2547,2381 ,3669,3684,3672 }, {2547,3053,2470 ,3684,3685,3658 }, - {2655,2468,2470 ,3686,3673,3658 }, {3053,2655,2470 ,3685,3686,3658 }, - {2655,2418,2468 ,3686,3662,3673 }, {2467,2493,2840 ,3006,3005,2594 }, - {2524,2564,2523 ,3395,3546,3545 }, {2946,3194,2338 ,1062,1065,458 }, - {178,1847,1874 ,3043,1519,962 }, {2924,2974,2973 ,2593,3116,3108 }, - {2328,2283,2329 ,3664,3687,3680 }, {2909,1849,1785 ,3189,1660,1659 }, - {3148,1378,8135 ,814,925,2439 }, {6098,6388,5191 ,1565,3184,2900 }, - {2524,2523,2484 ,3395,3545,3499 }, {6970,3340,4831 ,3688,114,3154 }, - {3126,3125,3072 ,3689,3404,3403 }, {2664,628,529 ,2721,1177,1148 }, - {2584,2310,2476 ,2894,2442,2441 }, {2552,2584,2476 ,2657,2894,2441 }, - {2633,2584,2552 ,2650,2894,2657 }, {3160,3202,3159 ,3323,3324,3296 }, - {3647,3700,3646 ,2521,2545,2123 }, {2928,2926,2927 ,2578,517,516 }, - {2976,2998,2975 ,2999,3446,3157 }, {2362,2439,2438 ,2979,2980,3163 }, - {2361,2362,2438 ,3177,2979,3163 }, {2456,2626,2332 ,2790,2582,3322 }, - {2302,2456,2332 ,3313,2790,3322 }, {3164,3163,3109 ,3307,3361,3553 }, - {2532,178,1874 ,3186,3043,962 }, {2670,2669,2595 ,2982,3015,2983 }, - {3873,3931,3475 ,1809,1868,1559 }, {6309,6735,6308 ,3690,3472,3474 }, - {6088,5255,6436 ,3670,3682,3681 }, {1265,4548,1271 ,1273,589,588 }, - {2195,165,341 ,1851,1869,1852 }, {2547,2469,2655 ,3684,3691,3686 }, - {3053,2547,2655 ,3685,3684,3686 }, {2469,2418,2655 ,3691,3662,3686 }, - {2469,451,2418 ,3691,3387,3662 }, {2939,134,451 ,1870,1783,3387 }, - {3167,3209,3166 ,3692,3377,3454 }, {8078,8084,8124 ,1744,1139,1141 }, - {3216,3228,1656 ,3478,3042,1166 }, {2330,289,288 ,3693,1044,2723 }, - {2329,2330,288 ,3680,3693,2723 }, {925,2730,827 ,1287,2150,1220 }, - {1010,925,926 ,1286,1287,1284 }, {1146,1237,1236 ,2467,1467,1434 }, - {2844,2846,1047 ,1329,2623,1328 }, {3022,3023,3061 ,3393,3099,2953 }, - {2937,2936,2890 ,3570,2843,2603 }, {3105,3140,3159 ,3297,3327,3296 }, - {3140,3160,3159 ,3327,3323,3296 }, {3232,3231,3201 ,3325,3293,3328 }, - {3021,3020,2972 ,2891,2890,2047 }, {2976,2975,2926 ,2999,3157,517 }, - {2928,2976,2926 ,2578,2999,517 }, {2595,2639,2594 ,2983,3694,3110 }, - {2595,2594,2511 ,2983,3110,3112 }, {2356,3267,3229 ,3264,3265,3266 }, - {2909,3223,2911 ,3189,2922,2923 }, {2891,2890,1010 ,3560,2603,1286 }, - {3238,3239,2424 ,3379,3378,2778 }, {1103,2890,2891 ,1474,2603,3560 }, - {3167,3166,3125 ,3692,3454,3404 }, {3306,7276,3326 ,3695,3696,826 }, - {2497,2344,2351 ,3336,2852,3258 }, {1482,2915,2711 ,2265,3434,3435 }, - {3434,3433,3382 ,737,3049,870 }, {5219,5218,5198 ,1860,483,423 }, - {8101,8087,8099 ,383,385,2867 }, {3208,3209,3238 ,3455,3377,3379 }, - {2397,2651,3768 ,3669,1516,1518 }, {2688,451,2469 ,3697,3387,3691 }, - {2658,2939,451 ,3698,1870,3387 }, {2688,2658,451 ,3697,3698,3387 }, - {3645,3698,3644 ,1650,2122,1651 }, {6639,1213,4983 ,3699,3700,480 }, - {2985,2984,2937 ,3457,3458,3570 }, {3546,3597,3545 ,2557,1810,926 }, - {6257,5166,6039 ,3428,3427,2728 }, {2283,2285,2329 ,3687,3701,3680 }, - {2129,2130,2069 ,1469,1505,1711 }, {1855,3195,2649 ,3088,3430,2791 }, - {5327,6525,6524 ,3702,3703,3704 }, {2702,2254,2427 ,2854,3705,3237 }, - {2475,2715,3013 ,3047,2944,2946 }, {3095,2715,2835 ,2945,2944,3079 }, - {2512,2596,2595 ,2981,2771,2983 }, {2563,2125,2146 ,2707,892,1732 }, - {2691,2570,2544 ,3169,2612,2451 }, {2639,2669,2593 ,3694,3015,3111 }, - {2595,2669,2639 ,2983,3015,3694 }, {3026,3025,2998 ,3095,3094,3446 }, - {2899,3223,2909 ,2921,2922,3189 }, {3700,3699,3646 ,2545,2121,2123 }, - {3073,3127,3072 ,3516,2811,3403 }, {2429,2588,2556 ,3617,2072,2779 }, - {1789,2429,2556 ,3007,3617,2779 }, {2864,2891,1010 ,3386,3560,1286 }, - {3126,3167,3125 ,3689,3692,3404 }, {1482,2711,877 ,2265,3435,2243 }, - {2518,2517,2445 ,2388,3399,1388 }, {2984,2983,2936 ,3458,3589,2843 }, - {1740,1687,3196 ,3213,1104,2581 }, {3197,1740,3196 ,2599,3213,2581 }, - {2493,1789,2556 ,3005,3007,2779 }, {554,2987,2268 ,2588,3346,3292 }, - {2876,2706,2469 ,3706,3707,3691 }, {2547,2876,2469 ,3684,3706,3691 }, - {2706,2688,2469 ,3707,3697,3691 }, {2658,355,2939 ,3698,1876,1870 }, - {3035,3034,2983 ,3364,3595,3589 }, {2388,2493,2556 ,2608,3005,2779 }, - {685,3371,1309 ,2674,3708,3709 }, {3187,4236,4371 ,3402,3488,3489 }, - {157,2133,91 ,1877,2614,1984 }, {5455,1263,6509 ,686,1199,1452 }, - {4452,4795,4820 ,2398,3710,2399 }, {3073,3072,3034 ,3516,3403,3595 }, - {3035,3073,3034 ,3364,3516,3595 }, {6173,6088,6388 ,3711,3670,3184 }, - {110,74,2962 ,743,2053,3494 }, {2715,2386,2835 ,2944,3196,3079 }, - {369,418,470 ,1521,1610,1522 }, {2549,2622,2894 ,2841,2840,3140 }, - {2639,2593,2594 ,3694,3111,3110 }, {2773,2772,2720 ,2871,3198,3173 }, - {2721,2773,2720 ,2917,2871,3173 }, {2676,2675,2602 ,2761,3235,3234 }, - {3168,3167,3126 ,3396,3692,3689 }, {1452,1004,1592 ,1606,3452,2939 }, - {1936,5140,5359 ,848,3712,3713 }, {5326,5327,6524 ,3714,3702,3704 }, - {2201,968,2200 ,2455,1661,1570 }, {2401,651,2995 ,2855,3591,2856 }, - {2531,2387,2413 ,3654,3461,3246 }, {2937,2984,2936 ,3570,3458,2843 }, - {3168,3210,3167 ,3396,3608,3692 }, {2194,2146,2147 ,1853,1732,1562 }, - {2837,107,2501 ,2511,2548,2547 }, {2652,1004,31 ,3424,3452,3450 }, - {3054,3981,3076 ,916,915,2066 }, {2557,2397,3052 ,3620,3669,3715 }, - {2876,2547,2397 ,3706,3684,3669 }, {2557,2876,2397 ,3620,3706,3669 }, - {2984,3035,2983 ,3458,3364,3589 }, {2250,2286,2330 ,3716,3717,3693 }, - {2285,2250,2330 ,3701,3716,3693 }, {2286,290,289 ,3717,1042,1044 }, - {2330,2286,289 ,3693,3717,1044 }, {8067,8083,8097 ,2168,2103,1710 }, - {2000,2025,2024 ,2428,2430,2370 }, {3127,3126,3072 ,2811,3689,3403 }, - {3179,1249,2617 ,2947,2876,2878 }, {3472,3446,1165 ,3155,3718,3153 }, - {2647,2413,2462 ,3276,3246,3245 }, {3230,2356,3229 ,3294,3264,3266 }, - {2370,2630,1482 ,3216,3139,2265 }, {2637,1238,1373 ,2720,1569,1501 }, - {2131,2129,2653 ,656,1469,3010 }, {411,2899,2909 ,2919,2921,3189 }, - {2356,411,2909 ,3264,2919,3189 }, {3534,8072,3668 ,942,511,513 }, - {3127,3168,3126 ,2811,3396,3689 }, {2513,2597,2512 ,3426,2769,2981 }, - {6170,3537,3451 ,3719,1735,1720 }, {3210,3209,3167 ,3608,3377,3692 }, - {2587,90,3256 ,3274,2851,3308 }, {2717,2769,819 ,2676,2679,2244 }, - {2805,651,2401 ,3230,3591,2855 }, {2528,56,924 ,2763,2606,3634 }, - {2416,1789,2467 ,808,3007,3006 }, {2711,2631,2586 ,3435,2971,2972 }, - {2748,2876,2557 ,3720,3706,3620 }, {2580,2688,2706 ,3721,3697,3707 }, - {2688,2580,2658 ,3697,3721,3698 }, {2459,355,2658 ,3722,1876,3698 }, - {355,2459,250 ,1876,3722,1916 }, {3210,3240,3239 ,3608,3590,3378 }, - {3209,3210,3239 ,3377,3608,3378 }, {437,2589,529 ,1149,3204,1148 }, - {2151,109,349 ,1603,1654,566 }, {790,2682,829 ,1339,3480,1368 }, - {2003,2029,2028 ,2542,1748,1811 }, {2518,2560,2517 ,2388,3335,3399 }, - {2269,2505,2497 ,2881,2883,3336 }, {2987,2269,2497 ,3346,2881,3336 }, - {2819,2818,2772 ,2870,3156,3198 }, {3095,2835,3173 ,2945,3079,3114 }, - {162,2290,238 ,2822,1982,868 }, {2724,2726,2776 ,2668,2667,3192 }, - {2723,2776,2775 ,2706,3192,3477 }, {4086,284,557 ,3723,139,3724 }, - {1255,795,2576 ,3248,302,3076 }, {3025,3024,2975 ,3094,3098,3157 }, - {2884,2928,2883 ,2940,2578,2579 }, {2537,2427,2677 ,2985,3237,3033 }, - {2598,2599,2673 ,2602,2601,2974 }, {2269,2841,2506 ,2881,3443,2882 }, - {2552,2476,2300 ,2657,2441,2640 }, {8065,8094,8080 ,96,98,1094 }, - {1238,1515,1373 ,1569,1502,1501 }, {2489,2475,2298 ,2611,3047,3013 }, - {3429,3428,3378 ,1978,3261,1442 }, {3143,2537,968 ,3135,2985,1661 }, - {3699,3745,3744 ,2121,2546,2390 }, {2554,2805,2401 ,2853,3230,2855 }, - {1969,4644,1970 ,2369,2425,2427 }, {1482,877,58 ,2265,2243,2156 }, - {2748,2579,2706 ,3720,3725,3707 }, {2876,2748,2706 ,3706,3720,3707 }, - {2579,2580,2706 ,3725,3721,3707 }, {2580,2578,2658 ,3721,3552,3698 }, - {2578,2459,2658 ,3552,3722,3698 }, {2614,2613,2526 ,2638,2665,2636 }, - {3124,3123,3099 ,3604,3023,3603 }, {3597,3596,3545 ,1810,1792,926 }, - {2544,79,2691 ,2451,1510,3169 }, {6155,6413,6970 ,3726,112,3688 }, - {4302,4303,166 ,3727,3728,3729 }, {2685,2737,2684 ,2642,2626,2644 }, - {2692,56,2528 ,2845,2606,2763 }, {2411,2692,2528 ,2777,2845,2763 }, - {2602,2601,2517 ,3234,3398,3399 }, {2569,554,1336 ,3291,2588,2924 }, - {2647,2462,2353 ,3276,3245,3170 }, {2773,2819,2772 ,2871,2870,3198 }, - {2438,2510,2437 ,3163,3162,2576 }, {2771,2817,2816 ,3197,3174,3475 }, - {2816,2817,2880 ,3475,3174,2591 }, {3359,6393,3305 ,824,1556,879 }, - {4146,4170,3844 ,3730,3731,2443 }, {2819,2820,2883 ,2870,2869,2579 }, - {2202,2841,2269 ,2875,3443,2881 }, {2888,2887,2824 ,3651,3616,3432 }, - {2826,2888,2824 ,3592,3651,3432 }, {2676,2727,2675 ,2761,2760,3235 }, - {3379,3429,3378 ,1979,1978,1442 }, {554,785,1336 ,2588,2952,2924 }, - {2569,1336,2366 ,3291,2924,2589 }, {3087,3088,3131 ,3573,3290,3732 }, - {4068,4091,4077 ,408,123,126 }, {2826,2825,2779 ,3592,3431,2831 }, - {2780,2826,2779 ,2830,3592,2831 }, {1849,2909,1875 ,1660,3189,1663 }, - {2685,2684,2614 ,2642,2644,2638 }, {1205,1106,1107 ,3187,1664,2656 }, - {2949,2748,2557 ,3239,3720,3620 }, {2949,2965,2579 ,3239,3417,3725 }, - {2748,2949,2579 ,3720,3239,3725 }, {2765,2580,2579 ,2590,3721,3725 }, - {2389,2459,2578 ,2609,3722,3552 }, {2389,250,2459 ,2609,1916,3722 }, - {3164,3206,3163 ,3307,2886,3361 }, {725,818,817 ,721,1018,1020 }, - {4172,4173,4215 ,135,134,370 }, {6525,6573,6572 ,3703,3733,3734 }, - {291,290,2286 ,1012,1042,3717 }, {2287,291,2286 ,3735,1012,3717 }, - {6524,6525,6572 ,3704,3703,3734 }, {2371,2542,2656 ,2880,2879,2893 }, - {554,2085,785 ,2588,657,2952 }, {2572,1181,293 ,3050,1981,1430 }, - {2678,1917,1875 ,3190,833,1663 }, {2909,2678,1875 ,3189,3190,1663 }, - {1665,410,2967 ,3077,2204,2701 }, {2847,2816,2879 ,2624,3475,2621 }, - {149,2471,219 ,3736,3653,3087 }, {3175,2576,2628 ,3249,3076,3078 }, - {2427,2537,3149 ,3237,2985,3134 }, {3074,3073,3035 ,3363,3516,3364 }, - {3154,3153,3123 ,2692,2693,3023 }, {2742,2003,1565 ,2558,2542,3737 }, - {511,1565,2003 ,3569,3737,2542 }, {3494,3492,3493 ,736,930,3738 }, - {13,1303,1626 ,910,1933,564 }, {3792,2941,3791 ,3421,109,3739 }, - {2504,2310,2502 ,2898,2442,3740 }, {2331,2502,2310 ,2895,3740,2442 }, - {2584,2331,2310 ,2894,2895,2442 }, {90,2202,2269 ,2851,2875,2881 }, - {2826,2824,2825 ,3592,3432,3431 }, {3110,3109,3068 ,3337,3553,3555 }, - {2965,2765,2579 ,3417,2590,3725 }, {2761,2580,2765 ,2768,3721,2590 }, - {2761,2578,2580 ,2768,3552,3721 }, {2133,250,2389 ,2614,1916,2609 }, - {253,247,2663 ,2564,2569,3593 }, {3494,3493,3432 ,736,3738,929 }, - {2921,2971,1237 ,2691,3338,1467 }, {2886,2931,2885 ,2913,2780,2914 }, - {3434,3463,3433 ,737,1271,3049 }, {972,1073,2314 ,3277,3741,3742 }, - {2286,2250,2287 ,3717,3716,3735 }, {236,291,2287 ,2444,1012,3735 }, - {99,236,2287 ,3743,2444,3735 }, {1172,2993,1081 ,1758,3744,3745 }, - {819,2845,2800 ,2244,2995,2996 }, {2560,2602,2517 ,3335,3234,3399 }, - {3993,3994,4035 ,2807,2806,1601 }, {2999,3027,3026 ,2998,3350,3095 }, - {968,2572,293 ,1661,3050,1430 }, {2976,3026,2998 ,2999,3095,3446 }, - {2510,2511,2593 ,3162,3112,3111 }, {2166,2100,2167 ,1040,1218,1323 }, - {292,239,2292 ,2563,1103,1983 }, {2874,3175,2628 ,3195,3249,3078 }, - {3063,3103,3102 ,3093,3137,3097 }, {3062,3063,3102 ,3096,3093,3097 }, - {2722,2774,2721 ,3014,2916,2917 }, {2503,2353,2691 ,2948,3170,3169 }, - {3149,3260,2201 ,3134,3188,2455 }, {2981,2980,2933 ,3550,3305,3556 }, - {2981,3000,2980 ,3550,3304,3305 }, {6388,6088,6436 ,3184,3670,3681 }, - {2416,2467,2631 ,808,3006,2971 }, {3128,3127,3073 ,2809,2811,3516 }, - {4426,6837,6577 ,1056,1057,97 }, {2908,1249,3179 ,3052,2876,2947 }, - {3138,1050,1181 ,2984,2282,1981 }, {1406,1329,1370 ,1135,1134,1500 }, - {2700,2726,2725 ,3009,2667,2666 }, {2673,2700,2725 ,2974,3009,2666 }, - {2888,2934,2933 ,3651,3602,3556 }, {2976,2999,3026 ,2999,2998,3095 }, - {2887,2888,2933 ,3616,3651,3556 }, {6573,6613,6612 ,3733,3746,1389 }, - {2722,2721,2669 ,3014,2917,3015 }, {2949,2557,2920 ,3239,3620,1799 }, - {2914,2765,2965 ,2573,2590,3417 }, {2635,2578,2761 ,2607,3552,2768 }, - {2430,2133,2389 ,2613,2614,2609 }, {2131,2132,2865 ,656,655,3107 }, - {3036,3035,2984 ,3362,3364,3458 }, {6572,6573,6612 ,3734,3733,1389 }, - {2735,929,830 ,2887,1234,1996 }, {5702,3009,5038 ,3630,3747,3628 }, - {3482,3478,8069 ,2494,885,1095 }, {2556,2449,2430 ,2779,3259,2613 }, - {2449,91,2430 ,3259,1984,2613 }, {2934,2981,2933 ,3602,3550,3556 }, - {3235,3236,2456 ,3394,2717,2790 }, {2863,2886,2822 ,3242,2913,2826 }, - {7371,7423,7370 ,3748,3749,3750 }, {2249,6897,6531 ,3751,54,2280 }, - {3258,3484,1009 ,542,283,3752 }, {7797,7848,7823 ,3506,343,345 }, - {3763,2707,1305 ,3753,235,466 }, {4083,4157,5458 ,3754,3755,3756 }, - {1376,4610,4788 ,1937,3757,3758 }, {7826,7876,7853 ,1616,1725,1617 }, - {5352,8138,4022 ,3502,2018,3503 }, {6649,6648,6612 ,3759,1390,1389 }, - {1156,106,5138 ,3100,1073,1940 }, {2622,2567,2901 ,2840,2842,3468 }, - {3648,3701,3647 ,734,733,2521 }, {4248,3972,1159 ,3256,3487,3760 }, - {836,1068,1385 ,3551,3761,3762 }, {3819,1159,5414 ,3763,3760,3764 }, - {7412,7410,7411 ,3765,3766,3767 }, {3306,3326,3325 ,3695,826,825 }, - {1668,689,4206 ,3212,1363,682 }, {1668,4206,141 ,3212,682,681 }, - {7825,7850,7824 ,3768,3769,3770 }, {1009,2607,1250 ,3752,2452,3771 }, - {7246,7268,7291 ,3772,3773,3774 }, {7979,8003,8002 ,3775,3776,3777 }, - {3690,958,872 ,3778,3779,2962 }, {5414,1159,3673 ,3764,3760,648 }, - {2731,3690,872 ,659,3778,2962 }, {3690,2394,958 ,3778,3780,3779 }, - {1594,3312,958 ,3781,3782,3779 }, {2394,1594,958 ,3780,3781,3779 }, - {5731,3615,5682 ,934,201,3783 }, {1594,3098,3420 ,3781,3784,3785 }, - {3312,1594,3420 ,3782,3781,3785 }, {3098,3254,3299 ,3784,3233,3232 }, - {3420,3098,3299 ,3785,3784,3232 }, {6355,6356,5151 ,3786,3787,1803 }, - {6311,8114,8122 ,1097,2286,384 }, {3169,3128,3170 ,2810,2809,3510 }, - {1510,3893,5862 ,3788,3789,3790 }, {8075,8105,8107 ,2308,3791,658 }, - {3454,3340,4424 ,710,114,3792 }, {4424,3340,6414 ,3792,114,113 }, - {5327,5300,6525 ,3702,3793,3703 }, {1942,1668,141 ,2337,3212,681 }, - {6415,4424,6414 ,386,3792,113 }, {8089,8097,3861 ,254,1710,1147 }, - {5259,4827,5282 ,3794,2734,1194 }, {5302,5706,6008 ,3795,3796,3797 }, - {2892,1669,771 ,918,3798,3799 }, {2582,3513,1017 ,873,441,1793 }, - {5299,6041,5251 ,3800,3801,3802 }, {7796,7823,7795 ,3803,345,3804 }, - {3371,685,794 ,3708,2674,3392 }, {3306,3325,3305 ,3695,825,879 }, - {3932,652,55 ,1096,334,3507 }, {3998,4040,4039 ,381,460,382 }, - {637,3585,3736 ,3805,3806,3807 }, {3474,637,3736 ,3808,3805,3807 }, - {1068,3685,3057 ,3761,3809,3810 }, {3685,3474,3736 ,3809,3808,3807 }, - {1385,1068,3057 ,3762,3761,3810 }, {3685,3736,3057 ,3809,3807,3810 }, - {541,1385,3057 ,3811,3762,3810 }, {3147,3477,4162 ,2285,1736,1738 }, - {8096,8136,8115 ,1796,2449,2448 }, {3477,4129,5785 ,1736,3812,1737 }, - {5680,5698,5679 ,50,44,2553 }, {836,1385,541 ,3551,3762,3811 }, - {2746,8089,3861 ,1517,254,1147 }, {3113,1734,269 ,410,2219,3813 }, - {3413,3441,3391 ,3814,2987,3815 }, {3701,3700,3647 ,733,2545,2521 }, - {296,3317,630 ,1558,1882,2491 }, {3493,3492,3432 ,3738,930,929 }, - {8124,8110,3271 ,1141,1140,1727 }, {3939,3955,3090 ,3539,3538,2805 }, - {4027,4712,1020 ,3470,3816,3817 }, {5231,922,5000 ,115,117,286 }, - {6041,5298,5273 ,3801,3818,3819 }, {3891,3890,3869 ,3820,1913,1912 }, - {7823,7847,7795 ,345,3521,3804 }, {2856,588,3549 ,3821,3822,3823 }, - {3690,1594,2394 ,3778,3781,3780 }, {5698,5726,5725 ,44,515,3824 }, - {4178,5297,4023 ,3825,3826,3827 }, {1694,836,541 ,3828,3551,3811 }, - {3453,3054,1787 ,917,916,2897 }, {531,34,62 ,3829,3830,3831 }, - {3441,3468,3440 ,2987,2688,2690 }, {3187,4371,3972 ,3402,3489,3487 }, - {3491,3544,3490 ,955,1153,2502 }, {7074,7073,7038 ,2747,662,3832 }, - {6613,6649,6612 ,3746,3759,1389 }, {6650,6680,6648 ,3833,3834,1390 }, - {3855,3891,3869 ,1511,3820,1912 }, {3504,3503,3468 ,2986,3835,2688 }, - {3441,3440,3391 ,2987,2690,3815 }, {3549,3369,62 ,3823,3836,3831 }, - {3529,3371,794 ,3837,3708,3392 }, {3369,531,62 ,3836,3829,3831 }, - {3529,794,3476 ,3837,3392,3838 }, {3568,3529,3476 ,3839,3837,3838 }, - {1783,543,1341 ,2251,3840,3841 }, {3891,3926,3890 ,3820,3125,1913 }, - {3612,3819,3473 ,3842,3763,649 }, {5785,4129,4162 ,1737,3812,1738 }, - {5242,5241,5220 ,3843,2120,2119 }, {7253,7252,6349 ,1855,3437,705 }, - {3764,3718,3316 ,3844,3845,2149 }, {3948,915,4326 ,280,443,219 }, - {3264,836,1694 ,2468,3551,3828 }, {882,3264,1694 ,3846,2468,3828 }, - {5258,5259,5282 ,1193,3794,1194 }, {3924,3968,3923 ,3847,3848,3849 }, - {5224,5244,5223 ,3850,79,3851 }, {5224,5223,4679 ,3850,3851,3852 }, - {7982,8007,7958 ,3853,3854,3855 }, {3339,3690,2731 ,3856,3778,659 }, - {3006,3339,2731 ,414,3856,659 }, {3279,1594,3690 ,3857,3781,3778 }, - {3339,3279,3690 ,3856,3857,3778 }, {1415,3098,1594 ,3858,3784,3781 }, - {3279,1415,1594 ,3857,3858,3781 }, {5286,5285,5241 ,3859,2169,2120 }, - {3392,3413,3391 ,3860,3814,3815 }, {5640,5679,5678 ,2214,2553,3861 }, - {1974,3549,62 ,3862,3823,3831 }, {4157,5481,5304 ,3755,3863,654 }, - {5639,5640,5656 ,2215,2214,3864 }, {5656,5640,5678 ,3864,2214,3861 }, - {5380,5385,5304 ,653,3865,654 }, {6649,6650,6648 ,3759,3833,1390 }, - {3511,3254,3098 ,539,3233,3784 }, {1415,3511,3098 ,3858,539,3784 }, - {3511,4019,3254 ,539,227,3233 }, {5013,8074,5950 ,684,2460,2873 }, - {6698,6697,6680 ,629,3866,3834 }, {3396,3764,3316 ,3867,3844,2149 }, - {2256,6390,2162 ,2323,3868,3278 }, {3828,4199,4186 ,1364,3869,683 }, - {4206,3828,4186 ,682,1364,683 }, {3864,138,1206 ,3517,434,2218 }, - {3972,3864,1206 ,3487,3517,2218 }, {6650,6698,6680 ,3833,629,3834 }, - {4009,4008,3967 ,3870,3871,3872 }, {6073,6055,3659 ,3873,3874,3875 }, - {834,96,1539 ,3876,836,835 }, {4861,4896,4669 ,3877,3878,3879 }, - {1724,3425,1249 ,3880,1859,2876 }, {834,1588,2856 ,3876,3881,3821 }, - {5354,4866,3907 ,3882,3641,3883 }, {3266,543,1783 ,3884,3840,2251 }, - {7796,7795,7745 ,3803,3804,650 }, {2785,1907,3878 ,1246,1245,1248 }, - {6574,6614,6613 ,3885,3886,3746 }, {3652,3651,3602 ,3887,3888,3889 }, - {3603,3652,3602 ,3890,3887,3889 }, {3392,3391,3332 ,3860,3815,3891 }, - {3309,3333,3308 ,3892,3893,3894 }, {3333,3392,3332 ,3893,3860,3891 }, - {3309,3308,3294 ,3892,3894,3895 }, {3333,3332,3308 ,3893,3891,3894 }, - {1415,3279,3339 ,3858,3857,3856 }, {3476,794,3252 ,3838,3392,781 }, - {1207,5153,5146 ,1074,3896,1075 }, {4291,920,4926 ,58,57,3897 }, - {3681,3258,1250 ,691,542,3771 }, {2813,3911,3738 ,3898,3899,3900 }, - {3294,3308,7110 ,3895,3894,1990 }, {3810,3853,3809 ,3901,3902,3903 }, - {5816,5833,5832 ,545,544,3904 }, {3968,4009,3967 ,3848,3870,3872 }, - {2472,13,1626 ,2009,910,564 }, {2659,3286,601 ,3485,56,3905 }, - {4005,2422,4004 ,3906,3907,3908 }, {4007,2798,4005 ,3909,420,3906 }, - {789,3878,1156 ,3910,1248,3100 }, {1510,1410,3893 ,3788,3911,3789 }, - {28,1096,88 ,1059,2727,3581 }, {3439,3438,3389 ,2689,3912,3913 }, - {3604,3603,3554 ,3384,3890,3914 }, {3861,8083,3456 ,1147,2103,1145 }, - {109,254,2039 ,1654,2008,1655 }, {3286,79,2990 ,56,1510,3646 }, - {2832,3694,2907 ,638,3915,111 }, {1882,4543,4980 ,894,3002,241 }, - {4714,4778,4777 ,1031,3916,3917 }, {6310,6742,6735 ,3918,3422,3472 }, - {3243,1111,4845 ,3919,3920,3921 }, {3336,6285,7095 ,3922,3923,3924 }, - {3911,1940,3738 ,3899,3925,3900 }, {3764,1412,3841 ,3844,3926,3927 }, - {3718,3764,3841 ,3845,3844,3927 }, {1412,2813,3738 ,3926,3898,3900 }, - {3841,1412,3738 ,3927,3926,3900 }, {3911,3447,1940 ,3899,3928,3925 }, - {552,3900,2945 ,3929,884,1239 }, {978,1029,977 ,1620,3930,3931 }, - {3373,206,1804 ,693,3932,2902 }, {3425,1693,1249 ,1859,264,2876 }, - {2357,2912,2422 ,3933,3934,3907 }, {3981,8140,3263 ,915,2269,252 }, - {3713,3712,3654 ,3935,1439,1438 }, {3655,3713,3654 ,3936,3935,1438 }, - {1215,6950,5006 ,3937,1349,1351 }, {5701,5682,5683 ,3938,3783,3939 }, - {8112,6351,8079 ,3530,1568,55 }, {5732,5731,5682 ,3940,934,3783 }, - {5701,5732,5682 ,3938,3940,3783 }, {4186,4199,1607 ,683,3869,3941 }, - {5832,3727,5831 ,3904,3942,3943 }, {931,1256,2910 ,3944,3945,3946 }, - {3224,931,2910 ,3947,3944,3946 }, {3653,3678,3652 ,1440,3948,3887 }, - {5732,5770,5769 ,3940,3949,932 }, {5731,5732,5769 ,934,3940,932 }, - {5770,5768,5769 ,3949,933,932 }, {7649,7699,7648 ,3950,3951,3952 }, - {5092,3766,4585 ,3953,3954,3955 }, {3619,2790,2740 ,3956,3576,3456 }, - {3554,3553,3502 ,3914,3957,3958 }, {3503,3554,3502 ,3835,3914,3958 }, - {592,1018,3368 ,1863,3959,3960 }, {20,348,75 ,3961,643,3962 }, - {7452,7451,7424 ,1875,3963,1188 }, {4005,4004,3964 ,3906,3908,3964 }, - {2422,731,4004 ,3907,3965,3908 }, {2798,2357,2422 ,420,3933,3907 }, - {6279,6278,7092 ,3966,3967,3968 }, {6870,6898,6796 ,2616,1946,2617 }, - {5308,564,4868 ,3528,3529,3969 }, {3712,3713,3714 ,1439,3935,3970 }, - {8138,3534,4022 ,2018,942,3503 }, {3537,3725,2072 ,1735,3971,1812 }, - {1556,3283,3252 ,3365,262,781 }, {406,746,2958 ,2566,2661,1374 }, - {3329,3362,3328 ,3972,1200,3973 }, {3616,4186,2795 ,3974,683,3975 }, - {3218,5480,4162 ,3976,1739,1738 }, {3962,3961,3918 ,3977,2346,2335 }, - {1256,931,1518 ,3945,3944,3978 }, {3652,3677,3651 ,3887,3979,3888 }, - {3708,3707,3651 ,3980,3981,3888 }, {4764,4765,4797 ,3982,3983,3984 }, - {6603,6744,1116 ,3985,3986,1401 }, {5838,6015,6083 ,3987,3988,3989 }, - {4837,1375,955 ,3990,325,3991 }, {3899,3760,5146 ,1938,2250,1075 }, - {3503,3502,3467 ,3835,3958,3992 }, {3440,3439,3390 ,2690,2689,3509 }, - {3391,3440,3390 ,3815,2690,3509 }, {635,20,75 ,2183,3961,3962 }, - {8134,6897,8120 ,3263,54,906 }, {5266,5288,5243 ,81,3993,3994 }, - {5306,5305,5335 ,462,2283,2523 }, {7425,7454,7397 ,3995,3996,1186 }, - {4868,4888,5379 ,3969,3997,3998 }, {5805,4129,5385 ,3999,3812,3865 }, - {6467,2407,6484 ,4000,4001,685 }, {4868,5340,5287 ,3969,4002,4003 }, - {6847,6899,3891 ,4004,4005,3820 }, {4129,5458,5385 ,3812,3756,3865 }, - {4199,694,4487 ,3869,1987,4006 }, {1333,2812,8064 ,849,1914,3141 }, - {3601,3650,3624 ,4007,4008,4009 }, {3257,5855,1974 ,4010,4011,3862 }, - {1584,694,4199 ,4012,1987,3869 }, {3809,3808,3753 ,3903,4013,4014 }, - {3252,1941,3283 ,781,1034,262 }, {4713,5768,5770 ,4015,933,3949 }, - {3907,4914,917 ,3883,65,4016 }, {1561,1459,407 ,1865,4017,4018 }, - {7595,7649,7594 ,4019,3950,4020 }, {4252,4157,4083 ,4021,3755,3754 }, - {2945,3339,3006 ,1239,3856,414 }, {7874,7924,7873 ,344,815,817 }, - {5392,5717,5122 ,4022,4023,4024 }, {3755,3809,3753 ,4025,3903,4014 }, - {5217,4797,5258 ,4026,3984,1193 }, {1018,3681,1486 ,3959,691,4027 }, - {3750,3681,1018 ,690,691,3959 }, {3681,1250,1486 ,691,3771,4027 }, - {4221,2955,592 ,1862,3640,1863 }, {592,3750,1018 ,1863,690,3959 }, - {4516,1152,1692 ,4028,4029,4030 }, {588,592,3368 ,3822,1863,3960 }, - {3274,3819,3612 ,3172,3763,3842 }, {834,1670,1588 ,3876,2327,3881 }, - {2314,6467,2223 ,3742,4000,2336 }, {530,2044,959 ,512,4031,1358 }, - {3747,3701,6249 ,2925,733,4032 }, {2203,1415,3339 ,4033,3858,3856 }, - {2945,2203,3339 ,1239,4033,3856 }, {3534,8121,6353 ,942,3466,749 }, - {3603,3602,3553 ,3890,3889,3957 }, {3554,3603,3553 ,3914,3890,3957 }, - {3748,3218,5385 ,4034,3976,3865 }, {1444,382,3318 ,4035,3534,4036 }, - {6030,5475,5576 ,4037,4038,4039 }, {3663,3511,1415 ,4040,539,3858 }, - {2203,3663,1415 ,4033,4040,3858 }, {5858,5254,3436 ,4041,4042,2145 }, - {556,5295,4471 ,4043,2188,2187 }, {4394,4323,4273 ,4044,4045,120 }, - {4043,2798,4007 ,419,420,3909 }, {6750,6749,6697 ,631,4046,3866 }, - {530,8072,3040 ,512,511,619 }, {4199,4487,1607 ,3869,4006,3941 }, - {2246,7067,5755 ,591,3585,4047 }, {4323,1297,2042 ,4045,4048,121 }, - {3809,3833,3808 ,3903,4049,4013 }, {4273,4323,2042 ,120,4045,121 }, - {803,6204,6203 ,144,4050,1249 }, {7797,7796,7745 ,3506,3803,650 }, - {3663,4029,3511 ,4040,225,539 }, {8092,8130,8098 ,2267,905,907 }, - {733,184,5006 ,4051,4052,1351 }, {4105,5392,5122 ,4053,4022,4024 }, - {1152,3274,3612 ,4029,3172,3842 }, {3819,4468,3473 ,3763,647,649 }, - {3001,1159,3819 ,3210,3760,3763 }, {3819,5414,4468 ,3763,3764,647 }, - {5957,4105,5122 ,4054,4053,4024 }, {3886,3887,3885 ,4055,4056,4057 }, - {8105,3006,8137 ,3791,414,2174 }, {3612,3473,2843 ,3842,649,4058 }, - {3577,2843,4469 ,4059,4058,4060 }, {1102,1733,4165 ,2317,2328,640 }, - {1692,2843,3577 ,4030,4058,4059 }, {1692,3612,2843 ,4030,3842,4058 }, - {3368,1018,3577 ,3960,3959,4059 }, {1486,1692,3577 ,4027,4030,4059 }, - {3344,592,588 ,1861,1863,3822 }, {1211,3327,3636 ,2007,439,1060 }, - {3844,1283,2476 ,2443,2978,2441 }, {3668,530,959 ,513,512,1358 }, - {3807,3806,3752 ,4061,4062,4063 }, {5799,5800,5815 ,4064,702,4065 }, - {3828,1454,4199 ,1364,2318,3869 }, {22,1468,2042 ,4066,174,121 }, - {2013,2380,1332 ,2242,2597,3492 }, {3292,3331,3291 ,4067,1183,1203 }, - {2607,4516,1250 ,2452,4028,3771 }, {3922,3965,3921 ,4068,4069,4070 }, - {3755,3754,3707 ,4025,4071,3981 }, {3677,3708,3651 ,3979,3980,3888 }, - {3708,3755,3707 ,3980,4025,3981 }, {3755,3753,3754 ,4025,4014,4071 }, - {1297,22,2042 ,4048,4066,121 }, {22,1451,1468 ,4066,175,174 }, - {3289,3288,7196 ,2056,2058,2401 }, {5928,3903,3915 ,4072,296,1575 }, - {7102,7129,7101 ,1240,1026,4073 }, {22,3786,1451 ,4066,4074,175 }, - {5693,5715,5714 ,4075,4076,4077 }, {3484,1300,1009 ,283,285,3752 }, - {4009,4007,4008 ,3870,3909,3871 }, {1018,1486,3577 ,3959,4027,4059 }, - {6281,6280,7090 ,4078,4079,4080 }, {6698,6750,6697 ,629,631,3866 }, - {3981,2833,3076 ,915,2065,2066 }, {2155,6353,5444 ,580,749,3410 }, - {2681,3119,2346 ,3254,3223,3252 }, {4856,4570,3834 ,4081,4082,4083 }, - {3006,552,2945 ,414,3929,1239 }, {2265,177,2297 ,2662,3618,2663 }, - {1483,834,1539 ,4084,3876,835 }, {3887,3923,3922 ,4056,3849,4068 }, - {3885,3887,3922 ,4057,4056,4068 }, {6386,4856,3834 ,4085,4081,4083 }, - {303,915,3948 ,4086,443,280 }, {68,4813,1655 ,4087,4088,4089 }, - {8100,4021,3482 ,1713,1712,2494 }, {1335,1443,1152 ,236,182,4029 }, - {3753,3807,3752 ,4014,4061,4063 }, {3871,1334,3748 ,397,1935,4034 }, - {1250,4516,1486 ,3771,4028,4027 }, {3555,3554,3503 ,4090,3914,3835 }, - {3972,1206,5389 ,3487,2218,4091 }, {6096,3765,6050 ,4092,4093,4094 }, - {3258,1009,1250 ,542,3752,3771 }, {4527,5305,3147 ,1740,2283,2285 }, - {4915,917,4914 ,64,4016,65 }, {3965,3964,3921 ,4069,3964,4070 }, - {5228,5247,5227 ,4095,4096,4097 }, {1935,913,915 ,4098,444,443 }, - {4866,5337,5354 ,3641,572,3882 }, {3968,3967,3923 ,3848,3872,3849 }, - {303,1935,915 ,4086,4098,443 }, {3263,2651,3075 ,252,1516,2670 }, - {3747,3700,3701 ,2925,2545,733 }, {3278,2691,79 ,1158,3169,1510 }, - {177,2363,2297 ,3618,2571,2663 }, {106,5146,5139 ,1073,1075,1939 }, - {3457,3348,2043 ,4099,2255,4100 }, {3348,684,2043 ,2255,4101,4100 }, - {2910,1256,3004 ,3946,3945,2437 }, {1219,1170,3471 ,4102,4103,4104 }, - {2795,4186,1607 ,3975,683,3941 }, {202,5957,5122 ,4105,4054,4024 }, - {1935,3622,913 ,4098,4106,444 }, {3850,3851,3885 ,4107,4108,4057 }, - {3851,3886,3885 ,4108,4055,4057 }, {3851,3850,3808 ,4108,4107,4013 }, - {3833,3851,3808 ,4049,4108,4013 }, {3966,4007,3965 ,4109,3909,4069 }, - {4008,4007,3967 ,3871,3909,3872 }, {4007,4005,4006 ,3909,3906,4110 }, - {7108,7095,7109 ,4111,3924,4112 }, {2607,1335,4516 ,2452,236,4028 }, - {5806,248,3350 ,4113,4114,2541 }, {3330,3329,3290 ,1185,3972,1204 }, - {3291,3330,3290 ,1203,1185,1204 }, {3330,3363,3329 ,1185,1911,3972 }, - {3389,3388,3329 ,3913,4115,3972 }, {3363,3389,3329 ,1911,3913,3972 }, - {7899,7898,7875 ,4116,4117,4118 }, {3931,3664,3475 ,1868,1557,1559 }, - {8125,8068,8117 ,752,1784,4119 }, {4516,1692,1486 ,4028,4030,4027 }, - {3972,5389,4185 ,3487,4091,409 }, {3001,4248,1159 ,3210,3256,3760 }, - {3709,3708,3652 ,4120,3980,3887 }, {8038,8052,8022 ,4121,4122,4123 }, - {5871,3337,5116 ,4124,4125,4126 }, {3294,7110,3309 ,3895,1990,3892 }, - {2380,2624,3012 ,2597,3132,3491 }, {3732,3818,2785 ,3536,1244,1246 }, - {5592,5705,1608 ,3671,4127,4128 }, {2813,3447,3911 ,3898,3928,3899 }, - {684,11,2043 ,4101,299,4100 }, {3926,3925,3889 ,3125,3227,3126 }, - {2968,2693,1693 ,263,3416,264 }, {1295,3348,3040 ,618,2255,619 }, - {2039,2472,1626 ,1655,2009,564 }, {3727,3616,1794 ,3942,3974,4129 }, - {3808,3850,3806 ,4013,4107,4062 }, {3849,3850,3884 ,4130,4107,4131 }, - {3724,5644,5495 ,4132,4133,4134 }, {3348,3457,3040 ,2255,4099,619 }, - {3556,3554,3555 ,3385,3914,4090 }, {7995,8020,7973 ,4135,1405,3624 }, - {273,272,205 ,1749,1680,1741 }, {5198,4710,5177 ,423,4136,424 }, - {2912,1379,931 ,3934,4137,3944 }, {4007,4006,3965 ,3909,4110,4069 }, - {3966,3965,3922 ,4109,4069,4068 }, {3923,3966,3922 ,3849,4109,4068 }, - {2912,3178,731 ,3934,4138,3965 }, {2798,2422,4005 ,420,3907,3906 }, - {6786,6785,6749 ,4139,4140,4046 }, {6750,6786,6749 ,631,4139,4046 }, - {3412,3387,3388 ,4141,1787,4115 }, {3389,3412,3388 ,3913,4141,4115 }, - {3438,3437,3387 ,3912,4142,1787 }, {1670,834,1483 ,2327,3876,4084 }, - {2698,5335,4236 ,105,2523,3488 }, {3706,3752,3705 ,4143,4063,4144 }, - {3624,3650,3601 ,4009,4008,4007 }, {6611,5401,6571 ,1391,4145,4146 }, - {5800,5816,5815 ,702,545,4065 }, {1588,2856,5855 ,3881,3821,4011 }, - {1005,3338,4368 ,3535,4147,4148 }, {3883,3922,3921 ,4149,4068,4070 }, - {3849,3884,3883 ,4130,4131,4149 }, {918,558,2044 ,4150,4151,4031 }, - {530,918,2044 ,512,4150,4031 }, {2868,2832,2869 ,1577,638,1576 }, - {3447,3736,3585 ,3928,3807,3806 }, {915,3341,4326 ,443,541,219 }, - {3622,4289,2892 ,4106,4152,918 }, {7090,6280,7091 ,4080,4079,4153 }, - {3283,3476,3252 ,262,3838,781 }, {913,3622,2892 ,444,4106,918 }, - {3880,3881,3918 ,2320,4154,2335 }, {4289,3172,2892 ,4152,4155,918 }, - {3850,3885,3884 ,4107,4057,4131 }, {694,2477,1607 ,1987,642,3941 }, - {5438,5439,6705 ,4156,4157,4158 }, {3296,3313,177 ,4159,4160,3618 }, - {3313,3343,3342 ,4160,2515,2514 }, {177,3313,3342 ,3618,4160,2514 }, - {166,85,4250 ,3729,2504,4161 }, {3178,2912,931 ,4138,3934,3944 }, - {7847,7846,7795 ,3521,4162,3804 }, {5831,1794,5830 ,3943,4129,4163 }, - {3257,1588,5855 ,4010,3881,4011 }, {2856,3549,1974 ,3821,3823,3862 }, - {5458,4157,5385 ,3756,3755,3865 }, {1152,3612,1692 ,4029,3842,4030 }, - {531,3577,4469 ,3829,4059,4060 }, {96,834,3909 ,836,3876,4164 }, - {3412,3438,3387 ,4141,3912,1787 }, {1733,1483,4165 ,2328,4084,640 }, - {1733,1670,1483 ,2328,2327,4084 }, {5305,4527,4236 ,2283,1740,3488 }, - {2405,4900,5578 ,4165,585,587 }, {2296,2264,2265 ,2664,4166,2662 }, - {3553,3601,3552 ,3957,4007,4167 }, {3849,3848,3806 ,4130,4168,4062 }, - {3848,3849,3883 ,4168,4130,4149 }, {1335,1152,4516 ,236,4029,4028 }, - {4162,5805,5385 ,1738,3999,3865 }, {3696,3697,3742 ,2325,2224,3419 }, - {3540,3541,3571 ,3357,981,3652 }, {6804,6803,6785 ,3342,4169,4140 }, - {5354,3907,4866 ,3882,3883,3641 }, {3285,4900,2405 ,3064,585,4165 }, - {6116,3336,7095 ,4170,3922,3924 }, {7974,7995,7973 ,4171,4135,3624 }, - {2088,3932,55 ,1667,1096,3507 }, {5764,5800,5799 ,537,702,4064 }, - {36,35,3866 ,1478,1338,1479 }, {3967,4007,3966 ,3872,3909,4109 }, - {3172,3093,1669 ,4155,4172,3798 }, {1538,3402,2410 ,0,3660,1 }, - {882,3271,8117 ,3846,1727,4119 }, {3613,2203,2945 ,4173,4033,1239 }, - {3455,3613,2945 ,886,4173,1239 }, {2892,3172,1669 ,918,4155,3798 }, - {3652,3708,3677 ,3887,3980,3979 }, {3468,3503,3467 ,2688,3835,3992 }, - {1248,1207,3878 ,2850,1074,1248 }, {5138,5139,5260 ,1940,1939,4174 }, - {834,1588,3257 ,3876,3881,4010 }, {635,2657,20 ,2183,2185,3961 }, - {3438,3466,3437 ,3912,4175,4142 }, {3501,3500,3437 ,4176,4177,4142 }, - {3466,3501,3437 ,4175,4176,4142 }, {3579,3550,3551 ,4178,4179,4180 }, - {3552,3579,3551 ,4167,4178,4180 }, {1454,1102,694 ,2318,2317,1987 }, - {1102,4165,694 ,2317,640,1987 }, {3473,3673,2153 ,649,648,4181 }, - {5109,5107,5108 ,4182,4183,4184 }, {874,3866,783 ,636,1479,679 }, - {4913,4866,3907 ,4185,3641,3883 }, {2368,2443,2365 ,2943,2942,3351 }, - {4003,1003,4002 ,4186,4187,4188 }, {1909,3663,2203 ,4189,4040,4033 }, - {3613,1909,2203 ,4173,4189,4033 }, {1338,4029,3663 ,1077,225,4040 }, - {1909,1338,3663 ,4189,1077,4040 }, {3093,5119,4942 ,4172,4190,4191 }, - {1669,3093,4942 ,3798,4172,4191 }, {6226,5562,3905 ,4192,4193,4194 }, - {3656,3655,3626 ,4195,3936,4196 }, {5705,5992,1608 ,4127,4197,4128 }, - {1022,969,793 ,4198,4199,4200 }, {4855,4809,1469 ,4201,4202,2361 }, - {3297,3314,3313 ,4203,3575,4160 }, {3313,3314,3343 ,4160,3575,2515 }, - {6786,6804,6785 ,4139,3342,4140 }, {3653,3652,3603 ,1440,3887,3890 }, - {5573,1525,407 ,2217,1866,4018 }, {3888,3924,3887 ,4204,3847,4056 }, - {3391,3390,3331 ,3815,3509,1183 }, {3332,3391,3331 ,3891,3815,1183 }, - {6803,6853,5587 ,4169,2505,1459 }, {3579,3601,3550 ,4178,4007,4179 }, - {3601,3578,3550 ,4007,4205,4179 }, {3624,3623,3578 ,4009,4206,4205 }, - {3601,3624,3578 ,4007,4009,4205 }, {3727,1794,5831 ,3942,4129,3943 }, - {3341,915,863 ,541,443,284 }, {3389,3438,3412 ,3913,3912,4141 }, - {931,1629,1518 ,3944,4207,3978 }, {1588,3344,2856 ,3881,1861,3821 }, - {3552,3601,3579 ,4167,4007,4178 }, {4003,4002,3963 ,4186,4188,4208 }, - {4393,5306,5335 ,463,462,2523 }, {3573,3591,3590 ,980,1652,1867 }, - {5572,407,3147 ,2284,4018,2285 }, {3290,3329,3289 ,1204,3972,2056 }, - {3218,4162,5385 ,3976,1738,3865 }, {8103,3283,3425 ,1291,262,1859 }, - {4558,4599,4631 ,4209,4210,1816 }, {1454,1584,4199 ,2318,4012,3869 }, - {5335,5305,4236 ,2523,2283,3488 }, {3314,2368,2365 ,3575,2943,3351 }, - {3343,3314,2365 ,2515,3575,3351 }, {2428,2872,784 ,371,311,4211 }, - {687,2088,1155 ,1665,1667,3333 }, {5697,5698,5725 ,2552,44,3824 }, - {5725,5726,5763 ,3824,515,4212 }, {3628,5045,6235 ,4213,4214,4215 }, - {5726,5764,5763 ,515,537,4212 }, {3248,6076,5982 ,4216,4217,4218 }, - {5045,6165,6235 ,4214,4219,4215 }, {6103,5988,6123 ,4220,2516,4221 }, - {4713,5837,5804 ,4015,3621,3623 }, {1333,3300,2812 ,849,694,1914 }, - {3300,3349,2812 ,694,2054,1914 }, {3336,3335,3309 ,3922,4222,3892 }, - {5471,5435,6640 ,2051,4223,4224 }, {5026,5165,4881 ,4225,4226,2731 }, - {8106,4835,8135 ,2438,2130,2439 }, {3998,3997,3957 ,381,380,295 }, - {3224,3178,931 ,3947,4138,3944 }, {3624,3650,3623 ,4009,4008,4206 }, - {75,348,268 ,3962,643,645 }, {5119,5424,5420 ,4190,4227,4228 }, - {1300,2607,1009 ,285,2452,3752 }, {4866,4913,4865 ,3641,4185,4229 }, - {4942,5119,5420 ,4191,4190,4228 }, {5424,201,84 ,4227,4230,4231 }, - {5420,5424,84 ,4228,4227,4231 }, {201,2643,3759 ,4230,4232,4233 }, - {84,201,3759 ,4231,4230,4233 }, {1160,3096,3241 ,3661,4234,3504 }, - {2316,8059,2275 ,3067,4235,3152 }, {3573,3572,3541 ,980,1931,981 }, - {3678,3709,3652 ,3948,4120,3887 }, {3710,3708,3709 ,4236,3980,4120 }, - {4846,1622,1517 ,4237,4238,600 }, {6324,3365,3335 ,4239,4240,4222 }, - {1851,1733,1102 ,4241,2328,2317 }, {3744,3796,3795 ,2390,2969,3448 }, - {4373,1851,1102 ,3288,4241,2317 }, {5763,5764,5799 ,4212,537,4064 }, - {2955,3750,592 ,3640,690,1863 }, {3850,3849,3806 ,4107,4130,4062 }, - {5877,5474,5489 ,4242,4243,4244 }, {5414,3673,4468 ,3764,648,647 }, - {7436,7464,7412 ,4245,4246,3765 }, {3338,1005,4207 ,4147,3535,4247 }, - {3852,3887,3886 ,4248,4056,4055 }, {3729,3772,3728 ,4249,4250,4251 }, - {3718,684,3348 ,3845,4101,2255 }, {1940,11,684 ,3925,299,4101 }, - {6257,5488,5473 ,3428,2730,3429 }, {7981,7980,7955 ,4252,4253,4254 }, - {6804,6854,6853 ,3342,3344,2505 }, {3756,3755,3708 ,4255,4025,3980 }, - {3656,3627,6534 ,4195,4256,4257 }, {3627,3656,3626 ,4256,4195,4196 }, - {5356,5663,5909 ,4258,4259,4260 }, {4928,3907,917 ,4261,3883,4016 }, - {1334,4236,5480 ,1935,3488,1739 }, {1851,1691,1733 ,4241,2326,2328 }, - {3373,3897,3349 ,693,4262,2054 }, {3751,3806,3729 ,4263,4062,4249 }, - {3806,3805,3729 ,4062,4264,4249 }, {3473,2153,4469 ,649,4181,4060 }, - {2843,3473,4469 ,4058,649,4060 }, {3324,3323,3304 ,881,1051,1050 }, - {976,7335,975 ,782,4265,4266 }, {3881,3920,3919 ,4154,4267,4268 }, - {3920,3963,3962 ,4267,4208,3977 }, {3919,3920,3962 ,4268,4267,3977 }, - {3963,4002,3962 ,4208,4188,3977 }, {2634,21,3759 ,4269,1231,4233 }, - {2643,2634,3759 ,4232,4269,4233 }, {3752,3751,3730 ,4063,4263,4270 }, - {3705,3752,3730 ,4144,4063,4270 }, {3919,3962,3918 ,4268,3977,2335 }, - {7720,7770,7747 ,4271,4272,331 }, {3547,6556,6598 ,803,4273,804 }, - {3372,3453,1908 ,2143,917,1058 }, {5923,6162,5591 ,2073,3598,3597 }, - {3837,1729,4286 ,3667,3666,4274 }, {3883,3885,3922 ,4149,4057,4068 }, - {3332,3331,3292 ,3891,1183,4067 }, {3714,3713,3655 ,3970,3935,3936 }, - {5870,3248,5939 ,4275,4216,4276 }, {3851,3852,3886 ,4108,4248,4055 }, - {3884,3885,3883 ,4131,4057,4149 }, {5283,5337,4830 ,570,572,3642 }, - {3316,3718,3348 ,2149,3845,2255 }, {3718,3841,684 ,3845,3927,4101 }, - {3841,1940,684 ,3927,3925,4101 }, {2634,3672,3987 ,4269,4277,1229 }, - {7930,7981,7955 ,4278,4252,4254 }, {6803,6804,6853 ,4169,3342,2505 }, - {3757,3758,3773 ,2281,1789,4279 }, {4105,3411,5392 ,4053,4280,4022 }, - {3398,3613,3455 ,4281,4173,886 }, {3478,3398,3455 ,885,4281,886 }, - {21,2634,3987 ,1231,4269,1229 }, {3300,3373,3349 ,694,693,2054 }, - {3848,3847,3805 ,4168,4282,4264 }, {3806,3848,3805 ,4062,4168,4264 }, - {7310,7344,7286 ,4283,2749,3460 }, {7698,7697,7648 ,333,651,3952 }, - {5411,5410,5376 ,4284,4285,2758 }, {3729,3728,3674 ,4249,4251,4286 }, - {3847,3846,3805 ,4282,4287,4264 }, {5307,5573,5572 ,461,2217,2284 }, - {6154,6141,3725 ,2387,2386,3971 }, {5306,5307,5572 ,462,461,2284 }, - {3881,3882,3920 ,4154,4288,4267 }, {3672,4423,3987 ,4277,4289,1229 }, - {3808,3806,3807 ,4013,4062,4061 }, {5239,5283,4830 ,482,570,3642 }, - {3252,794,2693 ,781,3392,3416 }, {3146,1909,3613 ,4290,4189,4173 }, - {3398,3146,3613 ,4281,4290,4173 }, {3735,1338,1909 ,4291,1077,4189 }, - {3146,3735,1909 ,4290,4291,4189 }, {3397,1257,1338 ,136,208,1077 }, - {3735,3397,1338 ,4291,136,1077 }, {3308,3332,3292 ,3894,3891,4067 }, - {3809,3852,3833 ,3903,4248,4049 }, {3852,3851,3833 ,4248,4108,4049 }, - {6279,7091,6280 ,3966,4153,4079 }, {5922,3445,5908 ,4292,1791,4293 }, - {3327,3404,1387 ,439,2170,2951 }, {6906,6905,6853 ,4294,2506,2505 }, - {6854,6906,6853 ,3344,4294,2505 }, {5194,4373,1102 ,727,3288,2317 }, - {1412,541,2813 ,3926,3811,3898 }, {3736,3447,2813 ,3807,3928,3898 }, - {3925,3924,3889 ,3227,3847,3126 }, {4423,160,4227 ,4289,4295,1564 }, - {3808,3807,3753 ,4013,4061,4014 }, {3883,3882,3847 ,4149,4288,4282 }, - {132,1518,2837 ,2503,3978,2511 }, {5296,5322,4023 ,4296,4297,3827 }, - {6283,7102,7088 ,4298,1240,4299 }, {3315,5194,1454 ,944,727,2318 }, - {3388,3387,3329 ,4115,1787,3972 }, {3675,3729,3674 ,4300,4249,4286 }, - {3729,3805,3772 ,4249,4264,4250 }, {3315,1454,3828 ,944,2318,1364 }, - {3987,4423,4227 ,1229,4289,1564 }, {7091,6279,7092 ,4153,3966,3968 }, - {160,5236,5237 ,4295,4301,1800 }, {4227,160,5237 ,1564,4295,1800 }, - {5263,5239,4830 ,4302,482,3642 }, {3711,3710,3653 ,1790,4236,1440 }, - {1670,3344,1588 ,2327,1861,3881 }, {541,3057,2813 ,3811,3810,3898 }, - {794,2494,2693 ,3392,3391,3416 }, {3764,1694,1412 ,3844,3828,3926 }, - {3309,3333,3334 ,3892,3893,399 }, {1606,1253,4055 ,3677,2353,3678 }, - {3178,3224,731 ,4138,3947,3965 }, {3967,3966,3923 ,3872,4109,3849 }, - {3344,2473,4221 ,1861,4303,1862 }, {5236,4834,5600 ,4301,4304,1801 }, - {3252,2693,2968 ,781,3416,263 }, {1556,3252,2968 ,3365,781,263 }, - {3864,1334,138 ,3517,1935,434 }, {1694,541,1412 ,3828,3811,3926 }, - {3404,3372,1387 ,2170,2143,2951 }, {882,1694,3396 ,3846,3828,3867 }, - {5237,5236,5600 ,1800,4301,1801 }, {4834,5787,2086 ,4304,4305,1802 }, - {7171,7208,7194 ,4306,1671,1670 }, {3556,3604,3554 ,3385,3384,3914 }, - {3521,3556,3503 ,4307,3385,3835 }, {3504,3521,3503 ,2986,4307,3835 }, - {3556,3555,3503 ,3385,4090,3835 }, {3542,3541,3487 ,979,981,3356 }, - {7495,7494,7462 ,4308,4309,4310 }, {4293,8065,3954 ,2732,96,3463 }, - {3969,3968,3924 ,3226,3848,3847 }, {3889,3924,3888 ,3126,3847,4204 }, - {3329,3328,3289 ,3972,3973,2056 }, {3848,3883,3847 ,4168,4149,4282 }, - {253,1158,966 ,2564,2744,2565 }, {5600,4834,2086 ,1801,4304,1802 }, - {2086,5787,377 ,1802,4305,4311 }, {7240,7287,7239 ,4312,3459,1527 }, - {3846,3881,3832 ,4287,4154,2322 }, {8120,2659,8098 ,906,3485,907 }, - {959,2044,501 ,1358,4031,4313 }, {3719,959,501 ,1356,1358,4313 }, - {6958,6957,6905 ,4314,4315,2506 }, {6276,7094,7093 ,4316,4317,4318 }, - {3882,3881,3846 ,4288,4154,4287 }, {3752,3806,3751 ,4063,4062,4263 }, - {141,4298,5832 ,681,3580,3904 }, {3925,3969,3924 ,3227,3226,3847 }, - {5181,5180,4631 ,4319,1878,1816 }, {2473,2955,4221 ,4303,3640,1862 }, - {3965,4005,3964 ,4069,3906,3964 }, {2422,2912,731 ,3907,3934,3965 }, - {3457,918,530 ,4099,4150,512 }, {75,2938,635 ,3962,4320,2183 }, - {3040,3457,530 ,619,4099,512 }, {3711,3757,3710 ,1790,2281,4236 }, - {6261,4044,4570 ,4321,4322,4082 }, {3057,3736,2813 ,3810,3807,3898 }, - {1694,3764,3396 ,3828,3844,3867 }, {1159,3972,4185 ,3760,3487,409 }, - {3274,3001,3819 ,3172,3210,3763 }, {5289,5288,5266 ,80,3993,81 }, - {3810,3811,3853 ,3901,4323,3902 }, {3889,3888,3853 ,3126,4204,3902 }, - {75,268,107 ,3962,645,2548 }, {6906,6958,6905 ,4294,4314,2506 }, - {1256,1518,132 ,3945,3978,2503 }, {2087,1256,132 ,2465,3945,2503 }, - {3846,3832,3804 ,4287,2322,4324 }, {3897,1804,3349 ,4262,2902,2054 }, - {5180,5242,5220 ,1878,3843,2119 }, {3800,1524,4697 ,4325,4326,4327 }, - {3676,3675,3623 ,4328,4300,4206 }, {6680,5471,6647 ,3834,2051,2050 }, - {3847,3882,3846 ,4282,4288,4287 }, {3650,3676,3623 ,4008,4328,4206 }, - {3964,3963,3920 ,3964,4208,4267 }, {3651,3706,3650 ,3888,4143,4008 }, - {3748,5385,5380 ,4034,3865,653 }, {5022,4669,1196 ,4329,3879,4330 }, - {3854,3889,3853 ,1512,3126,3902 }, {6116,7095,7094 ,4170,3924,4317 }, - {1159,4185,3673 ,3760,409,648 }, {7225,7246,7267 ,1672,3772,4331 }, - {7752,7751,7701 ,3514,4332,3515 }, {4797,5259,5258 ,3984,3794,1193 }, - {834,2856,1588 ,3876,3821,3881 }, {3909,834,3257 ,4164,3876,4010 }, - {5855,2856,1974 ,4011,3821,3862 }, {7312,7311,7262 ,4333,4334,4335 }, - {7797,7823,7796 ,3506,345,3803 }, {7825,7824,7771 ,3768,3770,4336 }, - {5286,5339,5285 ,3859,2223,2169 }, {107,268,751 ,2548,645,1365 }, - {7096,5473,3518 ,4337,3429,4338 }, {4369,4393,5335 ,104,463,2523 }, - {1339,3398,3478 ,4339,4281,885 }, {3449,1339,3478 ,2440,4339,885 }, - {3811,3810,3756 ,4323,3901,4255 }, {3757,3811,3756 ,2281,4323,4255 }, - {3757,3773,3811 ,2281,4279,4323 }, {3812,3854,3811 ,1513,1512,4323 }, - {407,3477,3147 ,4018,1736,2285 }, {1339,3564,3146 ,4339,4340,4290 }, - {3398,1339,3146 ,4281,4339,4290 }, {1334,5480,3218 ,1935,1739,3976 }, - {1670,1691,3344 ,2327,2326,1861 }, {1691,2473,3344 ,2326,4303,1861 }, - {3710,3709,3678 ,4236,4120,3948 }, {3653,3710,3678 ,1440,4236,3948 }, - {3962,4002,3961 ,3977,4188,2346 }, {3602,3601,3553 ,3889,4007,3957 }, - {4002,4001,3961 ,4188,2380,2346 }, {731,1003,4003 ,3965,4187,4186 }, - {3805,3846,3804 ,4264,4287,4324 }, {2219,5231,5000 ,177,115,286 }, - {8064,3975,3008 ,3141,728,546 }, {4078,1004,1919 ,4341,3452,1779 }, - {3368,3577,3369 ,3960,4059,3836 }, {3542,3591,3573 ,979,1652,980 }, - {7424,7423,7371 ,1188,3749,3748 }, {3038,1783,1341 ,4342,2251,3841 }, - {5288,4868,5287 ,3993,3969,4003 }, {4487,694,1607 ,4006,1987,3941 }, - {3969,4010,3968 ,3226,4343,3848 }, {3564,3782,3735 ,4340,4344,4291 }, - {3146,3564,3735 ,4290,4340,4291 }, {3370,3397,3735 ,2303,136,4291 }, - {3782,3370,3735 ,4344,2303,4291 }, {1454,694,1584 ,2318,1987,4012 }, - {4710,5218,4770 ,4136,483,4345 }, {1443,3274,1152 ,182,3172,4029 }, - {4236,4527,5480 ,3488,1740,1739 }, {4527,3147,4162 ,1740,2285,1738 }, - {4006,4005,3965 ,4110,3906,4069 }, {5572,5573,407 ,2284,2217,4018 }, - {1256,2087,3004 ,3945,2465,2437 }, {1309,3935,685 ,3709,4346,2674 }, - {1483,1539,87 ,4084,835,641 }, {3871,3748,5850 ,397,4034,394 }, - {3329,3387,3362 ,3972,1787,1200 }, {3566,2557,3052 ,1146,3620,3715 }, - {4653,4654,4679 ,4347,4348,3852 }, {6116,6276,6286 ,4170,4316,4349 }, - {6853,6892,5626 ,2505,2507,1460 }, {147,4712,4027 ,3469,3816,3470 }, - {3243,1099,1111 ,3919,4350,3920 }, {3187,2698,4236 ,3402,105,3488 }, - {5218,5238,4770 ,483,4351,4345 }, {3748,3749,5850 ,4034,652,394 }, - {2713,4091,3259 ,4352,123,407 }, {3304,3303,7333 ,1050,1049,4353 }, - {7948,7947,7896 ,3625,4354,4355 }, {3446,3472,5608 ,3718,3155,4356 }, - {6276,6116,7094 ,4316,4170,4317 }, {3309,7110,7109 ,3892,1990,4112 }, - {3707,3706,3651 ,3981,4143,3888 }, {3553,3552,3519 ,3957,4167,4357 }, - {3520,3553,3519 ,4358,3957,4357 }, {4004,731,4003 ,3908,3965,4186 }, - {3773,3758,3812 ,4279,1789,1513 }, {1003,2910,393 ,4187,3946,2400 }, - {3881,3880,3832 ,4154,2320,2322 }, {3271,3396,3316 ,1727,3867,2149 }, - {3289,3328,3307 ,2056,3973,2057 }, {4022,8111,5353 ,3503,4359,851 }, - {1630,924,56 ,1016,3634,2606 }, {3451,3537,3516 ,1720,1735,1721 }, - {4600,4653,4599 ,4360,4347,4210 }, {3566,3052,2397 ,1146,3715,3669 }, - {5385,4157,5304 ,3865,3755,654 }, {3883,3921,3920 ,4149,4070,4267 }, - {3753,3752,3706 ,4014,4063,4143 }, {7983,8095,8105 ,4361,4362,3791 }, - {4002,1003,4001 ,4188,4187,2380 }, {2544,2622,601 ,2451,2840,3905 }, - {149,454,2471 ,3736,4363,3653 }, {3456,2920,2557 ,1145,1799,3620 }, - {4165,1483,87 ,640,4084,641 }, {3502,3553,3520 ,3958,3957,4358 }, - {3331,3390,3364 ,1183,3509,1184 }, {2043,143,918 ,4100,157,4150 }, - {4056,2421,4161 ,1123,2568,4364 }, {3457,2043,918 ,4099,4100,4150 }, - {5833,141,5832 ,544,681,3904 }, {3757,3756,3710 ,2281,4255,4236 }, - {6186,3518,5488 ,4365,4338,2730 }, {7203,7240,7220 ,4366,4312,4367 }, - {3130,3086,3087 ,3414,3413,3573 }, {6997,6996,6957 ,4368,4369,4315 }, - {507,5309,505 ,1523,987,986 }, {3812,3758,3813 ,1513,1789,1515 }, - {115,3081,3241 ,2901,1017,3504 }, {3096,115,3241 ,4234,2901,3504 }, - {1657,1552,3156 ,1781,2266,3164 }, {923,924,1630 ,4370,3634,1016 }, - {1663,923,1630 ,1015,4370,1016 }, {923,3640,924 ,4370,4371,3634 }, - {149,219,924 ,3736,3087,3634 }, {3640,149,924 ,4371,3736,3634 }, - {1383,1296,788 ,336,335,976 }, {53,2346,2573 ,4372,3252,3253 }, - {3882,3883,3920 ,4288,4149,4267 }, {6958,6997,6957 ,4314,4368,4315 }, - {7397,7371,7372 ,1186,3748,4373 }, {3513,3404,3327 ,441,2170,439 }, - {268,1664,751 ,645,2268,1365 }, {3811,3854,3853 ,4323,1512,3902 }, - {2651,2397,2381 ,1516,3669,3672 }, {6997,5752,6996 ,4368,4374,4369 }, - {3112,3993,3132 ,2795,2807,2796 }, {6285,7109,7095 ,3923,4112,3924 }, - {3170,1160,3211 ,3510,3661,3605 }, {869,2681,2346 ,4375,3254,3252 }, - {53,869,2346 ,4372,4375,3252 }, {3450,2464,2681 ,3330,3299,3254 }, - {869,3450,2681 ,4375,3330,3254 }, {7039,7038,5752 ,4376,3832,4374 }, - {7109,6285,3309 ,4112,3923,3892 }, {3651,3650,3624 ,3888,4008,4009 }, - {3749,3748,5380 ,652,4034,653 }, {3373,1804,3897 ,693,2902,4262 }, - {6276,6287,6286 ,4316,4377,4349 }, {4770,5238,5263 ,4345,4351,4302 }, - {3009,5701,5683 ,3747,3938,3939 }, {2624,3405,1153 ,3132,1798,2245 }, - {1794,3616,2795 ,4129,3974,3975 }, {3377,3378,3427 ,1443,1442,4378 }, - {6509,8092,8074 ,1452,2267,2460 }, {4032,3170,3129 ,3638,3510,3412 }, - {2829,1107,1106 ,2620,2656,1664 }, {6997,7039,5752 ,4368,4376,4374 }, - {1066,2558,105 ,680,977,249 }, {2850,2833,2803 ,3657,2065,3655 }, - {2910,3004,393 ,3946,2437,2400 }, {5238,5239,5263 ,4351,482,4302 }, - {5198,5218,4710 ,423,483,4136 }, {3486,3487,3540 ,4379,3356,3357 }, - {6390,2256,5950 ,3868,2323,2873 }, {538,53,3569 ,4380,4372,4381 }, - {3468,3467,3439 ,2688,3992,2689 }, {1387,1908,3636 ,2951,1058,1060 }, - {1378,1339,3449 ,925,4339,2440 }, {3334,3333,3309 ,399,3893,3892 }, - {3502,3520,3501 ,3958,4358,4176 }, {3921,3964,3920 ,4070,3964,4267 }, - {3706,3705,3650 ,4143,4144,4008 }, {3501,3519,3500 ,4176,4357,4177 }, - {3519,3552,3500 ,4357,4167,4177 }, {3552,3551,3500 ,4167,4180,4177 }, - {3602,3625,3601 ,3889,4382,4007 }, {3625,3651,3601 ,4382,3888,4007 }, - {1693,2693,1249 ,264,3416,2876 }, {1524,1907,3818 ,4326,1245,1244 }, - {1109,1160,4032 ,4383,3661,3638 }, {1109,3096,1160 ,4383,4234,3661 }, - {149,3640,923 ,3736,4371,4370 }, {2218,409,454 ,4384,1480,4363 }, - {1303,687,831 ,1933,1665,3334 }, {3428,3459,3458 ,3261,3241,4385 }, - {3378,3428,3427 ,1442,3261,4378 }, {88,3637,1453 ,3581,4386,3355 }, - {3636,88,1453 ,1060,3581,3355 }, {3378,3428,3406 ,1442,3261,399 }, - {6277,6287,6276 ,4387,4377,4316 }, {3266,4775,495 ,3884,4388,4389 }, - {3913,2698,4248 ,841,105,3256 }, {6133,3518,7084 ,4390,4338,4391 }, - {1487,3194,2150 ,531,1065,534 }, {3571,3572,3589 ,3652,1931,1932 }, - {3531,53,538 ,4392,4372,4380 }, {5936,6143,6125 ,4393,4394,4395 }, - {382,3732,3318 ,3534,3536,4036 }, {4630,4710,4709 ,827,4136,4396 }, - {5815,5816,5832 ,4065,545,3904 }, {3439,3467,3438 ,2689,3992,3912 }, - {3502,3501,3466 ,3958,4176,4175 }, {3650,3705,3676 ,4008,4144,4328 }, - {3705,3730,3676 ,4144,4270,4328 }, {3730,3675,3676 ,4270,4300,4328 }, - {3730,3751,3675 ,4270,4263,4300 }, {3751,3729,3675 ,4263,4249,4300 }, - {4004,4003,3963 ,3908,4186,4208 }, {3964,4004,3963 ,3964,3908,4208 }, - {3651,3624,3601 ,3888,4009,4007 }, {3602,3651,3625 ,3889,3888,4382 }, - {6186,7084,3518 ,4365,4391,4338 }, {1334,3218,3748 ,1935,3976,4034 }, - {1003,393,4001 ,4187,2400,2380 }, {3321,3322,3354 ,2461,1182,1293 }, - {3853,3888,3852 ,3902,4204,4248 }, {3756,3810,3755 ,4255,3901,4025 }, - {3772,5882,3728 ,4250,4397,4251 }, {3131,4033,4032 ,3732,4398,3638 }, - {3130,3131,4032 ,3414,3732,3638 }, {225,1109,4032 ,4399,4383,3638 }, - {4033,225,4032 ,4398,4399,3638 }, {3901,3096,1109 ,4400,4234,4383 }, - {225,3901,1109 ,4399,4400,4383 }, {3901,3949,3096 ,4400,4401,4234 }, - {2010,115,3096 ,4402,2901,4234 }, {3949,2010,3096 ,4401,4402,4234 }, - {2415,1663,115 ,4403,1015,2901 }, {2010,2415,115 ,4402,4403,2901 }, - {1301,923,1663 ,4404,4370,1015 }, {2415,1301,1663 ,4403,4404,1015 }, - {182,149,923 ,4405,3736,4370 }, {1301,182,923 ,4404,4405,4370 }, - {182,230,149 ,4405,4406,3736 }, {12,454,149 ,4407,4363,3736 }, - {230,12,149 ,4406,4407,3736 }, {130,2218,454 ,2341,4384,4363 }, - {12,130,454 ,4407,2341,4363 }, {150,409,2218 ,1481,1480,4384 }, - {6509,8074,5013 ,1452,2460,684 }, {2218,130,150 ,4384,2341,1481 }, - {3427,3428,3458 ,4378,3261,4385 }, {3459,3487,3486 ,3241,3356,4379 }, - {3958,3998,3957 ,294,381,295 }, {1946,131,4384 ,4408,2965,4409 }, - {2522,549,2451 ,2678,1129,2102 }, {495,3788,1341 ,4389,4410,3841 }, - {7777,7776,7730 ,4411,4412,4413 }, {1378,3687,3564 ,925,924,4340 }, - {1339,1378,3564 ,4339,925,4340 }, {3382,3407,3381 ,870,3012,871 }, - {3050,538,3532 ,4414,4380,4415 }, {3479,3531,538 ,4416,4392,4380 }, - {3050,3479,538 ,4414,4416,4380 }, {3479,53,3531 ,4416,4372,4392 }, - {295,869,53 ,4417,4375,4372 }, {3479,295,53 ,4416,4417,4372 }, - {295,2645,3450 ,4417,4418,3330 }, {869,295,3450 ,4375,4417,3330 }, - {3535,840,3450 ,442,68,3330 }, {2645,3535,3450 ,4418,442,3330 }, - {3687,3873,3782 ,924,1809,4344 }, {3488,3542,3487 ,1980,979,3356 }, - {3888,3887,3852 ,4204,4056,4248 }, {3853,3852,3809 ,3902,4248,3903 }, - {3707,3754,3706 ,3981,4071,4143 }, {3754,3753,3706 ,4071,4014,4143 }, - {3520,3519,3501 ,4358,4357,4176 }, {3467,3502,3466 ,3992,3958,4175 }, - {731,3224,1003 ,3965,3947,4187 }, {3224,2910,1003 ,3947,3946,4187 }, - {7691,450,449 ,4419,1653,1169 }, {3390,3439,3389 ,3509,2689,3913 }, - {3467,3466,3438 ,3992,4175,3912 }, {3738,1940,3841 ,3900,3925,3927 }, - {3710,3756,3708 ,4236,4255,3980 }, {3564,3687,3782 ,4340,924,4344 }, - {3873,3475,3370 ,1809,1559,2303 }, {3782,3873,3370 ,4344,1809,2303 }, - {4162,4129,5805 ,1738,3812,3999 }, {7075,7074,7038 ,4420,2747,3832 }, - {498,2010,3949 ,4421,4402,4401 }, {3901,498,3949 ,4400,4421,4401 }, - {2088,55,1155 ,1667,3507,3333 }, {3458,3459,3486 ,4385,3241,4379 }, - {1096,1975,3637 ,2727,4422,4386 }, {88,1096,3637 ,3581,2727,4386 }, - {7039,7075,7038 ,4376,4420,3832 }, {4600,4653,4679 ,4360,4347,3852 }, - {7451,7479,7423 ,3963,4423,3749 }, {630,879,3370 ,2491,1155,2303 }, - {3475,630,3370 ,1559,2491,2303 }, {543,495,1341 ,3840,4389,3841 }, - {7983,4744,5026 ,4361,4424,4225 }, {3617,3532,3375 ,4425,4415,4426 }, - {1208,1586,689 ,3211,943,1363 }, {2527,2486,2487 ,2637,2814,4427 }, - {2831,2832,2868 ,639,638,1577 }, {5845,6174,5113 ,143,2381,141 }, - {3604,3653,3603 ,3384,1440,3890 }, {3810,3809,3755 ,3901,3903,4025 }, - {1975,1096,784 ,4422,2727,4211 }, {498,2415,2010 ,4421,4403,4402 }, - {3696,3742,3741 ,2325,3419,3447 }, {3695,3696,3741 ,4428,2325,3447 }, - {300,183,499 ,3508,4429,4430 }, {3091,1390,300 ,3262,2964,3508 }, - {4617,4924,7074 ,4431,2745,2747 }, {7075,4617,7074 ,4420,4431,2747 }, - {5337,4866,5354 ,572,3641,3882 }, {1922,3244,4397 ,4432,4433,4434 }, - {2407,2258,6484 ,4001,1198,685 }, {3924,3923,3887 ,3847,3849,4056 }, - {6316,2162,6390 ,4435,3278,3868 }, {1299,295,3479 ,4436,4417,4416 }, - {295,3041,2645 ,4417,3182,4418 }, {3902,5970,4104 ,4437,3518,3519 }, - {2314,2223,2256 ,3742,2336,2323 }, {3426,3485,2615 ,4438,3524,2788 }, - {2566,3426,2615 ,2635,4438,2788 }, {2615,3485,2646 ,2788,3524,3070 }, - {2646,3485,2686 ,3070,3524,3071 }, {3539,3588,2740 ,3525,4439,3456 }, - {2686,3539,2740 ,3071,3525,3456 }, {2740,3588,3619 ,3456,4439,3956 }, - {3588,3641,2790 ,4439,4440,3576 }, {3619,3588,2790 ,3956,4439,3576 }, - {3641,3694,2832 ,4440,3915,638 }, {2790,3641,2832 ,3576,4440,638 }, - {3393,3392,3333 ,4441,3860,3893 }, {6467,6484,2223 ,4000,685,2336 }, - {3365,3333,3309 ,4240,3893,3892 }, {3132,4034,4033 ,2796,4442,4398 }, - {3131,3132,4033 ,3732,2796,4398 }, {4034,97,225 ,4442,4443,4399 }, - {4033,4034,225 ,4398,4442,4399 }, {1110,3901,225 ,4444,4400,4399 }, - {97,1110,225 ,4443,4444,4399 }, {585,498,3901 ,4445,4421,4400 }, - {1110,585,3901 ,4444,4445,4400 }, {919,2415,498 ,4446,4403,4421 }, - {585,919,498 ,4445,4446,4421 }, {54,1301,2415 ,4447,4404,4403 }, - {919,54,2415 ,4446,4447,4403 }, {224,182,1301 ,4448,4405,4404 }, - {54,224,1301 ,4447,4448,4404 }, {3056,230,182 ,4449,4406,4405 }, - {224,3056,182 ,4448,4449,4405 }, {400,12,230 ,4450,4407,4406 }, - {3056,400,230 ,4449,4450,4406 }, {95,130,12 ,3482,2341,4407 }, - {400,95,12 ,4450,3482,4407 }, {1798,89,130 ,4451,1482,2341 }, - {1155,300,499 ,3333,3508,4430 }, {1096,2749,784 ,2727,3286,4211 }, - {784,2749,2428 ,4211,3286,371 }, {1155,499,957 ,3333,4430,4452 }, - {1626,831,3253 ,564,3334,565 }, {3184,2618,3895 ,4453,4454,4455 }, - {831,1155,957 ,3334,3333,4452 }, {1004,4078,31 ,3452,4341,3450 }, - {8108,8066,8128 ,2287,960,959 }, {3770,3050,3617 ,4456,4414,4425 }, - {3346,3770,3617 ,4457,4456,4425 }, {3424,3479,3050 ,4458,4416,4414 }, - {3770,3424,3050 ,4456,4458,4414 }, {3635,1299,3479 ,4459,4436,4416 }, - {3424,3635,3479 ,4458,4459,4416 }, {3635,295,1299 ,4459,4417,4436 }, - {3635,1860,3041 ,4459,3183,3182 }, {295,3635,3041 ,4417,4459,3182 }, - {3618,1860,4204 ,37,3183,38 }, {832,3094,1059 ,613,634,678 }, - {3955,3995,3994 ,3538,3540,2806 }, {4617,1166,4924 ,4431,2746,2745 }, - {3365,3393,3333 ,4240,4441,3893 }, {2471,454,2536 ,3653,4363,2793 }, - {55,652,1383 ,3507,334,336 }, {1296,2558,788 ,335,977,976 }, - {3442,3441,3413 ,4460,2987,3814 }, {3393,3413,3392 ,4441,3814,3860 }, - {3342,2364,177 ,2514,2513,3618 }, {1558,919,585 ,4461,4446,4445 }, - {3643,3696,3695 ,2344,2325,4428 }, {3642,3643,3695 ,4462,2344,4428 }, - {3378,3406,3428 ,1442,399,3261 }, {6260,6053,5320 ,3397,4463,4464 }, - {7241,7240,7203 ,4465,4312,4366 }, {6996,5752,6957 ,4369,4374,4315 }, - {3335,3365,3309 ,4222,4240,3892 }, {2536,454,409 ,2793,4363,1480 }, - {3346,3375,4098 ,4457,4426,353 }, {1303,831,1626 ,1933,3334,564 }, - {2743,3944,3931 ,923,729,1868 }, {53,2573,3569 ,4372,3253,4381 }, - {3895,2618,3376 ,4455,4454,4466 }, {3539,3570,3588 ,3525,4467,4439 }, - {730,960,1985 ,1549,1326,1547 }, {1378,3449,8135 ,925,2440,2439 }, - {3420,3299,3474 ,3785,3232,3808 }, {58,2013,1332 ,2156,2242,3492 }, - {224,400,3056 ,4448,4450,4449 }, {8,4522,220 ,3341,3481,3340 }, - {1390,151,183 ,2964,2966,4429 }, {300,1390,183 ,3508,2964,4429 }, - {8131,7714,7983 ,2307,4468,4361 }, {1383,3091,300 ,336,3262,3508 }, - {55,1383,300 ,3507,336,3508 }, {3390,3389,3363 ,3509,3913,1911 }, - {3119,2681,2747 ,3223,3254,3224 }, {3805,3804,3772 ,4264,4324,4250 }, - {831,957,3253 ,3334,4452,565 }, {3299,637,3474 ,3232,3805,3808 }, - {366,1202,1204 ,4469,339,338 }, {3826,3770,3346 ,4470,4456,4457 }, - {784,4204,1860 ,4211,38,3183 }, {912,309,1166 ,4471,4472,2746 }, - {2162,2314,2256 ,3278,3742,2323 }, {3211,1160,3241 ,3605,3661,3504 }, - {4617,912,1166 ,4431,4471,2746 }, {79,3421,3278 ,1510,1156,1158 }, - {1537,4191,3802 ,4473,4474,4475 }, {3377,3427,3426 ,1443,4378,4438 }, - {2487,3377,3426 ,4427,1443,4438 }, {3427,3486,3485 ,4378,4379,3524 }, - {3426,3427,3485 ,4438,4378,3524 }, {3486,3540,3539 ,4379,3357,3525 }, - {3485,3486,3539 ,3524,4379,3525 }, {3540,3571,3570 ,3357,3652,4467 }, - {3539,3540,3570 ,3525,3357,4467 }, {3571,3589,3588 ,3652,1932,4439 }, - {3570,3571,3588 ,4467,3652,4439 }, {3589,3642,3641 ,1932,4462,4440 }, - {3588,3589,3641 ,4439,1932,4440 }, {3642,3695,3694 ,4462,4428,3915 }, - {3641,3642,3694 ,4440,4462,3915 }, {3695,3741,2907 ,4428,3447,111 }, - {3694,3695,2907 ,3915,4428,111 }, {3792,3791,2907 ,3421,3739,111 }, - {3741,3792,2907 ,3447,3421,111 }, {3881,3919,3918 ,4154,4268,2335 }, - {3420,3474,3685 ,3785,3808,3809 }, {3312,3420,3685 ,3782,3785,3809 }, - {4035,4034,3132 ,1601,4442,2796 }, {3993,4035,3132 ,2807,1601,2796 }, - {4035,2151,97 ,1601,1603,4443 }, {4034,4035,97 ,4442,1601,4443 }, - {2151,349,1110 ,1603,566,4444 }, {97,2151,1110 ,4443,1603,4444 }, - {3253,585,1110 ,565,4445,4444 }, {349,3253,1110 ,566,565,4444 }, - {957,1558,585 ,4452,4461,4445 }, {3253,957,585 ,565,4452,4445 }, - {2071,919,1558 ,4476,4446,4461 }, {957,2071,1558 ,4452,4476,4461 }, - {499,54,919 ,4430,4447,4446 }, {2071,499,919 ,4476,4430,4446 }, - {183,224,54 ,4429,4448,4447 }, {499,183,54 ,4430,4429,4447 }, - {151,400,224 ,2966,4450,4448 }, {183,151,224 ,4429,2966,4448 }, - {220,95,400 ,3340,3482,4450 }, {151,220,400 ,2966,3340,4450 }, - {3590,3643,3642 ,1867,2344,4462 }, {3589,3590,3642 ,1932,1867,4462 }, - {4037,4036,3994 ,3541,1602,2806 }, {958,3312,3685 ,3779,3782,3809 }, - {3393,3442,3413 ,4441,4460,3814 }, {1068,958,3685 ,3761,3779,3809 }, - {939,3346,4350 ,3354,4457,740 }, {1453,3826,3346 ,3355,4470,4457 }, - {939,1453,3346 ,3354,3355,4457 }, {3992,3770,3826 ,4477,4456,4470 }, - {1453,3992,3826 ,3355,4477,4470 }, {3637,3424,3770 ,4386,4458,4456 }, - {3992,3637,3770 ,4477,4386,4456 }, {1975,3635,3424 ,4422,4459,4458 }, - {3637,1975,3424 ,4386,4422,4458 }, {1975,784,1860 ,4422,4211,3183 }, - {3635,1975,1860 ,4459,4422,3183 }, {2829,1106,1062 ,2620,1664,1232 }, - {4031,2585,2474 ,3069,875,874 }, {8007,2287,2250 ,3854,3735,3716 }, - {8077,8113,3421 ,2078,1157,1156 }, {8096,5057,6796 ,1796,1795,2617 }, - {957,499,2071 ,4452,4430,4476 }, {131,220,151 ,2965,3340,2966 }, - {912,2240,2375 ,4471,4478,4479 }, {254,2472,2039 ,2008,2009,1655 }, - {3995,4037,3994 ,3540,3541,2806 }, {3278,1724,2851 ,1158,3880,3051 }, - {1668,1208,689 ,3212,3211,1363 }, {872,958,1068 ,2962,3779,3761 }, - {836,872,1068 ,3551,2962,3761 }, {1453,3637,3992 ,3355,4386,4477 }, - {3211,3169,3170 ,3605,2810,3510 }, {309,912,2375 ,4472,4471,4479 }, - {3427,3458,3486 ,4378,4385,4379 }, {1564,1922,1085 ,368,4432,369 }, - {1085,1859,703 ,369,4480,100 }, {1859,1625,703 ,4480,388,100 }, - {1859,4222,1625 ,4480,530,388 }, {4181,23,4100 ,2273,2272,4481 }, - {1933,4181,1695 ,470,2273,471 }, {4131,1087,2026 ,1656,4482,130 }, - {2026,1087,870 ,130,4482,2274 }, {1063,1092,1366 ,4483,4484,4485 }, - {1092,1424,1366 ,4484,2298,4485 }, {5728,5766,5727 ,4486,4487,514 }, - {4181,4100,1695 ,2273,4481,471 }, {245,1458,1148 ,4488,4489,160 }, - {1148,1458,1925 ,160,4489,161 }, {4061,4064,4060 ,4490,1880,2099 }, - {5766,5765,5727 ,4487,540,514 }, {4107,1932,770 ,4491,2141,275 }, - {1396,4107,770 ,34,4491,275 }, {4262,2,702 ,4492,4493,2699 }, - {4090,4148,4108 ,1487,2305,2304 }, {416,2091,604 ,556,4494,486 }, - {4090,4108,4089 ,1487,2304,4495 }, {2,265,443 ,4493,4496,920 }, - {1932,1792,2352 ,2141,324,390 }, {4090,4089,4070 ,1487,4495,4497 }, - {1600,311,209 ,4498,246,4499 }, {4257,4276,4275 ,698,1446,699 }, - {461,2,443 ,399,4493,920 }, {1792,955,1375 ,324,3991,325 }, {4109,4126,4175 ,576,124,4500 }, - {5700,5728,5727 ,4501,4486,514 }, {4061,4060,3347 ,4490,2099,2098 }, - {494,787,175 ,3041,209,211 }, {1872,1836,1808 ,2459,2490,4502 }, - {443,697,59 ,920,3578,967 }, {493,494,175 ,1785,3041,211 }, {8119,5261,8116 ,184,173,172 }, - {4175,3784,4218 ,4500,2252,4503 }, {5699,5700,5727 ,43,4501,514 }, - {6311,6390,8114 ,1097,3868,2286 }, {121,4155,1730 ,4504,4505,4506 }, - {665,761,760 ,1754,1826,3106 }, {1310,229,737 ,149,221,150 }, - {3867,1101,1851 ,4507,2,4241 }, {251,491,1517 ,603,487,600 }, - {3794,3795,3796 ,3449,3448,2969 }, {2423,1225,2428 ,433,327,371 }, - {2427,2254,3117 ,3237,3705,3407 }, {4357,4405,2941 ,4508,4509,109 }, - {3792,4357,2941 ,3421,4508,109 }, {4405,2940,2941 ,4509,110,109 }, - {4499,1205,2940 ,4510,3187,110 }, {5282,4827,5334 ,1194,2734,2736 }, - {2310,2504,4146 ,2442,2898,3730 }, {3794,3796,4259 ,3449,2969,4511 }, - {3794,4305,3793 ,3449,4512,3420 }, {3793,4357,3792 ,3420,4508,3421 }, - {4474,2940,4405 ,4513,110,4509 }, {4474,4499,2940 ,4513,4510,110 }, - {4474,1205,4499 ,4513,3187,4510 }, {596,548,549 ,1462,938,1129 }, - {23,1441,1063 ,2272,1485,4483 }, {4070,4069,4064 ,4497,1881,1880 }, - {4146,3844,2310 ,3730,2443,2442 }, {3585,4493,3447 ,3806,4514,3928 }, - {4533,64,3447 ,4515,297,3928 }, {4493,4533,3447 ,4514,4515,3928 }, - {4533,207,64 ,4515,4516,297 }, {4472,4491,1653 ,2189,107,106 }, - {237,236,99 ,869,2444,3743 }, {3794,4259,4305 ,3449,4511,4512 }, - {4434,4405,4357 ,4517,4509,4508 }, {4434,4474,4405 ,4517,4513,4509 }, - {4499,1205,4474 ,4510,3187,4513 }, {549,548,450 ,1129,938,1653 }, - {1425,121,1730 ,4518,4504,4506 }, {477,478,64 ,4519,2077,297 }, - {207,477,64 ,4516,4519,297 }, {1212,1178,4075 ,4520,206,4521 }, - {8109,5521,8110 ,2938,751,1140 }, {4357,4381,4434 ,4508,4522,4517 }, - {4474,4500,4499 ,4513,4523,4510 }, {1529,277,478 ,4524,85,2077 }, - {477,1529,478 ,4519,4524,2077 }, {1529,276,277 ,4524,4525,85 }, - {5641,5657,5640 ,510,48,2214 }, {4381,4357,4305 ,4522,4508,4512 }, - {4332,4381,4305 ,4526,4522,4512 }, {4434,4453,4474 ,4517,4527,4513 }, - {4453,4500,4474 ,4527,4523,4513 }, {4371,3864,3972 ,3489,3517,3487 }, - {276,463,277 ,4525,1941,85 }, {38,74,110 ,742,2053,743 }, {5680,5679,5640 ,50,2553,2214 }, - {8037,8050,4589 ,4528,4529,776 }, {3950,5352,3799 ,4530,3502,4531 }, - {4277,4259,4240 ,4532,4511,2060 }, {4332,4305,4259 ,4526,4512,4511 }, - {4277,4332,4259 ,4532,4526,4511 }, {4406,4381,4434 ,399,4522,4517 }, - {4381,4406,4434 ,4522,399,4517 }, {4381,4453,4434 ,4522,4527,4517 }, - {4500,366,1204 ,4523,4469,338 }, {4099,4327,561 ,4533,2377,2379 }, - {122,1467,755 ,4534,4535,1615 }, {4113,1178,1212 ,207,206,4520 }, - {504,4330,513 ,4536,399,377 }, {467,504,513 ,346,4536,377 }, - {4161,2421,2695 ,4364,2568,3453 }, {4259,3796,4240 ,4511,2969,2060 }, - {5641,5640,5599 ,510,2214,2213 }, {4260,4277,4240 ,3527,4532,2060 }, - {4358,4381,4332 ,4537,4522,4526 }, {4407,4406,4381 ,4538,399,4522 }, - {4358,4407,4381 ,4537,4538,4522 }, {4407,4435,4381 ,4538,4539,4522 }, - {4406,4407,4381 ,399,4538,4522 }, {4381,4435,4453 ,4522,4539,4527 }, - {4453,4501,4500 ,4527,4540,4523 }, {4501,4538,366 ,4540,4541,4469 }, - {4500,4501,366 ,4523,4540,4469 }, {342,343,1993 ,4542,4543,4544 }, - {4471,4472,1653 ,2187,2189,106 }, {513,1154,1343 ,377,4545,378 }, - {1343,1154,4399 ,378,4545,4546 }, {8111,4022,6836 ,4359,3503,852 }, - {2697,3977,3327 ,2006,440,439 }, {6892,6905,5626 ,2507,2506,1460 }, - {4359,4358,4332 ,4547,4537,4526 }, {4277,4359,4332 ,4532,4547,4526 }, - {4359,4407,4358 ,4547,4538,4537 }, {4453,4475,4501 ,4527,4548,4540 }, - {4538,1040,366 ,4541,1476,4469 }, {2240,3978,3945 ,4478,4549,4550 }, - {2313,321,1222 ,438,60,62 }, {378,1467,122 ,4551,4535,4534 }, - {4397,1859,1085 ,4434,4480,369 }, {8095,8090,8105 ,4362,412,3791 }, - {8131,7983,8105 ,2307,4361,3791 }, {2955,3761,3750 ,3640,218,690 }, - {5569,5570,5599 ,2075,508,2213 }, {4306,4359,4277 ,4552,4547,4532 }, - {4407,4408,4435 ,4538,4553,4539 }, {4435,4408,4453 ,4539,4553,4527 }, - {4453,4408,4475 ,4527,4553,4548 }, {4475,1904,4501 ,4548,2164,4540 }, - {1904,1906,4538 ,2164,1509,4541 }, {4501,1904,4538 ,4540,2164,4541 }, - {1906,1040,4538 ,1509,1476,4541 }, {1224,1201,1040 ,1508,1477,1476 }, - {887,4131,4222 ,4554,1656,530 }, {4156,887,4222 ,4555,4554,530 }, - {887,1087,4131 ,4554,4482,1656 }, {8113,8077,1724 ,1157,2078,3880 }, - {4360,4359,4306 ,4556,4547,4552 }, {4360,4382,4359 ,4556,4557,4547 }, - {4408,4407,4359 ,4553,4538,4547 }, {4382,4408,4359 ,4557,4553,4547 }, - {4476,1904,4475 ,4558,2164,4548 }, {1904,1224,1906 ,2164,1508,1509 }, - {649,492,175 ,1579,1580,211 }, {365,4521,606 ,402,179,180 }, - {1424,1528,1807 ,2298,4559,4560 }, {1807,1528,608 ,4560,4559,2300 }, - {1366,1424,1807 ,4485,2298,4560 }, {1087,1531,870 ,4482,4561,2274 }, - {1531,4107,1396 ,4561,4491,34 }, {3761,1463,3750 ,218,220,690 }, - {4307,4360,4306 ,4562,4556,4552 }, {4307,4382,4360 ,4562,4557,4556 }, - {4476,4475,4408 ,4558,4548,4553 }, {3977,2697,66 ,440,2006,4563 }, - {1222,4521,365 ,62,179,402 }, {4515,1651,1609 ,30,188,31 }, {260,4311,4312 ,1573,468,467 }, - {870,1531,1396 ,2274,4561,34 }, {1284,23,1063 ,4564,2272,4483 }, - {1509,377,1792 ,4565,4311,324 }, {1932,1509,1792 ,2141,4565,324 }, - {5223,5222,5182 ,3851,4566,4567 }, {1268,5301,2238 ,4568,2698,2697 }, - {1691,1101,2473 ,2326,2,4303 }, {6735,6742,3192 ,3472,3422,3063 }, - {489,2473,1101 ,3639,4303,2 }, {1868,1783,2217 ,2249,2251,4569 }, - {1783,3038,2217 ,2251,4342,4569 }, {4409,4436,4408 ,4570,4571,4553 }, - {4382,4409,4408 ,4557,4570,4553 }, {4436,4437,4408 ,4571,4572,4553 }, - {4437,3049,4476 ,4572,2803,4558 }, {4408,4437,4476 ,4553,4572,4558 }, - {4476,3049,1904 ,4558,2803,2164 }, {5834,5835,1942 ,543,4573,2337 }, - {4280,4159,413 ,1242,1299,351 }, {1837,363,380 ,997,427,2540 }, - {102,4312,4313 ,432,467,4574 }, {1079,987,1832 ,4575,2950,4576 }, - {4103,1731,604 ,4577,485,486 }, {4104,2504,3902 ,3519,2898,4437 }, - {23,1284,4100 ,2272,4564,4481 }, {2588,14,91 ,2072,1986,1984 }, - {1792,377,955 ,324,4311,3991 }, {3784,4239,4217 ,2252,2254,83 }, - {465,604,4304 ,4578,486,4579 }, {4888,4932,5379 ,3997,4580,3998 }, - {4653,4679,5182 ,4347,3852,4567 }, {8000,8023,7999 ,4581,4582,4583 }, - {4361,3938,4382 ,4584,3572,4557 }, {4307,4361,4382 ,4562,4584,4557 }, - {4382,3938,4409 ,4557,3572,4570 }, {3938,4437,4436 ,3572,4572,4571 }, - {4409,3938,4436 ,4570,3572,4571 }, {659,1730,802 ,71,4506,400 }, - {6949,6989,6947 ,4585,4586,4587 }, {2834,4961,2403 ,2860,2905,2904 }, - {1051,6,1858 ,4588,4589,4590 }, {1305,2892,3763 ,466,918,3753 }, - {1940,64,11 ,3925,297,299 }, {4356,4433,4432 ,155,4591,156 }, - {2504,2583,3902 ,2898,2672,4437 }, {4383,4311,490 ,399,468,469 }, - {210,1695,194 ,4592,471,4593 }, {4218,3784,4217 ,4503,2252,83 }, - {1695,4100,1933 ,471,4481,470 }, {4890,4918,4933 ,4594,4595,4596 }, - {3088,3132,3131 ,3290,2796,3732 }, {1091,5236,160 ,4597,4301,4295 }, - {1101,1691,1851 ,2,2326,4241 }, {4361,3939,3938 ,4584,3539,3572 }, - {3938,3112,4437 ,3572,2795,4572 }, {4437,3112,3049 ,4572,2795,2803 }, - {4253,4398,4048 ,4598,4599,4600 }, {1625,4251,4192 ,388,132,4601 }, - {4380,4452,4451 ,4602,2398,271 }, {2375,2240,3945 ,4479,4478,4550 }, - {771,1669,2707 ,3799,3798,235 }, {5986,1251,5563 ,4603,4604,4605 }, - {1976,4351,2390 ,1180,4606,1594 }, {4074,890,2959 ,4607,3283,4608 }, - {1421,1223,490 ,4609,2182,469 }, {207,4533,4493 ,4516,4515,4514 }, - {4494,207,4493 ,4610,4516,4514 }, {50,651,2709 ,4611,3591,3523 }, - {2856,3344,588 ,3821,1861,3822 }, {3938,3090,3112 ,3572,2805,2795 }, - {3112,3089,3049 ,2795,2794,2803 }, {0,4253,4048 ,4612,4598,4600 }, - {376,1564,842 ,379,368,4613 }, {5835,212,1942 ,4573,4614,2337 }, - {1633,4103,466 ,373,4577,347 }, {1051,793,6 ,4588,4200,4589 }, - {4889,4890,4933 ,4615,4594,4596 }, {5571,5643,1350 ,4616,4617,509 }, - {302,683,223 ,622,621,1985 }, {987,66,1832 ,2950,4563,4576 }, - {1748,1421,490 ,4618,4609,469 }, {1225,1223,57 ,327,2182,222 }, - {3786,1418,1934 ,4074,4619,4620 }, {275,1529,477 ,4621,4524,4519 }, - {1,4062,969 ,4622,4623,4199 }, {4080,1883,4253 ,4624,4625,4598 }, - {735,2012,1345 ,224,2212,203 }, {1462,1927,710 ,2338,1196,33 }, - {4829,4799,4770 ,4626,4627,4345 }, {5194,4395,4373 ,727,726,3288 }, - {2892,771,3763 ,918,3799,3753 }, {4192,4182,118 ,4601,435,1124 }, - {7008,7007,6967 ,3176,4628,4629 }, {275,276,1529 ,4621,4525,4524 }, - {1162,463,276 ,4630,1941,4525 }, {275,1162,276 ,4621,4630,4525 }, - {1631,504,467 ,4631,4536,346 }, {2044,558,465 ,4031,4151,4578 }, - {463,1631,467 ,1941,4631,346 }, {504,513,4330 ,4536,377,399 }, - {1070,1560,245 ,4632,4633,4488 }, {7804,7856,7803 ,4634,4635,4636 }, - {4062,500,969 ,4623,4637,4199 }, {802,439,1346 ,400,4638,484 }, - {4080,4253,316 ,4624,4598,4639 }, {5817,5818,5834 ,701,4640,543 }, - {4398,759,4242 ,4599,4641,4642 }, {1949,217,216 ,3637,4643,4644 }, - {1976,2390,1977 ,1180,1594,1503 }, {1747,1731,979 ,266,485,267 }, - {1154,513,4331 ,4545,377,4645 }, {4075,1993,344 ,4521,4544,562 }, - {4933,4918,4966 ,4596,4595,4646 }, {4239,85,4217 ,2254,2504,83 }, - {4714,4777,5267 ,1031,3917,4647 }, {1426,4062,500 ,4648,4623,4637 }, - {1377,4069,630 ,2651,1881,2491 }, {4329,4355,4380 ,1247,1447,4602 }, - {1742,1562,7051 ,707,4649,547 }, {1153,8087,6797 ,2245,385,2246 }, - {4149,4174,4148 ,1486,769,2305 }, {379,1114,1467 ,2299,2256,4535 }, - {1070,245,1163 ,4632,4488,2211 }, {4156,4222,1859 ,4555,530,4480 }, - {4502,4156,1859 ,4650,4555,4480 }, {1212,4075,447 ,4520,4521,4651 }, - {122,755,4113 ,4534,1615,207 }, {245,1560,1458 ,4488,4633,4489 }, - {1441,1092,1063 ,1485,4484,4483 }, {1308,1306,4245 ,4652,4653,4654 }, - {510,2092,191 ,4655,4656,4657 }, {759,4265,4242 ,4641,4658,4642 }, - {1858,6,217 ,4590,4589,4643 }, {4088,4124,4087 ,4659,2306,4660 }, - {4355,4356,4380 ,1447,155,4602 }, {196,607,94 ,152,2207,1858 }, - {2261,608,672 ,4661,2300,4662 }, {887,4050,1087 ,4554,4663,4482 }, - {1087,4050,1531 ,4482,4663,4561 }, {4107,4396,1932 ,4491,4664,2141 }, - {4145,660,67 ,101,387,1125 }, {4175,4218,4217 ,4500,4503,83 }, - {2660,890,4074 ,455,3283,4607 }, {512,1308,4245 ,4665,4652,4654 }, - {4279,1489,4139 ,4666,4667,4668 }, {362,4048,192 ,4669,4600,4670 }, - {215,71,81 ,4671,4672,4673 }, {5818,5835,5834 ,4640,4573,543 }, - {4124,4123,4087 ,2306,133,4660 }, {4109,4175,4149 ,576,4500,1486 }, - {1925,698,1425 ,161,4674,4518 }, {4396,377,1509 ,4664,4311,4565 }, - {1932,4396,1509 ,2141,4664,4565 }, {608,378,672 ,2300,4551,4662 }, - {754,1063,800 ,4675,4483,4676 }, {1063,1366,800 ,4483,4485,4676 }, - {1807,608,2261 ,4560,2300,4661 }, {4262,699,2 ,4492,4677,4493 }, - {4197,4258,4238 ,82,84,4678 }, {3532,4074,4057 ,4415,4607,272 }, - {209,311,648 ,4499,246,4679 }, {4141,1489,4279 ,4680,4667,4666 }, - {4398,4242,192 ,4599,4642,4670 }, {5802,5801,5765 ,4681,700,540 }, - {783,2663,688 ,679,3593,765 }, {4253,4049,4398 ,4598,4682,4599 }, - {4088,4087,630 ,4659,4660,2491 }, {4069,4088,630 ,1881,4659,2491 }, - {1308,512,1883 ,4652,4665,4625 }, {5684,4106,3345 ,4683,1742,3476 }, - {1595,4145,67 ,99,101,1125 }, {4356,4403,4380 ,155,154,4602 }, - {376,979,1731 ,379,267,485 }, {3532,2660,4074 ,4415,455,4607 }, - {4137,4095,1259 ,399,349,348 }, {124,5482,2661 ,2206,3565,4684 }, - {1284,1063,754 ,4564,4483,4675 }, {229,457,116 ,221,214,217 }, - {1695,1933,701 ,471,470,4685 }, {1933,4100,4274 ,470,4481,4686 }, - {1933,4274,701 ,470,4686,4685 }, {4257,4238,4276 ,698,4678,1446 }, - {4111,1871,1872 ,4687,2458,2459 }, {889,770,844 ,35,275,4688 }, - {4048,4398,192 ,4600,4599,4670 }, {215,81,422 ,4671,4673,4689 }, - {216,215,422 ,4644,4671,4689 }, {5766,5802,5765 ,4487,4681,540 }, - {4087,879,630 ,4660,1155,2491 }, {65,71,215 ,4690,4672,4671 }, - {1926,1308,1883 ,4691,4652,4625 }, {1462,710,4177 ,2338,33,2339 }, - {4160,2012,735 ,223,2212,224 }, {3375,3532,4057 ,4426,4415,272 }, - {1425,698,121 ,4518,4674,4504 }, {4350,3346,4098 ,740,4457,353 }, - {3585,4494,4493 ,3806,4610,4514 }, {5199,5240,5219 ,422,481,1860 }, - {476,275,477 ,4692,4621,4519 }, {2,658,265 ,4493,4693,4496 }, - {4137,1259,4095 ,399,348,349 }, {4251,4470,4182 ,132,4694,435 }, - {4352,3299,3990 ,4695,3232,3231 }, {345,1489,4119 ,4696,4667,4697 }, - {362,192,71 ,4669,4670,4672 }, {1306,655,345 ,4653,1122,4696 }, - {3324,3304,3305 ,881,1050,879 }, {4098,3375,4057 ,353,4426,272 }, - {1935,3172,4289 ,4098,4155,4152 }, {275,318,463 ,4621,4698,1941 }, - {1162,275,463 ,4630,4621,1941 }, {1695,701,194 ,471,4685,4593 }, - {463,318,1631 ,1941,4698,4631 }, {504,4118,513 ,4536,4699,377 }, - {1113,117,4213 ,10,9,1070 }, {4117,4156,4502 ,4700,4555,4650 }, - {4117,4157,4156 ,4700,3755,4555 }, {4252,887,4156 ,4021,4554,4555 }, - {3141,4127,4176 ,4701,4702,4703 }, {4227,5237,5307 ,1564,1800,461 }, - {443,444,702 ,920,922,2699 }, {2255,939,4350 ,3229,3354,740 }, - {683,196,223 ,621,152,1985 }, {345,4161,1489 ,4696,4364,4667 }, - {4161,4210,1489 ,4364,4704,4667 }, {5801,5802,5817 ,700,4681,701 }, - {65,362,71 ,4690,4669,4672 }, {2859,31,4139 ,3451,3450,4668 }, - {824,4245,2092 ,4705,4654,4656 }, {4245,1306,345 ,4654,4653,4696 }, - {4177,889,379 ,2339,35,2299 }, {265,4539,697 ,4496,633,3578 }, - {4157,4252,4156 ,3755,4021,4555 }, {4252,4102,887 ,4021,4706,4554 }, - {4155,699,4262 ,4505,4677,4492 }, {5237,2086,1525 ,1800,1802,1866 }, - {4102,4050,887 ,4706,4663,4554 }, {1531,1530,4107 ,4561,4707,4491 }, - {1530,4314,4396 ,4707,1864,4664 }, {4107,1530,4396 ,4491,4707,4664 }, - {4058,4061,3347 ,4708,4490,2098 }, {4081,1079,1926 ,4709,4575,4691 }, - {759,824,2092 ,4641,4705,4656 }, {4279,4139,563 ,4666,4668,4710 }, - {0,4048,362 ,4612,4600,4669 }, {4062,1426,500 ,4623,4648,4637 }, - {3317,4069,1377 ,1882,1881,2651 }, {3452,987,1079 ,1794,2950,4575 }, - {416,466,2091 ,556,347,4494 }, {466,604,2091 ,347,486,4494 }, - {3622,1935,4289 ,4106,4098,4152 }, {4201,4181,4051 ,436,2273,437 }, - {4314,2086,377 ,1864,1802,4311 }, {4396,4314,377 ,4664,1864,4311 }, - {447,4075,344 ,4651,4521,562 }, {4977,4999,4998 ,4711,4712,4713 }, - {4276,4302,4356 ,1446,3727,155 }, {6563,2343,8061 ,464,2685,453 }, - {5573,5237,1525 ,2217,1800,1866 }, {558,416,465 ,4151,556,4578 }, - {4109,4090,4076 ,576,1487,577 }, {1467,4084,755 ,4535,205,1615 }, - {66,2697,45 ,4563,2006,4714 }, {3532,3617,3050 ,4415,4425,4414 }, - {21,3946,1089 ,1231,1230,103 }, {133,284,1241 ,1719,139,313 }, - {2695,2859,4210 ,3453,3451,4704 }, {4161,2695,4210 ,4364,3453,4704 }, - {759,2092,510 ,4641,4656,4655 }, {5802,5818,5817 ,4681,4640,701 }, - {510,191,263 ,4655,4657,4715 }, {71,27,81 ,4672,303,4673 }, {4087,4123,879 ,4660,133,1155 }, - {4062,1426,4082 ,4623,4648,4716 }, {502,604,465 ,2301,486,4578 }, - {4058,4065,4061 ,4708,4717,4490 }, {279,325,4691 ,2176,2088,2089 }, - {1163,4160,1223 ,2211,223,2182 }, {4151,510,263 ,839,4655,4715 }, - {175,4262,702 ,211,4492,2699 }, {1619,3196,1686 ,1003,2581,1004 }, - {192,4242,43 ,4670,4642,304 }, {4312,490,1225 ,467,469,327 }, - {413,4159,4235 ,351,1299,985 }, {4082,3452,1079 ,4716,1794,4575 }, - {4238,4258,4302 ,4678,84,3727 }, {193,864,867 ,1448,840,1121 }, - {4079,4113,1212 ,4718,207,4520 }, {672,378,122 ,4662,4551,4534 }, - {4824,1602,4886 ,4719,2329,4720 }, {84,3759,2030 ,4231,4233,770 }, - {2995,2254,2702 ,2856,3705,2854 }, {4400,4450,3585 ,4721,4722,3806 }, - {637,4400,3585 ,3805,4721,3806 }, {4495,4494,3585 ,4723,4610,3806 }, - {4450,4495,3585 ,4722,4723,3806 }, {4238,4302,4276 ,4678,3727,1446 }, - {4257,4238,4276 ,698,4678,1446 }, {4258,4303,4302 ,84,3728,3727 }, - {1150,683,681 ,741,621,620 }, {2697,2255,45 ,2006,3229,4714 }, - {1006,962,1100 ,234,233,2466 }, {4101,1600,209 ,4724,4498,4499 }, - {192,43,27 ,4670,304,303 }, {4059,4193,609 ,363,4725,4726 }, - {1195,4347,4395 ,725,3287,726 }, {1150,774,683 ,741,767,621 }, - {4139,31,4078 ,4668,3450,4341 }, {7799,7825,7798 ,4727,3768,4728 }, - {4779,4778,4716 ,4729,3916,1030 }, {122,4113,4079 ,4534,207,4718 }, - {841,122,4079 ,4730,4534,4718 }, {4065,1253,4067 ,4717,2353,185 }, - {756,1748,490 ,4731,4618,469 }, {4311,756,490 ,468,4731,469 }, - {4494,4495,207 ,4610,4723,4516 }, {1366,1807,4133 ,4485,4560,4732 }, - {4263,2420,4056 ,274,273,1123 }, {38,1150,681 ,742,741,620 }, - {4062,1,4063 ,4623,4622,4733 }, {808,4472,5295 ,4734,2189,2188 }, - {71,192,27 ,4672,4670,303 }, {4051,1695,210 ,437,471,4592 }, - {5681,5700,5699 ,2934,4501,43 }, {4071,4070,4064 ,186,4497,1880 }, - {4335,4265,4151 ,838,4658,839 }, {4242,642,43 ,4642,1243,304 }, - {3347,206,4058 ,2098,3932,4708 }, {4121,4139,4078 ,4735,4668,4341 }, - {0,362,65 ,4612,4669,4690 }, {3271,8125,8117 ,1727,752,4119 }, - {216,65,215 ,4644,4690,4671 }, {5618,5420,103 ,127,4228,128 }, - {1931,4644,5019 ,4736,2425,2384 }, {4067,4071,4065 ,185,186,4717 }, - {240,4724,1790 ,1571,4737,4738 }, {260,1210,4311 ,1573,4739,468 }, - {4183,1210,260 ,1572,4739,1573 }, {1070,4073,1560 ,4632,4740,4633 }, - {1730,4262,175 ,4506,4492,211 }, {476,477,207 ,4692,4519,4516 }, - {1134,476,207 ,4741,4692,4516 }, {800,1366,4133 ,4676,4485,4732 }, - {1441,4093,1092 ,1485,1484,4484 }, {4182,661,4201 ,435,2297,436 }, - {4470,880,661 ,4694,1483,2297 }, {4242,4265,642 ,4642,4658,1243 }, - {770,805,844 ,275,389,4688 }, {208,4114,1259 ,4742,362,348 }, - {143,2043,781 ,157,4100,158 }, {1421,1163,1223 ,4609,2211,2182 }, - {4313,2423,102 ,4574,433,432 }, {4265,4335,642 ,4658,838,1243 }, - {1481,654,231 ,194,93,92 }, {759,510,4151 ,4641,4655,839 }, {5986,5563,4550 ,4603,4605,716 }, - {4148,4123,4124 ,2305,133,2306 }, {322,46,5 ,1250,2232,350 }, - {4942,5420,5618 ,4191,4228,127 }, {1092,1462,4116 ,4484,2338,2340 }, - {4376,4073,1070 ,4743,4740,4632 }, {1560,2001,1458 ,4633,4744,4489 }, - {4116,4177,379 ,2340,2339,2299 }, {4376,1421,1748 ,4743,4609,4618 }, - {275,129,318 ,4621,730,4698 }, {4274,4100,72 ,4686,4481,4745 }, - {4376,1163,1421 ,4743,2211,4609 }, {4093,1462,1092 ,1484,2338,4484 }, - {5420,84,103 ,4228,4231,128 }, {5162,4942,5618 ,181,4191,127 }, - {4491,4519,226 ,107,4746,108 }, {1926,1832,1308 ,4691,4576,4652 }, - {4049,512,824 ,4682,4665,4705 }, {1992,214,781 ,834,87,158 }, - {3132,3088,3089 ,2796,3290,2794 }, {21,1089,5203 ,1231,103,102 }, - {614,609,1367 ,1397,4726,574 }, {4059,609,614 ,363,4726,1397 }, - {4265,759,4151 ,4658,4641,839 }, {802,1730,4130 ,400,4506,210 }, - {608,379,378 ,2300,2299,4551 }, {824,512,4245 ,4705,4665,4654 }, - {3577,531,3369 ,4059,3829,3836 }, {4403,4432,4452 ,154,156,2398 }, - {4148,4173,4123 ,2305,134,133 }, {4196,4195,4173 ,4747,4748,134 }, - {4540,891,4526 ,19,189,187 }, {1163,4376,1070 ,2211,4743,4632 }, - {4274,72,701 ,4686,4745,4685 }, {1631,753,504 ,4631,4749,4536 }, - {504,753,4118 ,4536,4749,4699 }, {4134,658,2 ,4750,4693,4493 }, - {4100,1284,1368 ,4481,4564,4751 }, {1458,825,1925 ,4489,4752,161 }, - {3562,5944,3943 ,4753,4754,4755 }, {4394,4273,4796 ,4044,120,4756 }, - {1445,1469,1397 ,2359,2361,2358 }, {825,698,1925 ,4752,4674,161 }, - {4100,1368,72 ,4481,4751,4745 }, {4081,1926,4080 ,4709,4691,4624 }, - {844,805,1115 ,4688,389,2257 }, {1345,2012,1846 ,203,2212,204 }, - {705,4132,659 ,70,162,71 }, {4151,263,208 ,839,4715,4742 }, {4504,4151,208 ,4757,839,4742 }, - {1833,4151,4504 ,317,839,4757 }, {111,3014,258 ,1154,3568,3001 }, - {1625,4192,660 ,388,4601,387 }, {316,4253,0 ,4639,4598,4612 }, - {4380,4403,4452 ,4602,154,2398 }, {1308,1832,1306 ,4652,4576,4653 }, - {4148,4196,4173 ,2305,4747,134 }, {3946,2893,1089 ,1230,1679,103 }, - {214,466,142 ,87,347,159 }, {4076,4090,4070 ,577,1487,4497 }, - {262,194,312 ,4758,4593,4759 }, {4083,4102,4252 ,3754,4706,4021 }, - {670,4144,5043 ,4760,4761,4762 }, {1459,4050,4102 ,4017,4663,4706 }, - {4083,1459,4102 ,3754,4017,4706 }, {1459,4066,4050 ,4017,4763,4663 }, - {658,4243,265 ,4693,4764,4496 }, {376,1731,4103 ,379,485,4577 }, - {1926,1883,4080 ,4691,4625,4624 }, {4051,4181,1933 ,437,2273,470 }, - {2092,4245,4141 ,4656,4654,4680 }, {4093,4234,1462 ,1484,1197,2338 }, - {4234,1927,1462 ,1197,1196,2338 }, {563,4139,4121 ,4710,4668,4735 }, - {2031,2122,2067 ,1560,1128,1592 }, {81,27,545 ,4673,303,305 }, - {104,774,1150 ,4765,767,741 }, {4280,4335,1833 ,1242,838,317 }, - {4195,4216,4173 ,4748,1241,134 }, {979,1595,67 ,267,99,1125 }, - {702,444,649 ,2699,922,1579 }, {4243,317,265 ,4764,561,4496 }, - {4066,1459,1531 ,4763,4017,4561 }, {4050,4066,1531 ,4663,4763,4561 }, - {1459,1561,1530 ,4017,1865,4707 }, {1531,1459,1530 ,4561,4017,4707 }, - {266,699,4155 ,4766,4677,4505 }, {121,266,4155 ,4504,4766,4505 }, - {21,5203,2030 ,1231,102,770 }, {3476,1941,3568 ,3838,1034,3839 }, - {1530,1561,4314 ,4707,1865,1864 }, {4174,4175,4217 ,769,4500,83 }, - {3532,538,2660 ,4415,4380,455 }, {5643,5642,1350 ,4617,526,509 }, - {655,4056,345 ,1122,1123,4696 }, {4141,4119,1489 ,4680,4697,4667 }, - {81,545,323 ,4673,305,4767 }, {4065,4071,4064 ,4717,186,1880 }, - {4081,4080,500 ,4709,4624,4637 }, {963,786,962 ,1341,2071,233 }, - {2536,3017,49 ,2793,3369,3367 }, {191,4279,4114 ,4657,4666,362 }, - {263,191,4114 ,4715,4657,362 }, {793,316,0 ,4200,4639,4612 }, - {4978,6414,6413 ,178,113,112 }, {2502,2331,2504 ,3740,2895,2898 }, - {4067,4068,4077 ,185,408,126 }, {702,2,443 ,2699,4493,920 }, - {699,4134,2 ,4677,4750,4493 }, {6351,8103,8077 ,1568,1291,2078 }, - {416,502,465 ,556,2301,4578 }, {604,1747,4304 ,486,266,4579 }, - {885,321,2313 ,216,60,438 }, {1591,1032,1318 ,1072,1581,164 }, - {4201,661,4181 ,436,2297,2273 }, {2707,1669,5162 ,235,3798,181 }, - {1489,4210,4139 ,4667,4704,4668 }, {4234,4093,880 ,1197,1484,1483 }, - {191,4141,4279 ,4657,4680,4666 }, {208,263,4114 ,4742,4715,362 }, - {1331,1411,2041 ,790,850,2737 }, {5839,5807,5840 ,4768,4769,4770 }, - {1333,1936,3300 ,849,848,694 }, {5288,5308,4868 ,3993,3528,3969 }, - {5970,4146,2504 ,3518,3730,2898 }, {609,1919,1367 ,4726,1779,574 }, - {609,4078,1919 ,4726,4341,1779 }, {4195,4237,4216 ,4748,697,1241 }, - {4347,3867,1851 ,3287,4507,4241 }, {793,0,6 ,4200,4612,4589 }, - {4237,4275,4256 ,697,699,3433 }, {500,4080,316 ,4637,4624,4639 }, - {45,195,655 ,4714,739,1122 }, {8096,4031,2474 ,1796,3069,874 }, - {8110,8125,3271 ,1140,752,1727 }, {2558,1066,19 ,977,680,1067 }, - {318,129,695 ,4698,730,731 }, {447,344,317 ,4651,562,561 }, {265,317,4539 ,4496,561,633 }, - {1186,1623,1624 ,1605,1709,1708 }, {658,1212,447 ,4693,4520,4651 }, - {4079,1212,658 ,4718,4520,4693 }, {94,607,82 ,1858,2207,138 }, - {315,413,4235 ,352,351,985 }, {1669,4942,5162 ,3798,4191,181 }, - {4056,4161,345 ,1123,4364,4696 }, {43,642,739 ,304,1243,2233 }, - {934,880,4470 ,131,1483,4694 }, {653,1259,4053 ,318,348,1371 }, - {49,3017,1015 ,3367,3369,3368 }, {805,24,1115 ,389,247,2257 }, - {5240,5284,5264 ,481,571,1192 }, {1532,217,1949 ,4771,4643,3637 }, - {500,316,793 ,4637,4639,4200 }, {969,500,793 ,4199,4637,4200 }, - {147,792,4712 ,3469,95,3816 }, {979,67,970 ,267,1125,268 }, {4251,4182,4192 ,132,435,4601 }, - {4375,1591,981 ,312,1072,2128 }, {4400,4401,4450 ,4721,4772,4722 }, - {1730,4155,4262 ,4506,4505,4492 }, {1633,376,4103 ,373,379,4577 }, - {664,760,663 ,1755,3106,4773 }, {672,122,266 ,4662,4534,4766 }, - {1179,207,4495 ,4774,4516,4723 }, {1210,261,4311 ,4739,4775,468 }, - {294,4375,1132 ,945,312,61 }, {4779,4803,4778 ,4729,4776,3916 }, - {237,99,100 ,869,3743,2823 }, {4095,614,1805 ,349,1397,1071 }, - {6122,8096,2072 ,1797,1796,1812 }, {180,1946,4385 ,4777,4408,4778 }, - {3299,4352,4400 ,3232,4695,4721 }, {1131,1728,1015 ,4779,4780,3368 }, - {89,1131,1015 ,1482,4779,3368 }, {1728,408,1015 ,4780,4781,3368 }, - {7,49,1015 ,4782,3367,3368 }, {408,7,1015 ,4781,4782,3368 }, - {4114,4279,563 ,362,4666,4710 }, {2709,7,50 ,3523,4782,4611 }, - {842,1564,1595 ,4613,368,99 }, {4049,759,4398 ,4682,4641,4599 }, - {1665,456,455 ,3077,301,2205 }, {2866,2867,1205 ,2655,2844,3187 }, - {806,706,843 ,4783,4784,2423 }, {1132,4375,981 ,61,312,2128 }, - {266,122,841 ,4766,4534,4730 }, {1179,1134,207 ,4774,4741,4516 }, - {4133,1807,672 ,4732,4560,4662 }, {1601,476,1134 ,4785,4692,4741 }, - {1179,1601,1134 ,4774,4785,4741 }, {6643,8122,8101 ,3133,384,383 }, - {3452,3513,3977 ,1794,441,440 }, {1284,754,4073 ,4564,4675,4740 }, - {476,129,275 ,4692,730,4621 }, {1368,1284,4073 ,4751,4564,4740 }, - {4706,4763,4704 ,4786,4787,4788 }, {4431,4380,4451 ,568,4602,271 }, - {1066,4336,19 ,680,4789,1067 }, {4336,4384,600 ,4789,4409,978 }, - {19,4336,600 ,1067,4789,978 }, {4063,1426,4062 ,4733,4648,4623 }, - {260,4312,102 ,1573,467,432 }, {8,4505,1798 ,3341,4790,4451 }, - {4505,1799,1798 ,4790,4791,4451 }, {1799,1131,89 ,4791,4779,1482 }, - {1798,1799,89 ,4451,4791,1482 }, {176,408,1728 ,4792,4781,4780 }, - {1131,176,1728 ,4779,4792,4780 }, {4114,563,4059 ,362,4710,363 }, - {3308,3294,7110 ,3894,3895,1990 }, {4059,563,4193 ,363,4710,4725 }, - {563,4121,4193 ,4710,4735,4725 }, {1595,1564,4145 ,99,368,101 }, - {1092,4116,1424 ,4484,2340,2298 }, {318,753,1631 ,4698,4749,4631 }, - {1807,2261,672 ,4560,4661,4662 }, {261,4333,4311 ,4775,4793,468 }, - {1368,4073,4376 ,4751,4740,4743 }, {5458,4129,4083 ,3756,3812,3754 }, - {226,4519,1150 ,108,4746,741 }, {4177,710,889 ,2339,33,35 }, - {4315,4337,4336 ,4794,4795,4789 }, {1066,4315,4336 ,680,4794,4789 }, - {4337,4385,4384 ,4795,4778,4409 }, {4336,4337,4384 ,4789,4795,4409 }, - {180,4455,8 ,4777,4796,3341 }, {4455,4505,8 ,4796,4790,3341 }, - {1797,176,1131 ,4797,4792,4779 }, {1799,1797,1131 ,4791,4797,4779 }, - {782,786,777 ,1648,2071,421 }, {4121,4078,609 ,4735,4341,4726 }, - {759,4049,824 ,4641,4682,4705 }, {4311,4333,756 ,468,4793,4731 }, - {379,844,1114 ,2299,4688,2256 }, {2070,1095,614 ,573,1910,1397 }, - {4238,4257,4276 ,4678,698,1446 }, {4083,4129,1459 ,3754,3812,4017 }, - {4129,3477,1459 ,3812,1736,4017 }, {800,4133,1458 ,4676,4732,4489 }, - {1560,800,2001 ,4633,4676,4744 }, {69,25,1319 ,321,2186,322 }, - {118,4051,210 ,1124,437,4592 }, {4315,1450,4337 ,4794,823,4795 }, - {4385,4413,180 ,4778,4798,4777 }, {4413,4455,180 ,4798,4796,4777 }, - {4506,1797,1799 ,4799,4797,4791 }, {4505,4506,1799 ,4790,4799,4791 }, - {573,823,408 ,4800,4801,4781 }, {176,573,408 ,4792,4800,4781 }, - {50,7,408 ,4611,4782,4781 }, {823,50,408 ,4801,4611,4781 }, {2092,4141,191 ,4656,4680,4657 }, - {4193,4121,609 ,4725,4735,4726 }, {934,4234,880 ,131,1197,1483 }, - {4245,4119,4141 ,4654,4697,4680 }, {1926,1079,1832 ,4691,4575,4576 }, - {3985,789,3858 ,4802,3910,4803 }, {66,1211,2697 ,4563,2007,2006 }, - {4085,1368,4376 ,4804,4751,4743 }, {4149,4148,4090 ,1486,2305,1487 }, - {4085,4376,1748 ,4804,4743,4618 }, {4237,4238,4257 ,697,4678,698 }, - {2001,800,1458 ,4744,4676,4489 }, {4276,4356,4355 ,1446,155,1447 }, - {4108,4124,4088 ,2304,2306,4659 }, {7029,2341,3008 ,548,845,546 }, - {3763,771,2707 ,3753,3799,235 }, {1808,1836,380 ,4502,2490,2540 }, - {4337,4338,4385 ,4795,4805,4778 }, {4385,4338,4413 ,4778,4805,4798 }, - {4456,4506,4505 ,4806,4799,4790 }, {4455,4456,4505 ,4796,4806,4790 }, - {4506,895,1797 ,4799,4807,4797 }, {895,573,176 ,4807,4800,4792 }, - {1797,895,176 ,4797,4807,4792 }, {73,50,823 ,4808,4611,4801 }, - {1621,73,823 ,4809,4808,4801 }, {148,651,50 ,4810,3591,4611 }, - {73,148,50 ,4808,4810,4611 }, {212,1208,1942 ,4614,3211,2337 }, - {4251,934,4470 ,132,131,4694 }, {6,0,65 ,4589,4612,4690 }, {884,4059,614 ,2160,363,1397 }, - {1259,4059,4095 ,348,363,349 }, {1306,45,655 ,4653,4714,1122 }, - {1467,1114,4084 ,4535,2256,205 }, {3872,5188,5786 ,4811,4812,4813 }, - {4197,4238,4196 ,82,4678,4747 }, {379,889,844 ,2299,35,4688 }, - {842,1595,979 ,4613,99,267 }, {261,312,756 ,4775,4759,4731 }, - {312,194,756 ,4759,4593,4731 }, {1458,4133,825 ,4489,4732,4752 }, - {4238,4237,4196 ,4678,697,4747 }, {43,739,545 ,304,2233,305 }, - {2650,4031,8096 ,914,3069,1796 }, {4316,4338,4337 ,4814,4805,4795 }, - {1450,4316,4337 ,823,4814,4795 }, {4414,4456,4455 ,4815,4806,4796 }, - {4413,4414,4455 ,4798,4815,4796 }, {4456,4507,4506 ,4806,4816,4799 }, - {4506,4507,895 ,4799,4816,4807 }, {452,1621,823 ,4817,4809,4801 }, - {573,452,823 ,4800,4817,4801 }, {73,2254,148 ,4808,3705,4810 }, - {4373,4347,1851 ,3288,3287,4241 }, {217,6,216 ,4643,4589,4644 }, - {6,65,216 ,4589,4690,4644 }, {4210,2859,4139 ,4704,3451,4668 }, - {4071,4076,4070 ,186,577,4497 }, {4084,2047,1600 ,205,2258,4498 }, - {455,4471,259 ,2205,2187,2203 }, {194,701,756 ,4593,4685,4731 }, - {698,266,121 ,4674,4766,4504 }, {918,416,558 ,4150,556,4151 }, - {4077,4125,4109 ,126,125,576 }, {4144,670,261 ,4761,4760,4775 }, - {670,312,261 ,4760,4759,4775 }, {1114,2047,4084 ,2256,2258,205 }, - {4313,4312,1225 ,4574,467,327 }, {1148,4132,705 ,160,162,70 }, - {259,4471,258 ,2203,2187,3001 }, {1340,4266,1450 ,822,4818,823 }, - {1450,4266,4316 ,823,4818,4814 }, {2254,2995,148 ,3705,2856,4810 }, - {4363,4414,4413 ,4819,4815,4798 }, {4338,4363,4413 ,4805,4819,4798 }, - {4415,4457,4456 ,4820,4821,4806 }, {4414,4415,4456 ,4815,4820,4806 }, - {4456,4457,4507 ,4806,4821,4816 }, {895,452,573 ,4807,4817,4800 }, - {752,2254,73 ,4822,3705,4808 }, {8086,8087,1153 ,4823,385,2245 }, - {4171,659,802 ,399,71,400 }, {4245,345,4119 ,4654,4696,4697 }, - {4135,1259,4179 ,1069,348,251 }, {4159,4280,1833 ,1299,1242,317 }, - {3793,4305,4357 ,3420,4512,4508 }, {664,663,568 ,1755,4773,1723 }, - {4149,4175,4174 ,1486,4500,769 }, {5136,5178,4630 ,1817,524,827 }, - {4089,4088,4069 ,4495,4659,1881 }, {4070,4089,4069 ,4497,4495,1881 }, - {3978,6679,6418 ,4549,4824,3441 }, {4084,4101,1178 ,205,4724,206 }, - {4084,1600,4101 ,205,4498,4724 }, {2,461,443 ,4493,399,920 }, - {660,4192,118 ,387,4601,1124 }, {3615,5681,5660 ,201,2934,3054 }, - {1090,4266,1340 ,2687,4818,822 }, {4266,4317,4316 ,4818,4825,4814 }, - {4317,4363,4338 ,4825,4819,4805 }, {4316,4317,4338 ,4814,4825,4805 }, - {4364,4415,4414 ,4826,4820,4815 }, {4363,4364,4414 ,4819,4826,4815 }, - {4507,1769,895 ,4816,4827,4807 }, {1769,1084,895 ,4827,4828,4807 }, - {1084,246,452 ,4828,4829,4817 }, {895,1084,452 ,4807,4828,4817 }, - {246,1654,1621 ,4829,4830,4809 }, {452,246,1621 ,4817,4829,4809 }, - {1654,73,1621 ,4830,4808,4809 }, {1654,167,73 ,4830,4831,4808 }, - {167,752,73 ,4831,4822,4808 }, {2659,8120,3286 ,3485,906,56 }, - {5182,5181,4631 ,4567,4319,1816 }, {1883,512,4049 ,4625,4665,4682 }, - {4446,2607,1300 ,237,2452,285 }, {4089,4108,4088 ,4495,2304,4659 }, - {5158,5182,4631 ,4832,4567,1816 }, {7,2709,49 ,4782,3523,3367 }, - {3039,2040,1090 ,2686,4833,2687 }, {323,545,46 ,4767,305,2232 }, - {4352,4401,4400 ,4695,4772,4721 }, {2043,11,781 ,4100,299,158 }, - {2040,537,1090 ,4833,4834,2687 }, {537,4267,4266 ,4834,4835,4818 }, - {1090,537,4266 ,2687,4834,4818 }, {4266,4267,4317 ,4818,4835,4825 }, - {4318,4364,4363 ,4836,4826,4819 }, {4317,4318,4363 ,4825,4836,4819 }, - {4457,4523,4507 ,4821,4837,4816 }, {4523,1084,1769 ,4837,4828,4827 }, - {4507,4523,1769 ,4816,4837,4827 }, {1589,167,1654 ,4838,4831,4830 }, - {2276,2254,752 ,4839,3705,4822 }, {167,2276,752 ,4831,4839,4822 }, - {123,48,1049 ,3607,4840,1362 }, {2276,3117,2254 ,4839,3407,3705 }, - {1883,4049,4253 ,4625,4682,4598 }, {8063,8061,8102 ,465,453,253 }, - {130,95,1798 ,2341,3482,4451 }, {642,4280,413 ,1243,1242,351 }, - {699,841,4079 ,4677,4730,4718 }, {825,4133,698 ,4752,4732,4674 }, - {67,118,359 ,1125,1124,4841 }, {67,359,970 ,1125,4841,268 }, - {4133,672,698 ,4732,4662,4674 }, {136,1179,4495 ,1685,4774,4723 }, - {5182,5180,5181 ,4567,1878,4319 }, {5197,1928,4518 ,4842,1282,1281 }, - {4267,4318,4317 ,4835,4836,4825 }, {4415,4458,4457 ,4820,4843,4821 }, - {4458,4477,4457 ,4843,4844,4821 }, {4457,4477,4523 ,4821,4844,4837 }, - {246,641,1654 ,4829,4845,4830 }, {641,1589,1654 ,4845,4838,4830 }, - {354,2276,167 ,4846,4839,4831 }, {2379,3117,2276 ,3238,3407,4839 }, - {354,2379,2276 ,4846,3238,4839 }, {4275,4276,4329 ,699,1446,1247 }, - {1600,24,311 ,4498,247,246 }, {1115,24,1600 ,2257,247,4498 }, - {2314,2407,6467 ,3742,4001,4000 }, {659,1425,1730 ,71,4518,4506 }, - {118,210,359 ,1124,4592,4841 }, {266,841,699 ,4766,4730,4677 }, - {1601,76,476 ,4785,689,4692 }, {1925,1425,659 ,161,4518,71 }, - {76,1632,476 ,689,2241,4692 }, {476,1632,129 ,4692,2241,730 }, - {462,318,695 ,4847,4698,731 }, {4470,661,4182 ,4694,2297,435 }, - {7479,7478,7422 ,4423,1402,1404 }, {537,4268,4267 ,4834,4848,4835 }, - {4267,4268,4318 ,4835,4848,4836 }, {4364,4386,4415 ,4826,4849,4820 }, - {4386,4438,4415 ,4849,4850,4820 }, {4415,4438,4458 ,4820,4850,4843 }, - {4458,4438,4477 ,4843,4850,4844 }, {1084,854,246 ,4828,4851,4829 }, - {854,641,246 ,4851,4845,4829 }, {4451,4452,4498 ,271,2398,88 }, - {4196,4237,4195 ,4747,697,4748 }, {376,842,979 ,379,4613,267 }, - {4216,4237,4256 ,1241,697,3433 }, {4504,208,653 ,4757,4742,318 }, - {323,46,706 ,4767,2232,4784 }, {698,672,266 ,4674,4662,4766 }, - {4073,754,1560 ,4740,4675,4633 }, {8095,7983,8062 ,4362,4361,3272 }, - {753,462,695 ,4749,4847,731 }, {318,462,753 ,4698,4847,4749 }, - {3618,735,3535 ,37,224,442 }, {1245,735,3618 ,36,224,37 }, {4130,1730,175 ,210,4506,211 }, - {4339,4340,4364 ,4852,4853,4826 }, {4318,4339,4364 ,4836,4852,4826 }, - {4340,4386,4364 ,4853,4849,4826 }, {4523,1770,1084 ,4837,4854,4828 }, - {1770,854,1084 ,4854,4851,4828 }, {894,10,641 ,4855,4856,4845 }, - {854,894,641 ,4851,4855,4845 }, {1878,1589,641 ,4857,4838,4845 }, - {10,1878,641 ,4856,4857,4845 }, {1392,167,1589 ,4858,4831,4838 }, - {1878,1392,1589 ,4857,4858,4838 }, {1392,354,167 ,4858,4846,4831 }, - {537,6199,4268 ,4834,4859,4848 }, {214,142,781 ,87,159,158 }, - {8089,8082,8097 ,254,454,1710 }, {46,322,843 ,2232,1250,2423 }, - {4053,1259,4135 ,1371,348,1069 }, {1833,4504,653 ,317,4757,318 }, - {1163,245,2012 ,2211,4488,2212 }, {1424,4116,379 ,2298,2340,2299 }, - {615,614,1095 ,766,1397,1910 }, {4065,4064,4061 ,4717,1880,4490 }, - {148,2995,651 ,4810,2856,3591 }, {4132,1925,659 ,162,161,71 }, - {754,800,1560 ,4675,4676,4633 }, {1808,4111,1872 ,4502,4687,2459 }, - {4268,4269,4318 ,4848,4860,4836 }, {4269,4340,4339 ,4860,4853,4852 }, - {4318,4269,4339 ,4836,4860,4852 }, {4477,1770,4523 ,4844,4854,4837 }, - {1770,1737,4523 ,4854,4861,4837 }, {4523,1737,1770 ,4837,4861,4854 }, - {1737,894,854 ,4861,4855,4851 }, {1770,1737,854 ,4854,4861,4851 }, - {1086,354,1392 ,4862,4846,4858 }, {4163,2379,354 ,4863,3238,4846 }, - {1086,4163,354 ,4862,4863,4846 }, {5334,4887,5376 ,2736,2735,2758 }, - {5950,8074,8066 ,2873,2460,960 }, {4765,4764,4706 ,3983,3982,4786 }, - {4095,4059,884 ,349,363,2160 }, {4182,4051,118 ,435,437,1124 }, - {5182,5221,5180 ,4567,4864,1878 }, {709,653,544 ,316,318,195 }, - {341,632,2193 ,1852,1380,1007 }, {735,1345,3535 ,224,203,442 }, - {72,1368,4085 ,4745,4751,4804 }, {3477,407,1459 ,1736,4018,4017 }, - {4773,4844,4804 ,4865,4866,4867 }, {1835,1871,1870 ,2421,2458,4868 }, - {5377,5411,5376 ,361,4284,2758 }, {4269,4284,4340 ,4860,4869,4853 }, - {4438,4478,4477 ,4850,4870,4844 }, {4477,4478,1770 ,4844,4870,4854 }, - {1770,4478,1737 ,4854,4870,4861 }, {693,1878,10 ,4871,4857,4856 }, - {693,1392,1878 ,4871,4858,4857 }, {213,4163,1086 ,3606,4863,4862 }, - {102,240,260 ,432,1571,1573 }, {4074,2959,4057 ,4607,4608,272 }, - {2012,245,1846 ,2212,4488,204 }, {683,396,196 ,621,153,152 }, - {245,1148,1846 ,4488,160,204 }, {226,111,1653 ,108,1154,106 }, - {379,1467,378 ,2299,4535,4551 }, {4315,1066,1450 ,4794,680,823 }, - {5243,5242,5180 ,3994,3843,1878 }, {6225,4321,5630 ,4872,4873,4874 }, - {701,72,1748 ,4685,4745,4618 }, {72,4085,1748 ,4745,4804,4618 }, - {5814,5815,5831 ,4875,4065,3943 }, {5799,5815,5814 ,4064,4065,4875 }, - {5798,5799,5814 ,4876,4064,4875 }, {5815,5832,5831 ,4065,3904,3943 }, - {3945,3978,6418 ,4550,4549,3441 }, {4229,4284,4269 ,4877,4869,4860 }, - {4387,4439,4438 ,4878,4879,4850 }, {4386,4387,4438 ,4849,4878,4850 }, - {4438,4439,4478 ,4850,4879,4870 }, {942,693,10 ,4880,4871,4856 }, - {894,942,10 ,4855,4880,4856 }, {228,1086,1392 ,4881,4862,4858 }, - {228,213,1086 ,4881,3606,4862 }, {1806,439,802 ,3124,4638,400 }, - {2431,1304,2476 ,2977,2639,2441 }, {5221,5243,5180 ,4864,3994,1878 }, - {4379,4380,4431 ,567,4602,568 }, {5265,5241,5242 ,4882,2120,3843 }, - {4158,802,1346 ,72,400,484 }, {2041,553,1331 ,2737,792,790 }, - {6346,7254,7860 ,4883,450,452 }, {697,113,59 ,3578,677,967 }, - {5243,5265,5242 ,3994,4882,3843 }, {600,4384,131 ,978,4409,2965 }, - {705,4537,1093 ,70,67,66 }, {1846,705,1093 ,204,70,66 }, {4174,4197,4148 ,769,82,2305 }, - {261,756,4333 ,4775,4731,4793 }, {5763,5799,5798 ,4212,4064,4876 }, - {5762,5763,5798 ,4884,4212,4876 }, {1220,875,1920 ,4885,579,581 }, - {7076,1076,7075 ,4886,4887,4420 }, {4284,4341,4340 ,4869,4888,4853 }, - {4341,4387,4386 ,4888,4878,4849 }, {4340,4341,4386 ,4853,4888,4849 }, - {4387,4416,4439 ,4878,4889,4879 }, {1738,942,894 ,4890,4880,4855 }, - {1737,1738,894 ,4861,4890,4855 }, {942,33,693 ,4880,4891,4871 }, - {1856,1392,693 ,4892,4858,4871 }, {33,1856,693 ,4891,4892,4871 }, - {1856,1457,1392 ,4892,4893,4858 }, {1457,228,1392 ,4893,4881,4858 }, - {3447,64,1940 ,3928,297,3925 }, {48,123,213 ,4840,3607,3606 }, - {5287,5286,5241 ,4003,3859,2120 }, {4144,261,1210 ,4761,4775,4739 }, - {1973,4685,4906 ,551,4894,4895 }, {5265,5287,5241 ,4882,4003,2120 }, - {5874,6090,6066 ,4896,4897,1455 }, {2390,1869,940 ,1594,2808,197 }, - {4158,1346,705 ,72,484,70 }, {701,1748,756 ,4685,4618,4731 }, - {3990,3254,4019 ,3231,3233,227 }, {1015,2536,409 ,3368,2793,1480 }, - {3549,588,3369 ,3823,3822,3836 }, {5724,5725,5762 ,4898,3824,4884 }, - {4246,4285,4284 ,3665,4899,4869 }, {4270,4246,4284 ,4900,3665,4869 }, - {4284,4285,4341 ,4869,4899,4888 }, {4341,4365,4387 ,4888,4901,4878 }, - {4387,4365,4416 ,4878,4901,4889 }, {4508,1738,1737 ,4902,4890,4861 }, - {4478,4508,1737 ,4870,4902,4861 }, {1738,986,942 ,4890,4903,4880 }, - {986,1493,942 ,4903,4904,4880 }, {942,1493,33 ,4880,4904,4891 }, - {285,1856,33 ,4905,4892,4891 }, {285,1457,1856 ,4905,4893,4892 }, - {285,228,1457 ,4905,4881,4893 }, {48,213,228 ,4840,3606,4881 }, - {2677,123,1050 ,3033,3607,2282 }, {642,413,739 ,1243,351,2233 }, - {3990,4353,4352 ,3231,4906,4695 }, {4101,209,1178 ,4724,4499,206 }, - {4313,1225,2423 ,4574,327,433 }, {653,208,1259 ,318,4742,348 }, - {1976,4351,2390 ,1180,4606,1594 }, {4351,1976,2390 ,4606,1180,1594 }, - {4351,801,2390 ,4606,4907,1594 }, {2390,801,1869 ,1594,4907,2808 }, - {4352,4353,4401 ,4695,4906,4772 }, {1946,180,131 ,4408,4777,2965 }, - {4539,93,113 ,633,563,677 }, {4835,8126,3148 ,2130,812,814 }, - {588,3368,3369 ,3822,3960,3836 }, {4285,4319,4341 ,4899,4908,4888 }, - {4341,4319,4365 ,4888,4908,4901 }, {4459,4508,4478 ,4909,4902,4870 }, - {4439,4459,4478 ,4879,4909,4870 }, {4508,4509,1738 ,4902,4910,4890 }, - {1738,4509,986 ,4890,4910,4903 }, {1493,598,33 ,4904,4911,4891 }, - {598,285,33 ,4911,4905,4891 }, {285,4143,228 ,4905,4912,4881 }, - {4143,4092,228 ,4912,4913,4881 }, {228,4092,48 ,4881,4913,4840 }, - {47,941,1049 ,4914,2277,1362 }, {48,47,1049 ,4840,4914,1362 }, - {45,2255,195 ,4714,3229,739 }, {1088,1623,1186 ,1604,1709,1605 }, - {142,466,143 ,159,347,157 }, {4367,4343,6225 ,228,1818,4872 }, - {1976,2006,4351 ,1180,1181,4606 }, {1869,363,4427 ,2808,427,426 }, - {2364,3343,2365 ,2513,2515,3351 }, {4243,447,317 ,4764,4651,561 }, - {340,960,730 ,1107,1326,1549 }, {5725,5763,5762 ,3824,4212,4884 }, - {5678,5679,5724 ,3861,2553,4898 }, {5522,5558,5557 ,755,2302,756 }, - {4246,4319,4285 ,3665,4908,4899 }, {4365,4417,4416 ,4901,4915,4889 }, - {4417,4459,4439 ,4915,4909,4879 }, {4416,4417,4439 ,4889,4915,4879 }, - {4460,4509,4508 ,4916,4910,4902 }, {4459,4460,4508 ,4909,4916,4902 }, - {986,599,1493 ,4903,4917,4904 }, {1493,599,598 ,4904,4917,4911 }, - {397,4092,4143 ,4918,4913,4912 }, {285,397,4143 ,4905,4918,4912 }, - {4092,4428,48 ,4913,4919,4840 }, {4428,47,48 ,4919,4914,4840 }, - {1834,1835,1870 ,2422,2421,4868 }, {4082,4081,500 ,4716,4709,4637 }, - {5418,5103,7917 ,3471,77,4920 }, {2255,4350,195 ,3229,740,739 }, - {987,3977,66 ,2950,440,4563 }, {2431,1511,967 ,2977,4921,3668 }, - {136,4495,4450 ,1685,4723,4722 }, {4496,136,4450 ,2220,1685,4722 }, - {4134,4079,658 ,4750,4718,4693 }, {1005,3818,3732 ,3535,1244,3536 }, - {3075,3981,3263 ,2670,915,252 }, {801,415,1869 ,4907,4922,2808 }, - {1869,415,363 ,2808,4922,427 }, {4091,3141,4126 ,123,4701,124 }, - {699,4079,4134 ,4677,4718,4750 }, {913,536,863 ,444,523,284 }, - {1343,4399,1564 ,378,4546,368 }, {443,265,697 ,920,4496,3578 }, - {5217,4763,4797 ,4026,4787,3984 }, {5679,5725,5724 ,2553,3824,4898 }, - {5308,5288,5289 ,3528,3993,80 }, {3837,4320,4319 ,3667,4923,4908 }, - {4246,3837,4319 ,3665,3667,4908 }, {4320,4366,4365 ,4923,4924,4901 }, - {4319,4320,4365 ,4908,4923,4901 }, {4365,4366,4417 ,4901,4924,4915 }, - {4418,4460,4459 ,4925,4916,4909 }, {4417,4418,4459 ,4915,4925,4909 }, - {4509,853,986 ,4910,4926,4903 }, {986,853,599 ,4903,4926,4917 }, - {598,397,285 ,4911,4918,4905 }, {4092,4168,4428 ,4913,4927,4919 }, - {4428,4168,47 ,4919,4927,4914 }, {4062,4082,500 ,4623,4716,4637 }, - {4159,1833,709 ,1299,317,316 }, {1117,5090,6418 ,4928,4929,3441 }, - {658,447,4243 ,4693,4651,4764 }, {223,196,157 ,1985,152,1877 }, - {1179,883,1601 ,4774,119,4785 }, {4399,1922,1564 ,4546,4432,368 }, - {1601,883,76 ,4785,119,689 }, {1307,4203,801 ,4930,4931,4907 }, - {801,4203,415 ,4907,4931,4922 }, {5340,5339,5286 ,4002,2223,3859 }, - {4302,166,4356 ,3727,3729,155 }, {4384,4385,1946 ,4409,4778,4408 }, - {545,739,46 ,305,2233,2232 }, {4110,467,1633 ,372,346,373 }, - {467,513,1633 ,346,377,373 }, {2153,164,3980 ,4181,4932,4933 }, - {3414,4528,2142 ,4934,4935,4936 }, {3837,4286,4320 ,3667,4274,4923 }, - {4366,4418,4417 ,4924,4925,4915 }, {4479,4524,4509 ,4937,4938,4910 }, - {4460,4479,4509 ,4916,4937,4910 }, {4509,4524,853 ,4910,4938,4926 }, - {599,750,598 ,4917,4939,4911 }, {598,750,397 ,4911,4939,4918 }, - {397,4168,4092 ,4918,4927,4913 }, {610,47,4168 ,4940,4914,4927 }, - {4282,941,47 ,4941,2277,4914 }, {610,4282,47 ,4940,4941,4914 }, - {4282,119,941 ,4941,2278,2277 }, {4054,4055,4058 ,3679,3678,4708 }, - {1528,1424,608 ,4559,2298,2300 }, {258,3014,259 ,3001,3568,2203 }, - {2006,1565,1307 ,1181,3737,4930 }, {1307,1565,4203 ,4930,3737,4931 }, - {415,380,363 ,4922,2540,427 }, {5287,5340,5286 ,4003,4002,3859 }, - {4109,4125,4126 ,576,125,124 }, {4058,1253,4065 ,4708,2353,4717 }, - {5103,5412,5378 ,77,360,359 }, {4298,4186,3616 ,3580,683,3974 }, - {4469,2153,3980 ,4060,4181,4933 }, {3009,5702,5701 ,3747,3630,3938 }, - {4366,4388,4418 ,4924,4942,4925 }, {4440,4479,4460 ,4943,4937,4916 }, - {4418,4440,4460 ,4925,4943,4916 }, {853,1563,599 ,4926,4944,4917 }, - {1563,1149,599 ,4944,4945,4917 }, {1149,1924,750 ,4945,4946,4939 }, - {599,1149,750 ,4917,4945,4939 }, {4219,4168,397 ,4947,4927,4918 }, - {657,4282,610 ,4948,4941,4940 }, {657,119,4282 ,4948,2278,4941 }, - {4081,4082,1079 ,4709,4716,4575 }, {4057,2959,2420 ,272,4608,273 }, - {5643,5659,5642 ,4617,3053,526 }, {4471,1653,258 ,2187,106,3001 }, - {1651,200,1609 ,188,244,31 }, {2742,1565,2006 ,2558,3737,1181 }, - {4203,796,415 ,4931,4949,4922 }, {415,796,380 ,4922,4949,2540 }, - {95,4522,1798 ,3482,3481,4451 }, {3604,3626,3654 ,3384,4196,1438 }, - {4451,4498,4497 ,271,88,91 }, {3727,4298,3616 ,3942,3580,3974 }, - {531,4469,3980 ,3829,4060,4933 }, {4320,4342,4366 ,4923,4950,4924 }, - {4342,4389,4388 ,4950,4951,4942 }, {4366,4342,4388 ,4924,4950,4942 }, - {4389,4440,4418 ,4951,4943,4925 }, {4388,4389,4418 ,4942,4951,4925 }, - {4524,1736,853 ,4938,4952,4926 }, {1736,773,853 ,4952,4953,4926 }, - {773,1563,853 ,4953,4944,4926 }, {773,1149,1563 ,4953,4945,4944 }, - {1924,98,397 ,4946,4954,4918 }, {750,1924,397 ,4939,4946,4918 }, - {98,769,397 ,4954,4955,4918 }, {769,4219,397 ,4955,4947,4918 }, - {769,4168,4219 ,4955,4927,4947 }, {656,610,4168 ,4956,4940,4927 }, - {656,657,610 ,4956,4948,4940 }, {2959,2419,2420 ,4608,3353,273 }, - {918,143,416 ,4150,157,556 }, {4019,4300,3990 ,227,231,3231 }, - {3626,3655,3654 ,4196,3936,1438 }, {4300,4301,3990 ,231,167,3231 }, - {1565,1972,4203 ,3737,3034,4931 }, {4203,1972,796 ,4931,3034,4949 }, - {796,1808,380 ,4949,4502,2540 }, {439,1806,1346 ,4638,3124,484 }, - {8088,6837,8100 ,1998,1057,1713 }, {463,360,277 ,1941,86,85 }, - {4301,4354,4353 ,167,376,4906 }, {3990,4301,4353 ,3231,167,4906 }, - {4354,4402,4401 ,376,2190,4772 }, {1869,4427,1839 ,2808,426,1138 }, - {792,4536,4712 ,95,89,3816 }, {4655,4681,4654 ,4957,4958,4348 }, - {5377,4904,5378 ,361,3309,359 }, {34,531,3980 ,3830,3829,4933 }, - {4342,4320,4286 ,4950,4923,4274 }, {3371,1941,3265 ,3708,1034,1033 }, - {4510,4524,4479 ,4959,4938,4937 }, {4510,1719,1736 ,4959,4960,4952 }, - {4524,4510,1736 ,4938,4959,4952 }, {1719,773,1736 ,4960,4953,4952 }, - {1149,98,1924 ,4945,4954,4946 }, {4169,4168,769 ,4961,4927,4955 }, - {4169,605,4168 ,4961,4962,4927 }, {605,656,4168 ,4962,4956,4927 }, - {657,26,119 ,4948,2126,2278 }, {26,460,119 ,2126,1999,2278 }, - {643,2602,546 ,3285,3234,1171 }, {466,4103,604 ,347,4577,486 }, - {66,2697,1211 ,4563,2006,2007 }, {478,613,64 ,2077,298,297 }, - {4353,4354,4401 ,4906,376,4772 }, {1565,511,1972 ,3737,3569,3034 }, - {453,301,82 ,1814,1857,138 }, {1972,1948,796 ,3034,2543,4949 }, - {796,1948,1808 ,4949,2543,4502 }, {915,916,863 ,443,445,284 }, - {4473,4450,4401 ,270,4722,4772 }, {4402,4473,4401 ,2190,270,4772 }, - {6679,1117,6418 ,4824,4928,3441 }, {4298,3727,5832 ,3580,3942,3904 }, - {3673,52,164 ,648,411,4932 }, {3294,3292,3293 ,3895,4067,1988 }, - {4461,4479,4440 ,4963,4937,4943 }, {4461,4511,4510 ,4963,4964,4959 }, - {4479,4461,4510 ,4937,4963,4959 }, {4511,1719,4510 ,4964,4960,4959 }, - {560,98,1149 ,4965,4954,4945 }, {769,1209,4169 ,4955,279,4961 }, - {4169,1209,605 ,4961,279,4962 }, {656,605,657 ,4956,4962,4948 }, - {1347,26,657 ,4966,2126,4948 }, {1427,1971,4740 ,2378,2520,2426 }, - {2504,2461,2583 ,2898,2899,2672 }, {4473,4496,4450 ,270,2220,4722 }, - {1972,1349,1948 ,3034,2519,2543 }, {103,84,2030 ,128,4231,770 }, - {1840,1869,1839 ,198,2808,1138 }, {136,883,1179 ,1685,119,4774 }, - {5679,5697,5725 ,2553,2552,3824 }, {2153,3673,164 ,4181,648,4932 }, - {7648,7697,7647 ,3952,651,4967 }, {4420,4440,4389 ,276,4943,4951 }, - {4419,4420,4389 ,4968,276,4951 }, {4420,4461,4440 ,276,4963,4943 }, - {594,1149,773 ,2453,4945,4953 }, {1149,594,560 ,4945,2453,4965 }, - {1209,769,98 ,279,4955,4954 }, {605,1347,657 ,4962,4966,4948 }, - {1919,1004,1452 ,1779,3452,1606 }, {1832,66,1306 ,4576,4563,4653 }, - {3569,2660,538 ,4381,455,4380 }, {3759,21,2030 ,4233,1231,770 }, - {1948,1427,1808 ,2543,2378,4502 }, {1808,1427,4111 ,4502,2378,4687 }, - {643,546,644 ,3285,1171,1176 }, {4111,1870,1871 ,4687,4868,2458 }, - {4126,4198,4175 ,124,4969,4500 }, {5389,1206,1734 ,4091,2218,2219 }, - {5784,4011,878 ,396,395,398 }, {5814,5831,5830 ,4875,3943,4163 }, - {3892,3905,6166 ,4970,4194,4971 }, {5798,5814,5830 ,4876,4875,4163 }, - {4343,4389,4342 ,1818,4951,4950 }, {4343,4420,4419 ,1818,276,4968 }, - {4389,4343,4419 ,4951,1818,4968 }, {893,773,1719 ,2454,4953,4960 }, - {893,594,773 ,2454,2453,4953 }, {98,1069,1209 ,4954,277,279 }, - {605,44,1347 ,4962,357,4966 }, {1347,70,26 ,4966,323,2126 }, - {66,45,1306 ,4563,4714,4653 }, {3668,959,8070 ,513,1358,941 }, - {4723,1676,4895 ,4972,2343,4973 }, {1049,1050,123 ,1362,2282,3607 }, - {1015,409,89 ,3368,1480,1482 }, {4111,4327,1870 ,4687,2377,4868 }, - {4175,4198,3784 ,4500,4969,2252 }, {2208,3801,5090 ,1257,4974,4929 }, - {1117,2208,5090 ,4928,1257,4929 }, {5389,1734,3113 ,4091,2219,410 }, - {4185,5389,3113 ,409,4091,410 }, {2960,5941,808 ,4975,4976,4734 }, - {4390,4420,4343 ,230,276,1818 }, {4512,4511,4461 ,2279,4964,4963 }, - {4511,4512,1719 ,4964,2279,4960 }, {4512,893,1719 ,2279,2454,4960 }, - {560,971,98 ,4965,356,4954 }, {98,971,1069 ,4954,356,277 }, {4138,44,605 ,278,357,4962 }, - {1209,4138,605 ,279,278,4962 }, {44,1793,1347 ,357,319,4966 }, - {1793,69,1347 ,319,321,4966 }, {1347,69,70 ,4966,321,323 }, {6836,3534,6353 ,852,942,749 }, - {5657,5680,5640 ,48,50,2214 }, {4056,4098,4263 ,1123,353,274 }, - {1846,1148,705 ,204,160,70 }, {844,1115,1114 ,4688,2257,2256 }, - {1115,1600,2047 ,2257,4498,2258 }, {4969,4992,1030 ,4977,4978,1619 }, - {356,1112,4194 ,310,292,293 }, {3346,3617,3375 ,4457,4425,4426 }, - {4329,4380,4379 ,1247,4602,567 }, {1427,4327,4111 ,2378,2377,4687 }, - {4327,4099,1870 ,2377,4533,4868 }, {4197,4196,4148 ,82,4747,2305 }, - {5412,5411,5377 ,360,4284,361 }, {4462,4461,4420 ,1076,4963,276 }, - {4462,4512,4461 ,1076,2279,4963 }, {1057,560,594 ,354,4965,2453 }, - {871,1057,594 ,2106,354,2453 }, {1057,971,560 ,354,356,4965 }, - {4836,137,4783 ,4979,4980,4981 }, {4833,4848,4822 ,4982,4983,4984 }, - {4687,274,4637 ,4985,1819,4986 }, {4176,4127,5163 ,4703,4702,4987 }, - {7374,7373,7348 ,4988,4989,4990 }, {4857,4873,509 ,4991,4992,4993 }, - {4886,1602,361 ,4720,2329,4994 }, {5030,5031,5047 ,2134,4995,4996 }, - {4688,4748,4687 ,4997,4998,4985 }, {574,616,4874 ,2181,4999,5000 }, - {4657,4716,4656 ,5001,1030,5002 }, {3801,3660,7052 ,4974,709,708 }, - {996,3784,4176 ,5003,2252,4703 }, {4614,4692,279 ,3109,2177,2176 }, - {2208,5088,5393 ,1257,5004,5005 }, {4716,4715,4656 ,1030,1029,5002 }, - {4657,4656,4605 ,5001,5002,5006 }, {4751,4880,417 ,5007,5008,5009 }, - {5016,561,4644 ,5010,2379,2425 }, {4644,561,4740 ,2425,2379,2426 }, - {8122,8114,8145 ,384,2286,3376 }, {3801,2208,5393 ,4974,1257,5005 }, - {4614,2322,4692 ,3109,3497,2177 }, {707,669,612 ,2091,2020,5011 }, - {1750,1751,1811 ,745,773,777 }, {1511,4377,967 ,4921,3090,3668 }, - {4935,4936,4973 ,5012,5013,5014 }, {3261,6554,4190 ,5015,3647,3439 }, - {8081,8078,8093 ,1445,1744,2288 }, {4604,4603,4562 ,5016,5017,5018 }, - {811,718,4954 ,557,2407,558 }, {4804,4833,4822 ,4867,4982,4984 }, - {4974,4996,4995 ,5019,5020,5021 }, {1264,1252,3929 ,5022,5023,5024 }, - {8091,8101,8099 ,2167,383,2867 }, {4817,1771,1834 ,2368,2367,2422 }, - {5350,6529,6507 ,1526,5025,2680 }, {4848,4886,417 ,4983,4720,5009 }, - {618,717,677 ,2391,2408,2296 }, {2301,8107,872 ,2132,658,2962 }, - {4749,4810,4785 ,5026,5027,5028 }, {4809,4855,4782 ,4202,4201,5029 }, - {4656,4715,4681 ,5002,1029,4958 }, {4686,4492,4773 ,5030,5031,4865 }, - {7593,7620,7645 ,5032,5033,5034 }, {4683,4647,4643 ,5035,5036,5037 }, - {5049,1928,4859 ,5038,1282,5039 }, {6942,6943,6962 ,521,520,3260 }, - {4871,1834,1870 ,5040,2422,4868 }, {4907,4935,4934 ,2209,5012,5041 }, - {8064,2341,1333 ,3141,845,849 }, {4954,720,812 ,558,2475,559 }, - {8089,2746,8139 ,254,1517,1923 }, {5063,5064,5062 ,5042,5043,5044 }, - {4607,4659,4658 ,5045,5046,5047 }, {4976,4998,4997 ,5048,4713,5049 }, - {4659,319,4658 ,5046,5050,5047 }, {319,367,4717 ,5050,1370,1449 }, - {4658,319,4717 ,5047,5050,1449 }, {8071,8144,3264 ,738,2469,2468 }, - {8127,8142,4106 ,2970,1743,1742 }, {4690,4721,383 ,5051,5052,2087 }, - {4907,576,674 ,2209,2208,2271 }, {717,4938,677 ,2408,5053,2296 }, - {2476,1283,2431 ,2441,2978,2977 }, {5966,1455,4987 ,5054,1917,1491 }, - {1346,2464,1697 ,484,3299,69 }, {1610,1676,749 ,2330,2343,2331 }, - {4934,4972,851 ,5041,2158,2155 }, {1610,1602,4855 ,2330,2329,4201 }, - {6755,6792,6738 ,5055,5056,5057 }, {1536,1581,1508 ,2080,2030,2029 }, - {4951,717,4977 ,5058,2408,4711 }, {6390,6311,6316 ,3868,1097,4435 }, - {565,4869,564 ,1614,5059,3529 }, {4890,4889,564 ,4594,4615,3529 }, - {4869,4890,564 ,5059,4594,3529 }, {417,137,4836 ,5009,4980,4979 }, - {1077,1030,1078 ,2694,1619,5060 }, {4286,3528,4342 ,4274,5061,4950 }, - {361,4751,417 ,4994,5007,5009 }, {5098,5097,5065 ,5062,5063,5064 }, - {1870,4099,4871 ,4868,4533,5040 }, {4918,4967,4966 ,4595,5065,4646 }, - {4931,4964,937 ,5066,783,5067 }, {4930,4931,937 ,5068,5066,5067 }, - {1320,4667,4618 ,2356,5069,5070 }, {2271,6309,6308 ,5071,3690,3474 }, - {4966,4967,978 ,4646,5065,1620 }, {4433,4356,4404 ,4591,155,5072 }, - {1831,1830,1768 ,2221,2110,2109 }, {7185,7184,7159 ,5073,5074,5075 }, - {4795,4432,4433 ,3710,156,4591 }, {1879,1928,5049 ,1283,1282,5038 }, - {4972,4994,949 ,2158,5076,2133 }, {468,469,505 ,1369,988,986 }, - {1024,4686,4647 ,5077,5030,5036 }, {8105,8090,3006 ,3791,412,414 }, - {4967,4991,978 ,5065,1621,1620 }, {446,640,4959 ,501,5078,5079 }, - {7565,7620,7593 ,5080,5033,5032 }, {4951,4977,4976 ,5058,4711,5048 }, - {3609,6159,6144 ,5081,5082,5083 }, {761,845,760 ,1826,1828,3106 }, - {6484,2258,5455 ,685,1198,686 }, {561,4871,4099 ,2379,5040,4533 }, - {4018,2271,6308 ,5084,5071,3474 }, {2808,6606,2454 ,522,5085,1345 }, - {567,568,663 ,1684,1723,4773 }, {2089,2090,2619 ,1325,1324,3035 }, - {7253,7254,6346 ,1855,450,4883 }, {5949,404,5967 ,5086,761,1352 }, - {1164,6386,1298 ,5087,4085,5088 }, {1635,1636,1702 ,989,1036,1039 }, - {5094,4683,1365 ,5089,5035,2085 }, {1699,1752,1751 ,772,946,773 }, - {4615,1566,1635 ,5090,1037,989 }, {1494,4609,1973 ,1083,5091,551 }, - {5017,5292,4144 ,5092,5093,4761 }, {1442,4615,1635 ,990,5090,989 }, - {6322,6897,2249 ,3531,54,3751 }, {4536,4820,4712 ,89,2399,3816 }, - {4452,4536,4498 ,2398,89,88 }, {4989,307,4986 ,5094,5095,5096 }, - {4606,4607,4658 ,5097,5045,5047 }, {2067,2031,2005 ,1592,1560,1593 }, - {1676,4817,4895 ,2343,2368,4973 }, {4782,4667,1397 ,5029,5069,2358 }, - {1028,406,2958 ,1373,2566,1374 }, {6644,5056,4950 ,5098,1300,1302 }, - {1365,1282,1317 ,2085,2097,5099 }, {3534,6686,8121 ,942,750,3466 }, - {1169,4607,4606 ,5100,5045,5097 }, {4647,4773,4661 ,5036,4865,5101 }, - {2015,1994,1995 ,759,5102,757 }, {7287,7310,7286 ,3459,4283,3460 }, - {951,5033,4999 ,2394,5103,4712 }, {2155,875,6353 ,580,579,749 }, - {4874,616,673 ,5000,4999,2210 }, {1602,749,4723 ,2329,2331,4972 }, - {1365,4757,4666 ,2085,5104,5105 }, {7613,7612,7551 ,5106,5107,5108 }, - {2650,8140,3981 ,914,2269,915 }, {8120,6897,3286 ,906,54,56 }, - {4594,4027,5028 ,688,3470,5109 }, {4844,4848,4833 ,4866,4983,4982 }, - {4594,146,4027 ,688,504,3470 }, {4996,4997,5030 ,5020,5049,2134 }, - {5030,5047,5061 ,2134,4996,2135 }, {4594,5028,3249 ,688,5109,5110 }, - {792,147,146 ,95,3469,504 }, {4688,4689,4749 ,4997,5111,5026 }, - {128,4594,4905 ,687,688,5112 }, {5036,128,4905 ,399,687,5112 }, - {1202,366,1040 ,339,4469,1476 }, {4615,1442,4806 ,5090,990,5113 }, - {5127,4801,124 ,5114,5115,2206 }, {128,5036,4905 ,687,399,5112 }, - {3243,128,4905 ,3919,687,5112 }, {616,574,575 ,4999,2181,2180 }, - {7556,6760,4636 ,5116,5117,5118 }, {4997,4998,5018 ,5049,4713,5119 }, - {1105,1202,1040 ,2049,339,1476 }, {7372,7371,7310 ,4373,3748,4283 }, - {1649,1581,1582 ,2031,2030,2081 }, {7204,7241,7203 ,5120,4465,4366 }, - {5910,5838,6343 ,5121,3987,5122 }, {1442,4898,4806 ,990,5123,5113 }, - {1099,3243,4905 ,4350,3919,5112 }, {695,128,3243 ,731,687,3919 }, - {7572,7599,7571 ,5124,5125,5126 }, {4734,4661,4902 ,5127,5101,5128 }, - {135,4637,274 ,2653,4986,1819 }, {4817,1834,4871 ,2368,2422,5040 }, - {7823,7874,7847 ,345,344,3521 }, {7452,7509,7451 ,1875,1874,3963 }, - {137,4762,4843 ,4980,5129,5130 }, {4615,4806,4670 ,5090,5113,5131 }, - {1659,4615,4670 ,5132,5090,5131 }, {8103,1724,8077 ,1291,3880,2078 }, - {5091,5090,7052 ,5133,4929,708 }, {126,197,4659 ,1394,1393,5046 }, - {4607,126,4659 ,5045,1394,5046 }, {4659,197,319 ,5046,1393,5050 }, - {2006,1307,4351 ,1181,4930,4606 }, {4751,4821,4880 ,5007,5134,5008 }, - {4870,4871,5016 ,5135,5040,5010 }, {5061,5093,1317 ,2135,5136,5099 }, - {4838,4808,311 ,245,5137,246 }, {4880,4762,137 ,5008,5129,4980 }, - {760,4970,4920 ,3106,3073,5138 }, {5021,4644,1969 ,2383,2425,2369 }, - {856,811,855 ,5139,557,2392 }, {1768,4735,1831 ,2109,5140,2221 }, - {4869,565,566 ,5059,1614,1613 }, {4843,1718,4783 ,5130,2108,4981 }, - {662,4890,4869 ,5141,4594,5059 }, {4683,4643,4757 ,5035,5037,5104 }, - {324,325,383 ,2090,2088,2087 }, {917,4915,4929 ,4016,64,5142 }, - {4667,4782,4492 ,5069,5029,5031 }, {753,3243,4845 ,4749,3919,3921 }, - {753,462,3243 ,4749,4847,3919 }, {753,695,462 ,4749,731,4847 }, - {280,326,325 ,2175,2152,2088 }, {4976,4977,4998 ,5048,4711,4713 }, - {4566,4571,1168 ,5143,1342,1098 }, {2583,685,3902 ,2672,2674,4437 }, - {5187,4845,1111 ,5144,3921,3920 }, {6689,3285,2405 ,3065,3064,4165 }, - {1790,4183,240 ,4738,1572,1571 }, {1040,1104,1105 ,1476,1473,2049 }, - {4985,4566,1168 ,2703,5143,1098 }, {4643,4818,4734 ,5037,5145,5127 }, - {7815,5439,5440 ,5146,4157,5147 }, {5093,1365,1317 ,5136,2085,5099 }, - {1177,1130,5061 ,5148,2136,2135 }, {4994,5030,5029 ,5076,2134,2159 }, - {4751,4862,4821 ,5007,5149,5134 }, {1517,4780,4846 ,600,5150,4237 }, - {4989,972,4571 ,5094,3277,1342 }, {4984,753,4845 ,5151,4749,3921 }, - {4750,4786,4749 ,5152,5153,5026 }, {4818,4661,4734 ,5145,5101,5127 }, - {4638,4663,4637 ,5154,5155,4986 }, {5750,5739,5775 ,5156,5157,5158 }, - {6463,4989,4566 ,5159,5094,5143 }, {6704,6736,6703 ,5160,1622,5161 }, - {5629,5938,6605 ,5162,5163,5164 }, {383,4811,4786 ,2087,5165,5153 }, - {4690,4689,4639 ,5051,5111,5166 }, {4740,561,1427 ,2426,2379,2378 }, - {4566,4989,4571 ,5143,5094,1342 }, {1024,5071,4686 ,5077,5167,5030 }, - {4997,5031,5030 ,5049,4995,2134 }, {5031,5032,5064 ,4995,5168,5043 }, - {557,82,4801 ,3724,138,5115 }, {7693,3824,8133 ,724,3462,2131 }, - {4824,4812,1602 ,4719,5169,2329 }, {760,4920,663 ,3106,5138,4773 }, - {4973,4974,4995 ,5014,5019,5021 }, {4690,4749,4689 ,5051,5026,5111 }, - {4751,5015,4862 ,5007,5170,5149 }, {1282,1176,1317 ,2097,2096,5099 }, - {4855,4812,4782 ,4201,5169,5029 }, {4850,1931,1903 ,5171,4736,406 }, - {8127,8084,8142 ,2970,1139,1743 }, {2527,2487,3426 ,2637,4427,4438 }, - {4605,4606,4658 ,5006,5097,5047 }, {3762,5044,5442 ,5172,5173,5174 }, - {674,675,4936 ,2271,2294,5013 }, {4331,4984,4845 ,4645,5151,3921 }, - {5083,4331,4845 ,5175,4645,3921 }, {4331,753,4984 ,4645,4749,5151 }, - {5246,6039,5227 ,5176,2728,4097 }, {4862,4850,1831 ,5149,5171,2221 }, - {417,4880,137 ,5009,5008,4980 }, {4811,514,4858 ,5165,2154,5177 }, - {4929,4930,4963 ,5142,5068,5178 }, {5844,1119,1028 ,5179,5180,1373 }, - {7064,7065,2073 ,5181,5182,5183 }, {5056,3319,5005 ,1300,1259,1301 }, - {6570,4554,1263 ,1252,1307,1199 }, {4870,1931,4862 ,5135,4736,5149 }, - {4643,4734,1508 ,5037,5127,2029 }, {1884,1885,1929 ,3567,778,899 }, - {855,951,4977 ,2392,2394,4711 }, {4986,1073,972 ,5096,3741,3277 }, - {1169,4606,4605 ,5100,5097,5006 }, {4689,4688,4638 ,5111,4997,5154 }, - {1252,5999,3929 ,5023,5184,5024 }, {4989,4986,972 ,5094,5096,3277 }, - {4889,4933,4932 ,4615,4596,4580 }, {4688,4687,4638 ,4997,4985,5154 }, - {5096,5097,4912 ,5185,5063,5186 }, {5071,4912,4686 ,5167,5186,5030 }, - {564,4889,4868 ,3529,4615,3969 }, {675,677,4937 ,2294,2296,5187 }, - {5033,5066,5065 ,5103,5188,5064 }, {5034,5033,951 ,2396,5103,2394 }, - {897,898,952 ,2393,2411,2395 }, {1672,1650,1582 ,2083,2082,2081 }, - {4845,5052,5083 ,3921,5189,5175 }, {4118,753,4331 ,4699,4749,4645 }, - {5702,4743,5701 ,3630,3629,3938 }, {4812,4824,4492 ,5169,4719,5031 }, - {673,4934,767 ,2210,5041,2093 }, {1536,4734,1582 ,2080,5127,2081 }, - {17,961,4959 ,5190,500,5079 }, {1659,4670,4685 ,5132,5131,4894 }, - {4644,5021,5019 ,2425,2383,2384 }, {4783,1672,4902 ,4981,2083,5128 }, - {7646,7675,7645 ,5191,5192,5034 }, {1381,1169,4605 ,5193,5100,5006 }, - {5061,1317,1177 ,2135,5099,5148 }, {4933,4966,4965 ,4596,4646,784 }, - {206,3347,1804 ,3932,2098,2902 }, {4888,4889,4932 ,3997,4615,4580 }, - {4932,4933,4965 ,4580,4596,784 }, {4889,4888,4868 ,4615,3997,3969 }, - {4986,5441,42 ,5096,5194,5195 }, {1285,4618,5097 ,1944,5070,5063 }, - {4716,4717,468 ,1030,1449,1369 }, {4997,5018,5031 ,5049,5119,4995 }, - {1073,4986,42 ,3741,5096,5195 }, {1297,4752,1488 ,4048,5196,5197 }, - {280,325,279 ,2175,2088,2176 }, {4817,1676,1720 ,2368,2343,2366 }, - {1213,1197,4983 ,3700,478,480 }, {4331,5083,5052 ,4645,5175,5189 }, - {8132,8141,3900 ,413,3295,884 }, {943,1034,1081 ,1807,1756,3745 }, - {1931,1967,1903 ,4736,404,406 }, {4563,126,4607 ,3024,1394,5045 }, - {1169,4563,4607 ,5100,3024,5045 }, {4969,4970,4992 ,4977,3073,4978 }, - {6686,8070,959 ,750,941,1358 }, {4898,4867,4806 ,5123,5198,5113 }, - {1365,4683,4757 ,2085,5035,5104 }, {3482,4021,8106 ,2494,1712,2438 }, - {977,976,4965 ,3931,782,784 }, {4618,4667,4912 ,5070,5069,5186 }, - {4695,4725,4772 ,5199,5200,5201 }, {4935,4973,4972 ,5012,5014,2158 }, - {509,572,475 ,4993,1947,1884 }, {4938,4976,4975 ,5053,5048,5202 }, - {4848,417,4836 ,4983,5009,4979 }, {4749,4811,4810 ,5026,5165,5027 }, - {4974,4975,4996 ,5019,5202,5020 }, {5033,5065,5064 ,5103,5064,5043 }, - {5032,5033,5064 ,5168,5103,5043 }, {3316,2810,3271 ,2149,1728,1727 }, - {7512,7570,7536 ,5203,5204,5205 }, {4018,6308,6307 ,5084,3474,5206 }, - {1381,4604,4562 ,5193,5016,5018 }, {375,374,320 ,1883,1821,1871 }, - {3824,7714,8131 ,3462,4468,2307 }, {4661,4822,4902 ,5101,4984,5128 }, - {4972,4973,4994 ,2158,5014,5076 }, {4973,4995,4994 ,5014,5021,5076 }, - {7693,8133,8071 ,724,2131,738 }, {4811,4858,4840 ,5165,5177,5207 }, - {2322,281,4692 ,3497,2227,2177 }, {4118,4331,513 ,4699,4645,377 }, - {4810,509,475 ,5027,4993,1884 }, {4640,4691,4690 ,5208,2089,5051 }, - {442,357,589 ,673,672,671 }, {1442,1699,4898 ,990,772,5123 }, - {2219,5000,4982 ,177,286,364 }, {4611,4634,4754 ,5209,5210,5211 }, - {6299,5012,1989 ,760,5212,3016 }, {4782,1469,4809 ,5029,2361,4202 }, - {4619,39,344 ,5213,529,562 }, {4754,4959,4903 ,5211,5079,5214 }, - {4903,4959,640 ,5214,5079,5078 }, {4780,1291,4819 ,5150,5215,5216 }, - {4684,5082,6603 ,5217,5218,3985 }, {5166,5205,5227 ,3427,5219,4097 }, - {1154,1922,4399 ,4545,4432,4546 }, {4858,514,574 ,5177,2154,2181 }, - {3243,462,695 ,3919,4847,731 }, {1635,1702,1699 ,989,1039,772 }, - {4780,1517,5079 ,5150,600,5220 }, {5079,1517,833 ,5220,600,489 }, - {2464,1346,2465 ,3299,484,3181 }, {662,4919,4918 ,5141,5221,4595 }, - {4890,662,4918 ,4594,5141,4595 }, {4919,4968,4967 ,5221,5222,5065 }, - {4918,4919,4967 ,4595,5221,5065 }, {4968,1030,4991 ,5222,1619,1621 }, - {4840,574,4874 ,5207,2181,5000 }, {1136,1042,1043 ,2412,2409,2478 }, - {4967,4968,4991 ,5065,5222,1621 }, {4806,4867,4621 ,5113,5198,5223 }, - {4867,797,4621 ,5198,5224,5223 }, {4749,4785,4748 ,5026,5028,4998 }, - {273,135,274 ,1749,2653,1819 }, {559,4958,4955 ,5225,5226,5227 }, - {4693,559,4955 ,5228,5225,5227 }, {5012,6299,6417 ,5212,760,762 }, - {4840,4858,574 ,5207,5177,2181 }, {4725,4726,4729 ,5200,5229,5230 }, - {4772,4725,4729 ,5201,5200,5230 }, {1291,4772,4819 ,5215,5201,5216 }, - {4812,4855,1602 ,5169,4201,2329 }, {307,6659,4986 ,5095,3577,5096 }, - {17,438,961 ,5190,498,500 }, {4492,4824,4844 ,5031,4719,4866 }, - {1971,1427,1948 ,2520,2378,2543 }, {4898,1698,4867 ,5123,747,5198 }, - {1698,5084,4867 ,747,5231,5198 }, {1810,4698,4894 ,779,1578,746 }, - {1884,1950,1995 ,3567,786,757 }, {4609,4615,1659 ,5091,5090,5132 }, - {2258,2376,1263 ,1198,1251,1199 }, {5093,5094,1365 ,5136,5089,2085 }, - {4785,4810,4748 ,5028,5027,4998 }, {4750,4749,4690 ,5152,5026,5051 }, - {1081,5046,1078 ,3745,5232,5060 }, {4938,4951,4976 ,5053,5058,5048 }, - {5050,1922,1154 ,5233,4432,4545 }, {936,4963,937 ,5234,5178,5067 }, - {4748,375,4687 ,4998,1883,4985 }, {2212,2271,5001 ,476,5071,477 }, - {5944,3562,6037 ,4754,4753,5235 }, {1041,5067,5033 ,2410,1945,5103 }, - {4560,4600,4559 ,5236,4360,5237 }, {579,677,676 ,2324,2296,2295 }, - {7543,7605,7542 ,5238,5239,5240 }, {5412,5418,5411 ,360,3471,4284 }, - {4819,4772,4701 ,5216,5201,5241 }, {2808,1920,6606 ,522,581,5085 }, - {6699,6751,6750 ,630,5242,631 }, {5442,4672,3762 ,5174,2682,5172 }, - {5004,4817,4871 ,5243,2368,5040 }, {197,367,319 ,1393,1370,5050 }, - {5096,4912,1024 ,5185,5186,5077 }, {4723,4895,4751 ,4972,4973,5007 }, - {5016,1931,4870 ,5010,4736,5135 }, {4611,17,4634 ,5209,5190,5210 }, - {4910,4923,4611 ,5244,5245,5209 }, {4923,4945,4611 ,5245,5246,5209 }, - {975,937,976 ,4266,5067,782 }, {833,1517,491 ,489,600,487 }, - {1081,1078,1030 ,3745,5060,1619 }, {4843,4735,1718 ,5130,5140,2108 }, - {4239,4884,85 ,2254,2253,2504 }, {505,5308,5290 ,986,3528,5247 }, - {2322,4614,4590 ,3497,3109,1490 }, {2277,2322,4590 ,3522,3497,1490 }, - {4641,4640,4612 ,5248,5208,5249 }, {4176,4198,4126 ,4703,4969,124 }, - {357,1198,589 ,672,608,671 }, {6570,2376,6562 ,1252,1251,1306 }, - {4670,4621,5073 ,5131,5223,5250 }, {4761,640,4847 ,5251,5078,5252 }, - {5709,5710,6957 ,5253,5254,4315 }, {2224,406,2206 ,2660,2566,176 }, - {2219,4982,4978 ,177,364,178 }, {2814,4922,4636 ,5255,5256,5118 }, - {5067,5066,5033 ,1945,5188,5103 }, {4772,4729,4701 ,5201,5230,5241 }, - {2163,4586,158 ,243,5257,5258 }, {4692,281,280 ,2177,2227,2175 }, - {4727,4667,4492 ,5259,5069,5031 }, {4746,1264,5078 ,5260,5022,5261 }, - {1285,5098,5066 ,1944,5062,5188 }, {4686,4727,4492 ,5030,5259,5031 }, - {951,4999,4977 ,2394,4712,4711 }, {4932,4965,4964 ,4580,784,783 }, - {4948,4962,935 ,5262,5263,5264 }, {1541,1610,4855 ,2363,2330,4201 }, - {2252,3247,144 ,590,1494,853 }, {6342,1749,1492 ,5265,555,1585 }, - {1028,1119,406 ,1373,5180,2566 }, {4923,638,4945 ,5245,495,5246 }, - {7603,7683,7655 ,5266,5267,5268 }, {4647,4686,4773 ,5036,5030,4865 }, - {898,897,811 ,2411,2393,557 }, {4773,4492,4844 ,4865,5031,4866 }, - {4850,4862,1931 ,5171,5149,4736 }, {4661,4804,4822 ,5101,4867,4984 }, - {4762,4735,4843 ,5129,5140,5130 }, {6751,6787,6786 ,5242,5269,4139 }, - {4640,4641,4691 ,5208,5248,2089 }, {281,326,280 ,2227,2152,2175 }, - {2376,3898,6562 ,1251,1400,1306 }, {6349,6358,6357 ,705,5270,5271 }, - {1469,1541,4855 ,2361,2363,4201 }, {4792,4726,5002 ,5272,5229,5273 }, - {5047,5062,5061 ,4996,5044,2135 }, {2093,603,1551 ,553,5274,5275 }, - {897,855,811 ,2393,2392,557 }, {4620,4619,4823 ,5276,5213,5277 }, - {4621,797,4925 ,5223,5224,5278 }, {4749,4748,4688 ,5026,4998,4997 }, - {1990,5520,5059 ,1305,1304,1253 }, {7105,7104,7092 ,5279,5280,3968 }, - {5067,1285,5066 ,1945,1944,5188 }, {4821,4862,4762 ,5134,5149,5129 }, - {4869,566,662 ,5059,1613,5141 }, {4879,4910,4941 ,5281,5244,5282 }, - {4910,4611,4941 ,5244,5209,5282 }, {4726,4725,4700 ,5229,5200,5283 }, - {4867,4789,797 ,5198,5284,5224 }, {4894,4698,4532 ,746,1578,5285 }, - {4945,638,4611 ,5246,495,5209 }, {4844,4833,4804 ,4866,4982,4867 }, - {1566,4615,4609 ,1037,5090,5091 }, {4934,4935,4972 ,5041,5012,2158 }, - {1717,1672,1718 ,2033,2083,2108 }, {4293,6577,8065 ,2732,97,96 }, - {612,4893,707 ,5011,5286,2091 }, {4650,4649,4595 ,5287,5288,5289 }, - {4596,4650,4595 ,1629,5287,5289 }, {4920,4969,4968 ,5138,4977,5222 }, - {4703,4702,4649 ,5290,5291,5288 }, {4690,383,4750 ,5051,2087,5152 }, - {4992,4993,1030 ,4978,5292,1619 }, {7311,7372,7310 ,4334,4373,4283 }, - {4685,4670,4906 ,4894,5131,4895 }, {4787,4729,4792 ,5293,5230,5272 }, - {4608,4925,4585 ,5294,5278,3955 }, {4726,4700,5002 ,5229,5283,5273 }, - {4925,4593,4585 ,5278,5295,3955 }, {4592,4927,4732 ,5296,5297,5298 }, - {4925,4732,4593 ,5278,5298,5295 }, {4761,4619,4620 ,5251,5213,5276 }, - {4789,4592,4732 ,5284,5296,5298 }, {6308,6711,6307 ,3474,3473,5206 }, - {7185,7220,7184 ,5073,4367,5074 }, {833,4695,4772 ,489,5199,5201 }, - {1025,6714,6389 ,5299,5300,5301 }, {4806,4621,4670 ,5113,5223,5131 }, - {5950,8066,8108 ,2873,960,2287 }, {5866,3311,5864 ,5302,5303,5304 }, - {4609,1659,1973 ,5091,5132,551 }, {4611,638,17 ,5209,495,5190 }, - {1494,1566,4609 ,1083,1037,5091 }, {4667,4727,5068 ,5069,5259,5305 }, - {7524,4596,4595 ,1630,1629,5289 }, {4674,4649,4650 ,5306,5288,5287 }, - {4674,4703,4649 ,5306,5290,5288 }, {4848,4783,4822 ,4983,4981,4984 }, - {5062,5064,5094 ,5044,5043,5089 }, {4930,937,4963 ,5068,5067,5178 }, - {3621,4980,158 ,625,241,5258 }, {5082,6744,6603 ,5218,3986,3985 }, - {4670,5073,4608 ,5131,5250,5294 }, {4729,4787,5025 ,5230,5293,5307 }, - {4584,7818,4557 ,5308,5309,5310 }, {3783,4639,4638 ,5311,5166,5154 }, - {616,575,673 ,4999,2180,2210 }, {797,4789,4732 ,5224,5284,5298 }, - {4678,4903,4794 ,5312,5214,5313 }, {4789,4927,4592 ,5284,5297,5296 }, - {4819,4701,4573 ,5216,5241,5314 }, {5068,4727,4686 ,5305,5259,5030 }, - {4800,4700,4725 ,5315,5283,5200 }, {4695,4800,4725 ,5199,5315,5200 }, - {6028,6040,5927 ,5316,5317,5318 }, {4879,4923,4910 ,5281,5245,5244 }, - {6523,5349,5326 ,5319,5320,3714 }, {4800,4923,4879 ,5315,5245,5281 }, - {5090,3801,7052 ,4929,4974,708 }, {4698,559,4532 ,1578,5225,5285 }, - {1698,4894,4789 ,747,746,5284 }, {2154,5474,2273 ,5321,4243,5322 }, - {7698,7746,7697 ,333,332,651 }, {717,4951,4938 ,2408,5058,5053 }, - {4651,4650,4596 ,5323,5287,1629 }, {4576,4651,4596 ,1628,5323,1629 }, - {1519,2544,601 ,2450,2451,3905 }, {4650,4703,4674 ,5287,5290,5306 }, - {674,4936,4935 ,2271,5013,5012 }, {4848,4836,4783 ,4983,4979,4981 }, - {8071,8133,8144 ,738,2131,2469 }, {4663,4687,4637 ,5155,4985,4986 }, - {4643,1508,4666 ,5037,2029,5105 }, {5672,7009,5694 ,5324,5325,5326 }, - {4670,4608,4906 ,5131,5294,4895 }, {4754,4633,4694 ,5211,5327,5328 }, - {4701,4729,5025 ,5241,5230,5307 }, {4633,4632,4694 ,5327,5329,5328 }, - {8091,8099,8083 ,2167,2867,2103 }, {4250,4404,166 ,4161,5072,3729 }, - {4837,4834,4720 ,3990,4304,5330 }, {3600,3578,3623 ,5331,4205,4206 }, - {4929,4963,4948 ,5142,5178,5262 }, {4963,936,4962 ,5178,5234,5263 }, - {917,4929,4948 ,4016,5142,5262 }, {4963,4962,4948 ,5178,5263,5262 }, - {4283,4086,4774 ,1678,3723,5332 }, {4700,4800,4879 ,5283,5315,5281 }, - {682,346,4923 ,448,449,5245 }, {797,4732,4925 ,5224,5298,5278 }, - {5647,6890,6852 ,5333,5334,5335 }, {4958,1995,1994 ,5226,757,5102 }, - {5084,1698,4789 ,5231,747,5284 }, {4894,4532,4789 ,746,5285,5284 }, - {5084,4789,4867 ,5231,5284,5198 }, {2391,328,327 ,3544,2289,2226 }, - {1317,1176,1177 ,5099,2096,5148 }, {5061,5094,5093 ,2135,5089,5136 }, - {137,4843,4783 ,4980,5130,4981 }, {1831,1902,1866 ,2221,2193,2191 }, - {4704,4703,4650 ,4788,5290,5287 }, {4651,4704,4650 ,5323,4788,5287 }, - {665,760,664 ,1754,3106,1755 }, {4936,4974,4973 ,5013,5019,5014 }, - {4907,674,4935 ,2209,2271,5012 }, {4587,4637,135 ,774,4986,2653 }, - {4879,4941,4790 ,5281,5282,5336 }, {4995,4996,5030 ,5021,5020,2134 }, - {4729,4726,4792 ,5230,5229,5272 }, {4810,475,4748 ,5027,1884,4998 }, - {4998,4999,5033 ,4713,4712,5103 }, {4620,4823,343 ,5276,5277,4543 }, - {8079,8104,3286 ,55,1343,56 }, {6613,6650,6649 ,3746,3833,3759 }, - {4880,4821,4762 ,5008,5134,5129 }, {2279,2251,7042 ,5337,3676,5338 }, - {5061,5062,5094 ,2135,5044,5089 }, {1120,6342,1492 ,5339,5265,1585 }, - {4824,4886,4848 ,4719,4720,4983 }, {876,1167,4017 ,5340,5341,5342 }, - {1330,615,654 ,53,766,93 }, {4558,4598,4584 ,4209,5343,5308 }, - {4800,682,4923 ,5315,448,5245 }, {4948,935,4947 ,5262,5264,5344 }, - {82,557,284 ,138,3724,139 }, {4879,4790,4700 ,5281,5336,5283 }, - {4789,4532,838 ,5284,5285,5345 }, {4955,4958,1994 ,5227,5226,5102 }, - {1210,4183,5017 ,4739,1572,5092 }, {4675,4704,4651 ,5346,4788,5323 }, - {4590,3693,2277 ,1490,5347,3522 }, {833,1291,4780 ,489,5215,5150 }, - {1119,2408,406 ,5180,1399,2566 }, {4912,5071,1024 ,5186,5167,5077 }, - {683,1634,396 ,621,768,153 }, {718,620,719 ,2407,2474,2476 }, - {2908,2851,1249 ,3052,3051,2876 }, {4796,1937,4291 ,4756,59,58 }, - {5089,5091,7052 ,3442,5133,708 }, {4621,4925,4608 ,5223,5278,5294 }, - {5073,4621,4608 ,5250,5223,5294 }, {5396,5395,6506 ,3548,5348,3549 }, - {4634,17,4754 ,5210,5190,5211 }, {402,401,7712 ,5349,1387,5350 }, - {7640,4577,4575 ,5351,5352,3128 }, {682,4800,4695 ,448,5315,5199 }, - {4902,1672,1582 ,5128,2083,2081 }, {5326,6524,6523 ,3714,3704,5319 }, - {4927,4789,838 ,5297,5284,5345 }, {4611,4694,4941 ,5209,5328,5282 }, - {559,4698,4958 ,5225,1578,5226 }, {4698,1884,4958 ,1578,3567,5226 }, - {4958,1884,1995 ,5226,3567,757 }, {833,4772,1291 ,489,5201,5215 }, - {1968,1967,1931 ,2309,404,4736 }, {4577,4578,4576 ,5352,5353,1628 }, - {4578,4624,4651 ,5353,5354,5323 }, {4576,4578,4651 ,1628,5353,5323 }, - {4651,4624,4675 ,5323,5354,5346 }, {4579,4578,7641 ,5355,5353,5356 }, - {4757,4643,4666 ,5104,5037,5105 }, {4639,4689,4638 ,5166,5111,5154 }, - {5081,6605,5938 ,1258,5164,5163 }, {4874,673,707 ,5000,2210,2091 }, - {4941,4694,4790 ,5282,5328,5336 }, {6711,6735,7031 ,3473,3472,5357 }, - {4711,4771,5837 ,5358,3622,3621 }, {4926,4796,4291 ,3897,4756,58 }, - {4601,4654,4653 ,5359,4348,4347 }, {4803,4777,4778 ,4776,3917,3916 }, - {3861,3566,2746 ,1147,1146,1517 }, {1602,4723,361 ,2329,4972,4994 }, - {798,4913,5413 ,78,4185,76 }, {4735,1768,1718 ,5140,2109,2108 }, - {5771,8099,8086 ,2868,2867,4823 }, {2000,4740,1971 ,2428,2426,2520 }, - {4562,4602,4561 ,5018,5360,5361 }, {943,4993,4970 ,1807,5292,3073 }, - {943,1081,4993 ,1807,3745,5292 }, {4600,4599,4558 ,4360,4210,4209 }, - {4559,4600,4558 ,5237,4360,4209 }, {559,4693,267 ,5225,5228,5362 }, - {1091,160,4834 ,4597,4295,4304 }, {4638,4687,4663 ,5154,4985,5155 }, - {4624,4704,4675 ,5354,4788,5346 }, {5082,4684,4979 ,5218,5217,5363 }, - {320,4687,375 ,1871,4985,1883 }, {4656,4681,4655 ,5002,4958,4957 }, - {4923,346,638 ,5245,449,495 }, {4667,5068,4912 ,5069,5305,5186 }, - {4829,4852,4865 ,4626,5364,4229 }, {5043,4144,5985 ,4762,4761,5365 }, - {974,975,7335 ,5366,4266,4265 }, {5837,4713,4711 ,3621,4015,5358 }, - {1699,1698,4898 ,772,747,5123 }, {4754,17,4959 ,5211,5190,5079 }, - {4656,4655,4602 ,5002,4957,5360 }, {4604,4656,4602 ,5016,5002,5360 }, - {4603,4604,4602 ,5017,5016,5360 }, {4602,4601,4560 ,5360,5359,5236 }, - {4573,4701,2733 ,5314,5241,5367 }, {4694,4611,4754 ,5328,5209,5211 }, - {4903,640,4761 ,5214,5078,5251 }, {3788,4680,3672 ,4410,5368,4277 }, - {4834,160,1091 ,4304,4295,4597 }, {4720,4834,1091 ,5330,4304,4597 }, - {4680,4720,1091 ,5368,5330,4597 }, {6141,2072,3725 ,2386,1812,3971 }, - {883,146,4594 ,119,504,688 }, {1176,1130,1177 ,2096,2136,5148 }, - {2315,2382,4563 ,3068,3025,3024 }, {2407,1073,2156 ,4001,3741,3631 }, - {4624,4705,4704 ,5354,5369,4788 }, {4705,4706,4704 ,5369,4786,4788 }, - {7186,7185,7168 ,5370,5073,5371 }, {124,196,1423 ,2206,152,151 }, - {3954,8065,8062 ,3463,96,3272 }, {4603,4602,4562 ,5017,5360,5018 }, - {1968,1931,5019 ,2309,4736,2384 }, {640,446,4847 ,5078,501,5252 }, - {678,682,4695 ,446,448,5199 }, {3786,22,1418 ,4074,4066,4619 }, - {4921,4979,2257 ,2079,5363,554 }, {1941,3476,3283 ,1034,3838,262 }, - {4787,4739,4815 ,5293,5372,5373 }, {5025,4787,4815 ,5307,5293,5373 }, - {5768,4713,5804 ,933,4015,3623 }, {4449,4564,4805 ,5374,5375,5376 }, - {4711,4449,4805 ,5358,5374,5376 }, {4564,4646,4645 ,5375,5377,5378 }, - {4805,4564,4645 ,5376,5375,5378 }, {4646,4926,4645 ,5377,3897,5378 }, - {1724,1249,2851 ,3880,2876,3051 }, {4912,5068,4686 ,5186,5305,5030 }, - {976,937,4964 ,782,5067,783 }, {4655,4654,4602 ,4957,4348,5360 }, - {4561,4602,4560 ,5361,5360,5236 }, {2391,327,282 ,3544,2226,3498 }, - {4601,4653,4600 ,5359,4347,4360 }, {675,4937,4936 ,2294,5187,5013 }, - {5095,5096,1024 ,5379,5185,5077 }, {4823,4619,343 ,5277,5213,4543 }, - {1365,4666,1440 ,2085,5105,2063 }, {4619,344,343 ,5213,562,4543 }, - {4761,4847,4619 ,5251,5252,5213 }, {4794,4903,4761 ,5313,5214,5251 }, - {509,4873,572 ,4993,4992,1947 }, {4579,4624,4578 ,5355,5354,5353 }, - {4676,4706,4705 ,5380,4786,5369 }, {4624,4676,4705 ,5354,5380,5369 }, - {4569,4983,2808 ,1344,480,522 }, {2382,127,126 ,3025,1395,1394 }, - {1172,1081,1034 ,1758,3745,1756 }, {1672,1649,1650 ,2083,2031,2082 }, - {4834,5236,1091 ,4304,4301,4597 }, {4847,446,4619 ,5252,501,5213 }, - {446,39,4619 ,501,529,5213 }, {111,110,2962 ,1154,743,3494 }, - {4589,4638,4637 ,776,5154,4986 }, {4571,2162,6311 ,1342,3278,1097 }, - {4176,3784,4198 ,4703,2252,4969 }, {4701,4815,4956 ,5241,5373,5381 }, - {4696,4753,4713 ,5382,5383,4015 }, {5770,4696,4713 ,3949,5382,4015 }, - {4753,4449,4711 ,5383,5374,5358 }, {4713,4753,4711 ,4015,5383,5358 }, - {4939,4926,4646 ,5384,3897,5377 }, {4876,4796,4926 ,5385,4756,3897 }, - {4939,4876,4926 ,5384,5385,3897 }, {4323,4394,4796 ,4045,4044,4756 }, - {4876,4323,4796 ,5385,4045,4756 }, {3975,8064,2812 ,728,3141,1914 }, - {4916,4930,4929 ,2248,5068,5142 }, {4892,343,342 ,5386,4543,4542 }, - {4691,4721,4690 ,2089,5052,5051 }, {468,4803,4779 ,1369,4776,4729 }, - {4822,4783,4902 ,4984,4981,5128 }, {468,4779,4716 ,1369,4729,1030 }, - {5479,6741,6706 ,5387,5388,5389 }, {4601,4600,4560 ,5359,4360,5236 }, - {4994,4995,5030 ,5076,5021,2134 }, {4532,559,838 ,5285,5225,5345 }, - {4754,4903,4678 ,5211,5214,5312 }, {559,267,838 ,5225,5362,5345 }, - {4776,4680,3788 ,5390,5368,4410 }, {4452,4432,4795 ,2398,156,3710 }, - {7101,7128,7114 ,4073,5391,5392 }, {8049,2318,2317 ,5393,3185,3129 }, - {4625,4624,4579 ,5394,5354,5355 }, {4625,4626,4624 ,5394,5395,5354 }, - {4626,4676,4624 ,5395,5380,5354 }, {4998,5033,5032 ,4713,5103,5168 }, - {4717,4716,4657 ,1449,1030,5001 }, {8116,8071,5521 ,172,738,751 }, - {4612,278,4641 ,5249,1489,5248 }, {5031,5064,5063 ,4995,5043,5042 }, - {4721,4691,383 ,5052,2089,2087 }, {4639,4640,4690 ,5166,5208,5051 }, - {1073,42,2156 ,3741,5195,3631 }, {7029,7051,2341 ,548,547,845 }, - {6524,6572,6571 ,3704,3734,4146 }, {1902,1901,1866 ,2193,2192,2191 }, - {6989,5693,6947 ,4586,4075,4587 }, {6968,6967,6916 ,595,4629,596 }, - {6735,3192,2450 ,3472,3063,3444 }, {2733,4701,4956 ,5367,5241,5381 }, - {2407,2156,2258 ,4001,3631,1198 }, {4753,4854,4449 ,5383,5396,5374 }, - {4877,4876,4939 ,5397,5385,5384 }, {4940,4877,4939 ,5398,5397,5384 }, - {4752,4323,4876 ,5196,4045,5385 }, {4877,4752,4876 ,5397,5196,5385 }, - {717,855,4977 ,2408,2392,4711 }, {6711,7031,2450 ,3473,5357,3444 }, - {5520,1516,5059 ,1304,1254,1253 }, {4931,4930,4916 ,5066,5068,2248 }, - {5079,833,4780 ,5220,489,5150 }, {4980,2163,158 ,241,243,5258 }, - {5477,4672,5442 ,5399,2682,5174 }, {1307,801,4351 ,4930,4907,4606 }, - {4846,4780,3139 ,4237,5150,5400 }, {5659,2453,5658 ,3053,42,49 }, - {4633,4754,4678 ,5327,5211,5312 }, {4700,4790,5002 ,5283,5336,5273 }, - {5060,4720,4680 ,5401,5330,5368 }, {4776,5060,4680 ,5390,5401,5368 }, - {5060,4837,4720 ,5401,3990,5330 }, {4937,4975,4974 ,5187,5202,5019 }, - {4626,4625,4579 ,5395,5394,5355 }, {4626,4706,4676 ,5395,4786,5380 }, - {4612,4640,4639 ,5249,5208,5166 }, {4658,4717,4657 ,5047,1449,5001 }, - {677,4938,4937 ,2296,5053,5187 }, {3783,4612,4639 ,5311,5249,5166 }, - {4750,383,4786 ,5152,2087,5153 }, {577,675,674 ,2270,2294,2271 }, - {4893,4874,707 ,5286,5000,2091 }, {4602,4654,4601 ,5360,4348,5359 }, - {5943,6292,6283 ,5402,5403,4298 }, {6523,6524,6571 ,5319,3704,4146 }, - {1167,1120,1492 ,5341,5339,1585 }, {5672,5694,6949 ,5324,5326,4585 }, - {4774,4086,557 ,5332,3723,3724 }, {2156,6464,3898 ,3631,3633,1400 }, - {4701,5025,4815 ,5241,5307,5373 }, {4854,4616,4564 ,5396,5404,5375 }, - {4449,4854,4564 ,5374,5396,5375 }, {4616,4662,4646 ,5404,5405,5377 }, - {4564,4616,4646 ,5375,5404,5377 }, {4940,4939,4646 ,5398,5384,5377 }, - {4662,4940,4646 ,5405,5398,5377 }, {406,2219,2206 ,2566,177,176 }, - {4613,4614,278 ,1488,3109,1489 }, {617,618,677 ,2352,2391,2296 }, - {5064,5096,5095 ,5043,5185,5379 }, {4824,4848,4844 ,4719,4983,4866 }, - {4937,4938,4975 ,5187,5053,5202 }, {5018,5032,5031 ,5119,5168,4995 }, - {4840,4874,4873 ,5207,5000,4992 }, {972,2314,2162 ,3277,3742,3278 }, - {6681,6704,6655 ,5406,5160,5407 }, {4948,4947,917 ,5262,5344,4016 }, - {3358,6393,3357 ,880,1556,883 }, {6342,6555,1749 ,5265,597,555 }, - {4693,4955,4953 ,5228,5227,5408 }, {267,4693,4953 ,5362,5228,5408 }, - {4955,1994,4971 ,5227,5102,5409 }, {4953,4955,4971 ,5408,5227,5409 }, - {4838,5060,4776 ,245,5401,5390 }, {4838,4837,5060 ,245,3990,5401 }, - {4818,4647,4661 ,5145,5036,5101 }, {4683,1024,4647 ,5035,5077,5036 }, - {4580,4626,4579 ,5410,5395,5355 }, {4707,4706,4626 ,5411,4786,5395 }, - {4707,4737,4706 ,5411,5412,4786 }, {4706,4737,4765 ,4786,5412,3983 }, - {4826,5259,4765 ,5413,3794,3983 }, {4658,4657,4605 ,5047,5001,5006 }, - {361,4723,4751 ,4994,4972,5007 }, {4857,509,4810 ,4991,4993,5027 }, - {4873,4874,4893 ,4992,5000,5286 }, {4840,4857,4810 ,5207,4991,5027 }, - {375,4748,475 ,1883,4998,1884 }, {1320,4618,1285 ,2356,5070,1944 }, - {4664,4614,279 ,5414,3109,2176 }, {1583,2621,3683 ,5415,5416,5417 }, - {922,6416,6415 ,117,3440,386 }, {5000,922,6415 ,286,117,386 }, - {6795,5491,5516 ,5418,5419,5420 }, {4922,4608,4585 ,5256,5294,3955 }, - {1073,2407,2314 ,3741,4001,3742 }, {4793,4718,4753 ,5421,5422,5383 }, - {4718,4814,4854 ,5422,5423,5396 }, {4753,4718,4854 ,5383,5422,5396 }, - {4814,4722,4616 ,5423,5424,5404 }, {4854,4814,4616 ,5396,5423,5404 }, - {4722,4665,4662 ,5424,5425,5405 }, {4616,4722,4662 ,5404,5424,5405 }, - {4943,4940,4662 ,5426,5398,5405 }, {4665,4943,4662 ,5425,5426,5405 }, - {1655,2432,68 ,4089,5427,4087 }, {4614,4641,278 ,3109,5248,1489 }, - {4895,4817,5004 ,4973,2368,5243 }, {4975,4976,4997 ,5202,5048,5049 }, - {6417,404,5388 ,762,761,5428 }, {5016,4644,1931 ,5010,2425,4736 }, - {1699,1702,1752 ,772,1039,946 }, {4975,4997,4996 ,5202,5049,5020 }, - {4936,4937,4974 ,5013,5187,5019 }, {4810,4811,4840 ,5027,5165,5207 }, - {6957,5752,5709 ,4315,4374,5253 }, {4866,4865,4852 ,3641,4229,5364 }, - {4734,4902,1582 ,5127,5128,2081 }, {4829,4830,4852 ,4626,3642,5364 }, - {961,446,4959 ,500,501,5079 }, {5015,4870,4862 ,5170,5135,5149 }, - {1702,1636,1703 ,1039,1036,1038 }, {638,15,17 ,495,497,5190 }, - {4842,4838,4776 ,5429,245,5390 }, {24,1375,4837 ,247,325,3990 }, - {4838,24,4837 ,245,247,3990 }, {4919,4920,4968 ,5221,5138,5222 }, - {4581,4627,4626 ,5430,5431,5395 }, {4580,4581,4626 ,5410,5430,5395 }, - {4626,4708,4707 ,5395,5432,5411 }, {4707,4708,4737 ,5411,5432,5412 }, - {4737,4708,4765 ,5412,5432,3983 }, {384,327,328 ,2228,2226,2289 }, - {4751,5004,4871 ,5007,5243,5040 }, {4871,561,5016 ,5040,2379,5010 }, - {4895,5004,4751 ,4973,5243,5007 }, {4857,4840,4873 ,4991,5207,4992 }, - {4782,4812,4492 ,5029,5169,5031 }, {6842,6895,6865 ,5433,5434,5435 }, - {4820,4433,4849 ,2399,4591,5436 }, {4801,82,607 ,5115,138,2207 }, - {935,4962,936 ,5264,5263,5234 }, {7138,7161,7169 ,2560,2559,5437 }, - {1265,6344,4548 ,1273,1450,589 }, {4730,4885,4743 ,5438,5439,3629 }, - {4885,4747,4793 ,5439,5440,5421 }, {4743,4885,4793 ,3629,5439,5421 }, - {4793,4747,4718 ,5421,5440,5422 }, {4742,4877,4940 ,5441,5397,5398 }, - {4943,4742,4940 ,5426,5441,5398 }, {4742,4752,4877 ,5441,5196,5397 }, - {4897,1488,4752 ,5442,5197,5196 }, {410,259,2967 ,2204,2203,2701 }, - {4920,4919,662 ,5138,5221,5141 }, {1041,5034,952 ,2410,2396,2395 }, - {5034,1041,5033 ,2396,2410,5103 }, {2156,42,6783 ,3631,5195,3632 }, - {344,1993,343 ,562,4544,4543 }, {4587,4589,4637 ,774,776,4986 }, - {4787,4792,4816 ,5293,5272,5443 }, {4633,4678,4632 ,5327,5312,5329 }, - {4678,4794,4761 ,5312,5313,5251 }, {4758,4761,4620 ,5444,5251,5276 }, - {4841,4842,4745 ,5445,5429,5446 }, {4745,4776,495 ,5446,5390,4389 }, - {4917,4838,4842 ,5447,245,5429 }, {4841,4917,4842 ,5445,5447,5429 }, - {4258,85,4303 ,84,2504,3728 }, {5095,1024,4683 ,5379,5077,5035 }, - {5094,5095,4683 ,5089,5379,5035 }, {4627,4677,4626 ,5431,5448,5395 }, - {4626,4677,4708 ,5395,5448,5432 }, {4708,4766,4765 ,5432,5449,3983 }, - {4766,4827,4826 ,5449,2734,5413 }, {949,850,851 ,2133,2092,2155 }, - {4886,361,417 ,4720,4994,5009 }, {4580,7672,4581 ,5410,5450,5430 }, - {1397,4667,1320 ,2358,5069,2356 }, {6172,6147,5920 ,5451,5452,5453 }, - {8144,8133,2301 ,2469,2131,2132 }, {7027,7049,7007 ,3175,5454,4628 }, - {3320,6639,2158 ,5455,3699,1160 }, {911,3320,2158 ,1159,5455,1160 }, - {6309,6310,6735 ,3690,3918,3472 }, {1920,2157,6606 ,581,3411,5085 }, - {6686,5105,4544 ,750,5456,748 }, {1332,8123,8143 ,3492,2247,2570 }, - {4730,4731,4747 ,5438,5457,5440 }, {4885,4730,4747 ,5439,5438,5440 }, - {4899,4752,4742 ,5458,5196,5441 }, {4882,4899,4742 ,5459,5458,5441 }, - {3895,4897,4752 ,4455,5442,5196 }, {4899,3895,4752 ,5458,4455,5196 }, - {5065,5097,5096 ,5064,5063,5185 }, {5064,5065,5096 ,5043,5064,5185 }, - {663,4920,662 ,4773,5138,5141 }, {7163,7171,7194 ,5460,4306,1670 }, - {4773,4804,4661 ,4865,4867,5101 }, {4605,4604,1381 ,5006,5016,5193 }, - {1831,4850,1902 ,2221,5171,2193 }, {4968,4969,1030 ,5222,4977,1619 }, - {4906,4608,4922 ,4895,5294,5256 }, {4906,4922,2814 ,4895,5256,5255 }, - {4830,4866,4852 ,3642,3641,5364 }, {4739,4787,4816 ,5372,5293,5443 }, - {1994,2048,3184 ,5102,5461,4453 }, {4971,1994,1460 ,5409,5102,5462 }, - {1460,1994,3184 ,5462,5102,4453 }, {4745,4775,4841 ,5446,4388,5445 }, - {4917,4808,4838 ,5447,5137,245 }, {241,4724,240 ,314,4737,1571 }, - {4581,4628,4627 ,5430,5463,5431 }, {4627,4628,4677 ,5431,5463,5448 }, - {4677,4628,4708 ,5448,5463,5432 }, {4738,4767,4766 ,5464,5465,5449 }, - {4708,4738,4766 ,5432,5464,5449 }, {4766,4828,4827 ,5449,5466,2734 }, - {423,4811,383 ,2086,5165,2087 }, {6744,3350,1116 ,3986,2541,1401 }, - {6415,6416,4424 ,386,3440,3792 }, {6416,5089,4424 ,3440,3442,3792 }, - {5171,5125,5172 ,1804,5467,5468 }, {5105,5040,4544 ,5456,5469,748 }, - {5949,5388,404 ,5086,5428,761 }, {4731,4719,4718 ,5457,5470,5422 }, - {4747,4731,4718 ,5440,5457,5422 }, {4719,4673,4814 ,5470,5471,5423 }, - {4718,4719,4814 ,5422,5470,5423 }, {4673,4781,4722 ,5471,5472,5424 }, - {4814,4673,4722 ,5423,5471,5424 }, {4944,4943,4665 ,5473,5426,5425 }, - {4671,4944,4665 ,5474,5473,5425 }, {4944,4882,4742 ,5473,5459,5441 }, - {4943,4944,4742 ,5426,5473,5441 }, {3247,3777,6430 ,1494,1582,2748 }, - {423,514,4811 ,2086,2154,5165 }, {5018,4998,5032 ,5119,4713,5168 }, - {7927,7976,7952 ,1716,1715,5475 }, {718,811,856 ,2407,557,5139 }, - {8076,8124,2810 ,617,1141,1728 }, {4931,4932,4964 ,5066,4580,783 }, - {1042,898,1043 ,2409,2411,2478 }, {955,4834,4837 ,3991,4304,3990 }, - {4792,5002,4699 ,5272,5273,5476 }, {4802,4841,4775 ,5477,5445,4388 }, - {4917,648,4808 ,5447,4679,5137 }, {4716,4778,4714 ,1030,3916,1031 }, - {4734,1536,1508 ,5127,2080,2029 }, {5047,5031,5062 ,4996,4995,5044 }, - {4993,1081,1030 ,5292,3745,1619 }, {4762,1831,4735 ,5129,2221,5140 }, - {4743,5038,4730 ,3629,3628,5438 }, {4581,4582,4628 ,5430,5478,5463 }, - {4767,4798,4766 ,5465,5479,5449 }, {4766,4798,4828 ,5449,5479,5466 }, - {4828,4887,4827 ,5466,2735,2734 }, {5064,5095,5094 ,5043,5379,5089 }, - {4863,4904,4887 ,5480,3309,2735 }, {8145,8114,6797 ,3376,2286,2246 }, - {1167,1492,4017 ,5341,1585,5342 }, {5946,5991,7083 ,5481,5482,5483 }, - {4445,712,6757 ,3648,3650,3409 }, {5092,4730,4839 ,3953,5438,5484 }, - {7055,1219,7079 ,5485,4102,5486 }, {4635,4591,4731 ,5487,5488,5457 }, - {4730,4635,4731 ,5438,5487,5457 }, {4591,4825,4719 ,5488,5489,5470 }, - {4731,4591,4719 ,5457,5488,5470 }, {4825,4791,4673 ,5489,5490,5471 }, - {4719,4825,4673 ,5470,5489,5471 }, {4791,4728,4781 ,5490,5491,5472 }, - {4673,4791,4781 ,5471,5490,5472 }, {4781,4728,4722 ,5472,5491,5424 }, - {4728,837,4665 ,5491,5492,5425 }, {4722,4728,4665 ,5424,5491,5425 }, - {4665,837,4671 ,5425,5492,5474 }, {837,4946,4944 ,5492,5493,5473 }, - {4671,837,4944 ,5474,5492,5473 }, {4922,3766,4636 ,5256,3954,5118 }, - {4756,3817,5099 ,1190,1189,5494 }, {3817,3800,5099 ,1189,4325,5494 }, - {4682,4756,4736 ,1191,1190,5495 }, {7031,6735,2450 ,5357,3472,3444 }, - {4873,4893,612 ,4992,5286,5011 }, {6704,6703,6655 ,5160,5161,5407 }, - {4816,4792,4699 ,5443,5272,5476 }, {3945,6418,6416 ,4550,3441,3440 }, - {4775,4861,4802 ,4388,3877,5477 }, {4802,4917,4841 ,5477,5447,5445 }, - {4751,4871,5015 ,5007,5040,5170 }, {5031,5063,5062 ,4995,5042,5044 }, - {1790,5017,4183 ,4738,5092,1572 }, {4970,4993,4992 ,3073,5292,4978 }, - {4783,1718,1672 ,4981,2108,2083 }, {4555,4556,4582 ,5496,5497,5478 }, - {79,8104,3421 ,1510,1343,1156 }, {4583,4628,4582 ,5498,5463,5478 }, - {4652,4709,4708 ,5499,4396,5432 }, {4628,4652,4708 ,5463,5499,5432 }, - {4708,4709,4738 ,5432,4396,5464 }, {4767,4768,4798 ,5465,5500,5479 }, - {4798,4768,4828 ,5479,5500,5466 }, {4863,4887,4828 ,5480,2735,5466 }, - {4851,4863,4828 ,5501,5480,5466 }, {311,4808,648 ,246,5137,4679 }, - {673,4907,4934 ,2210,2209,5041 }, {6808,6809,6859 ,3465,712,472 }, - {1583,1606,2621 ,5415,3677,5416 }, {7004,7045,7026 ,5502,5503,5504 }, - {5089,3454,4424 ,3442,710,3792 }, {5844,5812,7073 ,5179,660,662 }, - {1666,4882,4944 ,5505,5459,5473 }, {4946,1666,4944 ,5493,5505,5473 }, - {1666,4899,4882 ,5505,5458,5459 }, {4921,5082,4979 ,2079,5218,5363 }, - {5066,5098,5065 ,5188,5062,5064 }, {4733,5099,4697 ,5506,5494,4327 }, - {4733,4756,5099 ,5506,1190,5494 }, {3634,4741,4813 ,5507,5508,4088 }, - {4733,4736,4756 ,5506,5495,1190 }, {5026,4881,4957 ,4225,2731,2733 }, - {8122,8145,8087 ,384,3376,385 }, {5022,1196,4788 ,4329,4330,3758 }, - {4760,4669,5022 ,5509,3879,4329 }, {4759,4861,4669 ,5510,3877,3879 }, - {4760,4759,4669 ,5509,5510,3879 }, {4892,4917,4802 ,5386,5447,5477 }, - {4892,648,4917 ,5386,4679,5447 }, {675,578,676 ,2294,2293,2295 }, - {718,856,855 ,2407,5139,2392 }, {6348,6349,6357 ,1607,705,5271 }, - {663,662,566 ,4773,5141,1613 }, {668,611,669 ,1949,1948,2020 }, - {4605,4656,4604 ,5006,5002,5016 }, {5217,4703,4704 ,4026,5290,4788 }, - {5067,1041,1135 ,1945,2410,1943 }, {3855,3813,3814 ,1511,1515,5511 }, - {3303,7387,7386 ,1049,3615,5512 }, {4583,4629,4628 ,5498,5513,5463 }, - {4629,4652,4628 ,5513,5499,5463 }, {4709,4768,4767 ,4396,5500,5465 }, - {4738,4709,4767 ,5464,4396,5465 }, {851,767,4934 ,2155,2093,5041 }, - {6153,5040,5105 ,5514,5469,5456 }, {3898,6464,4987 ,1400,3633,1491 }, - {6917,6916,6895 ,5515,596,5434 }, {6757,3702,1990 ,3409,1303,1305 }, - {911,5027,158 ,1159,5516,5258 }, {5027,911,6684 ,5516,1159,1161 }, - {6681,6655,6656 ,5406,5407,5517 }, {5405,6681,6656 ,5518,5406,5517 }, - {5688,5738,6890 ,5519,5520,5334 }, {5738,5750,6890 ,5520,5156,5334 }, - {1460,3184,4899 ,5462,4453,5458 }, {1666,1460,4899 ,5505,5462,5458 }, - {4899,3184,3895 ,5458,4453,4455 }, {4618,4912,5097 ,5070,5186,5063 }, - {8094,8100,8069 ,98,1713,1095 }, {6853,5626,5587 ,2505,1460,1459 }, - {6098,6173,6388 ,1565,3711,3184 }, {2164,2165,3191 ,3583,1041,2903 }, - {7169,7186,7168 ,5437,5370,5371 }, {4741,4815,1655 ,5508,5373,4089 }, - {4813,4741,1655 ,4088,5508,4089 }, {4815,4878,4872 ,5373,5521,5522 }, - {1655,4815,4872 ,4089,5373,5522 }, {4878,4739,4872 ,5521,5372,5522 }, - {4668,4697,4872 ,5523,4327,5522 }, {4739,4668,4872 ,5372,5523,5522 }, - {4668,4733,4697 ,5523,5506,4327 }, {4610,4682,4736 ,3757,1191,5495 }, - {4610,1376,4682 ,3757,1937,1191 }, {5002,4790,4699 ,5273,5336,5476 }, - {4760,5022,4788 ,5509,4329,3758 }, {4660,4760,4788 ,5524,5509,3758 }, - {4759,4802,4861 ,5510,5477,3877 }, {4802,4875,4892 ,5477,5525,5386 }, - {1469,4782,1397 ,2361,5029,2358 }, {707,673,767 ,2091,2210,2093 }, - {4647,4818,4643 ,5036,5145,5037 }, {749,1676,4723 ,2331,2343,4972 }, - {663,566,567 ,4773,1613,1684 }, {4724,4949,1790 ,4737,5526,4738 }, - {1440,4666,1508 ,2063,5105,2029 }, {611,612,669 ,1948,5011,2020 }, - {5098,1285,5097 ,5062,1944,5063 }, {4630,4629,4583 ,827,5513,5498 }, - {4629,4630,4652 ,5513,827,5499 }, {4709,4710,4768 ,4396,4136,5500 }, - {4829,4828,4768 ,4626,5466,5500 }, {4829,4851,4828 ,4626,5501,5466 }, - {2290,7935,7936 ,1982,5527,5528 }, {2376,2156,3898 ,1251,3631,1400 }, - {3609,6195,5920 ,5081,5529,5453 }, {3319,2336,5005 ,1259,1261,1301 }, - {8081,8138,8078 ,1445,2018,1744 }, {5003,4591,4635 ,5530,5488,5487 }, - {4860,5003,4635 ,5531,5530,5487 }, {4591,4909,4825 ,5488,5532,5489 }, - {4909,4791,4825 ,5532,5490,5489 }, {837,4952,4946 ,5492,5533,5493 }, - {4952,1460,1666 ,5533,5462,5505 }, {4946,4952,1666 ,5493,5533,5505 }, - {4698,1885,1884 ,1578,778,3567 }, {4635,4730,5092 ,5487,5438,3953 }, - {7743,7769,7768 ,5534,5535,5536 }, {4741,4956,4815 ,5508,5381,5373 }, - {4815,4739,4878 ,5373,5372,5521 }, {4816,4668,4739 ,5443,5523,5372 }, - {4699,4733,4668 ,5476,5506,5523 }, {4816,4699,4668 ,5443,5476,5523 }, - {4632,4788,4610 ,5329,3758,3757 }, {4891,4632,4610 ,5537,5329,3757 }, - {4632,4660,4788 ,5329,5524,3758 }, {4678,4760,4660 ,5312,5509,5524 }, - {4632,4678,4660 ,5329,5312,5524 }, {4620,4802,4759 ,5276,5477,5510 }, - {4802,4620,4875 ,5477,5276,5525 }, {5015,4871,4870 ,5170,5040,5135 }, - {678,4695,833 ,446,5199,489 }, {4862,1831,4762 ,5149,2221,5129 }, - {4970,4969,4920 ,3073,4977,5138 }, {4749,4786,4811 ,5026,5153,5165 }, - {4641,4664,279 ,5248,5414,2176 }, {557,4883,4774 ,3724,5538,5332 }, - {156,1297,1488 ,5539,4048,5197 }, {557,4801,4883 ,3724,5115,5538 }, - {4264,1488,4897 ,5540,5197,5442 }, {4641,279,4691 ,5248,2176,2089 }, - {4597,4630,4583 ,5541,827,5498 }, {4652,4630,4709 ,5499,827,4396 }, - {4710,4630,5177 ,4136,827,424 }, {4710,4769,4768 ,4136,5542,5500 }, - {4769,4799,4768 ,5542,4627,5500 }, {4768,4799,4829 ,5500,4627,4626 }, - {4829,4864,4863 ,4626,5543,5480 }, {4851,4829,4863 ,5501,4626,5480 }, - {3006,8132,552 ,414,413,3929 }, {6611,5471,6640 ,1391,2051,4224 }, - {1562,4392,7051 ,4649,844,547 }, {4586,911,158 ,5257,1159,5258 }, - {7568,7594,7567 ,5544,4020,5545 }, {7552,7613,7551 ,5546,5106,5108 }, - {4585,4593,5003 ,3955,5295,5530 }, {4860,4585,5003 ,5531,3955,5530 }, - {5003,4593,4591 ,5530,5295,5488 }, {4593,4732,4909 ,5295,5298,5532 }, - {4591,4593,4909 ,5488,5295,5532 }, {4732,4927,4791 ,5298,5297,5490 }, - {4909,4732,4791 ,5532,5298,5490 }, {4927,838,4728 ,5297,5345,5491 }, - {4791,4927,4728 ,5490,5297,5491 }, {267,837,4728 ,5362,5492,5491 }, - {838,267,4728 ,5345,5362,5491 }, {267,4953,4952 ,5362,5408,5533 }, - {837,267,4952 ,5492,5362,5533 }, {7647,7697,7675 ,4967,651,5192 }, - {2000,1971,2002 ,2428,2520,2493 }, {3276,2375,922 ,116,4479,117 }, - {403,1264,3929 ,5547,5022,5024 }, {4832,4736,4733 ,5548,5495,5506 }, - {4699,4832,4733 ,5476,5548,5506 }, {4891,4610,4736 ,5537,3757,5495 }, - {4678,4759,4760 ,5312,5510,5509 }, {4759,4758,4620 ,5510,5444,5276 }, - {4875,4620,4892 ,5525,5276,5386 }, {4850,1903,1902 ,5171,406,2193 }, - {4614,4664,4641 ,3109,5414,5248 }, {7672,7716,4581 ,5450,5549,5430 }, - {1970,4740,2000 ,2427,2426,2428 }, {4724,241,1241 ,4737,314,313 }, - {1241,4283,4774 ,313,1678,5332 }, {4724,1241,4774 ,4737,313,5332 }, - {607,124,4801 ,2207,2206,5115 }, {4491,808,5202 ,107,4734,5550 }, - {6039,5166,5227 ,2728,3427,4097 }, {4331,5052,1154 ,4645,5189,4545 }, - {1154,5052,993 ,4545,5189,5551 }, {4769,4770,4799 ,5542,4345,4627 }, - {4829,4865,4864 ,4626,4229,5543 }, {4864,4865,4863 ,5543,4229,5480 }, - {4865,4913,798 ,4229,4185,78 }, {4863,4865,798 ,5480,4229,78 }, - {3264,8117,8068 ,2468,4119,1784 }, {3626,6534,3627 ,4196,4257,4256 }, - {6418,5091,5089 ,3441,5133,3442 }, {4549,6621,6605 ,877,5552,5164 }, - {5669,5710,5709 ,5553,5254,5253 }, {6389,6714,6868 ,5301,5300,5554 }, - {5092,4585,4860 ,3953,3955,5531 }, {4953,4971,1460 ,5408,5409,5462 }, - {4952,4953,1460 ,5533,5408,5462 }, {185,3777,3247 ,1493,1582,1494 }, - {1166,309,2408 ,2746,4472,1399 }, {4560,4559,7918 ,5236,5237,5555 }, - {922,3945,6416 ,117,4550,3440 }, {2156,2376,2258 ,3631,1251,1198 }, - {4790,4832,4699 ,5336,5548,5476 }, {4790,4736,4832 ,5336,5495,5548 }, - {4694,4891,4736 ,5328,5537,5495 }, {4790,4694,4736 ,5336,5328,5495 }, - {4694,4632,4891 ,5328,5329,5537 }, {4761,4759,4678 ,5251,5510,5312 }, - {4759,4761,4758 ,5510,5251,5444 }, {4620,343,4892 ,5276,4543,5386 }, - {4117,5481,4157 ,4700,3863,3755 }, {206,3815,1606 ,3932,5556,3677 }, - {247,921,2663 ,2569,1922,3593 }, {6044,5934,5980 ,614,616,5557 }, - {3797,3746,3747 ,2061,2708,2925 }, {6211,6246,6245 ,5558,5559,5560 }, - {4443,4422,6212 ,703,5561,5562 }, {1344,1511,3941 ,300,4921,5563 }, - {1268,5995,6105 ,4568,5564,5565 }, {6210,6211,6245 ,5566,5558,5560 }, - {5515,5960,6045 ,5567,5568,935 }, {6157,1017,1426 ,5569,1793,4648 }, - {5140,2094,5130 ,3712,5570,5571 }, {5130,5499,5140 ,5571,5572,3712 }, - {5499,2621,5140 ,5572,5416,3712 }, {1627,3688,1729 ,5573,5574,3666 }, - {6247,6275,1557 ,5575,5576,5577 }, {5340,5379,4916 ,4002,3998,2248 }, - {5339,5340,4916 ,2223,4002,2248 }, {2256,5013,5950 ,2323,684,2873 }, - {6123,5988,4147 ,4221,2516,2517 }, {4392,5130,2094 ,844,5571,5570 }, - {5204,3683,5704 ,5578,5417,5579 }, {5499,5204,5704 ,5572,5578,5579 }, - {6377,6079,5978 ,1347,5580,5581 }, {5978,6082,6377 ,5581,1348,1347 }, - {7948,7994,7947 ,3625,5582,4354 }, {4306,4278,4307 ,4552,5583,4562 }, - {4489,3778,1583 ,5584,5585,5415 }, {6744,5082,5786 ,3986,5218,4813 }, - {5131,5204,5499 ,5586,5578,5572 }, {5130,5131,5499 ,5571,5586,5572 }, - {6390,5950,8114 ,3868,2873,2286 }, {1557,3310,5989 ,5577,5587,5588 }, - {778,1742,5498 ,5589,707,5590 }, {3820,778,5498 ,5591,5589,5590 }, - {313,1562,1742 ,5592,4649,707 }, {778,313,1742 ,5589,5592,707 }, - {313,5132,5130 ,5592,5593,5571 }, {1562,313,5130 ,4649,5592,5571 }, - {5130,5132,5131 ,5571,5593,5586 }, {5132,5141,5204 ,5593,5594,5578 }, - {5131,5132,5204 ,5586,5593,5578 }, {5141,5145,3683 ,5594,5595,5417 }, - {5204,5141,3683 ,5578,5594,5417 }, {5145,1289,1583 ,5595,5596,5415 }, - {3683,5145,1583 ,5417,5595,5415 }, {1289,3952,4489 ,5596,5597,5584 }, - {1583,1289,4489 ,5415,5596,5584 }, {4342,3528,4321 ,4950,5061,4873 }, - {1289,2713,3952 ,5596,4352,5597 }, {5141,1289,5145 ,5594,5596,5595 }, - {1289,3141,2713 ,5596,4701,4352 }, {5231,2375,3276 ,115,4479,116 }, - {5419,3820,3936 ,5598,5591,5599 }, {4024,5419,3936 ,5600,5598,5599 }, - {3798,778,3820 ,5601,5589,5591 }, {5419,3798,3820 ,5598,5601,5591 }, - {3798,4325,313 ,5601,5602,5592 }, {778,3798,313 ,5589,5601,5592 }, - {4325,5133,5132 ,5602,5603,5593 }, {313,4325,5132 ,5592,5602,5593 }, - {5133,533,5141 ,5603,5604,5594 }, {5132,5133,5141 ,5593,5603,5594 }, - {533,1944,5141 ,5604,5605,5594 }, {1944,2270,1289 ,5605,5606,5596 }, - {5141,1944,1289 ,5594,5605,5596 }, {2270,3222,1289 ,5606,5607,5596 }, - {1289,3222,3141 ,5596,5607,4701 }, {5133,1944,533 ,5603,5605,5604 }, - {5163,4127,3141 ,4987,4702,4701 }, {3222,5163,3141 ,5607,4987,4701 }, - {7090,7089,6281 ,4080,5608,4078 }, {4426,1414,4024 ,1056,5609,5600 }, - {3733,4426,4024 ,5610,1056,5600 }, {1414,5422,5419 ,5609,5611,5598 }, - {4024,1414,5419 ,5600,5609,5598 }, {4014,3798,5419 ,5612,5601,5598 }, - {5422,4014,5419 ,5611,5612,5598 }, {4014,3947,4325 ,5612,5613,5602 }, - {3798,4014,4325 ,5601,5612,5602 }, {5133,5561,1944 ,5603,5614,5605 }, - {2270,3002,3222 ,5606,5615,5607 }, {3222,3002,5163 ,5607,5615,4987 }, - {4545,4980,3621 ,586,241,625 }, {3947,5134,5133 ,5613,5616,5603 }, - {4325,3947,5133 ,5602,5613,5603 }, {5133,5134,5561 ,5603,5616,5614 }, - {5134,1786,1944 ,5616,5617,5605 }, {5561,5134,1944 ,5614,5616,5605 }, - {1786,5144,2270 ,5617,5618,5606 }, {1944,1786,2270 ,5605,5617,5606 }, - {5144,996,3002 ,5618,5003,5615 }, {2270,5144,3002 ,5606,5618,5615 }, - {3002,996,5163 ,5615,5003,4987 }, {5163,996,4176 ,4987,5003,4703 }, - {4014,159,3947 ,5612,5619,5613 }, {3947,159,5134 ,5613,5619,5616 }, - {6033,5987,5982 ,5620,5621,4218 }, {4012,1414,4426 ,5622,5609,1056 }, - {3816,4012,4426 ,5623,5622,1056 }, {5268,5422,1414 ,5624,5611,5609 }, - {4012,5268,1414 ,5622,5624,5609 }, {5268,5773,4014 ,5624,5625,5612 }, - {5422,5268,4014 ,5611,5624,5612 }, {5773,3971,4014 ,5625,5626,5612 }, - {3971,2961,159 ,5626,5627,5619 }, {4014,3971,159 ,5612,5626,5619 }, - {2961,5135,5134 ,5627,5628,5616 }, {159,2961,5134 ,5619,5627,5616 }, - {5135,5142,1786 ,5628,5629,5617 }, {5134,5135,1786 ,5616,5628,5617 }, - {1786,5142,5144 ,5617,5629,5618 }, {5142,5311,996 ,5629,5630,5003 }, - {5144,5142,996 ,5618,5629,5003 }, {5311,3784,996 ,5630,2252,5003 }, - {5336,4012,3816 ,5631,5622,5623 }, {5157,3971,5773 ,5632,5626,5625 }, - {5268,5157,5773 ,5624,5632,5625 }, {5447,5426,2140 ,5633,5634,5635 }, - {5157,5268,4012 ,5632,5624,5622 }, {5336,5157,4012 ,5631,5632,5622 }, - {5135,5456,5142 ,5628,5636,5629 }, {6905,5669,5626 ,2506,5553,1460 }, - {5251,5300,5299 ,3802,3793,3800 }, {4097,3816,5445 ,5637,5623,3520 }, - {4293,4097,5445 ,2732,5637,3520 }, {4294,5336,3816 ,5638,5631,5623 }, - {4097,4294,3816 ,5637,5638,5623 }, {4294,3055,5157 ,5638,5639,5632 }, - {5336,4294,5157 ,5631,5638,5632 }, {3055,1391,3971 ,5639,5640,5626 }, - {5157,3055,3971 ,5632,5639,5626 }, {1391,5343,2961 ,5640,5641,5627 }, - {3971,1391,2961 ,5626,5640,5627 }, {5343,5269,5135 ,5641,5642,5628 }, - {2961,5343,5135 ,5627,5641,5628 }, {5269,5310,5456 ,5642,5643,5636 }, - {5135,5269,5456 ,5628,5642,5636 }, {5310,4884,5142 ,5643,2253,5629 }, - {5456,5310,5142 ,5636,5643,5629 }, {5142,4884,5311 ,5629,2253,5630 }, - {5311,4884,3784 ,5630,2253,2252 }, {5343,5310,5269 ,5641,5643,5642 }, - {3100,1552,1590 ,2955,2266,3028 }, {4881,3536,4293 ,2731,5644,2732 }, - {5343,5360,5310 ,5641,5645,5643 }, {5310,5574,4884 ,5643,5646,2253 }, - {5058,3320,2163 ,5647,5455,243 }, {3536,4097,4293 ,5644,5637,2732 }, - {3403,4294,4097 ,5648,5638,5637 }, {3536,3403,4097 ,5644,5648,5637 }, - {3403,1690,3055 ,5648,5649,5639 }, {4294,3403,3055 ,5638,5648,5639 }, - {1690,5164,1391 ,5649,5650,5640 }, {3055,1690,1391 ,5639,5649,5640 }, - {5164,5312,5343 ,5650,5651,5641 }, {1391,5164,5343 ,5640,5650,5641 }, - {5312,5226,5360 ,5651,5652,5645 }, {5343,5312,5360 ,5641,5651,5645 }, - {5226,5601,5310 ,5652,5653,5643 }, {5360,5226,5310 ,5645,5652,5643 }, - {5601,711,5574 ,5653,5654,5646 }, {5310,5601,5574 ,5643,5653,5646 }, - {711,85,4884 ,5654,2504,2253 }, {5574,711,4884 ,5646,5654,2253 }, - {125,5127,124 ,399,5114,2206 }, {5164,5226,5312 ,5650,5652,5651 }, - {5226,711,5601 ,5652,5654,5653 }, {5308,505,5309 ,3528,986,987 }, - {5325,5297,5298 ,5655,3826,3818 }, {5379,4931,4916 ,3998,5066,2248 }, - {5200,5224,4679 ,5656,3850,3852 }, {4558,4631,4598 ,4209,1816,5343 }, - {8090,8080,8132 ,412,1094,413 }, {2320,2319,8049 ,1406,3228,5393 }, - {6256,5609,5953 ,5657,5658,5659 }, {5394,3499,405 ,5660,5661,5662 }, - {758,5361,3525 ,5663,5664,5665 }, {6243,6244,5356 ,5666,5667,4258 }, - {1158,253,249 ,2744,2564,644 }, {5322,5321,5320 ,4297,5668,4464 }, - {6306,5943,6336 ,5669,5402,5670 }, {5122,5717,3507 ,4024,4023,5671 }, - {1661,3611,6111 ,5672,5673,5674 }, {4805,1791,4711 ,5376,5675,5358 }, - {3320,911,2163 ,5455,1159,243 }, {5186,3536,4881 ,5676,5644,2731 }, - {5165,5186,4881 ,4226,5676,2731 }, {4370,3403,3536 ,5677,5648,5644 }, - {5186,4370,3536 ,5676,5677,5644 }, {4370,5156,1690 ,5677,5678,5649 }, - {3403,4370,1690 ,5648,5677,5649 }, {5156,5529,5164 ,5678,5679,5650 }, - {1690,5156,5164 ,5649,5678,5650 }, {5529,1386,5164 ,5679,5680,5650 }, - {1386,5159,5226 ,5680,5681,5652 }, {5164,1386,5226 ,5650,5680,5652 }, - {5159,3840,5226 ,5681,5682,5652 }, {3840,4250,711 ,5682,4161,5654 }, - {5226,3840,711 ,5652,5682,5654 }, {711,4250,85 ,5654,4161,2504 }, - {3499,5394,405 ,5661,5660,5662 }, {6245,6246,6273 ,5560,5559,5683 }, - {6246,6274,6273 ,5559,5684,5683 }, {6111,6063,5575 ,5674,5685,5686 }, - {1451,1538,2954 ,175,0,5687 }, {4490,4273,2954 ,5688,120,5687 }, - {542,1451,2954 ,122,175,5687 }, {5114,2291,2342 ,5689,1115,5690 }, - {1561,407,1525 ,1865,4018,1866 }, {4860,4635,5092 ,5531,5487,3953 }, - {3817,4682,5153 ,1189,1191,3896 }, {5960,5515,6005 ,5568,5567,5691 }, - {747,5782,5781 ,5692,5693,5694 }, {1741,6104,6230 ,5695,5696,2144 }, - {6055,3906,5129 ,3874,5697,5698 }, {2534,368,198 ,2846,1396,1392 }, - {6274,3666,5880 ,5684,5699,5700 }, {5296,5323,5322 ,4296,5701,4297 }, - {5575,202,5958 ,5686,4105,5702 }, {6042,5230,5921 ,5703,5704,5705 }, - {202,5122,5958 ,4105,4024,5702 }, {5898,5653,6115 ,5706,3644,3645 }, - {7487,7516,7540 ,5707,5708,5709 }, {5156,1386,5529 ,5678,5680,5679 }, - {1386,3840,5159 ,5680,5682,5681 }, {5139,5146,5260 ,1939,1075,4174 }, - {6053,5874,5925 ,4463,4896,5710 }, {4153,4374,3953 ,5711,5712,5713 }, - {5891,3822,5602 ,5714,5715,5716 }, {6052,5486,3311 ,5717,5718,5303 }, - {5948,5602,3507 ,5719,5716,5671 }, {5717,5948,3507 ,4023,5719,5671 }, - {5774,5750,5775 ,5720,5156,5158 }, {5808,5807,5774 ,5721,4769,5720 }, - {5775,5808,5774 ,5158,5721,5720 }, {5808,5840,5807 ,5721,4770,4769 }, - {4273,542,2954 ,120,122,5687 }, {4648,1125,1269 ,5722,5723,5724 }, - {7846,7845,7793 ,4162,5725,5726 }, {4859,5501,5165 ,5039,5727,4226 }, - {5026,4859,5165 ,4225,5039,4226 }, {5501,5537,5165 ,5727,5728,4226 }, - {2799,5186,5165 ,5729,5676,4226 }, {5537,2799,5165 ,5728,5729,4226 }, - {2799,5313,4370 ,5729,5730,5677 }, {5186,2799,4370 ,5676,5729,5677 }, - {5313,5358,5156 ,5730,5731,5678 }, {4370,5313,5156 ,5677,5730,5678 }, - {5358,1533,5156 ,5731,5732,5678 }, {1533,3857,1386 ,5732,5733,5680 }, - {5156,1533,1386 ,5678,5732,5680 }, {3857,5270,3840 ,5733,5734,5682 }, - {1386,3857,3840 ,5680,5733,5682 }, {4404,4250,3840 ,5072,4161,5682 }, - {5270,4404,3840 ,5734,5072,5682 }, {5200,4681,5224 ,5656,4958,3850 }, - {4410,6119,5303 ,5735,5736,5737 }, {3845,3497,5319 ,3635,5738,5739 }, - {2238,1272,1268 ,2697,5740,4568 }, {5647,5689,5688 ,5333,5741,5519 }, - {5689,5739,5738 ,5741,5157,5520 }, {5739,5750,5738 ,5157,5156,5520 }, - {5776,5775,5739 ,5742,5158,5157 }, {5809,5808,5775 ,5743,5721,5158 }, - {5776,5809,5775 ,5742,5743,5158 }, {5809,5840,5808 ,5743,4770,5721 }, - {5461,5962,5252 ,5744,5745,5746 }, {2004,1937,4490 ,5747,59,5688 }, - {6235,6165,5703 ,4215,4219,5748 }, {4766,4826,4765 ,5449,5413,3983 }, - {7794,7846,7793 ,5749,4162,5726 }, {3857,4015,5270 ,5733,5750,5734 }, - {4753,4696,4793 ,5383,5382,5421 }, {6418,5090,5091 ,3441,4929,5133 }, - {4653,5182,4599 ,4347,4567,4210 }, {5368,5888,6077 ,5751,5752,5753 }, - {3562,3856,6037 ,4753,5754,5235 }, {6244,6272,5663 ,5667,5755,4259 }, - {6240,6268,6254 ,5756,5757,5758 }, {2048,2015,2049 ,5461,759,758 }, - {5566,5581,5605 ,5759,5760,5761 }, {5647,5664,5689 ,5333,5762,5741 }, - {5841,5840,5809 ,5763,4770,5743 }, {1293,932,532 ,5764,5765,5766 }, - {4271,932,1464 ,5767,5765,5768 }, {1937,4273,4490 ,59,120,5688 }, - {4711,1791,4771 ,5358,5675,3622 }, {1928,5501,4859 ,1282,5727,5039 }, - {5501,2799,5537 ,5727,5729,5728 }, {5313,1533,5358 ,5730,5732,5731 }, - {5260,1868,2217 ,4174,2249,4569 }, {5902,686,6093 ,5769,5770,5771 }, - {3583,5391,5652 ,5772,5773,5774 }, {6046,5713,5686 ,5775,5776,5777 }, - {5935,3560,6218 ,5778,5779,5780 }, {5504,5541,5566 ,5781,5782,5759 }, - {5531,5504,5566 ,5783,5781,5759 }, {5566,5541,5581 ,5759,5782,5760 }, - {5541,5582,5605 ,5782,5784,5761 }, {5581,5541,5605 ,5760,5782,5761 }, - {5582,5622,5647 ,5784,5785,5333 }, {5605,5582,5647 ,5761,5784,5333 }, - {5647,5622,5664 ,5333,5785,5762 }, {5622,5690,5689 ,5785,5786,5741 }, - {5664,5622,5689 ,5762,5785,5741 }, {5690,5740,5739 ,5786,5787,5157 }, - {5689,5690,5739 ,5741,5786,5157 }, {5777,5776,5739 ,5788,5742,5157 }, - {5740,5777,5739 ,5787,5788,5157 }, {5810,5809,5776 ,5789,5743,5742 }, - {5777,5810,5776 ,5788,5789,5742 }, {5842,5841,5809 ,5790,5763,5743 }, - {5810,5842,5809 ,5789,5790,5743 }, {5842,5840,5841 ,5790,4770,5763 }, - {1246,4271,5840 ,5791,5767,4770 }, {5842,1246,5840 ,5790,5791,4770 }, - {532,932,4271 ,5766,5765,5767 }, {1246,532,4271 ,5791,5766,5767 }, - {1689,1937,2004 ,5792,59,5747 }, {4743,5732,5701 ,3629,3940,3938 }, - {489,4326,3761 ,3639,219,218 }, {4744,5049,4859 ,4424,5038,5039 }, - {4096,2799,5501 ,5793,5729,5727 }, {1928,4096,5501 ,1282,5793,5727 }, - {4096,3876,5313 ,5793,5794,5730 }, {2799,4096,5313 ,5729,5793,5730 }, - {3876,5155,1533 ,5794,5795,5732 }, {5313,3876,1533 ,5730,5794,5732 }, - {5155,5620,3857 ,5795,5796,5733 }, {1533,5155,3857 ,5732,5795,5733 }, - {5620,5344,4015 ,5796,5797,5750 }, {3857,5620,4015 ,5733,5796,5750 }, - {5344,4849,5270 ,5797,5436,5734 }, {4015,5344,5270 ,5750,5797,5734 }, - {4849,4433,4404 ,5436,4591,5072 }, {5270,4849,4404 ,5734,5436,5072 }, - {1791,4805,3367 ,5675,5376,5798 }, {5391,3583,3608 ,5773,5772,5799 }, - {3498,5960,6005 ,5800,5568,5691 }, {5652,6046,5686 ,5774,5775,5777 }, - {5463,5505,5504 ,5801,5802,5781 }, {5505,5541,5504 ,5802,5782,5781 }, - {5582,5606,5622 ,5784,5803,5785 }, {5690,5741,5740 ,5786,5804,5787 }, - {5857,1246,5842 ,5805,5791,5790 }, {5155,5344,5620 ,5795,5797,5796 }, - {5290,5308,5289 ,5247,3528,80 }, {4793,5770,5732 ,5421,3949,3940 }, - {4743,4793,5732 ,3629,5421,3940 }, {4797,4765,5259 ,3984,3983,3794 }, - {4715,4714,4681 ,1029,1031,4958 }, {3498,5478,5960 ,5800,5806,5568 }, - {2568,5391,3608 ,5807,5773,5799 }, {5478,6056,6045 ,5806,5808,935 }, - {5880,6137,6136 ,5700,5809,5810 }, {5663,5880,6136 ,4259,5700,5810 }, - {5427,5428,5463 ,5811,5812,5801 }, {5463,5485,5505 ,5801,5813,5802 }, - {5741,5778,5777 ,5804,5814,5788 }, {5740,5741,5777 ,5787,5804,5788 }, - {5778,5810,5777 ,5814,5789,5788 }, {421,1293,746 ,5815,5764,2661 }, - {920,1191,3986 ,57,5816,5817 }, {495,4776,3788 ,4389,5390,4410 }, - {5188,6744,5786 ,4812,3986,4813 }, {3876,4205,5155 ,5794,5818,5795 }, - {3787,5918,5562 ,5819,5820,4193 }, {5224,5267,5244 ,3850,4647,79 }, - {1191,920,1689 ,5816,57,5792 }, {3367,920,3986 ,5798,57,5817 }, - {5960,5478,6045 ,5568,5806,935 }, {5894,2568,3608 ,5821,5807,5799 }, - {6137,3989,4028 ,5809,5822,5823 }, {5391,6046,5652 ,5773,5775,5774 }, - {6136,6137,4028 ,5810,5809,5823 }, {5429,5464,5463 ,5824,5825,5801 }, - {5428,5429,5463 ,5812,5824,5801 }, {5463,5464,5485 ,5801,5825,5813 }, - {5464,5506,5505 ,5825,5826,5802 }, {5485,5464,5505 ,5813,5825,5802 }, - {5506,5542,5541 ,5826,5827,5782 }, {5505,5506,5541 ,5802,5826,5782 }, - {5542,5543,5541 ,5827,5828,5782 }, {5543,5583,5582 ,5828,5829,5784 }, - {5541,5543,5582 ,5782,5828,5784 }, {5582,5583,5606 ,5784,5829,5803 }, - {5583,5623,5622 ,5829,5830,5785 }, {5606,5583,5622 ,5803,5829,5785 }, - {5623,5665,5622 ,5830,5831,5785 }, {5622,5665,5690 ,5785,5831,5786 }, - {5665,5707,5690 ,5831,5832,5786 }, {5690,5707,5741 ,5786,5832,5804 }, - {5707,5779,5778 ,5832,5833,5814 }, {5741,5707,5778 ,5804,5832,5814 }, - {5811,5810,5778 ,5834,5789,5814 }, {5779,5811,5778 ,5833,5834,5814 }, - {5811,5822,5810 ,5834,5835,5789 }, {5843,5842,5810 ,1372,5790,5789 }, - {5822,5843,5810 ,5835,1372,5789 }, {2958,5857,5842 ,1374,5805,5790 }, - {5843,2958,5842 ,1372,1374,5790 }, {1662,1246,5857 ,5836,5791,5805 }, - {2958,1662,5857 ,1374,5836,5805 }, {746,532,1246 ,2661,5766,5791 }, - {1662,746,1246 ,5836,2661,5791 }, {3367,3986,2953 ,5798,5817,5837 }, - {1791,3367,2953 ,5675,5798,5837 }, {556,455,1344 ,4043,2205,300 }, - {994,4096,1928 ,5838,5793,1282 }, {5197,994,1928 ,4842,5838,1282 }, - {994,5421,4096 ,5838,5839,5793 }, {5421,4529,3876 ,5839,5840,5794 }, - {4096,5421,3876 ,5793,5839,5794 }, {4529,3865,4205 ,5840,5841,5818 }, - {3876,4529,4205 ,5794,5840,5818 }, {3865,5357,5155 ,5841,5842,5795 }, - {4205,3865,5155 ,5818,5841,5795 }, {5357,5154,5155 ,5842,5843,5795 }, - {5154,4345,5344 ,5843,5844,5797 }, {5155,5154,5344 ,5795,5843,5797 }, - {4345,4820,4849 ,5844,2399,5436 }, {5344,4345,4849 ,5797,5844,5436 }, - {5337,4914,4866 ,572,65,3641 }, {5290,5289,5244 ,5247,80,79 }, - {3875,3184,2048 ,5845,4453,5461 }, {920,1937,1689 ,57,59,5792 }, - {4028,3989,5193 ,5823,5822,5846 }, {3989,5252,5193 ,5822,5746,5846 }, - {5395,5429,5428 ,5348,5824,5812 }, {5506,5543,5542 ,5826,5828,5827 }, - {5665,5666,5707 ,5831,5847,5832 }, {5811,5843,5822 ,5834,1372,5835 }, - {2958,746,1662 ,1374,2661,5836 }, {3446,5884,3781 ,3718,5848,5849 }, - {6344,4568,4548 ,1450,1492,589 }, {5421,3865,4529 ,5839,5841,5840 }, - {6749,6785,5548 ,4046,4140,1590 }, {5244,5221,5222 ,79,4864,4566 }, - {6056,5883,6080 ,5808,5850,936 }, {5904,1124,5849 ,5851,5852,5853 }, - {5252,5962,4466 ,5746,5745,5854 }, {5121,5167,5120 ,5855,5856,5857 }, - {5167,5190,5166 ,5856,5858,3427 }, {1791,2953,5836 ,5675,5837,5859 }, - {4679,5223,5182 ,3852,3851,4567 }, {5288,5287,5243 ,3993,4003,3994 }, - {4932,4931,5379 ,4580,5066,3998 }, {5515,5898,6115 ,5567,5706,3645 }, - {5117,5515,6115 ,1113,5567,3645 }, {4466,3469,6104 ,5854,5860,5696 }, - {5396,5430,5429 ,3548,5861,5824 }, {5395,5396,5429 ,5348,3548,5824 }, - {5430,5465,5464 ,5861,5862,5825 }, {5429,5430,5464 ,5824,5861,5825 }, - {5465,5507,5506 ,5862,5863,5826 }, {5464,5465,5506 ,5825,5862,5826 }, - {5507,5532,5506 ,5863,5864,5826 }, {5532,5544,5543 ,5864,5865,5828 }, - {5506,5532,5543 ,5826,5864,5828 }, {5544,5584,5583 ,5865,5866,5829 }, - {5543,5544,5583 ,5828,5865,5829 }, {5583,5584,5623 ,5829,5866,5830 }, - {5623,5666,5665 ,5830,5847,5831 }, {5592,746,2224 ,3671,2661,2660 }, - {7538,7573,7602 ,2014,2013,5867 }, {5421,994,3865 ,5839,5838,5841 }, - {4669,4896,4775 ,3879,3878,4388 }, {6045,6056,6080 ,935,5808,936 }, - {5883,5954,5453 ,5850,5868,937 }, {6080,5883,5453 ,936,5850,937 }, - {5954,3657,5923 ,5868,5869,2073 }, {5386,3905,3892 ,5870,4194,4970 }, - {4281,615,1330 ,51,766,53 }, {5167,5205,5190 ,5856,5219,5858 }, - {4771,1791,5836 ,3622,5675,5859 }, {5804,4771,5803 ,3623,3622,5871 }, - {5453,5954,5923 ,937,5868,2073 }, {5461,5984,6113 ,5744,5872,5873 }, - {5894,3608,6113 ,5821,5799,5873 }, {5584,5624,5623 ,5866,5874,5830 }, - {5624,5648,5623 ,5874,5875,5830 }, {5648,5667,5666 ,5875,5876,5847 }, - {5623,5648,5666 ,5830,5875,5847 }, {5667,5708,5707 ,5876,5877,5832 }, - {5666,5667,5707 ,5847,5876,5832 }, {5708,5751,5707 ,5877,5878,5832 }, - {5751,5779,5707 ,5878,5833,5832 }, {5751,5812,5811 ,5878,660,5834 }, - {5779,5751,5811 ,5833,5878,5834 }, {5844,5843,5811 ,5179,1372,5834 }, - {5812,5844,5811 ,660,5179,5834 }, {4724,4908,5245 ,4737,5879,5880 }, - {5984,5894,6113 ,5872,5821,5873 }, {3657,6178,5923 ,5869,5881,2073 }, - {3830,5196,5197 ,5882,5883,4842 }, {4518,3830,5197 ,1281,5882,4842 }, - {4372,994,5197 ,5884,5838,4842 }, {5196,4372,5197 ,5883,5884,4842 }, - {4372,5425,3865 ,5884,5885,5841 }, {994,4372,3865 ,5838,5884,5841 }, - {5425,3083,5357 ,5885,5886,5842 }, {3865,5425,5357 ,5841,5885,5842 }, - {5357,3083,5154 ,5842,5886,5843 }, {3083,1020,4345 ,5886,3817,5844 }, - {5154,3083,4345 ,5843,5886,5844 }, {1020,4712,4820 ,3817,3816,2399 }, - {4345,1020,4820 ,5844,3817,2399 }, {4775,4896,4861 ,4388,3878,3877 }, - {3575,3584,5293 ,5887,5888,5889 }, {3576,5294,5912 ,5890,5891,5892 }, - {2408,309,5231 ,1399,4472,115 }, {4687,320,274 ,4985,1871,1819 }, - {5768,5804,5767 ,933,3623,5893 }, {6178,4901,6162 ,5881,3596,3598 }, - {5923,6178,6162 ,2073,5881,3598 }, {3366,3310,5461 ,5894,5587,5744 }, - {3310,5984,5461 ,5587,5872,5744 }, {7043,2279,7042 ,5895,5337,5338 }, - {5050,3244,1922 ,5233,4433,4432 }, {1196,4669,3266 ,4330,3879,3884 }, - {5989,3310,3366 ,5588,5587,5894 }, {6068,5989,3366 ,5896,5588,5894 }, - {772,1605,713 ,18,17,3 }, {6132,3628,3632 ,5897,4213,5898 }, - {5109,5121,5107 ,4182,5855,4183 }, {5109,5147,5121 ,4182,5899,5855 }, - {5168,5167,5121 ,5900,5856,5855 }, {5147,5168,5121 ,5899,5900,5855 }, - {5206,5205,5167 ,5901,5219,5856 }, {5168,5206,5167 ,5900,5901,5856 }, - {5206,5229,5205 ,5901,5902,5219 }, {7310,7370,7344 ,4283,3750,2749 }, - {5229,4178,5205 ,5902,3825,5219 }, {5305,5306,5572 ,2283,462,2284 }, - {75,1629,2938 ,3962,4207,4320 }, {5976,6028,5927 ,5903,5316,5318 }, - {5364,5397,5396 ,3268,5904,3548 }, {5363,5364,5396 ,3269,3268,3548 }, - {5397,5431,5430 ,5904,5905,5861 }, {5396,5397,5430 ,3548,5904,5861 }, - {5431,5466,5465 ,5905,5906,5862 }, {5430,5431,5465 ,5861,5905,5862 }, - {5466,5467,5465 ,5906,5907,5862 }, {5467,5508,5507 ,5907,5908,5863 }, - {5465,5467,5507 ,5862,5907,5863 }, {5507,5508,5532 ,5863,5908,5864 }, - {5508,5545,5544 ,5908,5909,5865 }, {5532,5508,5544 ,5864,5908,5865 }, - {5545,5585,5584 ,5909,5910,5866 }, {5544,5545,5584 ,5865,5909,5866 }, - {5585,5625,5624 ,5910,5911,5874 }, {5584,5585,5624 ,5866,5910,5874 }, - {5624,5625,5648 ,5874,5911,5875 }, {5625,5668,5667 ,5911,5912,5876 }, - {5648,5625,5667 ,5875,5911,5876 }, {5668,5709,5708 ,5912,5253,5877 }, - {5667,5668,5708 ,5876,5912,5877 }, {5708,5709,5751 ,5877,5253,5878 }, - {1557,5989,6068 ,5577,5588,5896 }, {5812,7038,5823 ,660,3832,661 }, - {3666,1557,6068 ,5699,5577,5896 }, {5115,6060,6281 ,5913,5914,4078 }, - {2279,1313,2251 ,5337,3674,3676 }, {3943,5662,4045 ,4755,5915,5916 }, - {5255,5276,6480 ,3682,1525,1524 }, {3669,1196,3266 ,5917,4330,3884 }, - {6239,6055,6073 ,5918,3874,3873 }, {6238,6239,6073 ,5919,5918,3873 }, - {3469,5651,6104 ,5860,5920,5696 }, {5651,5254,6104 ,5920,4042,5696 }, - {5403,3631,5417 ,5921,5922,5923 }, {5489,5911,5932 ,4244,5924,5925 }, - {5474,5370,5932 ,4243,2171,5925 }, {5804,5803,5767 ,3623,5871,5893 }, - {5108,5107,5106 ,4184,4183,5926 }, {5169,5168,5147 ,5927,5900,5899 }, - {5109,5169,5147 ,4182,5927,5899 }, {5206,4178,5229 ,5901,3825,5902 }, - {2713,3141,4091 ,4352,4701,123 }, {4771,5836,5803 ,3622,5859,5871 }, - {5585,5607,5625 ,5910,5928,5911 }, {5709,5752,5751 ,5253,4374,5878 }, - {6268,1661,3906 ,5757,5672,5697 }, {5261,5538,3830 ,173,5929,5882 }, - {5538,3417,5196 ,5929,5930,5883 }, {3830,5538,5196 ,5882,5929,5883 }, - {5500,4372,5196 ,5931,5884,5883 }, {3417,5500,5196 ,5930,5931,5883 }, - {5500,5821,5425 ,5931,5932,5885 }, {4372,5500,5425 ,5884,5931,5885 }, - {5821,4072,5425 ,5932,5933,5885 }, {4072,1938,3083 ,5933,5934,5886 }, - {5425,4072,3083 ,5885,5933,5886 }, {1938,4027,1020 ,5934,3470,3817 }, - {3083,1938,1020 ,5886,5934,3817 }, {5593,5552,5594 ,5935,5936,5937 }, - {3321,7437,7386 ,2461,5938,5512 }, {3899,1196,3669 ,1938,4330,5917 }, - {5185,3395,6142 ,5939,5940,5941 }, {5579,5564,4565 ,5942,5943,5944 }, - {5169,5206,5168 ,5927,5901,5900 }, {5321,5364,5346 ,5668,3268,3267 }, - {5364,5398,5397 ,3268,5945,5904 }, {5398,5432,5431 ,5945,5946,5905 }, - {5397,5398,5431 ,5904,5945,5905 }, {5432,5467,5466 ,5946,5907,5906 }, - {5431,5432,5466 ,5905,5946,5906 }, {6905,6957,5710 ,2506,4315,5254 }, - {7268,7317,7316 ,3773,5947,5948 }, {8078,8124,8076 ,1744,1141,617 }, - {4572,3693,3638 ,5949,5347,5950 }, {5390,5579,5415 ,3205,5942,5951 }, - {4763,4764,4797 ,4787,3982,3984 }, {5148,5169,5109 ,5952,5927,4182 }, - {5110,5148,5109 ,5953,5952,4182 }, {5207,5206,5169 ,5954,5901,5927 }, - {5148,5207,5169 ,5952,5954,5927 }, {5249,4178,5206 ,5955,3825,5901 }, - {5207,5249,5206 ,5954,5955,5901 }, {5249,5272,4178 ,5955,5956,3825 }, - {5296,5297,5323 ,4296,3826,5701 }, {5347,5321,5322 ,5957,5668,4297 }, - {5323,5347,5322 ,5701,5957,4297 }, {5365,5364,5321 ,5958,3268,5668 }, - {5347,5365,5321 ,5957,5958,5668 }, {5365,5399,5398 ,5958,5959,5945 }, - {5364,5365,5398 ,3268,5958,5945 }, {5399,5433,5432 ,5959,5960,5946 }, - {5398,5399,5432 ,5945,5959,5946 }, {5433,5468,5467 ,5960,5961,5907 }, - {5432,5433,5467 ,5946,5960,5907 }, {5468,5509,5508 ,5961,5962,5908 }, - {5467,5468,5508 ,5907,5961,5908 }, {5509,5546,5545 ,5962,5963,5909 }, - {5508,5509,5545 ,5908,5962,5909 }, {5546,5586,5585 ,5963,1461,5910 }, - {5545,5546,5585 ,5909,5963,5910 }, {5585,5586,5607 ,5910,1461,5928 }, - {5586,5626,5625 ,1461,1460,5911 }, {5607,5586,5625 ,5928,1461,5911 }, - {5625,5626,5668 ,5911,1460,5912 }, {5668,5669,5709 ,5912,5553,5253 }, - {5293,3558,3629 ,5889,5964,5965 }, {5731,5768,5729 ,934,933,200 }, - {5768,5767,5729 ,933,5893,200 }, {5326,6041,5327 ,3714,3801,3702 }, - {5146,3760,1868 ,1075,2250,2249 }, {5731,5729,5730 ,934,200,199 }, - {5731,5730,3615 ,934,199,201 }, {3952,2713,3259 ,5597,4352,407 }, - {1156,5138,5128 ,3100,1940,5966 }, {5500,4072,5821 ,5931,5933,5932 }, - {7837,4897,3895 ,5967,5442,4455 }, {3760,3899,3669 ,2250,1938,5917 }, - {184,4295,4016 ,4052,5968,5969 }, {1064,5579,5390 ,5970,5942,3205 }, - {7166,5110,5109 ,5971,5953,4182 }, {5546,5547,5586 ,5963,5972,1461 }, - {6234,6167,6002 ,5973,5974,5975 }, {5243,5287,5265 ,3994,4003,4882 }, - {3221,5262,5261 ,183,5976,173 }, {5352,3950,3345 ,3502,4530,3476 }, - {5262,5527,5538 ,5976,5977,5929 }, {5261,5262,5538 ,173,5976,5929 }, - {5527,5746,3417 ,5977,5978,5930 }, {5538,5527,3417 ,5929,5977,5930 }, - {5619,5500,3417 ,5979,5931,5930 }, {5746,5619,3417 ,5978,5979,5930 }, - {5619,1671,4072 ,5979,5980,5933 }, {5500,5619,4072 ,5931,5979,5933 }, - {1671,3249,1938 ,5980,5110,5934 }, {4072,1671,1938 ,5933,5980,5934 }, - {572,4873,611 ,1947,4992,1948 }, {6128,1620,6129 ,5981,5982,5983 }, - {4299,1064,5390 ,5984,5970,3205 }, {5446,4299,5390 ,5985,5984,3205 }, - {4299,5579,1064 ,5984,5942,5970 }, {4299,1002,5579 ,5984,2976,5942 }, - {5323,5324,5348 ,5701,5986,5987 }, {5509,5547,5546 ,5962,5972,5963 }, - {4827,5259,4826 ,2734,3794,5413 }, {3249,4905,4594 ,5110,5112,688 }, - {5272,5298,5297 ,5956,3818,3826 }, {5619,5735,1671 ,5979,5988,5980 }, - {6803,5587,5548 ,4169,1459,1590 }, {4863,5378,4904 ,5480,359,3309 }, - {5260,5146,1868 ,4174,1075,2249 }, {5149,5148,5110 ,5989,5952,5953 }, - {5111,5149,5110 ,5990,5989,5953 }, {5208,5207,5148 ,5991,5954,5952 }, - {5149,5208,5148 ,5989,5991,5952 }, {5250,5249,5207 ,5992,5955,5954 }, - {5208,5250,5207 ,5991,5992,5954 }, {5273,5272,5249 ,3819,5956,5955 }, - {5250,5273,5249 ,5992,3819,5955 }, {7683,7704,7682 ,5267,3562,3564 }, - {5348,5347,5323 ,5987,5957,5701 }, {5325,5323,5297 ,5655,5701,3826 }, - {5366,5365,5347 ,5993,5958,5957 }, {5348,5366,5347 ,5987,5993,5957 }, - {5366,5400,5399 ,5993,5994,5959 }, {5365,5366,5399 ,5958,5993,5959 }, - {5400,5434,5433 ,5994,5995,5960 }, {5399,5400,5433 ,5959,5994,5960 }, - {5434,5469,5468 ,5995,5996,5961 }, {5433,5434,5468 ,5960,5995,5961 }, - {5469,5510,5509 ,5996,5997,5962 }, {5468,5469,5509 ,5961,5996,5962 }, - {5510,5511,5509 ,5997,1588,5962 }, {5511,5548,5547 ,1588,1590,5972 }, - {5509,5511,5547 ,5962,1588,5972 }, {5548,5587,5586 ,1590,1459,1461 }, - {5547,5548,5586 ,5972,1590,1461 }, {5860,2321,5951 ,5998,5999,6000 }, - {3620,5991,5946 ,6001,5482,5481 }, {6907,6959,6958 ,6002,6003,4314 }, - {4696,5770,4793 ,5382,3949,5421 }, {6163,5889,6175 ,1453,1587,6004 }, - {5128,2217,5443 ,5966,4569,6005 }, {5266,5243,5221 ,81,3994,4864 }, - {5340,4868,5379 ,4002,3969,3998 }, {5223,5244,5222 ,3851,79,4566 }, - {3221,5527,5262 ,183,5977,5976 }, {3278,8113,1724 ,1158,1157,3880 }, - {5010,2140,5426 ,6006,5635,5634 }, {1166,1119,5844 ,2746,5180,5179 }, - {2375,3945,922 ,4479,4550,117 }, {1116,3350,5497 ,1401,2541,1375 }, - {1488,4264,156 ,5197,5540,5539 }, {3973,4299,5446 ,6007,5984,5985 }, - {5209,5208,5149 ,6008,5991,5989 }, {7566,7621,7565 ,6009,6010,5080 }, - {7621,7647,7620 ,6010,4967,5033 }, {5324,5366,5348 ,5986,5993,5987 }, - {5469,5511,5510 ,5996,1588,5997 }, {6208,6209,6243 ,6011,6012,5666 }, - {5933,3548,5934 ,615,6013,616 }, {3548,5489,5934 ,6013,4244,616 }, - {4278,4260,6138 ,5583,3527,6014 }, {3878,789,3419 ,1248,3910,2012 }, - {1119,1166,2408 ,5180,2746,1399 }, {156,22,1297 ,5539,4066,4048 }, - {5325,5298,6041 ,5655,3818,3801 }, {156,1934,22 ,5539,4620,4066 }, - {1218,3820,5498 ,3255,5591,5590 }, {6736,6754,6703 ,1622,713,5161 }, - {7923,7896,7897 ,816,4355,6015 }, {5772,5746,5527 ,6016,5978,5977 }, - {3984,5772,5527 ,6017,6016,5977 }, {5772,5577,5619 ,6016,6018,5979 }, - {5746,5772,5619 ,5978,6016,5979 }, {5577,4228,5735 ,6018,6019,5988 }, - {5619,5577,5735 ,5979,6018,5988 }, {4228,1099,1671 ,6019,4350,5980 }, - {5735,4228,1671 ,5988,6019,5980 }, {1099,4905,3249 ,4350,5112,5110 }, - {1671,1099,3249 ,5980,4350,5110 }, {3766,7556,4636 ,3954,5116,5118 }, - {3249,5036,4905 ,5110,399,5112 }, {3941,4299,3973 ,5563,5984,6007 }, - {636,3941,3973 ,6020,5563,6007 }, {3941,1511,4299 ,5563,4921,5984 }, - {5158,4631,4599 ,4832,1816,4210 }, {5112,5149,5111 ,6021,5989,5990 }, - {5273,5250,5251 ,3819,5992,3802 }, {2690,303,4296 ,6022,4086,6023 }, - {4191,2690,4296 ,4474,6022,6023 }, {6151,5860,5951 ,6024,5998,6000 }, - {6035,5654,4045 ,6025,6026,5916 }, {1741,6230,5947 ,5695,2144,6027 }, - {5948,5891,5602 ,5719,5714,5716 }, {5979,5929,6132 ,6028,6029,5897 }, - {798,5378,4863 ,78,359,5480 }, {8,1798,4522 ,3341,4451,3481 }, - {5218,5239,5238 ,483,482,4351 }, {5179,5199,5178 ,1879,422,524 }, - {5179,5178,5136 ,1879,524,1817 }, {2797,1935,303 ,6030,4098,4086 }, - {2690,2797,303 ,6022,6030,4086 }, {3150,636,2960 ,6031,6020,4975 }, - {5388,2960,636 ,5428,4975,6020 }, {5150,5149,5112 ,6032,5989,6021 }, - {5113,5150,5112 ,141,6032,6021 }, {5150,5170,5149 ,6032,3683,5989 }, - {5210,5209,5149 ,6033,6008,5989 }, {5170,5210,5149 ,3683,6033,5989 }, - {5210,5208,5209 ,6033,5991,6008 }, {5251,5250,5208 ,3802,5992,5991 }, - {5210,5251,5208 ,6033,3802,5991 }, {3985,3172,1935 ,4802,4155,4098 }, - {2797,3985,1935 ,6030,4802,4098 }, {5349,5324,5325 ,5320,5986,5655 }, - {3482,8106,3449 ,2494,2438,2440 }, {5367,5366,5324 ,6034,5993,5986 }, - {5349,5367,5324 ,5320,6034,5986 }, {5367,5401,5400 ,6034,4145,5994 }, - {5366,5367,5400 ,5993,6034,5994 }, {5401,5435,5434 ,4145,4223,5995 }, - {5400,5401,5434 ,5994,4145,5995 }, {5435,5470,5469 ,4223,6035,5996 }, - {5434,5435,5469 ,5995,4223,5996 }, {5470,5471,5469 ,6035,2051,5996 }, - {5469,5471,5511 ,5996,2051,1588 }, {5652,5686,5651 ,5774,5777,5920 }, - {5651,5747,5254 ,5920,6036,4042 }, {3525,5361,5935 ,5665,5664,5778 }, - {6051,5979,6132 ,6037,6028,5897 }, {6040,6028,5246 ,5317,5316,5176 }, - {5853,5318,6023 ,6038,6039,6040 }, {3731,5922,6075 ,6041,4292,6042 }, - {4654,5200,4679 ,4348,5656,3852 }, {4866,4914,3907 ,3641,65,3883 }, - {4916,4929,4915 ,2248,5142,64 }, {1525,2086,4314 ,1866,1802,1864 }, - {3985,3858,3093 ,4802,4803,4172 }, {3172,3985,3093 ,4155,4802,4172 }, - {5772,4228,5577 ,6016,6019,6018 }, {495,4775,4745 ,4389,4388,5446 }, - {5052,4845,5070 ,5189,3921,6043 }, {789,1156,3858 ,3910,3100,4803 }, - {3858,5128,5119 ,4803,5966,4190 }, {3093,3858,5119 ,4172,4803,4190 }, - {59,145,2689 ,967,810,2821 }, {5435,5471,5470 ,4223,2051,6035 }, - {6246,6247,3666 ,5559,5575,5699 }, {6166,6152,7034 ,4971,6044,6045 }, - {3835,5878,5550 ,6046,2684,6047 }, {6044,5980,5294 ,614,5557,5891 }, - {5889,6339,6034 ,1587,6048,6049 }, {3249,5028,1938 ,5110,5109,5934 }, - {6131,6132,3632 ,6050,5897,5898 }, {6185,5386,3892 ,6051,5870,4970 }, - {5749,5895,3444 ,6052,6053,6054 }, {5490,5749,3444 ,6055,6052,6054 }, - {5325,5326,5349 ,5655,3714,5320 }, {5644,5643,5571 ,4133,4617,4616 }, - {5495,5644,5571 ,4134,4133,4616 }, {5128,5443,5424 ,5966,6005,4227 }, - {3345,4226,835 ,3476,6056,3030 }, {5684,3345,835 ,4683,3476,3030 }, - {4226,1986,3984 ,6056,6057,6017 }, {835,4226,3984 ,3030,6056,6017 }, - {1986,2345,5772 ,6057,6058,6016 }, {3984,1986,5772 ,6017,6057,6016 }, - {2345,5187,4228 ,6058,5144,6019 }, {5772,2345,4228 ,6016,6058,6019 }, - {1111,1099,4228 ,3920,4350,6019 }, {5187,1111,4228 ,5144,3920,6019 }, - {68,2432,3818 ,4087,5427,1244 }, {5119,5128,5424 ,4190,5966,4227 }, - {5443,2217,201 ,6005,4569,4230 }, {5424,5443,201 ,4227,6005,4230 }, - {556,3150,2960 ,4043,6031,4975 }, {556,636,3150 ,4043,6020,6031 }, - {1344,3941,636 ,300,5563,6020 }, {556,1344,636 ,4043,300,6020 }, - {8020,8019,7972 ,1405,1407,6059 }, {2217,3038,2643 ,4569,4342,4232 }, - {201,2217,2643 ,4230,4569,4232 }, {7897,7896,7845 ,6015,4355,5725 }, - {3856,3562,6013 ,5754,4753,6060 }, {6247,1557,3666 ,5575,5577,5699 }, - {6098,6174,6173 ,1565,2381,3711 }, {5790,5813,5104 ,6061,6062,6063 }, - {5755,5790,5104 ,4047,6061,6063 }, {5086,5104,5813 ,6064,6063,6062 }, - {5813,5846,5086 ,6062,6065,6064 }, {5846,4225,257 ,6065,6066,6067 }, - {5714,5715,7028 ,4077,4076,3587 }, {4225,2871,257 ,6066,3649,6067 }, - {5461,3608,5962 ,5744,5799,5745 }, {5644,5660,5643 ,4133,3054,4617 }, - {3038,1341,2634 ,4342,3841,4269 }, {3345,4052,4226 ,3476,6068,6056 }, - {4226,4052,1986 ,6056,6068,6057 }, {1224,2986,1201 ,1508,3500,1477 }, - {3858,1156,5128 ,4803,3100,5966 }, {2643,3038,2634 ,4232,4342,4269 }, - {3788,3672,2634 ,4410,4277,4269 }, {1341,3788,2634 ,3841,4410,4269 }, - {5729,5728,5700 ,200,4486,4501 }, {210,194,262 ,4592,4593,4758 }, - {145,59,113 ,810,967,677 }, {4681,5200,4654 ,4958,5656,4348 }, - {3626,3580,3557 ,4196,6069,6070 }, {4894,1750,1810 ,746,745,779 }, - {4764,4763,4706 ,3982,4787,4786 }, {284,4086,4283 ,139,3723,1678 }, - {5211,5210,5170 ,6071,6033,3683 }, {7873,7923,7897 ,817,816,6015 }, - {5957,202,6063 ,4054,4105,5685 }, {8109,8116,5521 ,2938,172,751 }, - {1700,807,3563 ,6072,6073,6074 }, {3568,1941,3529 ,3839,1034,3837 }, - {5694,5716,5715 ,5326,6075,4076 }, {5716,5756,5755 ,6075,6076,4047 }, - {5715,5716,5755 ,4076,6075,4047 }, {5755,5756,5790 ,4047,6076,6061 }, - {5756,5791,5813 ,6076,6077,6062 }, {5790,5756,5813 ,6061,6076,6062 }, - {5791,5847,5846 ,6077,6078,6065 }, {5813,5791,5846 ,6062,6077,6065 }, - {5847,32,4225 ,6078,6079,6066 }, {5846,5847,4225 ,6065,6078,6066 }, - {32,181,2871 ,6079,6080,3649 }, {4225,32,2871 ,6066,6079,3649 }, - {5151,5125,5171 ,1803,5467,1804 }, {181,712,2871 ,6080,3650,3649 }, - {6242,6270,6269 ,6081,6082,6083 }, {1191,1689,1195 ,5816,5792,725 }, - {1689,4490,4347 ,5792,5688,3287 }, {1586,1191,1195 ,943,5816,725 }, - {612,611,4873 ,5011,1948,4992 }, {3615,5729,5700 ,201,200,4501 }, - {5295,556,808 ,2188,4043,4734 }, {2953,212,5835 ,5837,4614,4573 }, - {5836,2953,5835 ,5859,5837,4573 }, {4599,5182,5158 ,4210,4567,4832 }, - {4166,1016,1251 ,6084,6085,4604 }, {5788,5579,1002 ,6086,5942,2976 }, - {5316,5588,5550 ,6087,6088,6047 }, {6184,1170,1620 ,6089,4103,5982 }, - {6989,5694,5693 ,4586,5326,4075 }, {5716,5744,5756 ,6075,6090,6076 }, - {4106,5684,835 ,1742,4683,3030 }, {5924,6042,5865 ,6091,5703,6092 }, - {5649,5924,5865 ,6093,6091,6092 }, {6000,5851,3870 ,6094,6095,6096 }, - {4490,2954,3867 ,5688,5687,4507 }, {4347,4490,3867 ,3287,5688,4507 }, - {6644,4950,4981 ,5098,1302,1350 }, {3915,3939,4307 ,1575,3539,4562 }, - {3950,3799,4052 ,4530,4531,6068 }, {3345,3950,4052 ,3476,4530,6068 }, - {3799,3282,1986 ,4531,6097,6057 }, {4052,3799,1986 ,6068,4531,6057 }, - {3282,3769,2345 ,6097,6098,6058 }, {1986,3282,2345 ,6057,6097,6058 }, - {3769,5070,5187 ,6098,6043,5144 }, {2345,3769,5187 ,6058,6098,5144 }, - {4681,4714,5224 ,4958,1031,3850 }, {1005,68,3818 ,3535,4087,1244 }, - {5138,5260,5128 ,1940,4174,5966 }, {5767,5766,5728 ,5893,4487,4486 }, - {5729,5767,5728 ,200,5893,4486 }, {5143,1416,297 ,6099,6100,1918 }, - {1416,1455,140 ,6100,1917,1919 }, {4519,5202,1455 ,4746,5550,1917 }, - {1416,4519,1455 ,6100,4746,1917 }, {4519,4491,5202 ,4746,107,5550 }, - {4491,4472,808 ,107,2189,4734 }, {4710,4770,4769 ,4136,4345,5542 }, - {3580,3626,3605 ,6069,4196,3383 }, {5966,297,1455 ,5054,1918,1917 }, - {7745,7795,7744 ,650,3804,6101 }, {6255,6256,6275 ,6102,5657,5576 }, - {6247,6255,6275 ,5575,6102,5576 }, {5782,3836,3385 ,5693,6103,6104 }, - {2990,1519,601 ,3646,2450,3905 }, {6256,5953,1557 ,5657,5659,5577 }, - {6275,6256,1557 ,5576,5657,5577 }, {5756,5792,5791 ,6076,6105,6077 }, - {5852,2213,32 ,6106,6107,6079 }, {5847,5852,32 ,6078,6106,6079 }, - {4322,181,32 ,6108,6080,6079 }, {2213,4322,32 ,6107,6108,6079 }, - {5851,5881,3870 ,6095,6109,6096 }, {1700,3563,2896 ,6072,6074,6110 }, - {4770,5263,4830 ,4345,4302,3642 }, {309,2375,5231 ,4472,4479,115 }, - {4697,5099,3800 ,4327,5494,4325 }, {882,8117,3264 ,3846,4119,2468 }, - {3769,5736,5070 ,6098,6111,6043 }, {1937,4796,4273 ,59,4756,120 }, - {5441,5143,297 ,5194,6099,1918 }, {4447,5143,3399 ,717,6099,715 }, - {670,262,312 ,4760,4758,4759 }, {6158,6284,6034 ,6112,6113,6049 }, - {543,3266,495 ,3840,3884,4389 }, {7073,1166,5844 ,662,2746,5179 }, - {1689,2004,4490 ,5792,5747,5688 }, {5767,5803,5766 ,5893,5871,4487 }, - {5803,5802,5766 ,5871,4681,4487 }, {5819,5818,5802 ,6114,4640,4681 }, - {5803,5819,5802 ,5871,6114,4681 }, {5819,5836,5835 ,6114,5859,4573 }, - {5818,5819,5835 ,4640,6114,4573 }, {2953,3986,1208 ,5837,5817,3211 }, - {212,2953,1208 ,4614,5837,3211 }, {1191,1586,1208 ,5816,943,3211 }, - {3986,1191,1208 ,5817,5816,3211 }, {5953,3870,3310 ,5659,6096,5587 }, - {1557,5953,3310 ,5577,5659,5587 }, {5946,3415,5907 ,5481,6115,6116 }, - {3217,5008,2342 ,6117,6118,5690 }, {3870,3686,5984 ,6096,6119,5872 }, - {3310,3870,5984 ,5587,6096,5872 }, {3686,5915,5894 ,6119,6120,5821 }, - {5984,3686,5894 ,5872,6119,5821 }, {6091,5328,5384 ,2173,2172,6121 }, - {6003,6004,5871 ,6122,6123,4124 }, {5328,5301,5384 ,2172,2698,6121 }, - {3715,3018,5851 ,6124,6125,6095 }, {5718,5757,5756 ,6126,6127,6076 }, - {5943,5514,6009 ,5402,6128,6129 }, {5757,5793,5792 ,6127,6130,6105 }, - {5756,5757,5792 ,6076,6127,6105 }, {5793,5791,5792 ,6130,6077,6105 }, - {5793,5825,5847 ,6130,6131,6078 }, {5791,5793,5847 ,6077,6130,6078 }, - {5847,5825,5852 ,6078,6131,6106 }, {5825,445,2213 ,6131,6132,6107 }, - {5852,5825,2213 ,6106,6131,6107 }, {1456,4322,2213 ,6133,6108,6107 }, - {445,1456,2213 ,6132,6133,6107 }, {1456,181,4322 ,6133,6080,6108 }, - {852,712,181 ,6134,3650,6080 }, {1456,852,181 ,6133,6134,6080 }, - {852,4230,712 ,6134,6135,3650 }, {4249,3702,712 ,6136,1303,3650 }, - {4230,4249,712 ,6135,6136,3650 }, {3606,3607,4164 ,6137,6138,6139 }, - {7873,7846,7847 ,817,4162,3521 }, {5477,5789,6036 ,5399,6140,6141 }, - {5905,5528,5820 ,6142,6143,6144 }, {1538,1101,3867 ,0,2,4507 }, - {4805,4645,3367 ,5376,5378,5798 }, {6950,6644,4981 ,1349,5098,1350 }, - {5274,5300,5251 ,6145,3793,3802 }, {2158,6639,4983 ,1160,3699,480 }, - {6300,6301,6708 ,6146,6147,6148 }, {5342,5143,4447 ,6149,6099,717 }, - {5685,1416,5143 ,6150,6100,6099 }, {5036,3249,4905 ,399,5110,5112 }, - {4830,4829,4770 ,3642,4626,4345 }, {5615,3001,3274 ,3171,3210,3172 }, - {6223,6254,6055 ,6151,5758,3874 }, {5898,5662,5653 ,5706,5915,3644 }, - {6243,6271,6270 ,5666,6152,6082 }, {5610,5609,6248 ,6153,5658,6154 }, - {1028,5843,5844 ,1373,1372,5179 }, {5915,6072,2568 ,6120,6155,5807 }, - {5894,5915,2568 ,5821,6120,5807 }, {6207,6208,6242 ,6156,6011,6081 }, - {7621,7620,7565 ,6010,5033,5080 }, {5718,5719,5757 ,6126,6157,6127 }, - {4231,4249,4230 ,6158,6136,6135 }, {852,4231,4230 ,6134,6158,6135 }, - {7648,7647,7621 ,3952,4967,6010 }, {4231,1185,4249 ,6158,6159,6136 }, - {5915,5905,5820 ,6120,6142,6144 }, {5528,5712,5975 ,6143,6160,6161 }, - {1700,6266,3563 ,6072,399,6074 }, {180,8,131 ,4777,3341,2965 }, - {4400,637,3299 ,4721,3805,3232 }, {5975,5391,2568 ,6161,5773,5807 }, - {1410,5540,3893 ,3911,6162,3789 }, {6072,5975,2568 ,6155,6161,5807 }, - {5253,6046,5391 ,6163,5775,5773 }, {5353,1342,3799 ,851,6164,4531 }, - {5352,5353,3799 ,3502,851,4531 }, {1342,3255,3282 ,6164,6165,6097 }, - {3799,1342,3282 ,4531,6164,6097 }, {3255,1527,3877 ,6165,6166,6167 }, - {3282,3255,3877 ,6097,6165,6167 }, {3255,3282,3877 ,6165,6097,6167 }, - {1527,3255,3877 ,6166,6165,6167 }, {3255,4013,3769 ,6165,6168,6098 }, - {3282,3255,3769 ,6097,6165,6098 }, {4013,4220,5736 ,6168,6169,6111 }, - {3769,4013,5736 ,6098,6168,6111 }, {4220,5052,5070 ,6169,5189,6043 }, - {5736,4220,5070 ,6111,6169,6043 }, {3669,3266,1783 ,5917,3884,2251 }, - {3800,1248,1907 ,4325,2850,1245 }, {1524,3800,1907 ,4326,4325,1245 }, - {5685,774,1416 ,6150,767,6100 }, {5222,5221,5182 ,4566,4864,4567 }, - {2432,1524,3818 ,5427,4326,1244 }, {5128,5260,2217 ,5966,4174,4569 }, - {4883,4801,5127 ,5538,5115,5114 }, {1195,1689,4347 ,725,5792,3287 }, - {4550,5563,4447 ,716,4605,717 }, {5482,5342,4447 ,3565,6149,717 }, - {5126,5482,4447 ,6170,3565,717 }, {5423,5143,5342 ,6171,6099,6149 }, - {5482,5423,5342 ,3565,6171,6149 }, {1634,5685,5143 ,768,6150,6099 }, - {5423,1634,5143 ,6171,768,6099 }, {1416,774,104 ,6100,767,4765 }, - {8052,3638,8051 ,4122,5950,6172 }, {2659,601,2622 ,3485,3905,2840 }, - {3800,3817,1248 ,4325,1189,2850 }, {4872,4697,1524 ,5522,4327,4326 }, - {2954,1538,3867 ,5687,0,4507 }, {5356,5909,4167 ,4258,4260,6173 }, - {5654,6188,5916 ,6026,6174,6175 }, {5975,5253,5391 ,6161,6163,5773 }, - {2342,5008,2273 ,5690,6118,5322 }, {5896,5713,6046 ,6176,5776,5775 }, - {5253,5896,6046 ,6163,6176,5775 }, {564,5309,507 ,3529,987,1523 }, - {5611,5634,5633 ,6177,6178,6179 }, {6949,5634,5672 ,4585,6178,5324 }, - {5633,5634,6949 ,6179,6178,4585 }, {6088,6082,6069 ,3670,1348,6180 }, - {5672,5719,5718 ,5324,6157,6126 }, {5848,2994,445 ,6181,6182,6132 }, - {5825,5848,445 ,6131,6181,6132 }, {2994,1456,445 ,6182,6133,6132 }, - {3703,1185,4231 ,6183,6159,6158 }, {5820,5528,5975 ,6144,6143,6161 }, - {6532,3547,3494 ,6184,803,736 }, {1516,4233,3177 ,1254,6185,1255 }, - {3494,3495,6532 ,736,735,6184 }, {7422,7478,7450 ,1404,1402,399 }, - {5160,3524,5969 ,6186,6187,6188 }, {3018,5530,5851 ,6125,6189,6095 }, - {5965,5329,6076 ,6190,6191,4217 }, {5886,6087,6084 ,6192,6193,6194 }, - {3217,2342,2273 ,6117,5690,5322 }, {3829,3217,2273 ,6195,6117,5322 }, - {5713,5896,4648 ,5776,6176,5722 }, {3562,3943,6013 ,4753,4755,6060 }, - {5353,5733,1342 ,851,1584,6164 }, {1342,1527,3255 ,6164,6166,6165 }, - {4013,3255,1527 ,6168,6165,6166 }, {5244,5266,5221 ,79,81,4864 }, - {3817,1207,1248 ,1189,1074,2850 }, {5685,1634,774 ,6150,768,767 }, - {7509,7508,7479 ,1874,6196,4423 }, {1251,5126,5563 ,4604,6170,4605 }, - {2661,5126,1251 ,4684,6170,4604 }, {5482,1634,5423 ,3565,768,6171 }, - {3816,6577,5445 ,5623,97,3520 }, {3244,5050,993 ,4433,5233,5551 }, - {1376,4788,1196 ,1937,3758,4330 }, {1700,81,323 ,6072,4673,4767 }, - {3939,4361,4307 ,3539,4584,4562 }, {4321,4343,4342 ,4873,1818,4950 }, - {5980,6091,6010 ,5557,2173,6197 }, {1426,1017,3452 ,4648,1793,1794 }, - {6175,3620,6163 ,6004,6001,1453 }, {5331,5371,5350 ,6198,3558,1526 }, - {5331,5372,5371 ,6198,6199,3558 }, {5372,5406,5405 ,6199,6200,5518 }, - {5371,5372,5405 ,3558,6199,5518 }, {5406,5436,5405 ,6200,6201,5518 }, - {5008,2342,2273 ,6118,5690,5322 }, {5594,5612,5611 ,5937,6202,6177 }, - {5593,5594,5611 ,5935,5937,6177 }, {5612,5635,5634 ,6202,6203,6178 }, - {5611,5612,5634 ,6177,6202,6178 }, {5635,5673,5672 ,6203,6204,5324 }, - {5634,5635,5672 ,6178,6203,5324 }, {5673,5674,5672 ,6204,6205,5324 }, - {5674,5720,5719 ,6205,6206,6157 }, {5672,5674,5719 ,5324,6205,6157 }, - {5720,5758,5757 ,6206,6207,6127 }, {5719,5720,5757 ,6157,6206,6127 }, - {5758,5794,5793 ,6207,6208,6130 }, {5757,5758,5793 ,6127,6207,6130 }, - {5794,5826,5825 ,6208,6209,6131 }, {5793,5794,5825 ,6130,6208,6131 }, - {5825,5826,5848 ,6131,6209,6181 }, {5826,3145,2994 ,6209,6210,6182 }, - {5848,5826,2994 ,6181,6209,6182 }, {3940,1456,2994 ,6211,6133,6182 }, - {3145,3940,2994 ,6210,6211,6182 }, {1598,852,1456 ,6212,6134,6133 }, - {3940,1598,1456 ,6211,6212,6133 }, {3928,4231,852 ,6213,6158,6134 }, - {1598,3928,852 ,6212,6213,6134 }, {3587,3703,4231 ,6214,6183,6158 }, - {3928,3587,4231 ,6213,6214,6158 }, {2861,1185,3703 ,6215,6159,6183 }, - {3587,2861,3703 ,6214,6215,6183 }, {1988,1516,1185 ,6216,1254,6159 }, - {2861,1988,1185 ,6215,6216,6159 }, {4295,4233,1516 ,5968,6185,1254 }, - {1988,4295,1516 ,6216,5968,1254 }, {4295,4324,4233 ,5968,6217,6185 }, - {733,1026,4233 ,4051,6218,6185 }, {4324,733,4233 ,6217,4051,6185 }, - {7220,7239,7219 ,4367,1527,1529 }, {7186,7203,7185 ,5370,4366,5073 }, - {3781,5884,5451 ,5849,5848,6219 }, {5879,5987,6033 ,6220,5621,5620 }, - {5969,5965,6076 ,6188,6190,4217 }, {6001,6095,6081 ,6221,6222,6223 }, - {5869,5886,6084 ,6224,6192,6194 }, {4094,4642,5670 ,6225,6226,6227 }, - {3497,747,5319 ,5738,5692,5739 }, {6010,6016,5692 ,6197,6228,6229 }, - {5734,4467,1342 ,6230,6231,6164 }, {5733,5734,1342 ,1584,6230,6164 }, - {4467,602,1527 ,6231,6232,6166 }, {1342,4467,1527 ,6164,6231,6166 }, - {4220,4013,1527 ,6169,6168,6166 }, {602,4220,1527 ,6232,6169,6166 }, - {1537,1745,4191 ,4473,6233,4474 }, {1251,306,4166 ,4604,6234,6084 }, - {2661,5482,5126 ,4684,3565,6170 }, {3266,4669,4775 ,3884,3879,4388 }, - {1745,1444,4191 ,6233,4035,4474 }, {6242,6243,6270 ,6081,5666,6082 }, - {5171,5195,6114 ,1804,6235,1805 }, {5278,5277,5232 ,6236,6237,6238 }, - {5533,4010,6172 ,6239,4343,5451 }, {4465,4444,6210 ,257,582,5566 }, - {5845,6234,6174 ,143,5973,2381 }, {3943,5860,5956 ,4755,5998,6240 }, - {5636,5674,5673 ,6241,6205,6204 }, {5635,5636,5673 ,6203,6241,6204 }, - {5720,5759,5758 ,6206,6242,6207 }, {5758,5759,5794 ,6207,6242,6208 }, - {3942,3928,1598 ,6243,6213,6212 }, {3942,3587,3928 ,6243,6214,6213 }, - {184,733,4324 ,4052,4051,6217 }, {4295,184,4324 ,5968,4052,6217 }, - {7462,7435,7409 ,4310,6244,6245 }, {5973,6110,6081 ,6246,6247,6223 }, - {5711,5879,6033 ,6248,6220,5620 }, {2837,75,930 ,2511,3962,3594 }, - {6001,5996,6156 ,6221,6249,6250 }, {6001,6181,5705 ,6221,6251,4127 }, - {6081,3395,5185 ,6223,5940,5939 }, {5927,6040,5227 ,5318,5317,4097 }, - {6197,6223,6222 ,6252,6151,6253 }, {4026,4467,5734 ,6254,6231,6230 }, - {4261,4026,5734 ,1583,6254,6230 }, {4467,4026,602 ,6231,6254,6232 }, - {5459,4220,602 ,6255,6169,6232 }, {5459,993,5052 ,6255,5551,5189 }, - {4220,5459,5052 ,6169,6255,5189 }, {4908,4724,4774 ,5879,4737,5332 }, - {252,5526,966 ,2743,6256,2565 }, {3838,1016,4166 ,6257,6085,6084 }, - {5127,2661,1251 ,5114,4684,4604 }, {1016,5127,1251 ,6085,5114,4604 }, - {5127,124,2661 ,5114,2206,4684 }, {125,124,5127 ,399,2206,5114 }, - {1790,4949,5245 ,4738,5526,5880 }, {1444,3318,2690 ,4035,4036,6022 }, - {4191,1444,2690 ,4474,4035,6022 }, {3318,3419,2797 ,4036,2012,6030 }, - {2659,2622,2901 ,3485,2840,3468 }, {5609,6135,5953 ,5658,6258,5659 }, - {5278,5331,5277 ,6236,6198,6237 }, {5406,5437,5436 ,6200,6259,6201 }, - {5516,5552,5551 ,5420,5936,6260 }, {5612,5636,5635 ,6202,6241,6203 }, - {5720,5745,5759 ,6206,6261,6242 }, {1151,3587,3942 ,6262,6214,6243 }, - {2861,4295,1988 ,6215,5968,6216 }, {4016,4295,4348 ,5969,5968,6263 }, - {5898,6038,6035 ,5706,6264,6025 }, {6001,5705,5996 ,6221,4127,6249 }, - {3395,5854,6142 ,5940,6265,5941 }, {3583,5651,6067 ,5772,5920,6266 }, - {75,3510,1629 ,3962,6267,4207 }, {5654,5916,4425 ,6026,6175,6268 }, - {5987,5451,5608 ,5621,6219,4356 }, {5662,3943,5944 ,5915,4755,4754 }, - {5653,5662,5944 ,3644,5915,4754 }, {4209,4290,3777 ,6269,6270,1582 }, - {789,3985,2797 ,3910,4802,6030 }, {2690,3318,2797 ,6022,4036,6030 }, - {5803,5836,5819 ,5871,5859,6114 }, {7128,7160,7159 ,5391,6271,5075 }, - {993,5050,1154 ,5551,5233,4545 }, {5214,5213,5171 ,6272,428,1804 }, - {5172,5214,5171 ,5468,6272,1804 }, {5234,5233,5213 ,6273,429,428 }, - {5256,5232,5233 ,6274,6238,429 }, {5234,5256,5233 ,6273,6274,429 }, - {5279,5278,5232 ,6275,6236,6238 }, {5256,5279,5232 ,6274,6275,6238 }, - {5332,5331,5278 ,6276,6198,6236 }, {5279,5332,5278 ,6275,6276,6236 }, - {5332,5373,5372 ,6276,6277,6199 }, {5331,5332,5372 ,6198,6276,6199 }, - {5373,5407,5406 ,6277,6278,6200 }, {5372,5373,5406 ,6199,6277,6200 }, - {5407,5408,5406 ,6278,6279,6200 }, {5408,5438,5437 ,6279,4156,6259 }, - {5406,5408,5437 ,6200,6279,6259 }, {5479,5517,5516 ,5387,6280,5420 }, - {5517,5553,5552 ,6280,6281,5936 }, {5516,5517,5552 ,5420,6280,5936 }, - {5553,5554,5552 ,6281,6282,5936 }, {5554,5595,5594 ,6282,6283,5937 }, - {5552,5554,5594 ,5936,6282,5937 }, {5594,5595,5612 ,5937,6283,6202 }, - {5595,5637,5636 ,6283,6284,6241 }, {5612,5595,5636 ,6202,6283,6241 }, - {5637,5675,5674 ,6284,6285,6205 }, {5636,5637,5674 ,6241,6284,6205 }, - {5675,5721,5720 ,6285,6286,6206 }, {5674,5675,5720 ,6205,6285,6206 }, - {5721,5722,5745 ,6286,6287,6261 }, {5720,5721,5745 ,6206,6286,6261 }, - {5722,5760,5759 ,6287,6288,6242 }, {5745,5722,5759 ,6261,6287,6242 }, - {5760,5795,5794 ,6288,6289,6208 }, {5759,5760,5794 ,6242,6288,6208 }, - {5795,5827,5826 ,6289,6290,6209 }, {5794,5795,5826 ,6208,6289,6209 }, - {5827,5828,3145 ,6290,6291,6210 }, {5826,5827,3145 ,6209,6290,6210 }, - {5828,4288,3145 ,6291,6292,6210 }, {4288,4287,3145 ,6292,6293,6210 }, - {3480,3940,3145 ,6294,6211,6210 }, {4287,3480,3145 ,6293,6294,6210 }, - {995,1598,3940 ,6295,6212,6211 }, {3480,995,3940 ,6294,6295,6211 }, - {3983,3942,1598 ,6296,6243,6212 }, {995,3983,1598 ,6295,6296,6212 }, - {1522,1151,3942 ,6297,6262,6243 }, {3983,1522,3942 ,6296,6297,6243 }, - {1522,3587,1151 ,6297,6214,6262 }, {1732,2861,3587 ,6298,6215,6214 }, - {1522,1732,3587 ,6297,6298,6214 }, {4232,4295,2861 ,6299,5968,6215 }, - {1732,4232,2861 ,6298,6299,6215 }, {4232,4348,4295 ,6299,6263,5968 }, - {4321,3528,5630 ,4873,5061,4874 }, {4017,4016,4232 ,5342,5969,6299 }, - {5982,5924,5649 ,4218,6091,6093 }, {5705,6181,5992 ,4127,6251,4197 }, - {6130,6132,6131 ,6300,5897,6050 }, {5472,3443,5869 ,6301,6302,6224 }, - {7168,7185,7160 ,5371,5073,6271 }, {1555,4290,4209 ,6303,6270,6269 }, - {1554,1555,4209 ,6304,6303,6269 }, {1555,4261,4290 ,6303,1583,6270 }, - {3771,4026,4261 ,6305,6254,1583 }, {1555,3771,4261 ,6303,6305,1583 }, - {3010,602,4026 ,6306,6232,6254 }, {3771,3010,4026 ,6305,6306,6254 }, - {3242,5459,602 ,6307,6255,6232 }, {3010,3242,602 ,6306,6307,6232 }, - {3242,3244,993 ,6307,4433,5551 }, {5459,3242,993 ,6255,6307,5551 }, - {1207,3817,5153 ,1074,1189,3896 }, {6749,5548,5512 ,4046,1590,1589 }, - {5457,5387,1252 ,6308,6309,5023 }, {5387,3838,3839 ,6309,6257,6310 }, - {1388,1016,3838 ,6311,6085,6257 }, {5387,1388,3838 ,6309,6311,6257 }, - {5617,5127,1016 ,6312,5114,6085 }, {2621,1606,3815 ,5416,3677,5556 }, - {5321,5346,5320 ,5668,3267,4464 }, {5172,5215,5214 ,5468,6313,6272 }, - {5234,5279,5256 ,6273,6275,6274 }, {5332,5374,5373 ,6276,6314,6277 }, - {5374,5408,5407 ,6314,6279,6278 }, {5373,5374,5407 ,6277,6314,6278 }, - {7371,7370,7310 ,3748,3750,4283 }, {5479,5492,5517 ,5387,6315,6280 }, - {5517,5518,5553 ,6280,6316,6281 }, {5796,5828,5827 ,6317,6291,6290 }, - {5795,5796,5827 ,6289,6317,6290 }, {3665,3480,4287 ,6318,6294,6293 }, - {4288,3665,4287 ,6292,6318,6293 }, {1491,1732,1522 ,6319,6298,6297 }, - {4348,4232,4016 ,6263,6299,5969 }, {4921,1551,5082 ,2079,5275,5218 }, - {5786,5082,3872 ,4813,5218,4811 }, {6081,5185,5992 ,6223,5939,4197 }, - {6181,6081,5992 ,6251,6223,4197 }, {3726,3771,1555 ,6320,6305,6303 }, - {3726,3010,3771 ,6320,6306,6305 }, {4834,955,5787 ,4304,3991,4305 }, - {5387,3839,1252 ,6309,6310,5023 }, {4241,5387,5457 ,6321,6309,6308 }, - {5225,1388,5387 ,6322,6311,6309 }, {4883,5617,1016 ,5538,6312,6085 }, - {1388,4883,1016 ,6311,5538,6085 }, {5617,4883,5127 ,6312,5538,5114 }, - {3760,3669,1783 ,2250,5917,2251 }, {5267,5290,5244 ,4647,5247,79 }, - {5215,5172,5216 ,6313,5468,6323 }, {4842,4776,4745 ,5429,5390,5446 }, - {5492,5518,5517 ,6315,6316,6280 }, {5518,5554,5553 ,6316,6282,6281 }, - {5696,5722,5721 ,6324,6287,6286 }, {5675,5696,5721 ,6285,6324,6286 }, - {5760,5796,5795 ,6288,6317,6289 }, {4188,995,3480 ,6325,6295,6294 }, - {3665,4188,3480 ,6318,6325,6294 }, {2957,603,2093 ,6326,5274,553 }, - {5189,5188,3872 ,6327,4812,4811 }, {803,101,6204 ,144,5,4050 }, - {248,1554,4530 ,4114,6304,1376 }, {3118,3010,3726 ,6328,6306,6320 }, - {3118,3242,3010 ,6328,6307,6306 }, {455,556,4471 ,2205,4043,2187 }, - {5205,5228,5227 ,5219,4095,4097 }, {4649,5152,5125 ,5288,6329,5467 }, - {4702,5173,5125 ,5291,6330,5467 }, {5152,4702,5125 ,6329,5291,5467 }, - {4702,5172,5173 ,5291,5468,6330 }, {4702,5216,5172 ,5291,6323,5468 }, - {5257,5234,5214 ,6331,6273,6272 }, {5280,5279,5234 ,6332,6275,6273 }, - {5257,5280,5234 ,6331,6332,6273 }, {5333,5332,5279 ,6333,6276,6275 }, - {5280,5333,5279 ,6332,6333,6275 }, {5375,5374,5332 ,6334,6314,6276 }, - {5333,5375,5332 ,6333,6334,6276 }, {5375,5409,5408 ,6334,6335,6279 }, - {5374,5375,5408 ,6314,6334,6279 }, {5409,5439,5438 ,6335,4157,4156 }, - {5408,5409,5438 ,6279,6335,4156 }, {7160,7138,7168 ,6271,2560,5371 }, - {5493,5519,5518 ,6336,6337,6316 }, {5479,5493,5492 ,5387,6336,6315 }, - {5519,5555,5554 ,6337,6338,6282 }, {5518,5519,5554 ,6316,6337,6282 }, - {5555,5596,5595 ,6338,6339,6283 }, {5554,5555,5595 ,6282,6338,6283 }, - {5596,5638,5637 ,6339,6340,6284 }, {5595,5596,5637 ,6283,6339,6284 }, - {5638,5676,5675 ,6340,6341,6285 }, {5637,5638,5675 ,6284,6340,6285 }, - {5676,5677,5696 ,6341,6342,6324 }, {5675,5676,5696 ,6285,6341,6324 }, - {5677,5723,5722 ,6342,6343,6287 }, {5696,5677,5722 ,6324,6342,6287 }, - {5723,5761,5760 ,6343,6344,6288 }, {5722,5723,5760 ,6287,6343,6288 }, - {5761,5783,5760 ,6344,6345,6288 }, {5783,5797,5796 ,6345,6346,6317 }, - {5760,5783,5796 ,6288,6345,6317 }, {5797,5829,5828 ,6346,6347,6291 }, - {5796,5797,5828 ,6317,6346,6291 }, {5829,1667,4288 ,6347,6348,6292 }, - {5828,5829,4288 ,6291,6347,6292 }, {1667,1019,3665 ,6348,6349,6318 }, - {4288,1667,3665 ,6292,6348,6318 }, {1540,4188,3665 ,6350,6325,6318 }, - {1019,1540,3665 ,6349,6350,6318 }, {1540,995,4188 ,6350,6295,6325 }, - {2499,3983,995 ,6351,6296,6295 }, {1540,2499,995 ,6350,6351,6295 }, - {2499,3988,3983 ,6351,6352,6296 }, {3974,1522,3983 ,6353,6297,6296 }, - {3988,3974,3983 ,6352,6353,6296 }, {218,1491,1522 ,6354,6319,6297 }, - {3974,218,1522 ,6353,6354,6297 }, {218,1732,1491 ,6354,6298,6319 }, - {2809,4232,1732 ,6355,6299,6298 }, {218,2809,1732 ,6354,6355,6298 }, - {2809,4208,4232 ,6355,6356,6299 }, {7129,7138,7160 ,1026,2560,6271 }, - {7138,7169,7168 ,2560,5437,5371 }, {876,5859,1120 ,5340,6357,5339 }, - {5859,37,1120 ,6357,6358,5339 }, {2957,1120,37 ,6326,5339,6358 }, - {37,555,2957 ,6358,6359,6326 }, {555,551,603 ,6359,6360,5274 }, - {2957,555,603 ,6326,6359,5274 }, {1523,1551,603 ,6361,5275,5274 }, - {551,1523,603 ,6360,6361,5274 }, {1108,3872,1551 ,6362,4811,5275 }, - {1523,1108,1551 ,6361,6362,5275 }, {3361,5189,3872 ,6363,6327,4811 }, - {1108,3361,3872 ,6362,6363,4811 }, {3361,5188,5189 ,6363,4812,6327 }, - {1861,3350,5188 ,6364,2541,4812 }, {3361,1861,5188 ,6363,6364,4812 }, - {1861,5856,3350 ,6364,6365,2541 }, {5856,5806,3350 ,6365,4113,2541 }, - {3418,248,5806 ,6366,4114,4113 }, {3418,5341,1554 ,6366,6367,6304 }, - {4025,1555,1554 ,6368,6303,6304 }, {5341,4025,1554 ,6367,6368,6304 }, - {3774,3726,1555 ,6369,6320,6303 }, {4025,3774,1555 ,6368,6369,6303 }, - {2991,3118,3726 ,6370,6328,6320 }, {3774,2991,3726 ,6369,6370,6320 }, - {5201,3242,3118 ,6371,6307,6328 }, {2991,5201,3118 ,6370,6371,6328 }, - {5201,5174,3242 ,6371,6372,6307 }, {4397,3244,3242 ,4434,4433,6307 }, - {5174,4397,3242 ,6372,4434,6307 }, {1253,3778,4068 ,2353,5585,408 }, - {5020,4272,4241 ,6373,6374,6321 }, {5245,5387,4241 ,5880,6309,6321 }, - {4272,5245,4241 ,6374,5880,6321 }, {5245,4908,5387 ,5880,5879,6309 }, - {4908,5161,5225 ,5879,6375,6322 }, {5387,4908,5225 ,6309,5879,6322 }, - {5161,4774,1388 ,6375,5332,6311 }, {5225,5161,1388 ,6322,6375,6311 }, - {5153,4682,3899 ,3896,1191,1938 }, {4702,5152,4649 ,5291,6329,5288 }, - {1922,4397,1085 ,4432,4434,369 }, {5519,5535,5555 ,6337,3512,6338 }, - {5596,5613,5638 ,6339,6376,6340 }, {5638,5677,5676 ,6340,6342,6341 }, - {2499,3974,3988 ,6351,6353,6352 }, {4208,2809,876 ,6356,6355,5340 }, - {876,37,5859 ,5340,6358,6357 }, {2913,414,551 ,6377,6378,6360 }, - {555,2913,551 ,6359,6377,6360 }, {671,1523,551 ,6379,6361,6360 }, - {414,671,551 ,6378,6379,6360 }, {4309,1108,1523 ,6380,6362,6361 }, - {671,4309,1523 ,6379,6380,6361 }, {3630,5806,5856 ,6381,4113,6365 }, - {1861,3630,5856 ,6364,6381,6365 }, {3287,4025,5341 ,6382,6368,6367 }, - {3418,3287,5341 ,6366,6382,6367 }, {4025,5661,3774 ,6368,6383,6369 }, - {5174,4117,4397 ,6372,4700,4434 }, {6785,6803,5548 ,4140,4169,1590 }, - {5292,4272,5175 ,5093,6374,6384 }, {4908,4774,5161 ,5879,5332,6375 }, - {5224,4714,5267 ,3850,1031,4647 }, {3732,2785,3419 ,3536,1246,2012 }, - {3318,3732,3419 ,4036,3536,2012 }, {5235,5280,5257 ,6385,6332,6331 }, - {5439,5410,5440 ,4157,4285,5147 }, {5104,2246,5755 ,6063,591,4047 }, - {6697,5512,5471 ,3866,1589,2051 }, {6680,6697,5471 ,3834,3866,2051 }, - {5590,6173,6002 ,6386,3711,5975 }, {5555,5568,5596 ,6338,6387,6339 }, - {5638,5655,5677 ,6340,6388,6342 }, {1585,3974,2499 ,6389,6353,6351 }, - {876,4346,37 ,5340,6390,6358 }, {37,2913,555 ,6358,6377,6359 }, - {4309,3361,1108 ,6380,6363,6362 }, {1384,3418,5806 ,6391,6366,4113 }, - {3630,1384,5806 ,6381,6391,4113 }, {4025,3287,5661 ,6368,6382,6383 }, - {3775,2991,3774 ,6392,6370,6369 }, {5661,3775,3774 ,6383,6392,6369 }, - {4397,4117,1859 ,4434,4700,4480 }, {4272,5020,5175 ,6374,6373,6384 }, - {6697,6749,5512 ,3866,4046,1589 }, {3367,4645,4926 ,5798,5378,3897 }, - {1416,104,4519 ,6100,4765,4746 }, {5217,5216,4702 ,4026,6323,5291 }, - {4703,5217,4702 ,5290,4026,5291 }, {5217,5235,5216 ,4026,6385,6323 }, - {5217,5258,5235 ,4026,1193,6385 }, {5281,5280,5235 ,1195,6332,6385 }, - {5258,5281,5235 ,1193,1195,6385 }, {5281,5282,5280 ,1195,1194,6332 }, - {5282,5334,5333 ,1194,2736,6333 }, {5280,5282,5333 ,6332,1194,6333 }, - {5334,5376,5375 ,2736,2758,6334 }, {5333,5334,5375 ,6333,2736,6334 }, - {5410,5409,5375 ,4285,6335,6334 }, {5376,5410,5375 ,2758,4285,6334 }, - {5409,5410,5439 ,6335,4285,4157 }, {5172,5125,5173 ,5468,5467,6330 }, - {1353,1395,1352 ,1205,1164,1262 }, {5556,5557,5568 ,3511,756,6387 }, - {5555,5556,5568 ,6338,3511,6387 }, {5557,5597,5596 ,756,6393,6339 }, - {5568,5557,5596 ,6387,756,6339 }, {5557,5598,5597 ,756,2216,6393 }, - {5596,5597,5613 ,6339,6393,6376 }, {5598,5639,5638 ,2216,2215,6340 }, - {5613,5598,5638 ,6376,2216,6340 }, {5639,5656,5655 ,2215,3864,6388 }, - {5638,5639,5655 ,6340,2215,6388 }, {5656,5678,5677 ,3864,3861,6342 }, - {5655,5656,5677 ,6388,3864,6342 }, {5678,5724,5723 ,3861,4898,6343 }, - {5677,5678,5723 ,6342,3861,6343 }, {5724,5762,5761 ,4898,4884,6344 }, - {5723,5724,5761 ,6343,4898,6344 }, {5761,5762,5783 ,6344,4884,6345 }, - {5762,5798,5797 ,4884,4876,6346 }, {5783,5762,5797 ,6345,4884,6346 }, - {5798,5830,5829 ,4876,4163,6347 }, {5797,5798,5829 ,6346,4876,6347 }, - {1794,1667,5829 ,4129,6348,6347 }, {5830,1794,5829 ,4163,4129,6347 }, - {1794,2795,1019 ,4129,3975,6349 }, {1667,1794,1019 ,6348,4129,6349 }, - {1607,1540,1019 ,3941,6350,6349 }, {2795,1607,1019 ,3975,3941,6349 }, - {2477,2499,1540 ,642,6351,6350 }, {1607,2477,1540 ,3941,642,6350 }, - {87,1585,2499 ,641,6389,6351 }, {2477,87,2499 ,642,641,6351 }, - {87,3974,1585 ,641,6353,6389 }, {1587,218,3974 ,837,6354,6353 }, - {87,1587,3974 ,641,837,6353 }, {96,2809,218 ,836,6355,6354 }, - {1587,96,218 ,837,836,6354 }, {96,3257,876 ,836,4010,5340 }, - {2809,96,876 ,6355,836,5340 }, {876,3257,4346 ,5340,4010,6390 }, - {3257,5737,37 ,4010,6394,6358 }, {4346,3257,37 ,6390,4010,6358 }, - {5737,1974,37 ,6394,3862,6358 }, {1974,62,2913 ,3862,3831,6377 }, - {37,1974,2913 ,6358,3862,6377 }, {34,414,2913 ,3830,6378,6377 }, - {62,34,2913 ,3831,3830,6377 }, {3980,671,414 ,4933,6379,6378 }, - {34,3980,414 ,3830,4933,6378 }, {164,4309,671 ,4932,6380,6379 }, - {3980,164,671 ,4933,4932,6379 }, {52,3361,4309 ,411,6363,6380 }, - {164,52,4309 ,4932,411,6380 }, {3113,1861,3361 ,410,6364,6363 }, - {52,3113,3361 ,411,410,6363 }, {3113,269,1861 ,410,3813,6364 }, - {1734,3630,1861 ,2219,6381,6364 }, {269,1734,1861 ,3813,2219,6364 }, - {878,1384,3630 ,398,6391,6381 }, {1734,878,3630 ,2219,398,6381 }, - {878,3418,1384 ,398,6366,6391 }, {4011,3287,3418 ,395,6382,6366 }, - {878,4011,3418 ,398,395,6366 }, {4011,3662,5661 ,395,1942,6383 }, - {3287,4011,5661 ,6382,395,6383 }, {5304,3775,5661 ,654,6392,6383 }, - {3662,5304,5661 ,1942,654,6383 }, {5304,2991,3775 ,654,6370,6392 }, - {5481,5201,2991 ,3863,6371,6370 }, {5304,5481,2991 ,654,3863,6370 }, - {5481,4117,5201 ,3863,4700,6371 }, {4117,5174,5201 ,4700,6372,6371 }, - {104,1150,4519 ,4765,741,4746 }, {3899,1376,1196 ,1938,1937,4330 }, - {7410,7462,7409 ,3766,4310,6245 }, {7033,6152,5945 ,6395,6044,6396 }, - {5562,5945,6152 ,4193,6396,6044 }, {1790,4272,5292 ,4738,6374,5093 }, - {5017,1790,5292 ,5092,4738,5093 }, {4272,1790,5245 ,6374,4738,5880 }, - {3419,789,2797 ,2012,3910,6030 }, {5153,3899,5146 ,3896,1938,1075 }, - {4502,1859,4117 ,4650,4480,4700 }, {6648,6680,6647 ,1390,3834,2050 }, - {6648,6647,6611 ,1390,2050,1391 }, {5557,8043,5598 ,756,6397,2216 }, - {6530,1990,1217 ,6398,1305,6399 }, {5613,5597,5598 ,6376,6393,2216 }, - {1539,1587,87 ,835,837,641 }, {96,3909,3257 ,836,4164,4010 }, - {3257,1974,5737 ,4010,3862,6394 }, {3688,4292,4153 ,5574,6400,5711 }, - {3470,6003,5917 ,6401,6122,6402 }, {350,5653,1273 ,1114,3644,6403 }, - {4286,5580,3528 ,4274,6404,5061 }, {5392,5947,5717 ,4022,6027,4023 }, - {2044,465,501 ,4031,4578,4313 }, {670,5043,5985 ,4760,4762,5365 }, - {7960,100,2306 ,3505,2823,6405 }, {5882,3674,3728 ,4397,4286,4251 }, - {5575,5958,6112 ,5686,5702,6406 }, {8023,8038,8022 ,4582,4121,4123 }, - {4284,4229,4270 ,4869,4877,4900 }, {3778,1253,1583 ,5585,2353,5415 }, - {6267,3607,3606 ,6407,6138,6137 }, {6012,5963,6004 ,6408,6409,6123 }, - {6241,6242,6269 ,6410,6081,6083 }, {5129,5293,5314 ,5698,5889,6411 }, - {3659,5129,5314 ,3875,5698,6411 }, {6141,6122,2072 ,2386,1797,1812 }, - {3559,5567,5897 ,6412,6413,6414 }, {4058,206,4054 ,4708,3932,3679 }, - {5650,5981,3905 ,2713,6415,4194 }, {6227,5906,5462 ,6416,6417,6418 }, - {3813,3758,5926 ,1515,1789,6419 }, {5662,6035,4045 ,5915,6025,5916 }, - {5687,5048,5101 ,6420,6421,6422 }, {5361,6227,5462 ,5664,6416,6418 }, - {206,4054,4055 ,3932,3679,3678 }, {5488,3518,5473 ,2730,4338,3429 }, - {3528,5580,5630 ,5061,6404,4874 }, {6113,3608,5461 ,5873,5799,5744 }, - {6057,5994,5893 ,6423,6424,6425 }, {5994,5524,1008 ,6424,6426,6427 }, - {3599,6057,5893 ,6428,6423,6425 }, {4153,3688,3953 ,5711,5574,5713 }, - {5893,5994,1008 ,6425,6424,6427 }, {6096,2357,4043 ,4092,3933,419 }, - {2142,6031,5706 ,4936,6429,3796 }, {3007,6070,3582 ,818,820,1378 }, - {7437,7436,7386 ,5938,4245,5512 }, {6168,5646,5316 ,6430,6431,6087 }, - {5524,5646,1008 ,6426,6431,6427 }, {5646,5743,5316 ,6431,6432,6087 }, - {5346,6260,5320 ,3267,3397,4464 }, {8095,8062,8090 ,4362,3272,412 }, - {6128,6129,5123 ,5981,5983,6433 }, {5646,6168,1008 ,6431,6430,6427 }, - {6023,5646,5524 ,6040,6431,6426 }, {5875,3797,5490 ,6434,2061,6055 }, - {5550,5878,5549 ,6047,2684,6435 }, {5452,5650,3905 ,2714,2713,4194 }, - {3803,3720,3804 ,6436,6437,4324 }, {6001,6003,6095 ,6221,6122,6222 }, - {5345,6057,3599 ,6438,6423,6428 }, {5392,1741,5947 ,4022,5695,6027 }, - {187,2159,1171 ,6439,6440,6441 }, {3804,3720,5882 ,4324,6437,4397 }, - {3720,6160,3674 ,6437,6442,4286 }, {5882,3720,3674 ,4397,6437,4286 }, - {5254,5576,3436 ,4042,4039,2145 }, {7688,7689,7712 ,6443,6444,5350 }, - {4528,5550,5549 ,4935,6047,6435 }, {2159,4528,5549 ,6440,4935,6435 }, - {6230,6104,3436 ,2144,5696,2145 }, {5303,2636,5315 ,5737,2712,6445 }, - {3688,4153,3953 ,5574,5711,5713 }, {5880,3666,6137 ,5700,5699,5809 }, - {6059,3679,5906 ,6446,6447,6417 }, {6094,5977,5742 ,692,809,6448 }, - {3373,6094,5742 ,693,692,6448 }, {4807,5426,5970 ,6449,5634,3518 }, - {381,3522,1627 ,6450,6451,5573 }, {2636,5303,5650 ,2712,5737,2713 }, - {5862,3893,4623 ,3790,3789,6452 }, {3893,5861,4623 ,3789,6453,6452 }, - {5609,5851,6135 ,5658,6095,6258 }, {5297,4178,5272 ,3826,3825,5956 }, - {5044,5192,5303 ,5173,6454,5737 }, {5922,6149,3445 ,4292,732,1791 }, - {7089,7103,5115 ,5608,6455,5913 }, {4433,4820,4795 ,4591,2399,3710 }, - {5462,5906,5961 ,6418,6417,6456 }, {5192,4410,6251 ,6454,5735,6457 }, - {6224,6248,6213 ,6458,6154,6459 }, {2636,5452,5386 ,2712,2714,5870 }, - {6010,5384,6016 ,6197,6121,6228 }, {6058,5345,5416 ,6460,6438,6461 }, - {5384,3631,5403 ,6121,5922,5921 }, {5235,5257,5214 ,6385,6331,6272 }, - {6254,3906,6055 ,5758,5697,3874 }, {3411,5193,1741 ,4280,5846,5695 }, - {6003,5973,6095 ,6122,6246,6222 }, {3415,7082,6186 ,6115,6462,4365 }, - {6205,6206,6240 ,6463,6464,5756 }, {5213,5195,5171 ,428,6235,1804 }, - {5888,5902,6093 ,5752,5769,5771 }, {7423,7479,7422 ,3749,4423,1404 }, - {5322,5320,5695 ,4297,4464,6465 }, {5874,5976,5925 ,4896,5903,5710 }, - {7690,449,448 ,6466,1169,1172 }, {5958,5122,3507 ,5702,4024,5671 }, - {3930,1627,4247 ,6467,5573,6468 }, {3628,6235,5703 ,4213,4215,5748 }, - {5567,5526,5897 ,6413,6256,6414 }, {5205,5248,5247 ,5219,6469,4096 }, - {6254,6268,3906 ,5758,5757,5697 }, {5609,6256,6213 ,5658,5657,6459 }, - {6102,3868,3879 ,2464,970,2549 }, {5055,3979,1261 ,6470,6471,6472 }, - {4247,4246,381 ,6468,3665,6450 }, {381,1627,3930 ,6450,5573,6467 }, - {7293,7248,7322 ,6473,73,75 }, {5926,3758,3714 ,6419,1789,3970 }, - {6004,6003,5974 ,6123,6122,6474 }, {5993,3953,5580 ,6475,5713,6404 }, - {7423,7422,7370 ,3749,1404,3750 }, {1701,1949,216 ,6476,3637,4644 }, - {5851,5530,5881 ,6095,6189,6109 }, {4574,6062,5974 ,6477,6478,6474 }, - {1532,1051,217 ,4771,4588,4643 }, {6075,5922,5908 ,6042,4292,4293 }, - {5662,5898,6035 ,5915,5706,6025 }, {1605,6206,6205 ,17,6464,6463 }, - {5971,5903,5902 ,6479,6480,5769 }, {5902,5903,686 ,5769,6480,5770 }, - {5753,5055,5916 ,6481,6470,6175 }, {3522,6227,758 ,6451,6416,5663 }, - {6024,3410,5486 ,6482,6483,5718 }, {6225,5610,6248 ,4872,6153,6154 }, - {4517,6058,5416 ,6484,6460,6461 }, {5923,5591,3979 ,2073,3597,6471 }, - {1854,635,5971 ,2184,2183,6479 }, {4540,4526,4515 ,19,187,30 }, - {5318,3360,6023 ,6039,6485,6040 }, {5972,5988,4147 ,399,2516,2517 }, - {6225,6248,6224 ,4872,6154,6458 }, {1661,6179,3906 ,5672,6486,5697 }, - {6070,4486,3582 ,820,819,1378 }, {6240,6241,1661 ,5756,6410,5672 }, - {3717,3715,5630 ,6487,6124,4874 }, {3902,4807,5970 ,4437,6449,3518 }, - {3051,5474,5877 ,6488,4243,4242 }, {5388,5446,6317 ,5428,5985,3207 }, - {6032,5472,5869 ,6489,6301,6224 }, {5472,3409,6032 ,6301,6490,6489 }, - {3360,3386,5472 ,6485,6491,6301 }, {3409,5472,6032 ,6490,6301,6489 }, - {20,2657,3506 ,3961,2185,6492 }, {6018,4304,1747 ,340,4579,266 }, - {5185,6142,3632 ,5939,5941,5898 }, {5887,5888,6087 ,6493,5752,6193 }, - {6089,6050,6087 ,6494,4094,6193 }, {6023,6024,5646 ,6040,6482,6431 }, - {5055,5476,5916 ,6470,6495,6175 }, {5906,6006,3560 ,6417,6496,5779 }, - {5630,5610,5609 ,4874,6153,5658 }, {5888,6093,6050 ,5752,5771,4094 }, - {5319,747,5781 ,5739,5692,5694 }, {4229,4246,4270 ,4877,3665,4900 }, - {3680,3499,405 ,6497,5661,5662 }, {6084,3499,3680 ,6194,5661,6497 }, - {5961,5906,3560 ,6456,6417,5779 }, {6006,6043,3560 ,6496,6498,5779 }, - {5866,5867,4094 ,5302,6499,6225 }, {3560,6043,5318 ,5779,6498,6039 }, - {5867,5869,5866 ,6499,6224,5302 }, {5273,5298,5272 ,3819,3818,5956 }, - {5513,6123,4147 ,6500,4221,2517 }, {1417,3522,381 ,6501,6451,6450 }, - {3638,278,8051 ,5950,1489,6172 }, {5866,4094,4410 ,5302,6225,5735 }, - {5192,5866,4410 ,6454,5302,5735 }, {3525,5935,5885 ,5665,5778,6502 }, - {6168,5316,1008 ,6430,6087,6427 }, {3517,1729,5580 ,6503,3666,6404 }, - {6052,3311,3762 ,5717,5303,5172 }, {5303,5981,5650 ,5737,6415,2713 }, - {5303,5315,5044 ,5737,6445,5173 }, {1700,706,807 ,6072,4784,6073 }, - {3581,3508,6017 ,6504,6505,6506 }, {3508,5964,6017 ,6505,6507,6506 }, - {3879,5317,6102 ,2549,6508,2464 }, {5317,5382,3831 ,6508,6509,2321 }, - {6102,5317,3831 ,2464,6508,2321 }, {5382,4154,3803 ,6509,6510,6436 }, - {3831,5382,3803 ,2321,6509,6436 }, {1606,4054,206 ,3677,3679,3932 }, - {3953,3018,6124 ,5713,6125,6511 }, {5567,3559,5955 ,6413,6412,6512 }, - {5351,3386,5318 ,6513,6491,6039 }, {3443,6077,5887 ,6302,5753,6493 }, - {5988,20,4147 ,2516,3961,2517 }, {6145,5247,4023 ,6514,4096,3827 }, - {6087,6050,5394 ,6193,4094,5660 }, {5416,5345,5671 ,6461,6438,6515 }, - {507,565,564 ,1523,1614,3529 }, {3576,5912,6017 ,5890,5892,6506 }, - {807,3606,3563 ,6073,6137,6074 }, {5747,6030,5254 ,6036,4037,4042 }, - {6118,5923,3979 ,2074,2073,6471 }, {5753,6118,3979 ,6481,2074,6471 }, - {1729,5993,5580 ,3666,6475,6404 }, {6093,686,6086 ,5771,5770,6516 }, - {4260,6139,6138 ,3527,2059,6014 }, {5867,5869,4094 ,6499,6224,6225 }, - {3522,758,1627 ,6451,5663,5573 }, {5909,6136,5824 ,4260,5810,6517 }, - {5630,3715,5610 ,4874,6124,6153 }, {4147,3506,3384 ,2517,6492,6518 }, - {5888,6089,6087 ,5752,6494,6193 }, {6124,3018,3715 ,6511,6125,6124 }, - {3829,2273,3051 ,6195,5322,6488 }, {4517,5416,3018 ,6484,6461,6125 }, - {5853,3560,5318 ,6038,5779,6039 }, {3509,6128,5123 ,6519,5981,6433 }, - {4443,6212,6211 ,703,5562,5558 }, {5490,3747,5749 ,6055,2925,6052 }, - {5296,4023,5297 ,4296,3827,3826 }, {4055,4054,206 ,3678,3679,3932 }, - {6103,6123,5897 ,4220,4221,6414 }, {4486,3454,3582 ,819,710,1378 }, - {2204,6032,5867 ,6520,6489,6499 }, {5869,5867,5866 ,6224,6499,5302 }, - {6032,5869,5867 ,6489,6224,6499 }, {3658,6023,5524 ,6521,6040,6426 }, - {3584,6078,3558 ,5888,6522,5964 }, {3506,5368,3409 ,6492,5751,6490 }, - {5315,2636,5477 ,6445,2712,5399 }, {3680,405,4642 ,6497,5662,6226 }, - {6119,4410,5670 ,5736,5735,6227 }, {4374,4517,3018 ,5712,6484,6125 }, - {5299,5300,6041 ,3800,3793,3801 }, {3018,5416,5905 ,6125,6461,6142 }, - {5293,3584,3558 ,5889,5888,5964 }, {6218,3658,5935 ,5780,6521,5778 }, - {5246,5227,6040 ,5176,4097,5317 }, {3405,8086,1153 ,1798,4823,2245 }, - {3563,3606,1510 ,6074,6137,3788 }, {3905,5562,6152 ,4194,4193,6044 }, - {6163,3620,3860 ,1453,6001,6523 }, {5928,3904,3903 ,4072,1264,296 }, - {5882,3772,3804 ,4397,4250,4324 }, {3905,6152,6166 ,4194,6044,4971 }, - {5192,6251,5303 ,6454,6457,5737 }, {1417,381,4229 ,6501,6450,4877 }, - {635,5534,5971 ,2183,6524,6479 }, {6226,5981,5562 ,4192,6415,4193 }, - {1629,3510,1518 ,4207,6267,3978 }, {4367,6225,6224 ,228,4872,6458 }, - {3360,5472,5450 ,6485,6301,6525 }, {6244,5663,5356 ,5667,4259,4258 }, - {6006,5351,6043 ,6496,6513,6498 }, {3384,3506,3409 ,6518,6492,6490 }, - {5368,6077,3443 ,5751,5753,6302 }, {3409,5368,3443 ,6490,5751,6302 }, - {6077,5888,5887 ,5753,5752,6493 }, {4623,5861,5939 ,6452,6453,4276 }, - {6119,5670,5303 ,5736,6227,5737 }, {7973,7972,7948 ,3624,6059,3625 }, - {5567,2040,3039 ,6413,4833,2686 }, {6270,3780,3611 ,6082,6526,5673 }, - {5868,3720,3803 ,6527,6437,6436 }, {3525,4292,3688 ,5665,6400,5574 }, - {3337,5123,3951 ,4125,6433,6528 }, {970,5997,6018 ,268,6529,340 }, - {4154,5868,3803 ,6510,6527,6436 }, {6251,4410,5303 ,6457,5735,5737 }, - {5671,5345,3599 ,6515,6438,6428 }, {4286,3517,5580 ,4274,6503,6404 }, - {6161,6160,3720 ,6530,6442,6437 }, {5868,6161,3720 ,6527,6530,6437 }, - {6161,6187,6160 ,6530,6531,6442 }, {2896,3497,3845 ,6110,5738,3635 }, - {5903,2357,686 ,6480,3933,5770 }, {5906,3679,6006 ,6417,6447,6496 }, - {6227,3522,5906 ,6416,6451,6417 }, {4528,5316,5550 ,4935,6087,6047 }, - {3953,3717,5580 ,5713,6487,6404 }, {6139,5875,6250 ,2059,6434,6532 }, - {5390,6317,5446 ,3205,3207,5985 }, {4293,3954,4957 ,2732,3463,2733 }, - {5417,5451,5987 ,5923,6219,5621 }, {6207,6242,6241 ,6156,6081,6410 }, - {41,5037,5390 ,6533,3206,3205 }, {5116,3337,3951 ,4126,4125,6528 }, - {6306,6336,6335 ,5669,5670,6534 }, {1729,4153,5993 ,3666,5711,6475 }, - {249,6103,1158 ,644,4220,2744 }, {6103,249,5988 ,4220,644,2516 }, - {4642,6022,5670 ,6226,6535,6227 }, {5533,6172,6195 ,6239,5451,5529 }, - {6239,6223,6055 ,5918,6151,3874 }, {2960,5388,5949 ,4975,5428,5086 }, - {6043,5351,5318 ,6498,6513,6039 }, {5318,3386,3360 ,6039,6491,6485 }, - {3386,3409,5472 ,6491,6490,6301 }, {297,1416,140 ,1918,6100,1919 }, - {3902,685,3935 ,4437,2674,4346 }, {5631,5453,5863 ,6536,937,6537 }, - {6045,5453,5631 ,935,937,6536 }, {4515,6207,6206 ,30,6156,6464 }, - {5879,5417,5987 ,6220,5923,5621 }, {6050,6086,6096 ,4094,6516,4092 }, - {101,6196,6204 ,5,4,4050 }, {253,6228,751 ,2564,1366,1365 }, - {3679,5351,6006 ,6447,6513,6496 }, {3715,5851,5609 ,6124,6095,5658 }, - {3360,5450,3410 ,6485,6525,6483 }, {3410,5450,2204 ,6483,6525,6520 }, - {5450,6032,2204 ,6525,6489,6520 }, {3608,3583,6067 ,5799,5772,6266 }, - {6206,6241,6240 ,6464,6410,5756 }, {6024,6023,3410 ,6482,6040,6483 }, - {3411,1741,5392 ,4280,5695,4022 }, {1700,323,706 ,6072,4767,4784 }, - {6212,6213,6247 ,5562,6459,5575 }, {1022,793,1051 ,4198,4200,4588 }, - {6195,6172,5920 ,5529,5451,5453 }, {3658,5853,6023 ,6521,6038,6040 }, - {5928,6236,3879 ,4072,6538,2549 }, {6213,6256,6255 ,6459,5657,6102 }, - {6247,6213,6255 ,5575,6459,6102 }, {5515,6045,6038 ,5567,935,6264 }, - {6038,6045,5631 ,6264,935,6536 }, {6210,6245,6244 ,5566,5560,5667 }, - {4540,4515,6206 ,19,30,6464 }, {3797,5875,6139 ,2061,6434,2059 }, - {5893,1008,3414 ,6425,6427,4934 }, {6897,8112,8079 ,54,3530,55 }, - {5294,6010,5692 ,5891,6197,6229 }, {4278,4306,4277 ,5583,4552,4532 }, - {3563,1510,3497 ,6074,3788,5738 }, {2896,3563,3497 ,6110,6074,5738 }, - {5415,41,5390 ,5951,6533,3205 }, {4422,4391,6212 ,5561,992,5562 }, - {6074,3515,501 ,6539,1357,4313 }, {3470,5917,3079 ,6401,6402,6540 }, - {2657,1854,3506 ,2185,2184,6492 }, {7719,7697,7744 ,6541,651,6101 }, - {3879,6236,5317 ,2549,6538,6508 }, {3410,2204,5486 ,6483,6520,5718 }, - {3597,3546,3598 ,1810,2557,802 }, {5486,2204,3311 ,5718,6520,5303 }, - {262,5997,970 ,4758,6529,268 }, {359,262,970 ,4841,4758,268 }, - {5997,6019,6018 ,6529,6542,340 }, {6019,4304,6018 ,6542,4579,340 }, - {2318,8049,2319 ,3185,5393,3228 }, {959,3515,535 ,1358,1357,2001 }, - {5940,5926,3714 ,1625,6419,3970 }, {6224,6213,4391 ,6458,6459,992 }, - {1158,6103,252 ,2744,4220,2743 }, {5489,5474,5911 ,4244,4243,5924 }, - {6005,5515,5117 ,5691,5567,1113 }, {6209,6210,6244 ,6012,5566,5667 }, - {6245,6273,6272 ,5560,5683,5755 }, {6243,5356,6271 ,5666,4258,6152 }, - {6206,6207,6241 ,6464,6156,6410 }, {6204,6196,6203 ,4050,4,1249 }, - {5449,5314,3523 ,6543,6411,6544 }, {5951,2321,3509 ,6000,5999,6519 }, - {5934,5370,6091 ,616,2171,2173 }, {1510,5862,747 ,3788,3790,5692 }, - {3497,1510,747 ,5738,3788,5692 }, {949,5029,1083 ,2133,2159,2095 }, - {6138,6139,6250 ,6014,2059,6532 }, {808,556,2960 ,4734,4043,4975 }, - {4292,4517,4374 ,6400,6484,5712 }, {5416,3599,5302 ,6461,6428,3795 }, - {4144,5175,5985 ,4761,6384,5365 }, {5953,6000,3870 ,5659,6094,6096 }, - {7856,7855,7803 ,4635,6545,4636 }, {6061,465,4304 ,6546,4578,4579 }, - {5988,249,20 ,2516,644,3961 }, {6061,501,465 ,6546,4313,4578 }, - {5934,6091,5980 ,616,2173,5557 }, {1729,3517,4286 ,3666,6503,4274 }, - {5213,5214,5234 ,428,6272,6273 }, {6005,5117,186 ,5691,1113,1265 }, - {6244,6245,6272 ,5667,5560,5755 }, {6273,5880,5663 ,5683,5700,4259 }, - {6272,6273,5663 ,5755,5683,4259 }, {5956,6151,5951 ,6240,6024,6000 }, - {6203,6196,6239 ,1249,4,5918 }, {3629,3524,5160 ,5965,6187,6186 }, - {3523,3629,5160 ,6544,5965,6186 }, {5329,5711,6033 ,6191,6248,5620 }, - {6076,5329,6033 ,4217,6191,5620 }, {5576,5475,5876 ,4039,4038,2146 }, - {5530,5915,3870 ,6189,6120,6096 }, {5924,1696,6042 ,6091,6547,5703 }, - {3436,5576,5876 ,2145,4039,2146 }, {5475,5489,5876 ,4038,4244,2146 }, - {843,706,46 ,2423,4784,2232 }, {5302,3599,5706 ,3795,6428,3796 }, - {5895,5749,3731 ,6053,6052,6041 }, {6145,5925,5899 ,6514,5710,6548 }, - {5195,5213,5212 ,6235,428,430 }, {6004,5963,5871 ,6123,6409,4124 }, - {1125,2142,4528 ,5723,4936,4935 }, {706,806,807 ,4784,4783,6073 }, - {882,3396,3271 ,3846,3867,1727 }, {262,5998,5997 ,4758,6549,6529 }, - {5998,6020,6019 ,6549,6550,6542 }, {5997,5998,6019 ,6529,6549,6542 }, - {6020,6021,4304 ,6550,6551,4579 }, {6019,6020,4304 ,6542,6550,4579 }, - {6048,6061,4304 ,6552,6546,4579 }, {6021,6048,4304 ,6551,6552,4579 }, - {6074,501,6061 ,6539,4313,6546 }, {6048,6074,6061 ,6552,6539,6546 }, - {3632,3628,5703 ,5898,4213,5748 }, {6118,5753,5863 ,2074,6481,6537 }, - {5861,5870,5939 ,6453,4275,4276 }, {5453,6118,5863 ,937,2074,6537 }, - {3829,5475,3217 ,6195,4038,6117 }, {6012,6013,5963 ,6408,6060,6409 }, - {6129,6130,3951 ,5983,6300,6528 }, {5123,6129,3951 ,6433,5983,6528 }, - {5789,5386,6258 ,6140,5870,6553 }, {6217,5355,5703 ,6554,6555,5748 }, - {5881,5530,3870 ,6109,6189,6096 }, {6174,6234,6002 ,2381,5973,5975 }, - {1701,1700,2896 ,6476,6072,6110 }, {5875,5490,3444 ,6434,6055,6054 }, - {5528,5416,5302 ,6143,6461,3795 }, {5749,5922,3731 ,6052,4292,6041 }, - {5891,5876,5933 ,5714,2146,615 }, {938,803,322 ,983,144,1250 }, - {5869,3680,4094 ,6224,6497,6225 }, {5903,2912,2357 ,6480,3934,3933 }, - {1153,3012,2624 ,2245,3491,3132 }, {3599,5893,5706 ,6428,6425,3796 }, - {6222,6223,6239 ,6253,6151,5918 }, {6229,5987,5608 ,6556,5621,4356 }, - {4094,3680,4642 ,6225,6497,6226 }, {6577,3816,4426 ,97,5623,1056 }, - {262,670,5998 ,4758,4760,6549 }, {6048,3515,6074 ,6552,1357,6539 }, - {6035,6038,5654 ,6025,6264,6026 }, {5974,6003,3470 ,6474,6122,6401 }, - {5631,5863,6188 ,6536,6537,6174 }, {5654,5631,6188 ,6026,6536,6174 }, - {4292,3525,6058 ,6400,5665,6460 }, {6013,5956,5963 ,6060,6240,6409 }, - {5872,6051,6130 ,6557,6037,6300 }, {6129,5872,6130 ,5983,6557,6300 }, - {5530,5905,5915 ,6189,6142,6120 }, {1293,532,746 ,5764,5766,2661 }, - {6250,5875,3444 ,6532,6434,6054 }, {5953,6135,6000 ,5659,6258,6094 }, - {3446,3781,5487 ,3718,5849,6558 }, {5301,3631,5384 ,2698,5922,6121 }, - {686,2357,6086 ,5770,3933,6516 }, {5749,3747,6249 ,6052,2925,4032 }, - {6227,5361,758 ,6416,5664,5663 }, {7745,7744,7697 ,650,6101,651 }, - {670,5985,5998 ,4760,5365,6549 }, {6021,6020,5998 ,6551,6550,6549 }, - {6048,6085,3515 ,6552,6559,1357 }, {5628,4642,405 ,6560,6226,5662 }, - {7886,2295,2263 ,6561,3160,3080 }, {6164,6165,7062 ,6562,4219,6563 }, - {3856,5995,1268 ,5754,5564,4568 }, {3856,6013,6012 ,5754,6060,6408 }, - {5995,3856,6012 ,5564,5754,6408 }, {1121,5979,6051 ,6564,6028,6037 }, - {5872,1121,6051 ,6557,6564,6037 }, {3606,4164,1410 ,6137,6139,3911 }, - {5216,5235,5215 ,6323,6385,6313 }, {5475,3829,5877 ,4038,6195,4242 }, - {5686,5747,5651 ,5777,6036,5920 }, {5253,5302,3779 ,6163,3795,6565 }, - {2142,3779,6031 ,4936,6565,6429 }, {1608,421,746 ,4128,5815,2661 }, - {7802,7826,7801 ,6566,1616,1618 }, {3973,5388,636 ,6007,5428,6020 }, - {3989,3366,5252 ,5822,5894,5746 }, {1608,1293,421 ,4128,5764,5815 }, - {6086,2357,6096 ,6516,3933,4092 }, {3822,6044,3576 ,5715,614,5890 }, - {1153,8123,1332 ,2245,2247,3492 }, {3758,3712,3714 ,1789,1439,3970 }, - {5670,6022,3787 ,6227,6535,5819 }, {6135,5851,6000 ,6258,6095,6094 }, - {6172,5124,6146 ,5451,6567,6568 }, {4045,5654,4425 ,5916,6026,6268 }, - {3926,3970,3925 ,3125,3225,3227 }, {5175,5998,5985 ,6384,6549,5365 }, - {5175,5494,5998 ,6384,6569,6549 }, {5494,6021,5998 ,6569,6551,6549 }, - {6049,6048,6021 ,6570,6552,6551 }, {2260,6049,6021 ,6571,6570,6551 }, - {6085,6100,3515 ,6559,6572,1357 }, {3515,6100,535 ,1357,6572,2001 }, - {3548,5876,5489 ,6013,2146,4244 }, {5898,5515,6038 ,5706,5567,6264 }, - {1272,3856,1268 ,5740,5754,4568 }, {4164,5449,5540 ,6139,6543,6162 }, - {1661,6269,3611 ,5672,6083,5673 }, {3039,5526,5567 ,2686,6256,6413 }, - {6209,6244,6243 ,6012,5667,5666 }, {2621,5704,3683 ,5416,5579,5417 }, - {5323,5325,5324 ,5701,5655,5986 }, {4528,2159,1125 ,4935,6440,5723 }, - {3953,6124,3715 ,5713,6511,6124 }, {3891,3855,6847 ,3820,1511,4004 }, - {5494,5175,5020 ,6569,6384,6373 }, {1214,6085,6048 ,6573,6559,6552 }, - {1214,6101,6100 ,6573,6574,6572 }, {6085,1214,6100 ,6559,6573,6572 }, - {6101,6121,535 ,6574,6575,2001 }, {6100,6101,535 ,6572,6574,2001 }, - {6140,6153,535 ,2333,5514,2001 }, {6121,6140,535 ,6575,2333,2001 }, - {6140,3704,5040 ,2333,2332,5469 }, {6196,713,6197 ,4,3,6252 }, - {3584,6112,6078 ,5888,6406,6522 }, {6017,5912,3581 ,6506,5892,6504 }, - {5934,5489,5932 ,616,4244,5925 }, {1410,4164,5540 ,3911,6139,6162 }, - {5610,5630,5609 ,6153,4874,5658 }, {4167,5957,6063 ,6173,4054,5685 }, - {6136,4028,5824 ,5810,5823,6517 }, {3328,3288,3307 ,3973,2058,2057 }, - {6104,5858,3436 ,5696,4041,2145 }, {5976,5927,5925 ,5903,5318,5710 }, - {6228,253,2663 ,1366,2564,3593 }, {5905,5416,5528 ,6142,6461,6143 }, - {6008,5706,3779 ,3797,3796,6565 }, {5706,3414,2142 ,3796,4934,4936 }, - {5931,5928,3915 ,6576,4072,1575 }, {4308,5931,3915 ,6577,6576,1575 }, - {5931,6237,6236 ,6576,6578,6538 }, {6003,6001,5917 ,6122,6221,6402 }, - {758,3525,3688 ,5663,5665,5574 }, {1627,758,3688 ,5573,5663,5574 }, - {5929,5045,3628 ,6029,4214,4213 }, {7240,7239,7220 ,4312,1527,4367 }, - {6153,6140,5040 ,5514,2333,5469 }, {5979,1121,6125 ,6028,6564,4395 }, - {6078,6112,3508 ,6522,6406,6505 }, {5904,6189,3621 ,5851,6579,625 }, - {5849,5578,6189 ,5853,587,6579 }, {5904,5849,6189 ,5851,5853,6579 }, - {3583,5652,5651 ,5772,5774,5920 }, {5166,5120,5167 ,3427,5857,5856 }, - {5608,3472,3007 ,4356,3155,818 }, {5982,6229,5608 ,4218,6556,4356 }, - {5193,5252,4466 ,5846,5746,5854 }, {5326,5325,6041 ,3714,5655,3801 }, - {5322,5695,6145 ,4297,6465,6514 }, {4465,6210,6209 ,257,5566,6012 }, - {5928,5931,6236 ,4072,6576,6538 }, {3561,5317,6236 ,6580,6508,6538 }, - {6237,3561,6236 ,6578,6580,6538 }, {4260,4278,4277 ,3527,5583,4532 }, - {5384,5403,6016 ,6121,5921,6228 }, {5846,257,5086 ,6065,6067,6064 }, - {5303,5670,5981 ,5737,6227,6415 }, {3525,5885,5345 ,5665,6502,6438 }, - {5942,5382,5317 ,6581,6509,6508 }, {3561,5942,5317 ,6580,6581,6508 }, - {4488,4154,5382 ,6582,6510,6509 }, {3007,1696,5924 ,818,6547,6091 }, - {1811,1810,1750 ,777,779,745 }, {6621,5629,6605 ,5552,5162,5164 }, - {6058,3525,5345 ,6460,5665,6438 }, {5961,3560,5935 ,6456,5779,5778 }, - {5487,3781,5417 ,6558,5849,5923 }, {5904,3621,4200 ,5851,625,6583 }, - {7128,7129,7160 ,5391,1026,6271 }, {5302,6008,3779 ,3795,3797,6565 }, - {3472,4486,3007 ,3155,819,818 }, {5962,3469,4466 ,5745,5860,5854 }, - {3659,5314,5449 ,3875,6411,6543 }, {5314,3629,3523 ,6411,5965,6544 }, - {4164,3659,5449 ,6139,3875,6543 }, {6001,6081,6181 ,6221,6223,6251 }, - {5942,4488,5382 ,6581,6582,6509 }, {6026,5868,4154 ,6584,6527,6510 }, - {4488,6026,4154 ,6582,6584,6510 }, {3386,168,3409 ,6491,6585,6490 }, - {6148,6161,5868 ,6586,6530,6527 }, {4153,3953,5993 ,5711,5713,6475 }, - {7351,7403,7402 ,6587,6588,6589 }, {1,1022,6202 ,4622,4198,6590 }, - {2896,3845,1949 ,6110,3635,3637 }, {5963,5956,3337 ,6409,6240,4125 }, - {5933,6044,3822 ,615,614,5715 }, {5890,5686,5713 ,6591,5777,5776 }, - {5947,6230,5876 ,6027,2144,2146 }, {6014,6083,6015 ,6592,3989,3988 }, - {7129,7128,7101 ,1026,5391,4073 }, {6196,6222,6239 ,4,6253,5918 }, - {3409,3443,5472 ,6490,6302,6301 }, {3701,6149,5922 ,733,732,4292 }, - {6132,5929,3628 ,5897,6029,4213 }, {7370,7343,7344 ,3750,2750,2749 }, - {5930,7058,5979 ,6593,6594,6028 }, {3666,6068,6137 ,5699,5896,5809 }, - {5939,5649,5865 ,4276,6093,6092 }, {3836,5939,5865 ,6103,4276,6092 }, - {5608,3007,5924 ,4356,818,6091 }, {5982,5608,5924 ,4218,4356,6091 }, - {601,3286,2990 ,3905,56,3646 }, {5663,6136,5909 ,4259,5810,4260 }, - {5952,5991,3620 ,6595,5482,6001 }, {4147,20,3506 ,2517,3961,6492 }, - {6034,5952,3620 ,6049,6595,6001 }, {3012,1153,1332 ,3491,2245,3492 }, - {6026,6148,5868 ,6584,6586,6527 }, {249,348,20 ,644,643,3961 }, - {6161,6599,6187 ,6530,6596,6531 }, {5910,6354,5590 ,5121,6597,6386 }, - {6249,3701,5922 ,4032,733,4292 }, {5915,5975,6072 ,6120,6161,6155 }, - {3804,3832,3831 ,4324,2322,2321 }, {3831,3803,3804 ,2321,6436,4324 }, - {3929,5999,4166 ,5024,5184,6084 }, {3838,5999,1252 ,6257,5184,5023 }, - {6140,6101,6122 ,2333,6574,1797 }, {6295,6553,3283 ,1290,780,262 }, - {6219,6191,6220 ,6598,6599,6600 }, {6660,2138,6219 ,6601,6602,6598 }, - {5185,3632,5703 ,5939,5898,5748 }, {5355,5185,5703 ,6555,5939,5748 }, - {7909,7886,2263 ,6603,6561,3080 }, {3834,1298,6386 ,4083,5088,4085 }, - {5621,5560,1164 ,6604,6605,5087 }, {1298,5621,1164 ,5088,6604,5087 }, - {5913,5076,5560 ,6606,6607,6605 }, {5621,5913,5560 ,6604,6606,6605 }, - {5913,5919,5904 ,6606,6608,5851 }, {5076,5913,5904 ,6607,6606,5851 }, - {5919,5369,5904 ,6608,6609,5851 }, {5320,6053,6145 ,4464,4463,6514 }, - {4623,5939,3836 ,6452,4276,6103 }, {5782,4623,3836 ,5693,6452,6103 }, - {6248,5609,6213 ,6154,5658,6459 }, {3787,6159,5918 ,5819,5082,5820 }, - {1696,3007,3582 ,6547,818,1378 }, {3607,6073,4164 ,6138,3873,6139 }, - {5962,3608,3469 ,5745,5799,5860 }, {6034,3620,6175 ,6049,6001,6004 }, - {5602,3822,5964 ,5716,5715,6507 }, {5964,3576,6017 ,6507,5890,6506 }, - {5706,5893,3414 ,3796,6425,4934 }, {5247,6145,5899 ,4096,6514,6548 }, - {5253,3779,5896 ,6163,6565,6176 }, {5896,3779,4648 ,6176,6565,5722 }, - {3292,3294,3308 ,4067,3895,3894 }, {4485,6209,6208 ,32,6012,6011 }, - {6169,6191,6190 ,2334,6599,6610 }, {6190,6191,6219 ,6610,6599,6598 }, - {3522,6059,5906 ,6451,6446,6417 }, {5452,3905,5386 ,2714,4194,5870 }, - {5449,3523,3893 ,6543,6544,3789 }, {5540,5449,3893 ,6162,6543,3789 }, - {3523,5160,5861 ,6544,6186,6453 }, {3893,3523,5861 ,3789,6544,6453 }, - {7286,7344,7285 ,3460,2749,2751 }, {747,5862,5782 ,5692,3790,5693 }, - {5862,4623,5782 ,3790,6452,5693 }, {6159,3609,5918 ,5082,5081,5820 }, - {806,6073,3607 ,4783,3873,6138 }, {6203,6239,6238 ,1249,5918,5919 }, - {6034,6175,5889 ,6049,6004,1587 }, {6179,3575,3906 ,6486,5887,5697 }, - {5205,4178,5248 ,5219,3825,6469 }, {7973,8020,7972 ,3624,1405,6059 }, - {6170,3725,3537 ,3719,3971,1735 }, {7568,7567,7508 ,5544,5545,6196 }, - {187,1171,3498 ,6439,6441,5800 }, {7311,7310,7287 ,4334,4283,3459 }, - {6076,3248,5870 ,4217,4216,4275 }, {5969,6076,5870 ,6188,4217,4275 }, - {5969,5870,5861 ,6188,4275,6453 }, {5160,5969,5861 ,6186,6188,6453 }, - {5937,1298,3834 ,6611,5088,4083 }, {4044,5937,3834 ,4322,6611,4083 }, - {5937,1382,1298 ,6611,6612,5088 }, {1298,1382,5621 ,5088,6612,6604 }, - {1382,6047,5913 ,6612,6613,6606 }, {5621,1382,5913 ,6604,6612,6606 }, - {6047,5603,5913 ,6613,6614,6606 }, {5913,5603,5919 ,6606,6614,6608 }, - {5402,5369,5919 ,6615,6609,6608 }, {5603,5402,5919 ,6614,6615,6608 }, - {5687,6065,5369 ,6420,6616,6609 }, {5402,5687,5369 ,6615,6420,6609 }, - {2912,5903,1379 ,3934,6480,4137 }, {3620,5907,3860 ,6001,6116,6523 }, - {5703,6165,1464 ,5748,4219,5768 }, {5602,5964,3508 ,5716,6507,6505 }, - {3507,5602,3508 ,5671,5716,6505 }, {3773,3812,3811 ,4279,1513,4323 }, - {537,5567,5955 ,4834,6413,6512 }, {5610,3715,5609 ,6153,6124,5658 }, - {6292,6060,6282 ,5403,5914,6617 }, {7509,7568,7508 ,1874,5544,6196 }, - {381,3930,4247 ,6450,6467,6468 }, {6154,6182,6169 ,2387,6618,2334 }, - {6169,6182,6191 ,2334,6618,6599 }, {5072,4044,6261 ,6619,4322,4321 }, - {3527,5687,5402 ,6620,6420,6615 }, {158,4200,3621 ,5258,6583,625 }, - {2582,1017,3451 ,873,1793,1720 }, {6089,5888,6050 ,6494,5752,4094 }, - {6165,6164,1464 ,4219,6562,5768 }, {6073,3659,4164 ,3873,3875,6139 }, - {2160,5328,5370 ,6621,2172,2171 }, {5956,5860,6151 ,6240,5998,6024 }, - {6038,5631,5654 ,6264,6536,6026 }, {6147,6172,6146 ,5452,5451,6568 }, - {6013,3943,5956 ,6060,4755,6240 }, {422,1701,216 ,4689,6476,4644 }, - {5126,4447,5563 ,6170,717,4605 }, {3018,5905,5530 ,6125,6142,6189 }, - {5294,5692,5912 ,5891,6229,5892 }, {6056,5478,5883 ,5808,5806,5850 }, - {4278,4308,4307 ,5583,6577,4562 }, {5878,5892,5549 ,2684,2683,6435 }, - {5462,5961,5935 ,6418,6456,5778 }, {3725,6170,6182 ,3971,3719,6618 }, - {6154,3725,6182 ,2387,3971,6618 }, {6170,6192,6191 ,3719,6622,6599 }, - {6182,6170,6191 ,6618,3719,6599 }, {6192,6200,6191 ,6622,6623,6599 }, - {6191,6200,6220 ,6599,6623,6600 }, {6200,6231,6220 ,6623,6624,6600 }, - {7851,7850,7825 ,6625,3769,3768 }, {6047,1382,5603 ,6613,6612,6614 }, - {5247,5899,5227 ,4096,6548,4097 }, {5703,1464,932 ,5748,5768,5765 }, - {5246,6134,6039 ,5176,2729,2728 }, {5980,6010,5294 ,5557,6197,5891 }, - {6028,6029,3860 ,5316,1454,6523 }, {5958,3507,3508 ,5702,5671,6505 }, - {6112,5958,3508 ,6406,5702,6505 }, {3631,5487,5417 ,5922,6558,5923 }, - {1723,5476,1261 ,6626,6495,6472 }, {4307,4308,3915 ,4562,6577,1575 }, - {2321,3262,3509 ,5999,6627,6519 }, {3471,5627,3262 ,4104,6628,6627 }, - {6177,3471,3262 ,6629,4104,6627 }, {6246,3666,6274 ,5559,5699,5684 }, - {5947,5948,5717 ,6027,5719,4023 }, {5876,3548,5933 ,2146,6013,615 }, - {4541,3631,3079 ,6630,5922,6540 }, {6192,6170,6200 ,6622,3719,6623 }, - {6231,6262,5072 ,6624,6631,6619 }, {3982,4044,5072 ,6632,4322,6619 }, - {6262,3982,5072 ,6631,6632,6619 }, {4044,3982,5937 ,4322,6632,6611 }, - {3982,1007,1382 ,6632,6633,6612 }, {5937,3982,1382 ,6611,6632,6612 }, - {5484,5603,1382 ,6634,6614,6612 }, {1007,5484,1382 ,6633,6634,6612 }, - {6106,5402,5603 ,6635,6615,6614 }, {5484,6106,5603 ,6634,6635,6614 }, - {5748,3527,5402 ,6636,6620,6615 }, {6106,5748,5402 ,6635,6636,6615 }, - {4653,4600,4679 ,4347,4360,3852 }, {6523,5367,5349 ,5319,6034,5320 }, - {6057,5935,5524 ,6423,5778,6426 }, {966,5526,3039 ,2565,6256,2686 }, - {806,3607,6267 ,4783,6138,6407 }, {5588,3835,5550 ,6088,6046,6047 }, - {1293,6217,932 ,5764,6554,5765 }, {3415,5488,5246 ,6115,2730,5176 }, - {5911,5474,5932 ,5924,4243,5925 }, {1661,6111,6179 ,5672,5674,6486 }, - {635,2938,5534 ,2183,4320,6524 }, {6050,3765,5394 ,4094,4093,5660 }, - {4425,6177,3262 ,6268,6629,6627 }, {2321,4425,3262 ,5999,6268,6627 }, - {5534,1629,5971 ,6524,4207,6479 }, {2938,1629,5534 ,4320,4207,6524 }, - {2204,5867,5866 ,6520,6499,5302 }, {7291,7268,7316 ,3774,3773,5948 }, - {6213,6212,4391 ,6459,5562,992 }, {3631,4541,5487 ,5922,6630,6558 }, - {6170,6193,6200 ,3719,6637,6623 }, {6262,6231,3982 ,6631,6624,6632 }, - {3982,3667,1007 ,6632,6638,6633 }, {6011,5484,1007 ,6639,6634,6633 }, - {5484,5748,6106 ,6634,6636,6635 }, {5451,3446,5608 ,6219,3718,4356 }, - {6217,5703,932 ,6554,5748,5765 }, {3415,6186,5488 ,6115,4365,2730 }, - {5899,5925,5227 ,6548,5710,4097 }, {3560,5853,3658 ,5779,6038,6521 }, - {4153,4292,4374 ,5711,6400,5712 }, {5559,5687,3527 ,6640,6420,6620 }, - {1741,4466,6104 ,5695,5854,5696 }, {955,377,5787 ,3991,4311,4305 }, - {5302,5253,5975 ,3795,6163,6161 }, {5860,4045,2321 ,5998,5916,5999 }, - {3248,5982,5649 ,4216,4218,6093 }, {1261,3979,5591 ,6472,6471,3597 }, - {1629,1379,5971 ,4207,4137,6479 }, {3575,6179,3584 ,5887,6486,5888 }, - {5886,5887,6087 ,6192,6493,6193 }, {2645,3041,3535 ,4418,3182,442 }, - {3451,6183,6170 ,1720,6641,3719 }, {6183,6193,6170 ,6641,6637,3719 }, - {6193,6221,6200 ,6637,6642,6623 }, {6200,6221,6231 ,6623,6642,6624 }, - {3982,6127,3667 ,6632,6643,6638 }, {6127,1058,1007 ,6643,6644,6633 }, - {3667,6127,1007 ,6638,6643,6633 }, {6097,6011,1007 ,6645,6639,6633 }, - {1058,6097,1007 ,6644,6645,6633 }, {5460,5484,6011 ,6646,6634,6639 }, - {6097,5460,6011 ,6645,6646,6639 }, {1608,5992,1293 ,4128,4197,5764 }, - {5355,6217,1293 ,6555,6554,5764 }, {3558,6078,3581 ,5964,6522,6504 }, - {5957,5824,4105 ,4054,6517,4053 }, {5627,6184,6128 ,6628,6089,5981 }, - {4045,4425,2321 ,5916,6268,5999 }, {6104,5254,5858 ,5696,4042,4041 }, - {5824,4028,3411 ,6517,5823,4280 }, {5455,6509,5013 ,686,1452,684 }, - {5322,6145,4023 ,4297,6514,3827 }, {5971,1379,5903 ,6479,4137,6480 }, - {5627,6128,3509 ,6628,5981,6519 }, {3262,5627,3509 ,6627,6628,6519 }, - {6044,5294,3576 ,614,5891,5890 }, {572,571,475 ,1947,1885,1884 }, - {1605,6197,713 ,17,6252,3 }, {3041,3618,3535 ,3182,37,442 }, - {3451,6194,6193 ,1720,6647,6637 }, {6183,3451,6193 ,6641,1720,6637 }, - {6194,6201,6221 ,6647,6648,6642 }, {6193,6194,6221 ,6637,6647,6642 }, - {6232,6231,6221 ,6649,6624,6642 }, {6201,6232,6221 ,6648,6649,6642 }, - {6232,1746,3982 ,6649,6650,6632 }, {6231,6232,3982 ,6624,6649,6632 }, - {3982,1746,6127 ,6632,6650,6643 }, {6025,5748,5484 ,6651,6636,6634 }, - {5460,6025,5484 ,6646,6651,6634 }, {3716,5559,5748 ,6652,6640,6636 }, - {6025,3716,5748 ,6651,6652,6636 }, {5629,5048,5559 ,5162,6421,6640 }, - {3716,5629,5559 ,6652,5162,6640 }, {5992,5355,1293 ,4197,6555,5764 }, - {5580,3717,5630 ,6404,6487,4874 }, {5403,5417,5879 ,5921,5923,6220 }, - {6016,5403,5879 ,6228,5921,6220 }, {6150,1723,7053 ,6653,6626,6654 }, - {5909,5824,4167 ,4260,6517,6173 }, {6270,6271,3780 ,6082,6152,6526 }, - {6142,5854,3632 ,5941,6265,5898 }, {1605,6205,6223 ,17,6463,6151 }, - {6223,6205,6254 ,6151,6463,5758 }, {6055,5129,3659 ,3874,5698,3875 }, - {5705,5592,4567 ,4127,3671,6655 }, {5228,5205,5247 ,4095,5219,4096 }, - {5291,6148,6026 ,6656,6586,6584 }, {5232,5277,5255 ,6238,6237,3682 }, - {4444,6211,6210 ,582,5558,5566 }, {5011,5457,1252 ,6657,6308,5023 }, - {3443,5886,5869 ,6302,6192,6224 }, {3943,4045,5860 ,4755,5916,5998 }, - {3845,5319,6216 ,3635,5739,6658 }, {3953,4374,3018 ,5713,5712,6125 }, - {2291,350,2342 ,1115,1114,5690 }, {35,6228,2663 ,1338,1366,3593 }, - {3451,6171,6194 ,1720,6659,6647 }, {5912,5692,5329 ,5892,6229,6191 }, - {5632,5912,5329 ,6660,5892,6191 }, {5965,5632,5329 ,6190,6660,6191 }, - {3629,3581,3524 ,5965,6504,6187 }, {3471,6150,1219 ,4104,6653,4102 }, - {5854,6131,3632 ,6265,6050,5898 }, {6197,1605,6223 ,6252,17,6151 }, - {1605,4540,6206 ,17,19,6464 }, {6196,6197,6222 ,4,6252,6253 }, - {2636,5386,5789 ,2712,5870,6140 }, {5457,5020,4241 ,6308,6373,6321 }, - {5020,5457,5011 ,6373,6308,6657 }, {5973,5871,6110 ,6246,4124,6247 }, - {42,297,6783 ,5195,1918,3632 }, {5907,3415,5246 ,6116,6115,5176 }, - {5925,5927,5227 ,5710,5318,4097 }, {4572,3638,8038 ,5949,5950,4121 }, - {5987,6229,5982 ,5621,6556,4218 }, {6188,5863,5916 ,6174,6537,6175 }, - {6093,6086,6050 ,5771,6516,4094 }, {3443,5887,5886 ,6302,6493,6192 }, - {6171,3451,1017 ,6659,1720,1793 }, {6201,6194,6171 ,6648,6647,6659 }, - {6263,873,1746 ,6661,6662,6650 }, {6232,6263,1746 ,6649,6661,6650 }, - {873,6109,6127 ,6662,6663,6643 }, {1746,873,6127 ,6650,6662,6643 }, - {6109,4046,1058 ,6663,6664,6644 }, {6127,6109,1058 ,6643,6663,6644 }, - {3045,6097,1058 ,6665,6645,6644 }, {4046,3045,1058 ,6664,6665,6644 }, - {5900,5460,6097 ,6666,6646,6645 }, {3045,5900,6097 ,6665,6666,6645 }, - {5900,5448,5460 ,6666,6667,6646 }, {5381,6025,5460 ,6668,6651,6646 }, - {5448,5381,5460 ,6667,6668,6646 }, {7976,7975,7952 ,1715,6669,5475 }, - {5251,6041,5273 ,3802,3801,3819 }, {5692,6016,5879 ,6229,6228,6220 }, - {5329,5692,5879 ,6191,6229,6220 }, {6090,5874,6053 ,4897,4896,4463 }, - {6029,5976,6066 ,1454,5903,1455 }, {5996,5705,4567 ,6249,4127,6655 }, - {3582,3660,5362 ,1378,709,6670 }, {6205,6240,6254 ,6463,5756,5758 }, - {5863,5753,5916 ,6537,6481,6175 }, {5849,1124,5578 ,5853,5852,587 }, - {6212,6247,6246 ,5562,5575,5559 }, {6211,6212,6246 ,5558,5562,5559 }, - {5567,537,2040 ,6413,4834,4833 }, {4484,4465,6209 ,258,257,6012 }, - {262,359,210 ,4758,4841,4592 }, {1455,5202,808 ,1917,5550,4734 }, - {2140,4565,5447 ,5635,5944,5633 }, {6149,3648,3445 ,732,734,1791 }, - {3385,3836,5921 ,6104,6103,5705 }, {6269,6270,3611 ,6083,6082,5673 }, - {1854,5971,5368 ,2184,6479,5751 }, {5124,3970,6146 ,6567,3225,6568 }, - {3611,6063,6111 ,5673,5685,5674 }, {6157,6171,1017 ,5569,6659,1793 }, - {6157,4063,6171 ,5569,4733,6659 }, {6202,6201,6171 ,6590,6648,6659 }, - {4063,6202,6171 ,4733,6590,6659 }, {6202,6233,6232 ,6590,6671,6649 }, - {6201,6202,6232 ,6648,6590,6649 }, {6232,6233,6263 ,6649,6671,6661 }, - {5183,3716,6025 ,6672,6652,6651 }, {5381,5183,6025 ,6668,6672,6651 }, - {5691,5629,3716 ,6673,5162,6652 }, {5183,5691,3716 ,6672,6673,6652 }, - {5691,5938,5629 ,6673,5163,5162 }, {6078,3508,3581 ,6522,6505,6504 }, - {6203,6238,806 ,1249,5919,4783 }, {7203,7220,7185 ,4366,4367,5073 }, - {3620,5946,5907 ,6001,5481,6116 }, {5533,6195,3609 ,6239,5529,5081 }, - {5992,5185,5355 ,4197,5939,6555 }, {3611,3780,6063 ,5673,6526,5685 }, - {3829,3051,5877 ,6195,6488,4242 }, {6024,5743,5646 ,6482,6432,6431 }, - {5526,252,5897 ,6256,2743,6414 }, {5368,5971,5901 ,5751,6479,6674 }, - {5368,5901,5888 ,5751,6674,5752 }, {808,4987,1455 ,4734,1491,1917 }, - {3606,1410,1510 ,6137,3911,3788 }, {5749,6249,5922 ,6052,4032,4292 }, - {2204,5866,5864 ,6520,5302,5304 }, {3780,4167,6063 ,6526,6173,5685 }, - {5884,3446,5451 ,5848,3718,6219 }, {4269,6199,4229 ,4860,4859,4877 }, - {1426,4063,6157 ,4648,4733,5569 }, {1,6202,4063 ,4622,6590,4733 }, - {8049,8035,8018 ,5393,6675,6676 }, {843,6203,806 ,2423,1249,4783 }, - {3581,5632,5965 ,6504,6660,6190 }, {3524,3581,5965 ,6187,6504,6190 }, - {5824,5957,4167 ,6517,4054,6173 }, {6179,6111,5575 ,6486,5674,5686 }, - {4485,4484,6209 ,32,258,6012 }, {5489,5475,5877 ,4244,4038,4242 }, - {7511,7510,7453 ,6677,1873,1187 }, {1700,422,81 ,6072,4689,4673 }, - {3900,552,8132 ,884,3929,413 }, {5129,3906,3575 ,5698,5697,5887 }, - {6037,3856,1272 ,5235,5754,5740 }, {75,107,930 ,3962,2548,3594 }, - {3688,4153,1729 ,5574,5711,3666 }, {253,1664,249 ,2564,2268,644 }, - {808,5941,4987 ,4734,4976,1491 }, {5941,5967,4987 ,4976,1352,1491 }, - {5876,5891,5948 ,2146,5714,5719 }, {5947,5876,5948 ,6027,2146,5719 }, - {3584,5575,6112 ,5888,5686,6406 }, {6057,5524,5994 ,6423,6426,6424 }, - {3801,5362,3660 ,4974,6670,709 }, {4147,3384,3409 ,2517,6518,6490 }, - {5986,306,1251 ,4603,6234,4604 }, {6202,6252,6233 ,6590,6678,6671 }, - {6233,6252,6263 ,6671,6678,6661 }, {6252,1484,873 ,6678,6679,6662 }, - {6263,6252,873 ,6661,6678,6662 }, {1484,5525,6109 ,6679,6680,6663 }, - {873,1484,6109 ,6662,6679,6663 }, {5525,5589,4046 ,6680,6681,6664 }, - {6109,5525,4046 ,6663,6680,6664 }, {1242,3045,4046 ,6682,6665,6664 }, - {5589,1242,4046 ,6681,6682,6664 }, {5539,5900,3045 ,6683,6666,6665 }, - {1242,5539,3045 ,6682,6683,6665 }, {5539,5448,5900 ,6683,6667,6666 }, - {5271,5381,5448 ,6684,6668,6667 }, {5539,5271,5448 ,6683,6684,6667 }, - {5271,5183,5381 ,6684,6672,6668 }, {5938,5502,5081 ,5163,1256,1258 }, - {806,6238,6073 ,4783,5919,3873 }, {6066,5976,5874 ,1455,5903,4896 }, - {5632,3581,5912 ,6660,6504,5892 }, {1696,3582,5362 ,6547,1378,6670 }, - {3524,5965,5969 ,6187,6190,6188 }, {6273,6274,5880 ,5683,5684,5700 }, - {3499,5394,5628 ,5661,5660,6560 }, {3547,3598,3546 ,803,802,2557 }, - {3879,3904,5928 ,2549,1264,4072 }, {6063,202,5575 ,5685,4105,5686 }, - {5981,6226,3905 ,6415,4192,4194 }, {3087,3131,3130 ,3573,3732,3414 }, - {5943,6283,7088 ,5402,4298,4299 }, {3629,3558,3581 ,5965,5964,6504 }, - {5316,3835,5588 ,6087,6046,6088 }, {3248,5649,5939 ,4216,6093,4276 }, - {7333,7332,3304 ,4353,6685,1050 }, {7208,7226,7225 ,1671,6686,1672 }, - {5949,5967,2960 ,5086,1352,4975 }, {2960,5967,5941 ,4975,1352,4976 }, - {6179,5575,3584 ,6486,5686,5888 }, {5345,5885,6057 ,6438,6502,6423 }, - {253,751,6228 ,2564,1365,1366 }, {168,4147,3409 ,6585,2517,6490 }, - {1022,1,969 ,4198,4622,4199 }, {3515,3719,501 ,1357,1356,4313 }, - {58,1332,8143 ,2156,3492,2570 }, {6202,1022,6252 ,6590,4198,6678 }, - {5176,5183,5271 ,6687,6672,6684 }, {6064,5691,5183 ,6688,6673,6672 }, - {5176,6064,5183 ,6687,6688,6672 }, {5502,5938,5691 ,1256,5163,6673 }, - {6064,5502,5691 ,6688,1256,6673 }, {6218,3560,3658 ,5780,5779,6521 }, - {5351,168,3386 ,6513,6585,6491 }, {4268,6199,4269 ,4848,4859,4860 }, - {6084,6087,3499 ,6194,6193,5661 }, {5361,5462,5935 ,5664,6418,5778 }, - {6087,5394,3499 ,6193,5660,5661 }, {3822,3576,5964 ,5715,5890,6507 }, - {3456,8083,5771 ,1145,2103,2868 }, {2263,2262,7909 ,3080,3359,6603 }, - {5824,3411,4105 ,6517,4280,4053 }, {5351,5513,168 ,6513,6500,6585 }, - {2206,5592,2224 ,176,3671,2660 }, {807,806,6267 ,6073,4783,6407 }, - {5513,4147,168 ,6500,2517,6585 }, {7923,7948,7896 ,816,3625,4355 }, - {2204,5864,3311 ,6520,5304,5303 }, {5129,3575,5293 ,5698,5887,5889 }, - {2663,783,35 ,3593,679,1338 }, {6252,6264,1484 ,6678,6689,6679 }, - {5754,5271,5539 ,6690,6684,6683 }, {5502,6064,5176 ,1256,6688,6687 }, - {5854,3951,6130 ,6265,6528,6300 }, {6051,6132,6130 ,6037,5897,6300 }, - {5211,5191,6433 ,6071,2900,6691 }, {5695,5320,6145 ,6465,4464,6514 }, - {2573,2660,3569 ,3253,455,4381 }, {4485,6208,6207 ,32,6011,6156 }, - {4517,4292,6058 ,6484,6400,6460 }, {6266,1700,3563 ,399,6072,6074 }, - {3870,5915,3686 ,6096,6120,6119 }, {5932,5370,5934 ,5925,2171,616 }, - {422,1700,1701 ,4689,6072,6476 }, {4321,6225,4343 ,4873,4872,1818 }, - {4356,166,4404 ,155,3729,5072 }, {5978,6114,5195 ,5581,1805,6235 }, - {5212,5978,5195 ,430,5581,6235 }, {4246,4247,1729 ,3665,6468,3666 }, - {5314,5293,3629 ,6411,5889,5965 }, {5528,5302,5712 ,6143,3795,6160 }, - {3797,3747,5490 ,2061,2925,6055 }, {4515,4485,6207 ,30,32,6156 }, - {5915,5820,5975 ,6120,6144,6161 }, {3679,5990,5351 ,6447,6692,6513 }, - {807,6267,3606 ,6073,6407,6137 }, {1022,6253,6252 ,4198,6693,6678 }, - {6253,6265,6264 ,6693,6694,6689 }, {6252,6253,6264 ,6678,6693,6689 }, - {6265,4189,1484 ,6694,6695,6679 }, {6264,6265,1484 ,6689,6694,6679 }, - {4189,5184,5525 ,6695,6696,6680 }, {1484,4189,5525 ,6679,6695,6680 }, - {5184,3874,5589 ,6696,6697,6681 }, {5525,5184,5589 ,6680,6696,6681 }, - {3908,1242,5589 ,6698,6682,6681 }, {3874,3908,5589 ,6697,6698,6681 }, - {3776,5539,1242 ,6699,6683,6682 }, {3908,3776,1242 ,6698,6699,6682 }, - {5780,5754,5539 ,6700,6690,6683 }, {3776,5780,5539 ,6699,6700,6683 }, - {4344,5271,5754 ,6701,6684,6690 }, {5780,4344,5754 ,6700,6701,6690 }, - {5968,5176,5271 ,6702,6687,6684 }, {4344,5968,5271 ,6701,6702,6684 }, - {5088,5502,5176 ,5004,1256,6687 }, {5968,5088,5176 ,6702,5004,6687 }, - {6240,1661,6268 ,5756,5672,5757 }, {1723,6150,3471 ,6626,6653,4104 }, - {5476,1723,3471 ,6495,6626,4104 }, {4367,6224,4391 ,228,6458,992 }, - {5233,5978,5212 ,429,5581,430 }, {1204,4499,4500 ,338,4510,4523 }, - {6014,6015,5838 ,6592,3988,3987 }, {5910,6014,5838 ,5121,6592,3987 }, - {3408,3435,3434 ,3484,6703,737 }, {6076,6033,5982 ,4217,5620,4218 }, - {1008,5316,3414 ,6427,6087,4934 }, {1252,3839,3838 ,5023,6310,6257 }, - {6059,3559,3679 ,6446,6412,6447 }, {5897,5990,3679 ,6414,6692,6447 }, - {5316,4528,3414 ,6087,4935,4934 }, {1629,931,1379 ,4207,3944,4137 }, - {6123,5513,5351 ,4221,6500,6513 }, {5981,6007,5562 ,6415,6704,4193 }, - {6137,6068,3989 ,5809,5896,5822 }, {1022,1051,6253 ,4198,4588,6693 }, - {3395,5116,5854 ,5940,4126,6265 }, {3780,5356,4167 ,6526,4258,6173 }, - {5192,5044,3762 ,6454,5173,5172 }, {5916,5476,6177 ,6175,6495,6629 }, - {6052,3762,3835 ,5717,5172,6046 }, {5477,2636,5789 ,5399,2712,6140 }, - {8080,8141,8132 ,1094,3295,413 }, {4299,1511,2431 ,5984,4921,2977 }, - {5486,6052,3835 ,5718,5717,6046 }, {4028,5193,3411 ,5823,5846,4280 }, - {7532,7565,7507 ,6705,5080,6706 }, {5901,5971,5888 ,6674,6479,5752 }, - {5971,5902,5888 ,6479,5769,5752 }, {3506,1854,5368 ,6492,2184,5751 }, - {5990,6123,5351 ,6692,4221,6513 }, {3559,5897,3679 ,6412,6414,6447 }, - {6145,6053,5925 ,6514,4463,5710 }, {5869,6084,3680 ,6224,6194,6497 }, - {3366,5461,5252 ,5894,5744,5746 }, {3908,3874,3776 ,6698,6697,6699 }, - {5116,3951,5854 ,4126,6528,6265 }, {2208,5502,5088 ,1257,1256,5004 }, - {5450,5472,6032 ,6525,6301,6489 }, {5246,5488,6134 ,5176,2730,2729 }, - {2159,5549,1171 ,6440,6435,6441 }, {3836,5865,5921 ,6103,6092,5705 }, - {5892,3498,1171 ,2683,5800,6441 }, {6042,1696,5230 ,5703,6547,5704 }, - {4247,1627,1729 ,6468,5573,3666 }, {4425,5916,6177 ,6268,6175,6629 }, - {5549,5892,1171 ,6435,2683,6441 }, {4278,6138,5931 ,5583,6014,6576 }, - {4308,4278,5931 ,6577,5583,6576 }, {6138,6250,6237 ,6014,6532,6578 }, - {5316,5743,3835 ,6087,6432,6046 }, {5233,5232,5978 ,429,6238,5581 }, - {5983,6082,5232 ,6707,1348,6238 }, {5590,6014,5910 ,6386,6592,5121 }, - {5931,6138,6237 ,6576,6014,6578 }, {6250,3444,3561 ,6532,6054,6580 }, - {3559,6059,3522 ,6412,6446,6451 }, {1696,5362,5230 ,6547,6670,5704 }, - {1701,2896,1949 ,6476,6110,3637 }, {5865,6042,5921 ,6092,5703,5705 }, - {6036,5789,5883 ,6141,6140,5850 }, {5478,6036,5883 ,5806,6141,5850 }, - {6237,6250,3561 ,6578,6532,6580 }, {1620,5872,6129 ,5982,6557,5983 }, - {5245,4949,4724 ,5880,5526,4737 }, {3469,3608,6067 ,5860,5799,6266 }, - {5891,5933,3822 ,5714,615,5715 }, {1051,1858,217 ,4588,4590,4643 }, - {1051,1532,6253 ,4588,4771,6693 }, {6253,1532,6265 ,6693,4771,6694 }, - {1532,5275,4189 ,4771,6708,6695 }, {6265,1532,4189 ,6694,4771,6695 }, - {4349,5184,4189 ,6709,6696,6695 }, {5275,4349,4189 ,6708,6709,6695 }, - {3927,3874,5184 ,6710,6697,6696 }, {4349,3927,5184 ,6709,6710,6696 }, - {3927,6117,3874 ,6710,6711,6697 }, {5959,3776,3874 ,6712,6699,6697 }, - {6117,5959,3874 ,6711,6712,6697 }, {5565,5780,3776 ,6713,6700,6699 }, - {5959,5565,3776 ,6712,6713,6699 }, {5565,3610,4344 ,6713,6714,6701 }, - {5780,5565,4344 ,6700,6713,6701 }, {5873,5968,4344 ,6715,6702,6701 }, - {3610,5873,4344 ,6714,6715,6701 }, {5393,5088,5968 ,5005,5004,6702 }, - {5873,5393,5968 ,6715,5005,6702 }, {6110,5871,3395 ,6247,4124,5940 }, - {6105,6062,1268 ,5565,6478,4568 }, {7370,7422,7396 ,3750,1404,6716 }, - {2343,6563,2210 ,2685,464,2510 }, {5995,6012,5974 ,5564,6408,6474 }, - {5789,6258,5954 ,6140,6553,5868 }, {5883,5789,5954 ,5850,6140,5868 }, - {6258,5386,5954 ,6553,5870,5868 }, {5476,3471,6177 ,6495,4104,6629 }, - {5954,5386,3657 ,5868,5870,5869 }, {5983,5232,5255 ,6707,6238,3682 }, - {6241,6269,1661 ,6410,6083,5672 }, {5895,5942,3561 ,6053,6581,6580 }, - {5743,5486,3835 ,6432,5718,6046 }, {5386,6185,6178 ,5870,6051,5881 }, - {3657,5386,6178 ,5869,5870,5881 }, {5232,6082,5978 ,6238,1348,5581 }, - {6271,5356,3780 ,6152,4258,6526 }, {3444,5895,3561 ,6054,6053,6580 }, - {3731,4488,5942 ,6041,6582,6581 }, {3559,3522,1417 ,6412,6451,6501 }, - {5955,3559,1417 ,6512,6412,6501 }, {3717,3953,3715 ,6487,5713,6124 }, - {5630,5610,6225 ,4874,6153,4872 }, {6185,3892,6178 ,6051,4970,5881 }, - {5956,5951,3337 ,6240,6000,4125 }, {5712,5302,5975 ,6160,3795,6161 }, - {5417,3781,5451 ,5923,5849,6219 }, {5895,3731,5942 ,6053,6041,6581 }, - {6174,6002,6173 ,2381,5975,3711 }, {5935,3658,5524 ,5778,6521,6426 }, - {5426,5447,5970 ,5634,5633,3518 }, {537,5955,1417 ,4834,6512,6501 }, - {5743,6024,5486 ,6432,6482,5718 }, {6007,3787,5562 ,6704,5819,4193 }, - {252,6103,5897 ,2743,4220,6414 }, {5885,5935,6057 ,6502,5778,6423 }, - {4574,5301,1268 ,6477,2698,4568 }, {5974,3470,3079 ,6474,6401,6540 }, - {5995,5974,6062 ,5564,6474,6478 }, {5781,5782,3385 ,5694,5693,6104 }, - {6568,5395,5427 ,6717,5348,5811 }, {6075,6026,4488 ,6042,6584,6582 }, - {3731,6075,4488 ,6041,6042,6582 }, {5628,3609,6144 ,6560,5081,5083 }, - {6091,5384,6010 ,2173,6121,6197 }, {6069,6082,5983 ,6180,1348,6707 }, - {5255,6069,5983 ,3682,6180,6707 }, {58,8143,8128 ,2156,2570,959 }, - {4170,5447,5579 ,3731,5633,5942 }, {1002,1283,5788 ,2976,2978,6086 }, - {3844,4170,5579 ,2443,3731,5942 }, {5788,3844,5579 ,6086,2443,5942 }, - {4299,2431,1002 ,5984,2977,2976 }, {6075,5291,6026 ,6042,6656,6584 }, - {5908,6148,5291 ,4293,6586,6656 }, {6023,3360,3410 ,6040,6485,6483 }, - {6095,5973,6081 ,6222,6246,6223 }, {6081,6110,3395 ,6223,6247,5940 }, - {5981,3787,6007 ,6415,5819,6704 }, {5562,5918,5945 ,4193,5820,6396 }, - {5996,4567,6156 ,6249,6655,6250 }, {7743,7744,7769 ,5534,6101,5535 }, - {5329,5879,5711 ,6191,6220,6248 }, {5393,5362,3801 ,5005,6670,4974 }, - {5871,5963,3337 ,4124,6409,4125 }, {6105,5995,6062 ,5565,5564,6478 }, - {3217,5475,6030 ,6117,4038,4037 }, {4410,4094,5670 ,5735,6225,6227 }, - {6075,5908,5291 ,6042,4293,6656 }, {5559,3527,5748 ,6640,6620,6636 }, - {1121,5936,6125 ,6564,4393,4395 }, {6167,6259,5590 ,5974,6718,6386 }, - {6002,6167,5590 ,5975,5974,6386 }, {6003,5871,5973 ,6122,4124,6246 }, - {5871,5116,3395 ,4124,4126,5940 }, {5671,3599,5416 ,6515,6428,6461 }, - {6199,537,4229 ,4859,4834,4877 }, {537,1417,4229 ,4834,6501,4877 }, - {5670,3787,5981 ,6227,5819,6415 }, {6012,6004,5974 ,6408,6123,6474 }, - {6068,3366,3989 ,5896,5894,5822 }, {1620,1122,5872 ,5982,6719,6557 }, - {6215,5275,1532 ,3636,6708,4771 }, {1949,6215,1532 ,3637,3636,4771 }, - {3845,4349,5275 ,3635,6709,6708 }, {6215,3845,5275 ,3636,3635,6708 }, - {3845,3927,4349 ,3635,6710,6709 }, {3845,6216,3927 ,3635,6658,6710 }, - {6216,5319,6117 ,6658,5739,6711 }, {3927,6216,6117 ,6710,6658,6711 }, - {6117,5319,5959 ,6711,5739,6712 }, {5319,5781,5959 ,5739,5694,6712 }, - {5781,3385,5565 ,5694,6104,6713 }, {5959,5781,5565 ,6712,5694,6713 }, - {5565,3385,3610 ,6713,6104,6714 }, {3385,5921,3610 ,6104,5705,6714 }, - {5230,5873,3610 ,5704,6715,6714 }, {5921,5230,3610 ,5705,5704,6714 }, - {5362,5393,5873 ,6670,5005,6715 }, {5230,5362,5873 ,5704,6670,6715 }, - {8131,8105,8075 ,2307,3791,2308 }, {5897,6123,5990 ,6414,4221,6692 }, - {5951,3509,5123 ,6000,6519,6433 }, {3337,5951,5123 ,4125,6000,6433 }, - {6208,6243,6242 ,6011,5666,6081 }, {3469,6067,5651 ,5860,6266,5920 }, - {3498,6036,5478 ,5800,6141,5806 }, {5193,4466,1741 ,5846,5854,5695 }, - {4444,4443,6211 ,582,703,5558 }, {5854,6130,6131 ,6265,6300,6050 }, - {3902,3935,4807 ,4437,4346,6449 }, {7082,3415,5946 ,6462,6115,5481 }, - {7873,7897,7846 ,817,6015,4162 }, {8086,8099,8087 ,4823,2867,385 }, - {5520,1185,1516 ,1304,6159,1254 }, {257,3284,1380 ,6067,6720,6721 }, - {5706,6031,3779 ,3796,6429,6565 }, {1313,2373,1947 ,3674,6722,6723 }, - {7089,7115,7103 ,5608,1024,6455 }, {2220,1072,6709 ,6724,6725,6726 }, - {5085,1313,1947 ,3675,3674,6723 }, {2872,4204,784 ,311,38,4211 }, - {4542,6378,6481 ,6727,6728,6729 }, {5069,257,255 ,6730,6067,6731 }, - {352,351,255 ,593,592,6731 }, {5578,3621,6189 ,587,625,6579 }, - {6965,6964,6944 ,6732,6733,2633 }, {7005,7046,7004 ,6734,6735,5502 }, - {6914,6945,6913 ,3532,2632,2634 }, {6945,6965,6944 ,2632,6732,2633 }, - {2406,6530,1217 ,6736,6398,6399 }, {1215,6644,6950 ,3937,5098,1349 }, - {7719,7744,7743 ,6541,6101,5534 }, {4986,3399,5441 ,5096,715,5194 }, - {4831,4486,3472 ,3154,819,3155 }, {144,6430,5353 ,853,2748,851 }, - {7005,7004,6964 ,6734,5502,6733 }, {6965,7005,6964 ,6732,6734,6733 }, - {7046,7045,7004 ,6735,5503,5502 }, {2335,2284,7045 ,6737,6738,5503 }, - {7046,2335,7045 ,6735,6737,5503 }, {3609,5920,6990 ,5081,5453,6739 }, - {6858,6859,6910 ,6740,472,6741 }, {6158,7087,7086 ,6112,6742,6743 }, - {5978,6079,6114 ,5581,5580,1805 }, {3598,6598,3597 ,802,804,1810 }, - {6598,5908,3597 ,804,4293,1810 }, {4988,5020,5011 ,6744,6373,6657 }, - {6569,4988,5011 ,6745,6744,6657 }, {1118,4853,2284 ,6746,6747,6738 }, - {2335,1118,2284 ,6737,6746,6738 }, {6284,7086,5952 ,6113,6743,6595 }, - {3445,3597,5908 ,1791,1810,4293 }, {7062,1464,6164 ,6563,5768,6562 }, - {1380,6313,6312 ,6721,6748,6749 }, {879,4122,3397 ,1155,137,136 }, - {6859,6911,6910 ,472,474,6741 }, {255,257,1380 ,6731,6067,6721 }, - {6532,3496,6556 ,6184,3105,4273 }, {6557,6599,6598 ,6750,6596,804 }, - {6556,6557,6598 ,4273,6750,804 }, {6148,5908,6598 ,6586,4293,804 }, - {6599,6148,6598 ,6596,6586,804 }, {7453,7452,7424 ,1187,1875,1188 }, - {4568,5074,185 ,1492,6751,1493 }, {7736,2451,450 ,6752,2102,1653 }, - {3496,6557,6556 ,3105,6750,4273 }, {3733,4021,4426 ,5610,1712,1056 }, - {6690,7022,3649 ,6753,6754,6755 }, {5363,5383,6506 ,3269,3547,3549 }, - {2304,3302,2303 ,6756,6757,6758 }, {6571,5367,6523 ,4146,6034,5319 }, - {6468,6510,3496 ,6759,6760,3105 }, {3464,6468,3496 ,3151,6759,3105 }, - {6510,6558,6557 ,6760,6761,6750 }, {3496,6510,6557 ,3105,6760,6750 }, - {6558,6559,6557 ,6761,6762,6750 }, {6559,6600,6599 ,6762,6763,6596 }, - {6557,6559,6599 ,6750,6762,6596 }, {6600,6187,6599 ,6763,6531,6596 }, - {5823,7038,7073 ,661,3832,662 }, {6808,6807,6753 ,3465,6764,6765 }, - {3421,2851,3278 ,1156,3051,1158 }, {6703,6754,6701 ,5161,713,6766 }, - {6754,6789,6753 ,713,6767,6765 }, {7451,7509,7479 ,3963,1874,4423 }, - {3358,3357,3383 ,880,883,882 }, {5694,5715,5693 ,5326,4076,4075 }, - {3408,6468,3435 ,3484,6759,6703 }, {6533,6559,6558 ,6768,6762,6761 }, - {6510,6533,6558 ,6760,6768,6761 }, {6190,6219,2138 ,6610,6598,6602 }, - {6808,6859,6858 ,3465,472,6740 }, {6789,6808,6753 ,6767,3465,6765 }, - {5086,257,5069 ,6064,6067,6730 }, {7267,7291,7266 ,4331,3774,6769 }, - {5027,2272,4755 ,5516,1201,6770 }, {3936,3733,4024 ,5599,5610,5600 }, - {5693,7028,6988 ,4075,3587,6771 }, {5694,6989,6949 ,5326,4586,4585 }, - {5367,6571,5401 ,6034,4146,4145 }, {6393,6439,3408 ,1556,6772,3484 }, - {3357,6393,3408 ,883,1556,3484 }, {6439,6469,6468 ,6772,6773,6759 }, - {3408,6439,6468 ,3484,6772,6759 }, {6469,6511,6510 ,6773,6774,6760 }, - {6468,6469,6510 ,6759,6773,6760 }, {6510,6511,6533 ,6760,6774,6768 }, - {6511,6560,6559 ,6774,6775,6762 }, {6533,6511,6559 ,6768,6774,6762 }, - {6601,6600,6559 ,6776,6763,6762 }, {6560,6601,6559 ,6775,6776,6762 }, - {6601,6099,6187 ,6776,6777,6531 }, {6600,6601,6187 ,6763,6776,6531 }, - {297,6464,6783 ,1918,3633,3632 }, {6919,6918,6895 ,6778,6779,5434 }, - {2211,4988,1270 ,6780,6744,6781 }, {4988,6569,1270 ,6744,6745,6781 }, - {6948,6947,6920 ,6782,4587,6783 }, {6525,6526,6573 ,3703,6784,3733 }, - {6614,6651,6650 ,3886,6785,3833 }, {5300,6526,6525 ,3793,6784,3703 }, - {6866,6896,6842 ,6786,6787,5433 }, {6318,6319,5151 ,6788,6789,1803 }, - {7064,7048,7007 ,5181,6790,4628 }, {5415,5579,4565 ,5951,5942,5944 }, - {6393,6419,6439 ,1556,6791,6772 }, {6469,6485,6511 ,6773,6792,6774 }, - {3449,3478,3482 ,2440,885,2494 }, {6910,6911,6941 ,6741,474,6793 }, - {2271,3281,6309 ,5071,6794,3690 }, {5742,3815,3373 ,6448,5556,693 }, - {2244,6660,4570 ,6795,6601,4082 }, {5087,1117,6679 ,6796,4928,4824 }, - {2340,2303,2308 ,6797,6758,6798 }, {6389,6868,5041 ,5301,5554,6799 }, - {5559,5048,5687 ,6640,6421,6420 }, {2093,6342,2957 ,553,5265,6326 }, - {2303,3302,2308 ,6758,6757,6798 }, {6158,7086,6284 ,6112,6743,6113 }, - {7083,5991,5952 ,5483,5482,6595 }, {6318,5151,6356 ,6788,1803,3787 }, - {7453,7510,7452 ,1187,1873,1875 }, {2095,5081,1117 ,6800,1258,4928 }, - {7924,7974,7923 ,815,4171,816 }, {2237,2236,2373 ,6801,6802,6722 }, - {7087,5514,7088 ,6742,6128,4299 }, {6090,6053,6260 ,4897,4463,3397 }, - {5009,6391,6463 ,6803,6804,5159 }, {4575,7585,7640 ,3128,6805,5351 }, - {5514,7087,6158 ,6128,6742,6112 }, {5447,5564,5579 ,5633,5943,5942 }, - {5751,5752,7038 ,5878,4374,3832 }, {3359,6420,6419 ,824,6806,6791 }, - {6393,3359,6419 ,1556,824,6791 }, {6419,6420,6439 ,6791,6806,6772 }, - {6420,6470,6469 ,6806,6807,6773 }, {6439,6420,6469 ,6772,6806,6773 }, - {6470,6471,6485 ,6807,6808,6792 }, {6469,6470,6485 ,6773,6807,6792 }, - {6471,6512,6511 ,6808,6809,6774 }, {6485,6471,6511 ,6792,6808,6774 }, - {6561,6560,6511 ,6810,6775,6774 }, {6512,6561,6511 ,6809,6810,6774 }, - {6561,6180,6601 ,6810,6811,6776 }, {6560,6561,6601 ,6775,6810,6776 }, - {6601,6180,6099 ,6776,6811,6777 }, {3674,6160,6099 ,4286,6442,6777 }, - {6180,3674,6099 ,6811,4286,6777 }, {7033,7034,6152 ,6395,6045,6044 }, - {6682,5087,6679 ,6812,6796,4824 }, {184,4016,4017 ,4052,5969,5342 }, - {6942,6962,6961 ,521,3260,6813 }, {7000,7001,7024 ,6814,6815,6816 }, - {6160,6187,6099 ,6442,6531,6777 }, {7649,7648,7621 ,3950,3952,6010 }, - {5454,6682,3978 ,6817,6812,4549 }, {6711,2450,5014 ,3473,3444,6818 }, - {6554,3261,6521 ,3647,5015,6819 }, {350,5117,6115 ,1114,1113,3645 }, - {6713,6644,1215 ,6820,5098,3937 }, {6713,5056,6644 ,6820,1300,5098 }, - {3261,4190,2384 ,5015,3439,6821 }, {6844,6896,6866 ,6822,6787,6786 }, - {7105,7130,7104 ,5279,6823,5280 }, {7220,7219,7184 ,4367,1529,5074 }, - {6962,7001,7000 ,3260,6815,6814 }, {7025,7043,7042 ,6824,5895,5338 }, - {6319,5118,5125 ,6789,6825,5467 }, {3359,6394,6420 ,824,6826,6806 }, - {6420,6471,6470 ,6806,6808,6807 }, {6602,6180,6561 ,6827,6811,6810 }, - {6918,6946,6919 ,6779,594,6778 }, {1025,6657,6714 ,5299,6828,5300 }, - {2337,2405,5578 ,6829,4165,587 }, {2245,6359,6344 ,1260,6830,1450 }, - {5512,5511,5471 ,1589,1588,2051 }, {6379,6380,6394 ,6831,6832,6826 }, - {3359,6379,6394 ,824,6831,6826 }, {6380,6421,6420 ,6832,6833,6806 }, - {6394,6380,6420 ,6826,6832,6806 }, {6421,6472,6471 ,6833,6834,6808 }, - {6420,6421,6471 ,6806,6833,6808 }, {6472,6513,6512 ,6834,6835,6809 }, - {6471,6472,6512 ,6808,6834,6809 }, {6513,3600,6561 ,6835,5331,6810 }, - {6512,6513,6561 ,6809,6835,6810 }, {3623,6602,6561 ,4206,6827,6810 }, - {3600,3623,6561 ,5331,4206,6810 }, {6602,3623,6180 ,6827,4206,6811 }, - {6359,5074,4568 ,6830,6751,1492 }, {6344,6359,4568 ,1450,6830,1492 }, - {6739,6738,5437 ,6836,5057,6259 }, {6754,6753,6701 ,713,6765,6766 }, - {1990,5059,1217 ,1305,1253,6399 }, {7042,2251,7077 ,5338,3676,6837 }, - {7041,7042,7077 ,6838,5338,6837 }, {2251,5085,7077 ,3676,3675,6837 }, - {5085,4142,7077 ,3675,6839,6837 }, {6966,7006,6965 ,6840,6841,6732 }, - {2406,1217,6814 ,6736,6399,6842 }, {6421,6440,6472 ,6833,6843,6834 }, - {5527,3221,835 ,5977,183,3030 }, {2320,8049,8018 ,1406,5393,6676 }, - {6573,6574,6613 ,3733,3885,3746 }, {6342,2093,6555 ,5265,553,597 }, - {6854,6893,6906 ,3344,6844,4294 }, {6088,6069,5255 ,3670,6180,3682 }, - {6389,5041,5102 ,5301,6799,6845 }, {6688,6389,5102 ,6846,5301,6845 }, - {5054,5053,6688 ,6847,6848,6846 }, {5053,6389,6688 ,6848,5301,6846 }, - {6708,5053,5054 ,6148,6848,6847 }, {6696,6708,5054 ,6849,6148,6847 }, - {6442,6300,6708 ,6850,6146,6148 }, {2237,2308,6297 ,6801,6798,6851 }, - {6297,6300,6442 ,6851,6146,6850 }, {2308,6300,6297 ,6798,6146,6851 }, - {2409,2340,2237 ,6852,6797,6801 }, {3326,6380,6379 ,826,6832,6831 }, - {7047,7046,7005 ,6853,6735,6734 }, {7006,7047,7005 ,6841,6853,6734 }, - {2455,5001,4018 ,475,477,5084 }, {6613,6614,6650 ,3746,3886,3833 }, - {2340,2409,1075 ,6797,6852,6854 }, {2340,2308,2237 ,6797,6798,6801 }, - {4853,2340,1075 ,6747,6797,6854 }, {6959,6998,6997 ,6003,6855,4368 }, - {8019,8018,7972 ,1407,6676,6059 }, {5436,6681,5405 ,6201,5406,5518 }, - {5331,5330,5277 ,6198,3345,6237 }, {4960,306,5986 ,6856,6234,4603 }, - {4191,4296,3802 ,4474,6023,4475 }, {6737,6736,6704 ,6857,1622,5160 }, - {6681,6737,6704 ,5406,6857,5160 }, {2284,2248,7044 ,6738,6858,6859 }, - {7045,7044,7002 ,5503,6859,1047 }, {7006,7005,6965 ,6841,6734,6732 }, - {6941,6942,6961 ,6793,521,6813 }, {6966,6965,6914 ,6840,6732,3532 }, - {6141,6140,6122 ,2386,2333,1797 }, {6347,6381,6380 ,451,6860,6832 }, - {3326,6347,6380 ,826,451,6832 }, {6381,6422,6421 ,6860,6861,6833 }, - {6380,6381,6421 ,6832,6860,6833 }, {6422,6441,6440 ,6861,6862,6843 }, - {6421,6422,6440 ,6833,6861,6843 }, {6441,6473,6472 ,6862,6863,6834 }, - {6440,6441,6472 ,6843,6862,6834 }, {3550,6513,6472 ,4179,6835,6834 }, - {6473,3550,6472 ,6863,4179,6834 }, {6513,3550,3600 ,6835,4179,5331 }, - {6742,6746,4784 ,3422,6864,3423 }, {6864,6863,6839 ,6865,6866,6867 }, - {6840,6864,6839 ,6868,6865,6867 }, {7045,2284,7044 ,5503,6738,6859 }, - {4853,1075,2248 ,6747,6854,6858 }, {2284,4853,2248 ,6738,6747,6858 }, - {4746,6302,2210 ,5260,6869,2510 }, {2373,2236,2235 ,6722,6802,6870 }, - {7241,7287,7240 ,4465,3459,4312 }, {5140,1936,2094 ,3712,848,5570 }, - {7026,7045,7002 ,5504,5503,1047 }, {7026,7002,7003 ,5504,1047,1046 }, - {6915,6966,6914 ,6871,6840,3532 }, {7049,7064,7007 ,5454,5181,4628 }, - {6571,6572,6611 ,4146,3734,1391 }, {6840,6839,6792 ,6868,6867,5056 }, - {6812,6840,6792 ,6872,6868,5056 }, {6912,6913,6943 ,519,2634,520 }, - {1118,2304,2340 ,6746,6756,6797 }, {7002,7044,7043 ,1047,6859,5895 }, - {6291,6690,6027 ,6873,6753,6874 }, {6690,6687,6027 ,6753,6875,6874 }, - {455,456,1344 ,2205,301,300 }, {6351,8077,8079 ,1568,2078,55 }, - {3495,3496,6532 ,735,3105,6184 }, {6690,3649,4549 ,6753,6755,877 }, - {6687,6690,4549 ,6875,6753,877 }, {2236,6291,6027 ,6802,6873,6874 }, - {1947,2373,2235 ,6723,6722,6870 }, {2235,2236,6027 ,6870,6802,6874 }, - {3649,6661,6621 ,6755,6876,5552 }, {4549,3649,6621 ,877,6755,5552 }, - {5028,4027,1938 ,5109,3470,5934 }, {6661,5048,5629 ,6876,6421,5162 }, - {7004,7026,7003 ,5502,5504,1046 }, {206,3373,3815 ,3932,693,5556 }, - {7004,7003,6963 ,5502,1046,1048 }, {6915,6914,6862 ,6871,3532,6877 }, - {6312,6313,6747 ,6749,6748,6878 }, {7048,7047,7006 ,6790,6853,6841 }, - {6812,6792,6793 ,6872,5056,6879 }, {6794,6812,6793 ,6880,6872,6879 }, - {6911,6942,6941 ,474,521,6793 }, {6861,6913,6912 ,3533,2634,519 }, - {6860,6861,6912 ,473,3533,519 }, {6754,6808,6789 ,713,3465,6767 }, - {6687,4549,5077 ,6875,877,876 }, {6617,6616,6576 ,6881,6882,6883 }, - {6617,6655,6616 ,6881,5407,6882 }, {6655,6654,6616 ,5407,6884,6882 }, - {3556,3557,3580 ,3385,6070,6069 }, {4010,7030,4043 ,4343,6885,419 }, - {4009,4010,4043 ,3870,4343,419 }, {7030,3765,6096 ,6885,4093,4092 }, - {6685,6687,5077 ,6886,6875,876 }, {6621,6661,5629 ,5552,6876,5162 }, - {5404,6617,6576 ,3559,6881,6883 }, {6964,7004,6963 ,6733,5502,1048 }, - {6894,6915,6862 ,6887,6871,6877 }, {6894,6862,6863 ,6887,6877,6866 }, - {6348,6382,6381 ,1607,6888,6860 }, {6347,6348,6381 ,451,1607,6860 }, - {6382,6423,6422 ,6888,6889,6861 }, {6381,6382,6422 ,6860,6888,6861 }, - {6423,3465,6441 ,6889,6890,6862 }, {6422,6423,6441 ,6861,6889,6862 }, - {3465,3500,6473 ,6890,4177,6863 }, {6441,3465,6473 ,6862,6890,6863 }, - {6473,3500,3550 ,6863,4177,4179 }, {6794,6793,6755 ,6880,6879,5055 }, - {6756,6794,6755 ,6891,6880,5055 }, {6913,6944,6943 ,2634,2633,520 }, - {6480,5350,6507 ,1524,1526,2680 }, {7007,7048,7006 ,4628,6790,6841 }, - {5930,6125,6143 ,6593,4395,4394 }, {6140,6121,6101 ,2333,6575,6574 }, - {6893,6856,6906 ,6844,6892,4294 }, {4981,4950,1216 ,1350,1302,6893 }, - {5011,1264,4746 ,6657,5022,5260 }, {2279,2248,1313 ,5337,6858,3674 }, - {6964,6963,6943 ,6733,1048,520 }, {6864,6894,6863 ,6865,6887,6866 }, - {6741,6740,6705 ,5388,6894,4158 }, {6310,6746,6742 ,3918,6864,3422 }, - {5907,5246,3860 ,6116,5176,6523 }, {6382,3465,6423 ,6888,6890,6889 }, - {7102,7101,7088 ,1240,4073,4299 }, {4567,6155,6156 ,6655,3726,6250 }, - {3399,5143,5441 ,715,6099,5194 }, {6756,6755,6740 ,6891,5055,6894 }, - {3973,5446,5388 ,6007,5985,5428 }, {2235,6027,2139 ,6870,6874,6895 }, - {6737,6790,6736 ,6857,711,1622 }, {6619,6554,6521 ,1272,3647,6819 }, - {7076,7075,7039 ,4886,4420,4376 }, {1026,4981,1216 ,6218,1350,6893 }, - {1072,1026,1216 ,6725,6218,6893 }, {6172,4010,5124 ,5451,4343,6567 }, - {5686,5890,5747 ,5777,6591,6036 }, {4261,3777,4290 ,1583,1582,6270 }, - {6750,6751,6786 ,631,5242,4139 }, {6961,7000,6960 ,6813,6814,6896 }, - {7000,7042,7041 ,6814,5338,6838 }, {6999,7000,7041 ,6897,6814,6838 }, - {6909,6910,6960 ,6898,6741,6896 }, {7000,6999,6960 ,6814,6897,6896 }, - {6858,6910,6857 ,6740,6741,6899 }, {6910,6961,6960 ,6741,6813,6896 }, - {6944,6964,6943 ,2633,6733,520 }, {6738,6791,6737 ,5057,6900,6857 }, - {6348,6357,6382 ,1607,5271,6888 }, {6383,3437,3465 ,6901,4142,6890 }, - {6382,6383,3465 ,6888,6901,6890 }, {5694,7009,5716 ,5326,5325,6075 }, - {351,5069,255 ,592,6730,6731 }, {3418,1554,248 ,6366,6304,4114 }, - {5491,5479,5516 ,5419,5387,5420 }, {6741,6756,6740 ,5388,6891,6894 }, - {2221,2291,5114 ,6902,1115,5689 }, {1264,5011,1252 ,5022,6657,5023 }, - {7025,7002,7043 ,6824,1047,5895 }, {6862,6914,6861 ,6877,3532,3533 }, - {6998,7040,7039 ,6855,6903,4376 }, {7040,7076,7039 ,6903,4886,4376 }, - {6910,6909,6857 ,6741,6898,6899 }, {6838,6858,6806 ,6904,6740,6905 }, - {6807,6838,6806 ,6764,6904,6905 }, {6858,6857,6806 ,6740,6899,6905 }, - {3435,3464,3434 ,6703,3151,737 }, {4780,4819,3139 ,5150,5216,5400 }, - {6532,6556,3547 ,6184,4273,803 }, {6146,3970,3926 ,6568,3225,3125 }, - {6899,6146,3926 ,4005,6568,3125 }, {3787,6022,6159 ,5819,6535,5082 }, - {5533,5628,3765 ,6239,6560,4093 }, {7030,5533,3765 ,6885,6239,4093 }, - {4835,4021,3936 ,2130,1712,5599 }, {6753,6752,6700 ,6765,6906,6907 }, - {4547,5058,2163 ,242,5647,243 }, {6071,5590,6354 ,1346,6386,6597 }, - {7675,7697,7719 ,5192,651,6541 }, {6755,6738,6739 ,5055,5057,6836 }, - {6358,6383,6382 ,5270,6901,6888 }, {6357,6358,6382 ,5271,5270,6888 }, - {5628,5533,3609 ,6560,6239,5081 }, {6740,6755,6739 ,6894,5055,6836 }, - {1882,4547,4543 ,894,242,3002 }, {6810,6861,6860 ,6908,3533,473 }, - {6809,6810,6860 ,712,6908,473 }, {6807,6806,6752 ,6764,6905,6906 }, - {3464,3435,6468 ,3151,6703,6759 }, {4043,4007,4009 ,419,3909,3870 }, - {4987,6464,5966 ,1491,3633,5054 }, {5059,3177,4233 ,1253,1255,6185 }, - {4950,5005,4115 ,1302,1301,6909 }, {6862,6861,6810 ,6877,3533,6908 }, - {6701,6753,6700 ,6766,6765,6907 }, {6302,5078,1074 ,6869,5261,2715 }, - {6618,6656,6617 ,6910,5517,6881 }, {6791,6790,6737 ,6900,711,6857 }, - {7744,7795,7794 ,6101,3804,5749 }, {5437,6738,6681 ,6259,5057,5406 }, - {6840,6894,6864 ,6868,6887,6865 }, {6740,6739,5437 ,6894,6836,6259 }, - {342,209,4892 ,4542,4499,5386 }, {6844,6843,6795 ,6822,6911,5418 }, - {5693,6988,6947 ,4075,6771,4587 }, {6810,6809,6790 ,6908,712,711 }, - {6864,6915,6894 ,6865,6871,6887 }, {7620,7647,7675 ,5033,4967,5192 }, - {5950,5013,8108 ,2873,684,2287 }, {6753,6807,6752 ,6765,6764,6906 }, - {7769,7794,7768 ,5535,5749,5536 }, {1170,5627,3471 ,4103,6628,4104 }, - {6847,6900,6899 ,4004,6912,4005 }, {4043,7030,6096 ,419,6885,4092 }, - {3408,3382,3383 ,3484,870,882 }, {6752,6806,6788 ,6906,6905,6913 }, - {6701,6700,6652 ,6766,6907,6914 }, {6653,6701,6652 ,6915,6766,6914 }, - {6656,6655,6617 ,5517,5407,6881 }, {6738,6737,6681 ,5057,6857,5406 }, - {1076,4617,7075 ,4887,4431,4420 }, {5477,5442,5315 ,5399,5174,6445 }, - {6843,6842,6813 ,6911,5433,6916 }, {6350,3362,6358 ,704,1200,5270 }, - {6349,6350,6358 ,705,704,5270 }, {3362,6384,6383 ,1200,1786,6901 }, - {6358,3362,6383 ,5270,1200,6901 }, {6384,3387,6383 ,1786,1787,6901 }, - {6383,3387,3437 ,6901,1787,4142 }, {6791,6810,6790 ,6900,6908,711 }, - {5910,6079,6354 ,5121,5580,6597 }, {6987,7007,6966 ,6917,4628,6840 }, - {6844,6795,5551 ,6822,5418,6260 }, {3814,6799,3855 ,5511,6918,1511 }, - {6799,6761,3855 ,6918,6919,1511 }, {6761,6848,6847 ,6919,6920,4004 }, - {3855,6761,6847 ,1511,6919,4004 }, {6848,6901,6900 ,6920,6921,6912 }, - {6847,6848,6900 ,4004,6920,6912 }, {6901,6899,6900 ,6921,4005,6912 }, - {6147,6146,6899 ,5452,6568,4005 }, {6901,6147,6899 ,6921,5452,4005 }, - {6744,5188,3350 ,3986,4812,2541 }, {7900,7926,7899 ,6922,6923,4116 }, - {3277,8098,2901 ,961,907,3468 }, {6144,4642,5628 ,5083,6226,6560 }, - {2160,5474,2154 ,6621,4243,5321 }, {6616,6653,6615 ,6882,6915,6924 }, - {6297,6696,6694 ,6851,6849,6925 }, {6534,6578,3656 ,4257,6926,4195 }, - {973,6465,2141 ,2017,6927,2015 }, {5593,6920,6896 ,5935,6783,6787 }, - {6795,6843,6813 ,5418,6911,6916 }, {3504,3441,3505 ,2986,2987,6928 }, - {3556,3521,3504 ,3385,4307,2986 }, {1285,1226,1320 ,1944,2354,2356 }, - {3605,3626,3604 ,3383,4196,3384 }, {6572,6612,6611 ,3734,1389,1391 }, - {6125,5930,5979 ,4395,6593,6028 }, {5404,5371,5405 ,3559,3558,5518 }, - {6715,6761,6799 ,6929,6919,6918 }, {3814,6715,6799 ,5511,6929,6918 }, - {1936,2341,2094 ,848,845,5570 }, {1590,1552,1656 ,3028,2266,1166 }, - {3605,3556,3580 ,3383,3385,6069 }, {6159,4642,6144 ,5082,6226,5083 }, - {5087,5077,2095 ,6796,876,6800 }, {6466,6758,973 ,6930,6931,2017 }, - {6909,6908,6857 ,6898,6932,6899 }, {5437,6681,5436 ,6259,5406,6201 }, - {2957,6342,1120 ,6326,5265,5339 }, {6564,6508,6639 ,6933,6934,3699 }, - {3320,6564,6639 ,5455,6933,3699 }, {3192,4784,6387 ,3063,3423,6935 }, - {3656,6578,3714 ,4195,6926,3970 }, {7148,7147,7120 ,6936,6937,6938 }, - {5405,6618,5404 ,5518,6910,3559 }, {5473,7096,5120 ,3429,4337,5857 }, - {6022,4642,6159 ,6535,6226,5082 }, {7286,7285,7261 ,3460,2751,1528 }, - {2139,6685,6682 ,6895,6886,6812 }, {3714,3655,3656 ,3970,3936,4195 }, - {1809,6605,5081 ,878,5164,1258 }, {6682,6685,5087 ,6812,6886,6796 }, - {2095,1809,5081 ,6800,878,1258 }, {5077,1809,2095 ,876,878,6800 }, - {6685,5077,5087 ,6886,876,6796 }, {5359,3815,5977 ,3713,5556,809 }, - {1074,6466,973 ,2715,6930,2017 }, {6466,6465,6758 ,6930,6927,6931 }, - {6653,6652,6615 ,6915,6914,6924 }, {6576,6616,6575 ,6883,6882,6939 }, - {6354,6079,6377 ,6597,5580,1347 }, {1562,5130,4392 ,4649,5571,844 }, - {4856,2244,4570 ,4081,6795,4082 }, {3288,3328,3362 ,2058,3973,1200 }, - {6321,3288,3362 ,706,2058,1200 }, {5441,297,42 ,5194,1918,5195 }, - {6001,6156,5917 ,6221,6250,6402 }, {6443,6486,3557 ,6940,6941,6070 }, - {3504,6443,3557 ,2986,6940,6070 }, {6486,6534,3626 ,6941,4257,4196 }, - {3557,6486,3626 ,6070,6941,4196 }, {5747,5890,6214 ,6036,6591,6942 }, - {6578,6092,3714 ,6926,1623,3970 }, {5742,5977,3815 ,6448,809,5556 }, - {6302,1074,2210 ,6869,2715,2510 }, {2342,5008,2221 ,5690,6118,6902 }, - {6640,5435,6611 ,4224,4223,1391 }, {6176,6716,6715 ,1624,6943,6929 }, - {7232,7231,7196 ,2124,6944,2401 }, {6716,6762,6761 ,6943,6945,6919 }, - {6715,6716,6761 ,6929,6943,6919 }, {6762,6815,6761 ,6945,6946,6919 }, - {6761,6815,6848 ,6919,6946,6920 }, {6902,6901,6848 ,6947,6921,6920 }, - {6815,6902,6848 ,6946,6947,6920 }, {6952,6147,6901 ,6948,5452,6921 }, - {6902,6952,6901 ,6947,6948,6921 }, {6952,6990,5920 ,6948,6739,5453 }, - {6147,6952,5920 ,5452,6948,5453 }, {7001,7002,7025 ,6815,1047,6824 }, - {6652,6700,6699 ,6914,6907,630 }, {2234,2139,5454 ,6949,6895,6817 }, - {2241,2234,5454 ,6950,6949,6817 }, {5454,2139,6682 ,6817,6895,6812 }, - {5300,5327,6041 ,3793,3702,3801 }, {4207,1444,1745 ,4247,4035,6233 }, - {5498,1742,1218 ,5590,707,3255 }, {6616,6615,6575 ,6882,6924,6939 }, - {6844,6866,6843 ,6822,6786,6911 }, {1380,3284,6313 ,6721,6720,6748 }, - {5593,6896,6867 ,5935,6787,6951 }, {6896,6919,6895 ,6787,6778,5434 }, - {5024,2138,6660 ,6952,6602,6601 }, {5087,2095,1117 ,6796,6800,4928 }, - {6486,6487,6534 ,6941,6953,4257 }, {6717,6763,6762 ,6954,6955,6945 }, - {6716,6717,6762 ,6943,6954,6945 }, {6763,6816,6815 ,6955,6956,6946 }, - {6762,6763,6815 ,6945,6955,6946 }, {6903,6902,6815 ,6957,6947,6946 }, - {6816,6903,6815 ,6956,6957,6946 }, {3393,3365,3394 ,4441,4240,6958 }, - {5111,5110,7166 ,5990,5953,5971 }, {6805,6855,6854 ,3343,6959,3344 }, - {6391,4550,6659 ,6804,716,3577 }, {6642,6652,6651 ,6960,6914,6785 }, - {6958,6959,6997 ,4314,6003,4368 }, {6575,6615,6574 ,6939,6924,3885 }, - {6651,6652,6699 ,6785,6914,630 }, {6752,6751,6699 ,6906,5242,630 }, - {6641,6642,6651 ,6961,6960,6785 }, {2260,6021,5494 ,6571,6551,6569 }, - {7239,7286,7261 ,1527,3460,1528 }, {6466,6315,6465 ,6930,6962,6927 }, - {6315,6392,306 ,6962,6963,6234 }, {6528,6576,6527 ,6964,6883,6965 }, - {5086,351,2246 ,6064,592,591 }, {6313,4445,6747 ,6748,3648,6878 }, - {2336,6521,5496 ,1261,6819,6966 }, {6228,1664,253 ,1366,2268,2564 }, - {7050,7067,7028 ,6967,3585,3587 }, {6443,3441,3442 ,6940,2987,4460 }, - {6708,6710,5053 ,6148,6968,6848 }, {6443,6487,6486 ,6940,6953,6941 }, - {6565,6579,6578 ,6969,6970,6926 }, {6534,6565,6578 ,4257,6969,6926 }, - {6579,6092,6578 ,6970,1623,6926 }, {6691,6717,6716 ,6971,6954,6943 }, - {6176,6691,6716 ,1624,6971,6943 }, {6903,6953,6952 ,6957,6972,6948 }, - {6902,6903,6952 ,6947,6957,6948 }, {6991,6990,6952 ,6973,6739,6948 }, - {6953,6991,6952 ,6972,6973,6948 }, {6991,7032,5918 ,6973,6974,5820 }, - {6990,6991,5918 ,6739,6973,5820 }, {1275,6108,1221 ,1688,6975,1759 }, - {6642,6641,6614 ,6960,6961,3886 }, {6615,6642,6614 ,6924,6960,3886 }, - {6615,6614,6574 ,6924,3886,3885 }, {3311,5192,3762 ,5303,6454,5172 }, - {6999,6998,6959 ,6897,6855,6003 }, {6315,306,4960 ,6962,6234,6856 }, - {6909,6960,6908 ,6898,6896,6932 }, {6576,6575,6527 ,6883,6939,6965 }, - {5104,5086,2246 ,6063,6064,591 }, {3284,4445,6313 ,6720,3648,6748 }, - {5438,6705,5437 ,4156,4158,6259 }, {5251,5210,6433 ,3802,6033,6691 }, - {6444,6488,6487 ,6976,6977,6953 }, {6443,6444,6487 ,6940,6976,6953 }, - {6488,6535,6534 ,6977,6978,4257 }, {6487,6488,6534 ,6953,6977,4257 }, - {6534,6535,6565 ,4257,6978,6969 }, {6535,6580,6579 ,6978,6979,6970 }, - {6565,6535,6579 ,6969,6978,6970 }, {6622,6092,6579 ,6980,1623,6970 }, - {6580,6622,6579 ,6979,6980,6970 }, {6622,6662,6176 ,6980,6981,1624 }, - {6092,6622,6176 ,1623,6980,1624 }, {6176,6662,6691 ,1624,6981,6971 }, - {6662,6718,6717 ,6981,6982,6954 }, {6691,6662,6717 ,6971,6981,6954 }, - {6718,6764,6763 ,6982,6983,6955 }, {6717,6718,6763 ,6954,6982,6955 }, - {6817,6816,6763 ,6984,6956,6955 }, {6764,6817,6763 ,6983,6984,6955 }, - {6871,6903,6816 ,6985,6957,6956 }, {6817,6871,6816 ,6984,6985,6956 }, - {6871,6954,6953 ,6985,6986,6972 }, {6903,6871,6953 ,6957,6985,6972 }, - {6992,6991,6953 ,6987,6973,6972 }, {6954,6992,6953 ,6986,6987,6972 }, - {6992,5945,7032 ,6987,6396,6974 }, {6991,6992,7032 ,6973,6987,6974 }, - {5945,5918,7032 ,6396,5820,6974 }, {2808,1987,1920 ,522,3614,581 }, - {6315,5009,6465 ,6962,6803,6927 }, {3425,1724,8103 ,1859,3880,1291 }, - {6960,6999,6959 ,6896,6897,6003 }, {7974,7973,7923 ,4171,3624,816 }, - {3359,3326,6379 ,824,826,6831 }, {6071,6354,6377 ,1346,6597,1347 }, - {5633,6949,5611 ,6179,4585,6177 }, {405,3499,5628 ,5662,5661,6560 }, - {6661,6688,5048 ,6876,6846,6421 }, {7027,7007,7008 ,3175,4628,3176 }, - {2406,1990,6530 ,6736,1305,6398 }, {3442,6444,6443 ,4460,6976,6940 }, - {6706,7814,5479 ,5389,6988,5387 }, {7092,7104,7091 ,3968,5280,4153 }, - {1879,5049,4744 ,1283,5038,4424 }, {6856,6907,6906 ,6892,6002,4294 }, - {7041,7040,6998 ,6838,6903,6855 }, {1394,2074,1027 ,6989,6990,6991 }, - {6793,6792,6755 ,6879,5056,5055 }, {2304,2303,2340 ,6756,6758,6797 }, - {3609,6990,5918 ,5081,6739,5820 }, {6345,4595,5118 ,191,5289,6825 }, - {6444,6474,6488 ,6976,6992,6977 }, {6488,6514,6535 ,6977,6993,6978 }, - {6999,7041,6998 ,6897,6838,6855 }, {6960,6959,6907 ,6896,6003,6002 }, - {4900,2274,4545 ,585,893,586 }, {6614,6641,6651 ,3886,6961,6785 }, - {6793,6811,6792 ,6879,399,5056 }, {7566,7565,7532 ,6009,5080,6705 }, - {3394,6395,3442 ,6958,6994,4460 }, {3393,3394,3442 ,4441,6958,4460 }, - {6395,6445,6444 ,6994,6995,6976 }, {3442,6395,6444 ,4460,6994,6976 }, - {6445,6446,6474 ,6995,6996,6992 }, {6444,6445,6474 ,6976,6995,6992 }, - {6446,6489,6488 ,6996,6997,6977 }, {6474,6446,6488 ,6992,6996,6977 }, - {6489,6490,6514 ,6997,6998,6993 }, {6488,6489,6514 ,6977,6997,6993 }, - {6490,6536,6535 ,6998,6999,6978 }, {6514,6490,6535 ,6993,6998,6978 }, - {6536,6581,6580 ,6999,7000,6979 }, {6535,6536,6580 ,6978,6999,6979 }, - {6623,6622,6580 ,7001,6980,6979 }, {6581,6623,6580 ,7000,7001,6979 }, - {6623,6663,6662 ,7001,7002,6981 }, {6622,6623,6662 ,6980,7001,6981 }, - {6663,6719,6718 ,7002,7003,6982 }, {6662,6663,6718 ,6981,7002,6982 }, - {6719,6765,6764 ,7003,7004,6983 }, {6718,6719,6764 ,6982,7003,6983 }, - {6765,6766,6764 ,7004,7005,6983 }, {6766,6818,6817 ,7005,7006,6984 }, - {6764,6766,6817 ,6983,7005,6984 }, {6818,6849,6817 ,7006,7007,6984 }, - {6872,6871,6817 ,7008,6985,6984 }, {6849,6872,6817 ,7007,7008,6984 }, - {6872,6955,6954 ,7008,7009,6986 }, {6871,6872,6954 ,6985,7008,6986 }, - {6955,6993,6992 ,7009,7010,6987 }, {6954,6955,6992 ,6986,7009,6987 }, - {6993,7033,5945 ,7010,6395,6396 }, {6992,6993,5945 ,6987,7010,6396 }, - {3970,5124,3969 ,3225,6567,3226 }, {4845,5187,5070 ,3921,5144,6043 }, - {5878,3835,3762 ,2684,6046,5172 }, {4672,5878,3762 ,2682,2684,5172 }, - {6908,6960,6907 ,6932,6896,6002 }, {7041,7077,7076 ,6838,6837,4886 }, - {7048,2074,7047 ,6790,6990,6853 }, {2222,4746,2210 ,2509,5260,2510 }, - {6479,6528,6478 ,2659,6964,7011 }, {6963,7002,7001 ,1048,1047,6815 }, - {248,4530,3350 ,4114,1376,2541 }, {4489,4068,3778 ,5584,408,5585 }, - {6301,6710,6708 ,6147,6968,6148 }, {6811,6839,6792 ,399,6867,5056 }, - {5926,5940,6715 ,6419,1625,6929 }, {5081,2208,1117 ,1258,1257,4928 }, - {6014,5590,6259 ,6592,6386,6718 }, {3394,6396,6395 ,6958,7012,6994 }, - {6396,6446,6445 ,7012,6996,6995 }, {6395,6396,6445 ,6994,7012,6995 }, - {6663,6720,6719 ,7002,7013,7003 }, {6720,6766,6765 ,7013,7005,7004 }, - {6719,6720,6765 ,7003,7013,7004 }, {6873,6872,6849 ,7014,7008,7007 }, - {6818,6873,6849 ,7006,7014,7007 }, {6955,6922,6993 ,7009,7015,7010 }, - {6855,6856,6805 ,6959,6892,3343 }, {3291,3293,3292 ,1203,1988,4067 }, - {4704,4763,5217 ,4788,4787,4026 }, {1987,1220,1920 ,3614,4885,581 }, - {7040,7041,7076 ,6903,6838,4886 }, {6392,6315,6466 ,6963,6962,6930 }, - {6528,6527,6478 ,6964,6965,7011 }, {6388,6436,6435 ,3184,3681,2658 }, - {2138,3704,6190 ,6602,2332,6610 }, {5315,5442,5044 ,6445,5174,5173 }, - {3394,6385,6396 ,6958,7016,7012 }, {6446,6490,6489 ,6996,6998,6997 }, - {6663,6692,6720 ,7002,7017,7013 }, {6873,6922,6872 ,7014,7015,7008 }, - {6872,6922,6955 ,7008,7015,7009 }, {6994,6993,6922 ,7018,7010,7015 }, - {6994,7034,7033 ,7018,6045,6395 }, {6993,6994,7033 ,7010,7018,6395 }, - {4672,5477,6036 ,2682,5399,6141 }, {5744,5716,7009 ,6090,6075,5325 }, - {685,2629,794 ,2674,2673,3392 }, {2336,6619,6521 ,1261,1272,6819 }, - {6619,1265,4190 ,1272,1273,3439 }, {6908,6907,6856 ,6932,6002,6892 }, - {5005,2336,5496 ,1301,1261,6966 }, {6857,6908,6856 ,6899,6932,6892 }, - {3600,3550,3578 ,5331,4179,4205 }, {6951,2211,6870 ,2615,6780,2616 }, - {1264,403,5078 ,5022,5547,5261 }, {2409,2237,2373 ,6852,6801,6722 }, - {5075,1215,184 ,1586,3937,4052 }, {7068,6166,7034 ,7019,4971,6045 }, - {6324,6360,3394 ,4239,7020,6958 }, {3365,6324,3394 ,4240,4239,6958 }, - {6360,6361,6385 ,7020,7021,7016 }, {3394,6360,6385 ,6958,7020,7016 }, - {6361,6397,6396 ,7021,7022,7012 }, {6385,6361,6396 ,7016,7021,7012 }, - {6397,6447,6446 ,7022,7023,6996 }, {6396,6397,6446 ,7012,7022,6996 }, - {6447,6475,6446 ,7023,7024,6996 }, {6475,6491,6490 ,7024,7025,6998 }, - {6446,6475,6490 ,6996,7024,6998 }, {6491,6537,6536 ,7025,7026,6999 }, - {6490,6491,6536 ,6998,7025,6999 }, {6537,6582,6581 ,7026,7027,7000 }, - {6536,6537,6581 ,6999,7026,7000 }, {6624,6623,6581 ,7028,7001,7000 }, - {6582,6624,6581 ,7027,7028,7000 }, {6624,6664,6663 ,7028,7029,7002 }, - {6623,6624,6663 ,7001,7028,7002 }, {6663,6664,6692 ,7002,7029,7017 }, - {6664,6721,6720 ,7029,7030,7013 }, {6692,6664,6720 ,7017,7029,7013 }, - {6721,6767,6766 ,7030,7031,7005 }, {6720,6721,6766 ,7013,7030,7005 }, - {6767,6819,6818 ,7031,7032,7006 }, {6766,6767,6818 ,7005,7031,7006 }, - {6874,6873,6818 ,7033,7014,7006 }, {6819,6874,6818 ,7032,7033,7006 }, - {6874,6923,6922 ,7033,7034,7015 }, {6873,6874,6922 ,7014,7033,7015 }, - {6971,6994,6922 ,7035,7018,7015 }, {6923,6971,6922 ,7034,7035,7015 }, - {6971,7035,7034 ,7035,7036,6045 }, {6994,6971,7034 ,7018,7035,6045 }, - {3311,5866,5192 ,5303,5302,6454 }, {7035,7068,7034 ,7036,7019,6045 }, - {2357,2798,4043 ,3933,420,419 }, {8019,2320,8018 ,1407,1406,6676 }, - {1204,1205,4499 ,338,3187,4510 }, {5076,5904,4200 ,6607,5851,6583 }, - {6687,6685,2139 ,6875,6886,6895 }, {6027,6687,2139 ,6874,6875,6895 }, - {2374,2455,4018 ,7037,475,5084 }, {1551,4921,2093 ,5275,2079,553 }, - {3952,4068,4489 ,5597,408,5584 }, {6036,5892,4672 ,6141,2683,2682 }, - {535,6153,5105 ,2001,5514,5456 }, {2455,2374,1027 ,475,7037,6991 }, - {5274,5251,6433 ,6145,3802,6691 }, {6805,6856,6855 ,3343,6892,6959 }, - {6434,6479,6478 ,3127,2659,7011 }, {6433,6434,6478 ,6691,3127,7011 }, - {7161,7186,7169 ,2559,5370,5437 }, {912,2209,2240 ,4471,7038,4478 }, - {4445,6748,6747 ,3648,3408,6878 }, {5647,5688,6890 ,5333,5519,5334 }, - {7533,7509,7510 ,7039,1874,1873 }, {6836,5353,8111 ,852,851,4359 }, - {2211,2222,6870 ,6780,2509,2616 }, {4017,5075,184 ,5342,1586,4052 }, - {6324,6361,6360 ,4239,7021,7020 }, {2290,7936,2292 ,1982,5528,1983 }, - {5394,3765,5628 ,5660,4093,6560 }, {2074,1071,1027 ,6990,3382,6991 }, - {2248,2279,7043 ,6858,5337,5895 }, {6997,6998,7039 ,4368,6855,4376 }, - {6758,6465,973 ,6931,6927,2017 }, {2205,6563,6898 ,2874,464,1946 }, - {6690,6694,7022 ,6753,6925,6754 }, {6696,5054,3649 ,6849,6847,6755 }, - {6173,6071,6088 ,3711,1346,3670 }, {7972,8018,7994 ,6059,6676,5582 }, - {2211,1270,2222 ,6780,6781,2509 }, {1749,6713,1215 ,555,6820,3937 }, - {6566,6583,6582 ,7040,7041,7027 }, {6537,6566,6582 ,7026,7040,7027 }, - {6583,6624,6582 ,7041,7028,7027 }, {4550,4960,5986 ,716,6856,4603 }, - {5009,6315,6391 ,6803,6962,6804 }, {6315,4960,6391 ,6962,6856,6804 }, - {6391,4960,4550 ,6804,6856,716 }, {3217,6030,5747 ,6117,4037,6036 }, - {5006,4981,1026 ,1351,1350,6218 }, {5503,5463,5504 ,7042,5801,5781 }, - {6569,5011,4746 ,6745,6657,5260 }, {3936,3820,4835 ,5599,5591,2130 }, - {6148,6599,6161 ,6586,6596,6530 }, {5191,6434,6433 ,2900,3127,6691 }, - {6291,6297,6690 ,6873,6851,6753 }, {6694,6696,7022 ,6925,6849,6754 }, - {7795,7846,7794 ,3804,4162,5749 }, {5075,1749,1215 ,1586,555,3937 }, - {6116,6325,6324 ,4170,7043,4239 }, {3336,6116,6324 ,3922,4170,4239 }, - {6325,6362,6361 ,7043,7044,7021 }, {6324,6325,6361 ,4239,7043,7021 }, - {6362,6398,6397 ,7044,7045,7022 }, {6361,6362,6397 ,7021,7044,7022 }, - {6398,6448,6447 ,7045,7046,7023 }, {6397,6398,6447 ,7022,7045,7023 }, - {6447,6448,6475 ,7023,7046,7024 }, {6448,6492,6491 ,7046,7047,7025 }, - {6475,6448,6491 ,7024,7046,7025 }, {6492,6538,6537 ,7047,7048,7026 }, - {6491,6492,6537 ,7025,7047,7026 }, {6537,6538,6566 ,7026,7048,7040 }, - {6538,6584,6583 ,7048,7049,7041 }, {6566,6538,6583 ,7040,7048,7041 }, - {6625,6624,6583 ,7050,7028,7041 }, {6584,6625,6583 ,7049,7050,7041 }, - {6625,6665,6664 ,7050,7051,7029 }, {6624,6625,6664 ,7028,7050,7029 }, - {6665,6722,6721 ,7051,7052,7030 }, {6664,6665,6721 ,7029,7051,7030 }, - {6722,6768,6767 ,7052,7053,7031 }, {6721,6722,6767 ,7030,7052,7031 }, - {6768,6820,6819 ,7053,7054,7032 }, {6767,6768,6819 ,7031,7053,7032 }, - {6875,6874,6819 ,7055,7033,7032 }, {6820,6875,6819 ,7054,7055,7032 }, - {6875,6924,6923 ,7055,7056,7034 }, {6874,6875,6923 ,7033,7055,7034 }, - {6924,6972,6971 ,7056,7057,7035 }, {6923,6924,6971 ,7034,7056,7035 }, - {7036,7035,6971 ,7058,7036,7035 }, {6972,7036,6971 ,7057,7058,7035 }, - {7036,7069,7068 ,7058,7059,7019 }, {7035,7036,7068 ,7036,7058,7019 }, - {4901,3892,7068 ,3596,4970,7019 }, {7069,4901,7068 ,7059,3596,7019 }, - {6527,6575,6526 ,6965,6939,6784 }, {6575,6574,6526 ,6939,3885,6784 }, - {6478,6527,5300 ,7011,6965,3793 }, {6527,6526,5300 ,6965,6784,3793 }, - {6433,6478,5300 ,6691,7011,3793 }, {5274,6433,5300 ,6145,6691,3793 }, - {1269,1125,2159 ,5724,5723,6440 }, {187,1269,2159 ,6439,5724,6440 }, - {4391,4422,4443 ,992,5561,703 }, {6702,6701,6653 ,7060,6766,6915 }, - {6654,6702,6653 ,6884,7060,6915 }, {6297,6694,6690 ,6851,6925,6753 }, - {6465,4985,2141 ,6927,2703,2015 }, {3156,1658,1657 ,3164,1782,1781 }, - {2257,5056,6713 ,554,1300,6820 }, {949,4994,5029 ,2133,5076,2159 }, - {6788,6787,6751 ,6913,5269,5242 }, {6700,6752,6699 ,6907,6906,630 }, - {6806,6805,6787 ,6905,3343,5269 }, {6752,6788,6751 ,6906,6913,5242 }, - {6788,6806,6787 ,6913,6905,5269 }, {6857,6855,6805 ,6899,6959,3343 }, - {6857,6856,6855 ,6899,6892,6959 }, {6806,6857,6805 ,6905,6899,3343 }, - {3454,5089,7052 ,710,3442,708 }, {3926,3891,6899 ,3125,3820,4005 }, - {4978,4567,5592 ,178,6655,3671 }, {2236,2237,6291 ,6802,6801,6873 }, - {5590,6071,6173 ,6386,1346,3711 }, {6918,6917,6895 ,6779,5515,5434 }, - {1749,2257,6713 ,555,554,6820 }, {4979,3319,5056 ,5363,1259,1300 }, - {6492,6515,6538 ,7047,7061,7048 }, {6768,6821,6820 ,7053,7062,7054 }, - {6821,6876,6875 ,7062,7063,7055 }, {6820,6821,6875 ,7054,7062,7055 }, - {6876,6925,6924 ,7063,7064,7056 }, {6875,6876,6924 ,7055,7063,7056 }, - {6973,6972,6924 ,7065,7057,7056 }, {6925,6973,6924 ,7064,7065,7056 }, - {6973,7036,6972 ,7065,7058,7057 }, {7030,4010,5533 ,6885,4343,6239 }, - {1881,2234,2241 ,7066,6949,6950 }, {2209,1881,2241 ,7038,7066,6950 }, - {1881,2209,1076 ,7066,7038,4887 }, {4142,1881,1076 ,6839,7066,4887 }, - {7077,4142,1076 ,6837,6839,4887 }, {5009,6463,4985 ,6803,5159,2703 }, - {7076,7077,1076 ,4886,6837,4887 }, {5926,6715,3814 ,6419,6929,5511 }, - {6108,1172,1221 ,6975,1758,1759 }, {7436,7412,7386 ,4245,3765,5512 }, - {3441,6443,3505 ,2987,6940,6928 }, {5370,5474,2160 ,2171,4243,6621 }, - {2257,4979,5056 ,554,5363,1300 }, {6286,6326,6325 ,4349,7067,7043 }, - {6116,6286,6325 ,4170,4349,7043 }, {6326,6363,6362 ,7067,7068,7044 }, - {6325,6326,6362 ,7043,7067,7044 }, {6363,6399,6398 ,7068,7069,7045 }, - {6362,6363,6398 ,7044,7068,7045 }, {6399,6449,6448 ,7069,7070,7046 }, - {6398,6399,6448 ,7045,7069,7046 }, {6449,6493,6492 ,7070,7071,7047 }, - {6448,6449,6492 ,7046,7070,7047 }, {6493,6516,6515 ,7071,7072,7061 }, - {6492,6493,6515 ,7047,7071,7061 }, {6516,6539,6538 ,7072,7073,7048 }, - {6515,6516,6538 ,7061,7072,7048 }, {6539,6585,6584 ,7073,7074,7049 }, - {6538,6539,6584 ,7048,7073,7049 }, {6626,6625,6584 ,7075,7050,7049 }, - {6585,6626,6584 ,7074,7075,7049 }, {6626,6666,6665 ,7075,7076,7051 }, - {6625,6626,6665 ,7050,7075,7051 }, {6666,6723,6722 ,7076,7077,7052 }, - {6665,6666,6722 ,7051,7076,7052 }, {6769,6768,6722 ,7078,7053,7052 }, - {6723,6769,6722 ,7077,7078,7052 }, {6769,6822,6821 ,7078,7079,7062 }, - {6768,6769,6821 ,7053,7078,7062 }, {6822,6877,6876 ,7079,7080,7063 }, - {6821,6822,6876 ,7062,7079,7063 }, {6877,6926,6925 ,7080,7081,7064 }, - {6876,6877,6925 ,7063,7080,7064 }, {6974,6973,6925 ,7082,7065,7064 }, - {6926,6974,6925 ,7081,7082,7064 }, {6974,7010,6973 ,7082,7083,7065 }, - {7010,7036,6973 ,7083,7058,7065 }, {7010,7070,7069 ,7083,7084,7059 }, - {7036,7010,7069 ,7058,7083,7059 }, {3813,5926,3814 ,1515,6419,5511 }, - {7972,7994,7948 ,6059,5582,3625 }, {4082,1426,3452 ,4716,4648,1794 }, - {2235,2234,1881 ,6870,6949,7066 }, {307,4989,6463 ,5095,5094,5159 }, - {2209,912,4617 ,7038,4471,4431 }, {7044,2248,7043 ,6859,6858,5895 }, - {2248,1075,1313 ,6858,6854,3674 }, {186,187,1171 ,1265,6439,6441 }, - {3133,1269,187 ,7085,5724,6439 }, {186,3133,187 ,1265,7085,6439 }, - {5890,4648,1269 ,6591,5722,5724 }, {3133,5890,1269 ,7085,6591,5724 }, - {1126,6037,1272 ,7086,5235,5740 }, {2237,6297,6291 ,6801,6851,6873 }, - {6748,1990,2406 ,3408,1305,6736 }, {6747,6748,2406 ,6878,3408,6736 }, - {4684,2245,3319 ,5217,1260,1259 }, {4979,4684,3319 ,5363,5217,1259 }, - {6305,6327,6326 ,7087,7088,7067 }, {6286,6305,6326 ,4349,7087,7067 }, - {6326,6327,6363 ,7067,7088,7068 }, {6769,6770,6822 ,7078,7089,7079 }, - {4901,7069,7070 ,3596,7059,7084 }, {4900,6378,2274 ,585,6728,893 }, - {6689,2405,2337 ,3065,4165,6829 }, {6378,1882,2274 ,6728,894,893 }, - {3556,3504,3557 ,3385,2986,6070 }, {4570,5072,6261 ,4082,6619,4321 }, - {5444,4544,5040 ,3410,748,5469 }, {7533,7568,7509 ,7039,5544,1874 }, - {6666,6724,6723 ,7076,7090,7077 }, {6724,6770,6769 ,7090,7089,7078 }, - {6723,6724,6769 ,7077,7090,7078 }, {6787,6805,6804 ,5269,3343,3342 }, - {978,977,4965 ,1620,3931,784 }, {6615,6652,6642 ,6924,6914,6960 }, - {3786,3400,1451 ,4074,3659,175 }, {6005,186,1171 ,5691,1265,6441 }, - {1026,733,5006 ,6218,4051,1351 }, {6507,6529,6479 ,2680,5025,2659 }, - {4988,5494,5020 ,6744,6569,6373 }, {8109,8127,8119 ,2938,2970,184 }, - {2246,2452,7066 ,591,7091,3586 }, {4684,6603,6359 ,5217,3985,6830 }, - {2245,4684,6359 ,1260,5217,6830 }, {6286,6287,6305 ,4349,4377,7087 }, - {6287,6328,6327 ,4377,7092,7088 }, {6305,6287,6327 ,7087,4377,7088 }, - {6328,6364,6363 ,7092,7093,7068 }, {6327,6328,6363 ,7088,7092,7068 }, - {6364,6400,6399 ,7093,7094,7069 }, {6363,6364,6399 ,7068,7093,7069 }, - {6400,6424,6399 ,7094,7095,7069 }, {6424,6450,6449 ,7095,7096,7070 }, - {6399,6424,6449 ,7069,7095,7070 }, {6450,6494,6493 ,7096,7097,7071 }, - {6449,6450,6493 ,7070,7096,7071 }, {6495,6516,6493 ,7098,7072,7071 }, - {6494,6495,6493 ,7097,7098,7071 }, {6540,6539,6516 ,7099,7073,7072 }, - {6495,6540,6516 ,7098,7099,7072 }, {6586,6585,6539 ,7100,7074,7073 }, - {6540,6586,6539 ,7099,7100,7073 }, {6586,6627,6626 ,7100,7101,7075 }, - {6585,6586,6626 ,7074,7100,7075 }, {6627,6667,6666 ,7101,7102,7076 }, - {6626,6627,6666 ,7075,7101,7076 }, {6667,6668,6666 ,7102,7103,7076 }, - {6668,6725,6724 ,7103,7104,7090 }, {6666,6668,6724 ,7076,7103,7090 }, - {6725,6771,6770 ,7104,7105,7089 }, {6724,6725,6770 ,7090,7104,7089 }, - {6771,6823,6822 ,7105,7106,7079 }, {6770,6771,6822 ,7089,7105,7079 }, - {6823,6878,6877 ,7106,7107,7080 }, {6822,6823,6877 ,7079,7106,7080 }, - {6927,6926,6877 ,7108,7081,7080 }, {6878,6927,6877 ,7107,7108,7080 }, - {6975,6974,6926 ,7109,7082,7081 }, {6927,6975,6926 ,7108,7109,7081 }, - {6975,7011,7010 ,7109,7110,7083 }, {6974,6975,7010 ,7082,7109,7083 }, - {7011,7071,7070 ,7110,7111,7084 }, {7010,7011,7070 ,7083,7110,7084 }, - {7071,1261,7070 ,7111,6472,7084 }, {1261,5591,7070 ,6472,3597,7084 }, - {4986,6659,3399 ,5096,3577,715 }, {6854,6855,6893 ,3344,6959,6844 }, - {1076,2209,4617 ,4887,7038,4431 }, {4746,5078,6302 ,5260,5261,6869 }, - {2291,2221,3133 ,1115,6902,7085 }, {186,2291,3133 ,1265,1115,7085 }, - {2221,6214,5890 ,6902,6942,6591 }, {3133,2221,5890 ,7085,6902,6591 }, - {4950,4115,1216 ,1302,6909,6893 }, {5072,6220,6231 ,6619,6600,6624 }, - {2260,5494,4988 ,6571,6569,6744 }, {2211,2260,4988 ,6780,6571,6744 }, - {5444,5040,5024 ,3410,5469,6952 }, {2157,5444,5024 ,3411,3410,6952 }, - {5591,4901,7070 ,3597,3596,7084 }, {6627,6668,6667 ,7101,7103,7102 }, - {5330,5331,5350 ,3345,6198,1526 }, {5611,6920,5593 ,6177,6783,5935 }, - {6234,6259,6167 ,5973,6718,5974 }, {2717,819,728 ,2676,2244,1266 }, - {2025,2000,2027 ,2430,2428,2492 }, {2342,2221,5114 ,5690,6902,5689 }, - {5435,5401,6611 ,4223,4145,1391 }, {6529,6576,6528 ,5025,6883,6964 }, - {6870,2222,2205 ,2616,2509,2874 }, {6603,1116,5074 ,3985,1401,6751 }, - {6359,6603,5074 ,6830,3985,6751 }, {6476,6495,6494 ,7112,7098,7097 }, - {6450,6476,6494 ,7096,7112,7097 }, {6586,6628,6627 ,7100,7113,7101 }, - {6627,6628,6668 ,7101,7113,7103 }, {6163,3860,6029 ,1453,6523,1454 }, - {5059,7081,2220 ,1253,7114,6724 }, {1171,187,3498 ,6441,6439,5800 }, - {7022,6696,3649 ,6754,6849,6755 }, {2260,2211,6951 ,6571,6780,2615 }, - {2157,5024,2244 ,3411,6952,6795 }, {6278,6288,6287 ,3967,7115,4377 }, - {6277,6278,6287 ,4387,3967,4377 }, {6288,6329,6328 ,7115,7116,7092 }, - {6287,6288,6328 ,4377,7115,7092 }, {6329,6365,6364 ,7116,7117,7093 }, - {6328,6329,6364 ,7092,7116,7093 }, {6365,6401,6400 ,7117,7118,7094 }, - {6364,6365,6400 ,7093,7117,7094 }, {6401,6425,6424 ,7118,7119,7095 }, - {6400,6401,6424 ,7094,7118,7095 }, {6425,6451,6450 ,7119,7120,7096 }, - {6424,6425,6450 ,7095,7119,7096 }, {6450,6451,6476 ,7096,7120,7112 }, - {6451,6496,6495 ,7120,7121,7098 }, {6476,6451,6495 ,7112,7120,7098 }, - {6496,6541,6540 ,7121,7122,7099 }, {6495,6496,6540 ,7098,7121,7099 }, - {6541,6587,6586 ,7122,7123,7100 }, {6540,6541,6586 ,7099,7122,7100 }, - {6587,6607,6586 ,7123,7124,7100 }, {6607,6629,6628 ,7124,7125,7113 }, - {6586,6607,6628 ,7100,7124,7113 }, {6629,6669,6668 ,7125,7126,7103 }, - {6628,6629,6668 ,7113,7125,7103 }, {6669,6726,6725 ,7126,7127,7104 }, - {6668,6669,6725 ,7103,7126,7104 }, {6772,6771,6725 ,7128,7105,7104 }, - {6726,6772,6725 ,7127,7128,7104 }, {6772,6824,6823 ,7128,7129,7106 }, - {6771,6772,6823 ,7105,7128,7106 }, {6824,6879,6878 ,7129,7130,7107 }, - {6823,6824,6878 ,7106,7129,7107 }, {6879,6880,6878 ,7130,7131,7107 }, - {6880,6928,6927 ,7131,7132,7108 }, {6878,6880,6927 ,7107,7131,7108 }, - {6976,6975,6927 ,7133,7109,7108 }, {6928,6976,6927 ,7132,7133,7108 }, - {6976,7012,7011 ,7133,7134,7110 }, {6975,6976,7011 ,7109,7133,7110 }, - {7053,7071,7011 ,6654,7111,7110 }, {7012,7053,7011 ,7134,6654,7110 }, - {1723,1261,7071 ,6626,6472,7111 }, {7053,1723,7071 ,6654,6626,7111 }, - {8127,3221,8119 ,2970,183,184 }, {6792,6839,6810 ,5056,6867,6908 }, - {7533,7595,7568 ,7039,4019,5544 }, {3979,5055,5753 ,6471,6470,6481 }, - {5008,3217,6214 ,6118,6117,6942 }, {2221,5008,6214 ,6902,6118,6942 }, - {6214,3217,5747 ,6942,6117,6036 }, {6654,6653,6616 ,6884,6915,6882 }, - {6529,6528,6479 ,5025,6964,2659 }, {8038,3638,8052 ,4121,5950,4122 }, - {6049,2260,6951 ,6570,6571,2615 }, {6606,2157,2244 ,5085,3411,6795 }, - {4990,1124,6065 ,7135,5852,6616 }, {1116,2239,185 ,1401,1377,1493 }, - {5074,1116,185 ,6751,1401,1493 }, {6824,6880,6879 ,7129,7131,7130 }, - {6880,6929,6928 ,7131,7136,7132 }, {6929,6976,6928 ,7136,7133,7132 }, - {6977,7013,7012 ,7137,7138,7134 }, {6976,6977,7012 ,7133,7137,7134 }, - {7013,7053,7012 ,7138,6654,7134 }, {7570,7625,7598 ,5204,7139,7140 }, - {6910,6941,6961 ,6741,6793,6813 }, {7000,7024,7042 ,6814,6816,5338 }, - {5328,2160,2238 ,2172,6621,2697 }, {5045,7061,6165 ,4214,7141,4219 }, - {4649,5125,5118 ,5288,5467,6825 }, {1214,6049,6951 ,6573,6570,2615 }, - {6606,2244,4856 ,5085,6795,4081 }, {3040,8072,8076 ,619,511,617 }, - {6824,6850,6880 ,7129,7142,7131 }, {6929,6977,6976 ,7136,7137,7133 }, - {7054,7053,7013 ,7143,6654,7138 }, {7081,4233,2220 ,7114,6185,6724 }, - {5124,4010,3969 ,6567,4343,3226 }, {7454,7511,7453 ,3996,6677,1187 }, - {5057,1214,6951 ,1795,6573,2615 }, {2454,6606,4856 ,1345,5085,4081 }, - {4209,3777,185 ,6269,1582,1493 }, {2239,4209,185 ,1377,6269,1493 }, - {6279,6289,6288 ,3966,7144,7115 }, {6278,6279,6288 ,3967,3966,7115 }, - {6289,6330,6329 ,7144,7145,7116 }, {6288,6289,6329 ,7115,7144,7116 }, - {6366,6365,6329 ,7146,7117,7116 }, {6330,6366,6329 ,7145,7146,7116 }, - {6366,6402,6401 ,7146,7147,7118 }, {6365,6366,6401 ,7117,7146,7118 }, - {6402,6403,6425 ,7147,7148,7119 }, {6401,6402,6425 ,7118,7147,7119 }, - {6403,6452,6451 ,7148,7149,7120 }, {6425,6403,6451 ,7119,7148,7120 }, - {6452,6497,6496 ,7149,7150,7121 }, {6451,6452,6496 ,7120,7149,7121 }, - {6497,6542,6541 ,7150,7151,7122 }, {6496,6497,6541 ,7121,7150,7122 }, - {6542,6588,6587 ,7151,7152,7123 }, {6541,6542,6587 ,7122,7151,7123 }, - {6588,6589,6607 ,7152,7153,7124 }, {6587,6588,6607 ,7123,7152,7124 }, - {6589,6630,6629 ,7153,7154,7125 }, {6607,6589,6629 ,7124,7153,7125 }, - {6630,6670,6669 ,7154,7155,7126 }, {6629,6630,6669 ,7125,7154,7126 }, - {6727,6726,6669 ,7156,7127,7126 }, {6670,6727,6669 ,7155,7156,7126 }, - {6773,6772,6726 ,7157,7128,7127 }, {6727,6773,6726 ,7156,7157,7127 }, - {6773,6825,6824 ,7157,7158,7129 }, {6772,6773,6824 ,7128,7157,7129 }, - {6825,6826,6850 ,7158,7159,7142 }, {6824,6825,6850 ,7129,7158,7142 }, - {6826,6881,6880 ,7159,7160,7131 }, {6850,6826,6880 ,7142,7159,7131 }, - {6881,6930,6929 ,7160,7161,7136 }, {6880,6881,6929 ,7131,7160,7136 }, - {6930,6978,6977 ,7161,7162,7137 }, {6929,6930,6977 ,7136,7161,7137 }, - {6978,7014,7013 ,7162,7163,7138 }, {6977,6978,7013 ,7137,7162,7138 }, - {7055,7054,7013 ,5485,7143,7138 }, {7014,7055,7013 ,7163,5485,7138 }, - {7055,7053,7054 ,5485,6654,7143 }, {7055,7079,7053 ,5485,5486,6654 }, - {6618,6617,5404 ,6910,6881,3559 }, {2273,2342,350 ,5322,5690,1114 }, - {1273,2273,350 ,6403,5322,1114 }, {5254,6030,5576 ,4042,4037,4039 }, - {1214,5057,6122 ,6573,1795,1797 }, {6101,1214,6122 ,6574,6573,1797 }, - {2272,2454,6386 ,1201,1345,4085 }, {4853,1118,2340 ,6747,6746,6797 }, - {875,2252,6836 ,579,590,852 }, {7053,7079,6150 ,6654,5486,6653 }, - {6366,6403,6402 ,7146,7148,7147 }, {6542,6589,6588 ,7151,7153,7152 }, - {1219,6150,7079 ,4102,6653,5486 }, {6916,6967,6915 ,596,4629,6871 }, - {6841,6840,6812 ,7164,6868,6872 }, {6967,6987,6966 ,4629,6917,6840 }, - {6794,6841,6812 ,6880,7164,6872 }, {6864,6894,6840 ,6865,6887,6868 }, - {6651,6699,6698 ,6785,630,629 }, {6967,6966,6915 ,4629,6840,6871 }, - {5944,1273,5653 ,4754,6403,3644 }, {4465,4483,4444 ,257,549,582 }, - {6392,3929,306 ,6963,5024,6234 }, {3302,6301,6300 ,6757,6147,6146 }, - {4755,2272,1164 ,6770,1201,5087 }, {2454,4856,6386 ,1345,4081,4085 }, - {6682,6679,3978 ,6812,4824,4549 }, {2252,144,6836 ,590,853,852 }, - {6542,6567,6589 ,7151,7165,7153 }, {6773,6826,6825 ,7157,7159,7158 }, - {5838,6355,6079 ,3987,3786,5580 }, {6650,6651,6698 ,3833,6785,629 }, - {7450,7478,7422 ,399,1402,1404 }, {5944,1126,1273 ,4754,7086,6403 }, - {1074,973,8073 ,2715,2017,2567 }, {3929,4166,306 ,5024,6084,6234 }, - {3675,3674,6180 ,4300,4286,6811 }, {2272,6386,1164 ,1201,4085,5087 }, - {6961,6962,7000 ,6813,3260,6814 }, {1220,1271,875 ,4885,588,579 }, - {6280,6290,6289 ,4079,7166,7144 }, {6279,6280,6289 ,3966,4079,7144 }, - {6290,6331,6330 ,7166,7167,7145 }, {6289,6290,6330 ,7144,7166,7145 }, - {6331,6367,6366 ,7167,7168,7146 }, {6330,6331,6366 ,7145,7167,7146 }, - {6367,6404,6403 ,7168,7169,7148 }, {6366,6367,6403 ,7146,7168,7148 }, - {6404,6426,6403 ,7169,7170,7148 }, {6426,6453,6452 ,7170,7171,7149 }, - {6403,6426,6452 ,7148,7170,7149 }, {6498,6497,6452 ,7172,7150,7149 }, - {6453,6498,6452 ,7171,7172,7149 }, {6498,6543,6542 ,7172,7173,7151 }, - {6497,6498,6542 ,7150,7172,7151 }, {6543,6544,6567 ,7173,7174,7165 }, - {6542,6543,6567 ,7151,7173,7165 }, {6544,6590,6589 ,7174,7175,7153 }, - {6567,6544,6589 ,7165,7174,7153 }, {6590,6631,6630 ,7175,7176,7154 }, - {6589,6590,6630 ,7153,7175,7154 }, {6631,6671,6670 ,7176,7177,7155 }, - {6630,6631,6670 ,7154,7176,7155 }, {6728,6727,6670 ,7178,7156,7155 }, - {6671,6728,6670 ,7177,7178,7155 }, {6728,6774,6773 ,7178,7179,7157 }, - {6727,6728,6773 ,7156,7178,7157 }, {6774,6775,6773 ,7179,7180,7157 }, - {6775,6827,6826 ,7180,7181,7159 }, {6773,6775,6826 ,7157,7180,7159 }, - {6827,6882,6881 ,7181,7182,7160 }, {6826,6827,6881 ,7159,7181,7160 }, - {6882,6931,6930 ,7182,7183,7161 }, {6881,6882,6930 ,7160,7182,7161 }, - {6931,6979,6978 ,7183,7184,7162 }, {6930,6931,6978 ,7161,7183,7162 }, - {6979,7015,7014 ,7184,7185,7163 }, {6978,6979,7014 ,7162,7184,7163 }, - {7056,7055,7014 ,7186,5485,7163 }, {7015,7056,7014 ,7185,7186,7163 }, - {1170,1219,7055 ,4103,4102,5485 }, {7056,1170,7055 ,7186,4103,5485 }, - {5499,5704,2621 ,5572,5579,5416 }, {6660,6220,5072 ,6601,6600,6619 }, - {4570,6660,5072 ,4082,6601,6619 }, {1121,5872,1122 ,6564,6557,6719 }, - {6786,6787,6804 ,4139,5269,3342 }, {3834,4570,4044 ,4083,4082,4322 }, - {5426,4807,5010 ,5634,6449,6006 }, {4803,5290,5267 ,4776,5247,4647 }, - {2154,2273,1273 ,5321,5322,6403 }, {1126,2154,1273 ,7086,5321,6403 }, - {5516,5551,6795 ,5420,6260,5418 }, {403,3929,6466 ,5547,5024,6930 }, - {5054,6688,6661 ,6847,6846,6876 }, {2015,2048,1994 ,759,5461,5102 }, - {7001,7025,7024 ,6815,6824,6816 }, {7048,7064,2074 ,6790,5181,6990 }, - {1271,2252,875 ,588,590,579 }, {7064,2073,2074 ,5181,5183,6990 }, - {6498,6544,6543 ,7172,7174,7173 }, {6728,6775,6774 ,7178,7180,7179 }, - {6660,6219,6220 ,6601,6598,6600 }, {4486,3340,3454 ,819,114,710 }, - {6526,6574,6573 ,6784,3885,3733 }, {5738,5688,5689 ,5520,5519,5741 }, - {307,6391,6659 ,5095,6804,3577 }, {3929,6392,6466 ,5024,6963,6930 }, - {5113,5914,5150 ,141,1566,6032 }, {6435,6436,6480 ,2658,3681,1524 }, - {3649,5054,6661 ,6755,6847,6876 }, {7067,2246,7066 ,3585,591,3586 }, - {1197,2384,1987 ,478,6821,3614 }, {4190,1271,1220 ,3439,588,4885 }, - {7007,7006,6966 ,4628,6841,6840 }, {6631,6672,6671 ,7176,7187,7177 }, - {6672,6728,6671 ,7187,7178,7177 }, {6807,6808,6858 ,6764,3465,6740 }, - {6703,6701,6702 ,5161,6766,7060 }, {2337,5578,1124 ,6829,587,5852 }, - {4990,2337,1124 ,7135,6829,5852 }, {1025,2450,6657 ,5299,3444,6828 }, - {6689,2337,4990 ,3065,6829,7135 }, {1608,746,5592 ,4128,2661,3671 }, - {5277,5330,5276 ,6237,3345,1525 }, {7068,3892,6166 ,7019,4970,4971 }, - {6034,6284,5952 ,6049,6113,6595 }, {403,6466,1074 ,5547,6930,2715 }, - {5078,403,1074 ,5261,5547,2715 }, {6807,6858,6838 ,6764,6740,6904 }, - {158,4755,5560 ,5258,6770,6605 }, {5076,158,5560 ,6607,5258,6605 }, - {1213,3261,1197 ,3700,5015,478 }, {1987,4190,1220 ,3614,3439,4885 }, - {1620,6128,6184 ,5982,5981,6089 }, {6281,3526,6290 ,4078,7188,7166 }, - {6280,6281,6290 ,4079,4078,7166 }, {3526,6332,6331 ,7188,7189,7167 }, - {6290,3526,6331 ,7166,7188,7167 }, {6368,6367,6331 ,7190,7168,7167 }, - {6332,6368,6331 ,7189,7190,7167 }, {6368,6405,6404 ,7190,7191,7169 }, - {6367,6368,6404 ,7168,7190,7169 }, {6405,6427,6426 ,7191,7192,7170 }, - {6404,6405,6426 ,7169,7191,7170 }, {6427,6454,6453 ,7192,7193,7171 }, - {6426,6427,6453 ,7170,7192,7171 }, {6454,6499,6498 ,7193,7194,7172 }, - {6453,6454,6498 ,7171,7193,7172 }, {6499,6517,6498 ,7194,7195,7172 }, - {6517,6545,6544 ,7195,7196,7174 }, {6498,6517,6544 ,7172,7195,7174 }, - {6545,6591,6590 ,7196,7197,7175 }, {6544,6545,6590 ,7174,7196,7175 }, - {6632,6631,6590 ,7198,7176,7175 }, {6591,6632,6590 ,7197,7198,7175 }, - {6632,6673,6672 ,7198,7199,7187 }, {6631,6632,6672 ,7176,7198,7187 }, - {6729,6728,6672 ,7200,7178,7187 }, {6673,6729,6672 ,7199,7200,7187 }, - {6729,6776,6775 ,7200,7201,7180 }, {6728,6729,6775 ,7178,7200,7180 }, - {6776,6828,6827 ,7201,7202,7181 }, {6775,6776,6827 ,7180,7201,7181 }, - {6828,6883,6882 ,7202,7203,7182 }, {6827,6828,6882 ,7181,7202,7182 }, - {6883,6932,6931 ,7203,7204,7183 }, {6882,6883,6931 ,7182,7203,7183 }, - {6932,6980,6979 ,7204,7205,7184 }, {6931,6932,6979 ,7183,7204,7184 }, - {6980,7016,7015 ,7205,7206,7185 }, {6979,6980,7015 ,7184,7205,7185 }, - {7057,7056,7015 ,7207,7186,7185 }, {7016,7057,7015 ,7206,7207,7185 }, - {1122,1170,7056 ,6719,4103,7186 }, {7057,1122,7056 ,7207,6719,7186 }, - {1170,1122,1620 ,4103,6719,5982 }, {6655,6703,6654 ,5407,5161,6884 }, - {6430,5733,5353 ,2748,1584,851 }, {4023,5248,4178 ,3827,6469,3825 }, - {6319,6345,5118 ,6789,191,6825 }, {5734,5733,4261 ,6230,1584,1583 }, - {2450,6689,6657 ,3444,3065,6828 }, {2621,3815,5359 ,5416,5556,3713 }, - {7196,7231,7212 ,2401,6944,7208 }, {2160,2154,1126 ,6621,5321,7086 }, - {1272,2160,1126 ,5740,6621,7086 }, {7024,7025,7042 ,6816,6824,5338 }, - {4755,1164,5560 ,6770,5087,6605 }, {2384,4190,1987 ,6821,3439,3614 }, - {7998,7997,7950 ,7209,7210,7211 }, {5514,6158,6293 ,6128,6112,7212 }, - {6703,6702,6654 ,5161,7060,6884 }, {6307,6301,3302 ,5206,6147,6757 }, - {4018,6307,3302 ,5084,5206,6757 }, {6657,6689,4990 ,6828,3065,7135 }, - {6521,3261,6639 ,6819,5015,3699 }, {5496,6521,6564 ,6966,6819,6933 }, - {6521,6639,6508 ,6819,3699,6934 }, {6741,6794,6756 ,5388,6880,6891 }, - {6896,6895,6842 ,6787,5434,5433 }, {5005,5496,4115 ,1301,6966,6909 }, - {6792,6810,6791 ,5056,6908,6900 }, {1075,2409,2373 ,6854,6852,6722 }, - {5057,6951,6796 ,1795,2615,2617 }, {6345,6319,3533 ,191,6789,192 }, - {6521,6508,6564 ,6819,6934,6933 }, {3261,2384,1197 ,5015,6821,478 }, - {5369,1124,5904 ,6609,5852,5851 }, {5566,5605,5604 ,5759,5761,7213 }, - {5140,2621,5359 ,3712,5416,3713 }, {3505,6443,3504 ,6928,6940,2986 }, - {5496,6564,3320 ,6966,6933,5455 }, {5514,5943,7088 ,6128,5402,4299 }, - {7065,7064,7049 ,5182,5181,5454 }, {3261,1213,6639 ,5015,3700,3699 }, - {5496,3320,5058 ,6966,5455,5647 }, {6867,6844,5551 ,6951,6822,6260 }, - {4926,920,3367 ,3897,57,5798 }, {5014,2450,1025 ,6818,3444,5299 }, - {2238,2160,1272 ,2697,6621,5740 }, {6906,6907,6958 ,4294,6002,4314 }, - {876,4232,4208 ,5340,6299,6356 }, {6711,6710,6301 ,3473,6968,6147 }, - {1216,4115,4547 ,6893,6909,242 }, {7387,3303,3322 ,3615,1049,1182 }, - {5552,5593,6867 ,5936,5935,6951 }, {1124,5369,6065 ,5852,6609,6616 }, - {3526,6281,6060 ,7188,4078,5914 }, {6060,6333,6332 ,5914,7214,7189 }, - {3526,6060,6332 ,7188,5914,7189 }, {6369,6368,6332 ,7215,7190,7189 }, - {6333,6369,6332 ,7214,7215,7189 }, {6406,6405,6368 ,7216,7191,7190 }, - {6369,6406,6368 ,7215,7216,7190 }, {6428,6427,6405 ,7217,7192,7191 }, - {6406,6428,6405 ,7216,7217,7191 }, {6455,6454,6427 ,7218,7193,7192 }, - {6428,6455,6427 ,7217,7218,7192 }, {6455,6500,6499 ,7218,7219,7194 }, - {6454,6455,6499 ,7193,7218,7194 }, {6500,6518,6517 ,7219,7220,7195 }, - {6499,6500,6517 ,7194,7219,7195 }, {6518,6546,6545 ,7220,7221,7196 }, - {6517,6518,6545 ,7195,7220,7196 }, {6546,6592,6591 ,7221,7222,7197 }, - {6545,6546,6591 ,7196,7221,7197 }, {6592,6633,6632 ,7222,7223,7198 }, - {6591,6592,6632 ,7197,7222,7198 }, {6633,6674,6673 ,7223,7224,7199 }, - {6632,6633,6673 ,7198,7223,7199 }, {6730,6729,6673 ,7225,7200,7199 }, - {6674,6730,6673 ,7224,7225,7199 }, {6730,6777,6776 ,7225,7226,7201 }, - {6729,6730,6776 ,7200,7225,7201 }, {6777,6829,6828 ,7226,7227,7202 }, - {6776,6777,6828 ,7201,7226,7202 }, {6829,6884,6883 ,7227,7228,7203 }, - {6828,6829,6883 ,7202,7227,7203 }, {6884,6933,6932 ,7228,7229,7204 }, - {6883,6884,6932 ,7203,7228,7204 }, {6933,6981,6980 ,7229,7230,7205 }, - {6932,6933,6980 ,7204,7229,7205 }, {6981,6126,7016 ,7230,7231,7206 }, - {6980,6981,7016 ,7205,7230,7206 }, {6126,6107,7016 ,7231,7232,7206 }, - {7016,6107,7057 ,7206,7232,7207 }, {5693,5714,7028 ,4075,4077,3587 }, - {1122,7057,5936 ,6719,7207,4393 }, {4554,1989,6323 ,1307,3016,1451 }, - {3860,5246,6028 ,6523,5176,5316 }, {4115,5058,4547 ,6909,5647,242 }, - {6319,6318,6304 ,6789,6788,7233 }, {1121,1122,5936 ,6564,6719,4393 }, - {4115,5496,5058 ,6909,6966,5647 }, {1882,1072,4547 ,894,6725,242 }, - {6711,5014,1025 ,3473,6818,5299 }, {6178,3892,4901 ,5881,4970,3596 }, - {6867,5551,5552 ,6951,6260,5936 }, {7370,7396,7343 ,3750,6716,2750 }, - {6307,6711,6301 ,5206,3473,6147 }, {2343,8067,8097 ,2685,2168,1710 }, - {4784,4542,3285 ,3423,6727,3064 }, {4542,6481,4900 ,6727,6729,585 }, - {7197,5112,5111 ,7234,6021,5990 }, {6387,4784,3285 ,6935,3423,3064 }, - {3285,4542,4900 ,3064,6727,585 }, {6633,6645,6674 ,7223,7235,7224 }, - {6995,6107,6126 ,7236,7232,7231 }, {6981,6995,6126 ,7230,7236,7231 }, - {5503,5504,5531 ,7042,5781,5783 }, {5713,4648,5890 ,5776,5722,6591 }, - {2374,2304,1118 ,7037,6756,6746 }, {1027,2374,1118 ,6991,7037,6746 }, - {5838,6318,6355 ,3987,6788,3786 }, {6378,2220,1882 ,6728,6724,894 }, - {6709,1072,1882 ,6726,6725,894 }, {2244,5024,6660 ,6795,6952,6601 }, - {6710,6711,1025 ,6968,3473,5299 }, {1524,1655,4872 ,4326,4089,5522 }, - {6839,6862,6810 ,6867,6877,6908 }, {7650,7699,7649 ,7237,3951,3950 }, - {7595,7594,7568 ,4019,4020,5544 }, {5970,4170,4146 ,3518,3731,3730 }, - {2374,4018,3302 ,7037,5084,6757 }, {4144,5292,5175 ,4761,5093,6384 }, - {1217,2220,6378 ,6399,6724,6728 }, {1072,1216,4547 ,6725,6893,242 }, - {5024,5040,2138 ,6952,5469,6602 }, {5040,3704,2138 ,5469,2332,6602 }, - {5111,7166,7197 ,5990,5971,7234 }, {6234,5845,7255 ,5973,143,7238 }, - {5112,7197,6120 ,6021,7234,142 }, {6281,7089,5115 ,4078,5608,5913 }, - {6829,6851,6884 ,7227,7239,7228 }, {6885,6934,6933 ,7240,7241,7229 }, - {6884,6885,6933 ,7228,7240,7229 }, {6934,6982,6981 ,7241,7242,7230 }, - {6933,6934,6981 ,7229,7241,7230 }, {6981,6982,6995 ,7230,7242,7236 }, - {6982,7017,6107 ,7242,7243,7232 }, {6995,6982,6107 ,7236,7242,7232 }, - {7017,5930,6143 ,7243,6593,4394 }, {6107,7017,6143 ,7232,7243,4394 }, - {7424,7451,7423 ,1188,3963,3749 }, {4835,1218,8118 ,2130,3255,2129 }, - {7650,7649,7595 ,7237,3950,4019 }, {2209,2241,2240 ,7038,6950,4478 }, - {1394,1027,1118 ,6989,6991,6746 }, {2335,1394,1118 ,6737,6989,6746 }, - {4784,2406,4542 ,3423,6736,6727 }, {6814,1217,4542 ,6842,6399,6727 }, - {4530,1554,4209 ,1376,6304,6269 }, {4574,1268,6062 ,6477,4568,6478 }, - {2220,6709,1882 ,6724,6726,894 }, {5166,5473,5120 ,3427,3429,5857 }, - {1655,1524,2432 ,4089,4326,5427 }, {5427,5395,5428 ,5811,5348,5812 }, - {8093,8076,8072 ,2288,617,511 }, {6569,4746,2222 ,6745,5260,2509 }, - {5277,5276,5255 ,6237,1525,3682 }, {6180,3623,3675 ,6811,4206,4300 }, - {6868,6657,5041 ,5554,6828,6799 }, {2304,2374,3302 ,6756,7037,6757 }, - {6318,6356,6355 ,6788,3787,3786 }, {6746,6747,4784 ,6864,6878,3423 }, - {4542,1217,6378 ,6727,6399,6728 }, {7160,7185,7159 ,6271,5073,5075 }, - {7267,7246,7291 ,4331,3772,3774 }, {4552,1309,3371 ,7244,3709,3708 }, - {3265,4552,3371 ,1033,7244,3708 }, {7127,7128,7159 ,7245,5391,5075 }, - {6292,6334,6333 ,5403,7246,7214 }, {6060,6292,6333 ,5914,5403,7214 }, - {6334,6335,6333 ,7246,6534,7214 }, {6370,6369,6333 ,7247,7215,7214 }, - {6335,6370,6333 ,6534,7247,7214 }, {6407,6406,6369 ,7248,7216,7215 }, - {6370,6407,6369 ,7247,7248,7215 }, {6429,6428,6406 ,7249,7217,7216 }, - {6407,6429,6406 ,7248,7249,7216 }, {6429,6456,6455 ,7249,7250,7218 }, - {6428,6429,6455 ,7217,7249,7218 }, {6456,6501,6500 ,7250,7251,7219 }, - {6455,6456,6500 ,7218,7250,7219 }, {6519,6518,6500 ,7252,7220,7219 }, - {6501,6519,6500 ,7251,7252,7219 }, {6547,6546,6518 ,7253,7221,7220 }, - {6519,6547,6518 ,7252,7253,7220 }, {6547,6593,6592 ,7253,7254,7222 }, - {6546,6547,6592 ,7221,7253,7222 }, {6593,6634,6633 ,7254,7255,7223 }, - {6592,6593,6633 ,7222,7254,7223 }, {6633,6634,6645 ,7223,7255,7235 }, - {6634,6675,6674 ,7255,7256,7224 }, {6645,6634,6674 ,7235,7255,7224 }, - {6675,6731,6730 ,7256,7257,7225 }, {6674,6675,6730 ,7224,7256,7225 }, - {6731,6778,6777 ,7257,7258,7226 }, {6730,6731,6777 ,7225,7257,7226 }, - {6778,6830,6829 ,7258,7259,7227 }, {6777,6778,6829 ,7226,7258,7227 }, - {6829,6830,6851 ,7227,7259,7239 }, {6830,6885,6884 ,7259,7240,7228 }, - {6851,6830,6884 ,7239,7259,7228 }, {6935,6934,6885 ,7260,7241,7240 }, - {6934,6935,6982 ,7241,7260,7242 }, {1664,6228,751 ,2268,1366,1365 }, - {7047,2335,7046 ,6853,6737,6735 }, {5053,1025,6389 ,6848,5299,5301 }, - {6714,6657,6868 ,5300,6828,5554 }, {3872,5082,1551 ,4811,5218,5275 }, - {2406,6814,4542 ,6736,6842,6727 }, {6312,6747,6746 ,6749,6878,6864 }, - {3510,75,2837 ,6267,3962,2511 }, {2837,1518,3510 ,2511,3978,6267 }, - {6114,6355,5151 ,1805,3786,1803 }, {5085,1947,1881 ,3675,6723,7066 }, - {5041,6065,5687 ,6799,6616,6420 }, {3336,3309,6285 ,3922,3892,3923 }, - {4831,3340,4486 ,3154,114,819 }, {6318,5838,6303 ,6788,3987,7261 }, - {6303,6304,6318 ,7261,7233,6788 }, {7116,7115,7089 ,7262,1024,5608 }, - {6432,6553,3265 ,1032,780,1033 }, {5914,5170,5150 ,1566,3683,6032 }, - {7149,7173,7165 ,7263,7264,7265 }, {6292,6335,6334 ,5403,6534,7246 }, - {6371,6370,6335 ,7266,7247,6534 }, {6370,6371,6407 ,7247,7266,7248 }, - {6593,6608,6634 ,7254,7267,7255 }, {6688,5102,5101 ,6846,6845,6422 }, - {5491,6795,6741 ,5419,5418,5388 }, {1380,6312,6310 ,6721,6749,3918 }, - {6747,2406,4784 ,6878,6736,3423 }, {6310,6312,6746 ,3918,6749,6864 }, - {1126,5944,6037 ,7086,4754,5235 }, {4574,3079,5301 ,6477,6540,2698 }, - {209,648,4892 ,4499,4679,5386 }, {3079,3631,5301 ,6540,5922,2698 }, - {4233,1026,1072 ,6185,6218,6725 }, {5102,5041,5007 ,6845,6799,7268 }, - {5007,5041,5687 ,7268,6799,6420 }, {7047,1394,2335 ,6853,6989,6737 }, - {5479,5491,6741 ,5387,5419,5388 }, {6795,6794,6741 ,5418,6880,5388 }, - {255,1380,256 ,6731,6721,7269 }, {3277,2567,227 ,961,2842,2157 }, - {6083,6303,5838 ,3989,7261,3987 }, {7797,7875,7848 ,3506,4118,343 }, - {6620,3265,6553 ,7270,1033,780 }, {1309,4552,3935 ,3709,7244,4346 }, - {6079,6343,5838 ,5580,5122,3987 }, {6895,6916,6864 ,5434,596,6865 }, - {6962,6963,7001 ,3260,1048,6815 }, {1170,6184,5627 ,4103,6089,6628 }, - {4588,4587,8020 ,775,774,1405 }, {6292,6306,6335 ,5403,5669,6534 }, - {6608,6635,6634 ,7267,7271,7255 }, {6676,6675,6634 ,7272,7256,7255 }, - {6635,6676,6634 ,7271,7272,7255 }, {6676,6732,6731 ,7272,7273,7257 }, - {6675,6676,6731 ,7256,7272,7257 }, {6732,6779,6778 ,7273,7274,7258 }, - {6731,6732,6778 ,7257,7273,7258 }, {6779,6800,6778 ,7274,7275,7258 }, - {6800,6831,6830 ,7275,7276,7259 }, {6778,6800,6830 ,7258,7275,7259 }, - {6831,6886,6885 ,7276,7277,7240 }, {6830,6831,6885 ,7259,7276,7240 }, - {6936,6935,6885 ,7278,7260,7240 }, {6886,6936,6885 ,7277,7278,7240 }, - {6936,6983,6982 ,7278,7279,7242 }, {6935,6936,6982 ,7260,7278,7242 }, - {6983,7018,7017 ,7279,7280,7243 }, {6982,6983,7017 ,7242,7279,7243 }, - {7058,5930,7017 ,6594,6593,7243 }, {7018,7058,7017 ,7280,6594,7243 }, - {1120,1167,876 ,5339,5341,5340 }, {3498,6005,1171 ,5800,5691,6441 }, - {5101,5007,5687 ,6422,7268,6420 }, {2240,2241,3978 ,4478,6950,4549 }, - {6795,6813,6794 ,5418,6916,6880 }, {3281,1380,6310 ,6794,6721,3918 }, - {6688,5101,5048 ,6846,6422,6421 }, {352,255,256 ,593,6731,7269 }, - {353,352,256 ,7281,593,7269 }, {6842,6841,6794 ,5433,7164,6880 }, - {6813,6842,6794 ,6916,5433,6880 }, {5101,5102,5007 ,6422,6845,7268 }, - {6865,6840,6841 ,5435,6868,7164 }, {6842,6865,6841 ,5433,5435,7164 }, - {7500,4595,6345 ,326,5289,191 }, {7271,7320,7270 ,2554,7282,2555 }, - {7898,7874,7848 ,4117,344,343 }, {6314,6553,6646 ,1132,780,1133 }, - {7539,7515,7538 ,1080,1079,2014 }, {5051,6620,6553 ,7283,7270,780 }, - {6314,5051,6553 ,1132,7283,780 }, {5051,3265,6620 ,7283,1033,7270 }, - {6798,4552,3265 ,7284,7244,1033 }, {5051,6798,3265 ,7283,7284,1033 }, - {5010,4807,4552 ,6006,6449,7244 }, {6798,5010,4552 ,7284,6006,7244 }, - {5943,6306,6292 ,5402,5669,5403 }, {2247,2452,353 ,7285,7091,7281 }, - {1380,3281,256 ,6721,6794,7269 }, {4588,8020,7995 ,775,1405,4135 }, - {6048,6049,1214 ,6552,6570,6573 }, {3820,1218,4835 ,5591,3255,2130 }, - {6372,6371,6335 ,7286,7266,6534 }, {6336,6372,6335 ,5670,7286,6534 }, - {6372,6408,6407 ,7286,7287,7248 }, {6371,6372,6407 ,7266,7286,7248 }, - {6408,6429,6407 ,7287,7249,7248 }, {6457,6456,6429 ,7288,7250,7249 }, - {6408,6457,6429 ,7287,7288,7249 }, {6502,6501,6456 ,7289,7251,7250 }, - {6457,6502,6456 ,7288,7289,7250 }, {6520,6519,6501 ,7290,7252,7251 }, - {6502,6520,6501 ,7289,7290,7251 }, {6520,6548,6547 ,7290,7291,7253 }, - {6519,6520,6547 ,7252,7290,7253 }, {6548,6594,6593 ,7291,7292,7254 }, - {6547,6548,6593 ,7253,7291,7254 }, {6609,6608,6593 ,7293,7267,7254 }, - {6594,6609,6593 ,7292,7293,7254 }, {6609,6635,6608 ,7293,7271,7267 }, - {7058,5929,5979 ,6594,6029,6028 }, {5359,5977,1936 ,3713,809,848 }, - {6914,6965,6945 ,3532,6732,2632 }, {7066,2452,7065 ,3586,7091,5182 }, - {6895,6864,6840 ,5434,6865,6868 }, {5404,6576,6529 ,3559,6883,5025 }, - {5350,5404,6529 ,1526,3559,5025 }, {5205,5166,5190 ,5219,3427,5858 }, - {6855,6856,6893 ,6959,6892,6844 }, {2308,3302,6300 ,6798,6757,6146 }, - {6297,6442,6696 ,6851,6850,6849 }, {6865,6895,6840 ,5435,5434,6868 }, - {6916,6915,6864 ,596,6871,6865 }, {7028,7066,7027 ,3587,3586,3175 }, - {1492,5075,4017 ,1585,1586,5342 }, {876,4017,4232 ,5340,5342,6299 }, - {7875,7898,7848 ,4118,4117,343 }, {7925,7924,7874 ,7294,815,344 }, - {7023,6314,2259 ,7295,1132,1131 }, {5645,6798,5051 ,7296,7284,7283 }, - {2140,5010,6798 ,5635,6006,7284 }, {5645,2140,6798 ,7296,5635,7284 }, - {7846,7897,7845 ,4162,6015,5725 }, {2452,352,353 ,7091,593,7281 }, - {6114,6079,6355 ,1805,5580,3786 }, {5248,4023,5247 ,6469,3827,4096 }, - {6502,6548,6520 ,7289,7291,7290 }, {6594,6635,6609 ,7292,7271,7293 }, - {2452,2247,7065 ,7091,7285,5182 }, {7028,7027,6968 ,3587,3175,595 }, - {5917,4541,3079 ,6402,6630,6540 }, {1283,3844,5788 ,2978,2443,6086 }, - {6464,297,5966 ,3633,1918,5054 }, {1071,2455,1027 ,3382,475,6991 }, - {6442,6708,6696 ,6850,6148,6849 }, {6320,3533,7439 ,190,192,7297 }, - {7925,7974,7924 ,7294,4171,815 }, {3426,2566,2527 ,4438,2635,2637 }, - {7023,5051,6314 ,7295,7283,1132 }, {5892,6036,3498 ,2683,6141,5800 }, - {4170,5970,5447 ,3731,3518,5633 }, {6947,6988,6946 ,4587,6771,594 }, - {7066,7065,7027 ,3586,5182,3175 }, {5363,5396,5383 ,3269,3548,3547 }, - {6458,6457,6408 ,7298,7288,7287 }, {6503,6502,6457 ,7299,7289,7288 }, - {6458,6503,6457 ,7298,7299,7288 }, {6549,6548,6502 ,7300,7291,7289 }, - {6503,6549,6502 ,7299,7300,7289 }, {6595,6594,6548 ,7301,7292,7291 }, - {6549,6595,6548 ,7300,7301,7291 }, {6636,6635,6594 ,7302,7271,7292 }, - {6595,6636,6594 ,7301,7302,7292 }, {6677,6676,6635 ,7303,7272,7271 }, - {6636,6677,6635 ,7302,7303,7271 }, {6733,6732,6676 ,7304,7273,7272 }, - {6677,6733,6676 ,7303,7304,7272 }, {6780,6779,6732 ,7305,7274,7273 }, - {6733,6780,6732 ,7304,7305,7273 }, {6801,6800,6779 ,7306,7275,7274 }, - {6780,6801,6779 ,7305,7306,7274 }, {6801,6832,6831 ,7306,7307,7276 }, - {6800,6801,6831 ,7275,7306,7276 }, {6887,6886,6831 ,7308,7277,7276 }, - {6832,6887,6831 ,7307,7308,7276 }, {6937,6936,6886 ,7309,7278,7277 }, - {6887,6937,6886 ,7308,7309,7277 }, {6937,6984,6983 ,7309,7310,7279 }, - {6936,6937,6983 ,7278,7309,7279 }, {7019,7018,6983 ,7311,7280,7279 }, - {6984,7019,6983 ,7310,7311,7279 }, {7019,7059,7058 ,7311,7312,6594 }, - {7018,7019,7058 ,7280,7311,6594 }, {7059,5045,5929 ,7312,4214,6029 }, - {7058,7059,5929 ,6594,7312,6029 }, {6967,7007,6987 ,4629,4628,6917 }, - {6988,7028,6968 ,6771,3587,595 }, {6920,6947,6919 ,6783,4587,6778 }, - {6863,6862,6839 ,6866,6877,6867 }, {6169,6190,3704 ,2334,6610,2332 }, - {5476,5055,1261 ,6495,6470,6472 }, {4595,4649,5118 ,5289,5288,6825 }, - {6920,6919,6896 ,6783,6778,6787 }, {4597,4583,7788 ,5541,5498,7313 }, - {7534,7533,7511 ,7314,7039,6677 }, {7115,7102,7103 ,1024,1240,6455 }, - {4553,2259,6351 ,7315,1131,1568 }, {6322,4553,6351 ,3531,7315,1568 }, - {4553,6296,2259 ,7315,7316,1131 }, {6298,7023,2259 ,7317,7295,1131 }, - {6296,6298,2259 ,7316,7317,1131 }, {5100,5051,7023 ,7318,7283,7295 }, - {6298,5100,7023 ,7317,7318,7295 }, {5100,7078,5051 ,7318,7319,7283 }, - {1262,5645,5051 ,7320,7296,7283 }, {7078,1262,5051 ,7319,7320,7283 }, - {4565,2140,5645 ,5944,5635,7296 }, {1262,4565,5645 ,7320,5944,7296 }, - {6463,4566,4985 ,5159,5143,2703 }, {6009,6337,6336 ,6129,7321,5670 }, - {5943,6009,6336 ,5402,6129,5670 }, {6337,6373,6372 ,7321,7322,7286 }, - {6336,6337,6372 ,5670,7321,7286 }, {6373,6409,6408 ,7322,7323,7287 }, - {6372,6373,6408 ,7286,7322,7287 }, {6459,6458,6408 ,7324,7298,7287 }, - {6409,6459,6408 ,7323,7324,7287 }, {6550,6549,6503 ,7325,7300,7299 }, - {6637,6636,6595 ,7326,7302,7301 }, {6780,6832,6801 ,7305,7307,7306 }, - {6988,6968,6946 ,6771,595,594 }, {6947,6946,6918 ,4587,594,6779 }, - {6792,6839,6811 ,5056,6867,399 }, {6156,1165,5917 ,6250,3153,6402 }, - {2241,5454,3978 ,6950,6817,4549 }, {2234,2235,2139 ,6949,6870,6895 }, - {3192,6387,3285 ,3063,6935,3064 }, {1313,1075,2373 ,3674,6854,6722 }, - {8037,8036,7996 ,4528,7327,7328 }, {5115,7103,6282 ,5913,6455,6617 }, - {41,1262,7078 ,6533,7320,7319 }, {5100,41,7078 ,7318,6533,7319 }, - {6029,6028,5976 ,1454,5316,5903 }, {1270,6569,2222 ,6781,6745,2509 }, - {6867,6896,6844 ,6951,6787,6822 }, {3838,4166,5999 ,6257,6084,5184 }, - {6637,6677,6636 ,7326,7303,7302 }, {6780,6801,6832 ,7305,7306,7307 }, - {7059,7072,5045 ,7312,7329,4214 }, {4577,4576,4575 ,5352,1628,3128 }, - {6792,6811,6793 ,5056,399,6879 }, {5447,4565,5564 ,5633,5944,5943 }, - {6947,6918,6919 ,4587,6779,6778 }, {3437,3500,3465 ,4142,4177,6890 }, - {3500,3551,3550 ,4177,4180,4179 }, {3670,4326,489 ,281,219,3639 }, - {3051,2273,5474 ,6488,5322,4243 }, {5415,4565,41 ,5951,5944,6533 }, - {6866,6842,6843 ,6786,5433,6911 }, {7818,4584,4598 ,5309,5308,5343 }, - {7187,7186,7161 ,7330,5370,2559 }, {1634,5482,1423 ,768,3565,151 }, - {4553,6298,6296 ,7315,7317,7316 }, {1262,41,4565 ,7320,6533,5944 }, - {6391,307,6463 ,6804,5095,5159 }, {2247,353,1071 ,7285,7281,3382 }, - {1215,5006,184 ,3937,1351,4052 }, {6293,6338,6337 ,7212,7331,7321 }, - {6009,6293,6337 ,6129,7212,7321 }, {6338,6374,6373 ,7331,7332,7322 }, - {6337,6338,6373 ,7321,7331,7322 }, {6410,6409,6373 ,7333,7323,7322 }, - {6374,6410,6373 ,7332,7333,7322 }, {6460,6459,6409 ,7334,7324,7323 }, - {6410,6460,6409 ,7333,7334,7323 }, {6460,6458,6459 ,7334,7298,7324 }, - {6504,6503,6458 ,7335,7299,7298 }, {6460,6504,6458 ,7334,7335,7298 }, - {6551,6550,6503 ,7336,7325,7299 }, {6504,6551,6503 ,7335,7336,7299 }, - {6551,6549,6550 ,7336,7300,7325 }, {6596,6595,6549 ,7337,7301,7300 }, - {6551,6596,6549 ,7336,7337,7300 }, {6638,6637,6595 ,7338,7326,7301 }, - {6596,6638,6595 ,7337,7338,7301 }, {6678,6677,6637 ,7339,7303,7326 }, - {6638,6678,6637 ,7338,7339,7326 }, {6678,6693,6677 ,7339,7340,7303 }, - {6734,6733,6677 ,7341,7304,7303 }, {6693,6734,6677 ,7340,7341,7303 }, - {6781,6780,6733 ,7342,7305,7304 }, {6734,6781,6733 ,7341,7342,7304 }, - {6781,6801,6780 ,7342,7306,7305 }, {6833,6832,6801 ,7343,7307,7306 }, - {6781,6833,6801 ,7342,7343,7306 }, {6888,6887,6832 ,7344,7308,7307 }, - {6833,6888,6832 ,7343,7344,7307 }, {6888,6938,6937 ,7344,7345,7309 }, - {6887,6888,6937 ,7308,7344,7309 }, {6938,6985,6984 ,7345,7346,7310 }, - {6937,6938,6984 ,7309,7345,7310 }, {7020,7019,6984 ,7347,7311,7310 }, - {6985,7020,6984 ,7346,7347,7310 }, {7020,7060,7059 ,7347,7348,7312 }, - {7019,7020,7059 ,7311,7347,7312 }, {7060,7061,7072 ,7348,7141,7329 }, - {7059,7060,7072 ,7312,7348,7329 }, {7072,7061,5045 ,7329,7141,4214 }, - {5672,5744,7009 ,5324,6090,5325 }, {2074,2247,1071 ,6990,7285,3382 }, - {1071,353,3661 ,3382,7281,789 }, {1165,4541,5917 ,3153,6630,6402 }, - {1165,3446,5487 ,3153,3718,6558 }, {4541,1165,5487 ,6630,3153,6558 }, - {6319,5125,5151 ,6789,5467,1803 }, {4597,5136,4630 ,5541,1817,827 }, - {4598,4631,5137 ,5343,1816,1815 }, {7705,7754,7704 ,7349,7350,3562 }, - {3352,7438,3321 ,2724,7351,2461 }, {2249,6352,6322 ,3751,7352,3531 }, - {3176,4553,6322 ,7353,7315,3531 }, {6352,3176,6322 ,7352,7353,3531 }, - {6376,6298,4553 ,7354,7317,7315 }, {3176,6376,4553 ,7353,7354,7315 }, - {6438,5100,6298 ,7355,7318,7317 }, {6376,6438,6298 ,7354,7355,7317 }, - {5037,41,5100 ,3206,6533,7318 }, {6438,5037,5100 ,7355,3206,7318 }, - {1809,4549,6605 ,878,877,5164 }, {6505,6504,6460 ,7356,7335,7334 }, - {6597,6596,6551 ,7357,7337,7336 }, {7020,7061,7060 ,7347,7141,7348 }, - {5211,5170,5191 ,6071,3683,2900 }, {2452,2246,352 ,7091,591,593 }, - {6919,6946,6918 ,6778,594,6779 }, {351,5086,5069 ,592,6064,6730 }, - {6969,1165,6156 ,7358,3153,6250 }, {5001,2271,4018 ,477,5071,5084 }, - {3336,6324,3335 ,3922,4239,4222 }, {4445,6757,6748 ,3648,3409,3408 }, - {2220,4233,1072 ,6724,6185,6725 }, {7818,4598,5137 ,5309,5343,1815 }, - {7204,7203,7186 ,5120,4366,5370 }, {535,5105,6686 ,2001,5456,750 }, - {7227,7247,7269 ,7359,7360,7361 }, {6956,6376,3176 ,7362,7354,7353 }, - {5137,4597,7788 ,1815,5541,7313 }, {4142,5085,1881 ,6839,3675,7066 }, - {7065,2247,2073 ,5182,7285,5183 }, {7027,7065,7049 ,3175,5182,5454 }, - {6505,6551,6504 ,7356,7336,7335 }, {6597,6638,6596 ,7357,7338,7337 }, - {6678,6734,6693 ,7339,7341,7340 }, {6834,6833,6781 ,7363,7343,7342 }, - {7020,7037,7061 ,7347,7364,7141 }, {5751,7038,5812 ,5878,3832,660 }, - {6949,6947,6948 ,4585,4587,6782 }, {5059,4233,7081 ,1253,6185,7114 }, - {1125,3779,2142 ,5723,6565,4936 }, {4068,3952,3259 ,408,5597,407 }, - {7998,8021,7997 ,7209,7365,7210 }, {5910,6343,6079 ,5121,5122,5580 }, - {6710,1025,5053 ,6968,5299,6848 }, {3281,6310,6309 ,6794,3918,3690 }, - {6481,6378,4900 ,6729,6728,585 }, {7818,5137,7788 ,5309,1815,7313 }, - {7187,7204,7186 ,7330,5120,5370 }, {7908,7907,7858 ,7366,7367,7368 }, - {227,8128,3277 ,2157,959,961 }, {6956,6438,6376 ,7362,7355,7354 }, - {6158,6034,6293 ,6112,6049,7212 }, {6034,6339,6338 ,6049,6048,7331 }, - {6293,6034,6338 ,7212,6049,7331 }, {6339,6375,6374 ,6048,7369,7332 }, - {6338,6339,6374 ,7331,6048,7332 }, {6411,6410,6374 ,7370,7333,7332 }, - {6375,6411,6374 ,7369,7370,7332 }, {6461,6460,6410 ,7371,7334,7333 }, - {6411,6461,6410 ,7370,7371,7333 }, {6506,6505,6460 ,3549,7356,7334 }, - {6461,6506,6460 ,7371,3549,7334 }, {5395,6551,6505 ,5348,7336,7356 }, - {6506,5395,6505 ,3549,5348,7356 }, {5395,6568,6551 ,5348,6717,7336 }, - {5427,6597,6551 ,5811,7357,7336 }, {6568,5427,6551 ,6717,5811,7336 }, - {5463,6638,6597 ,5801,7338,7357 }, {5427,5463,6597 ,5811,5801,7357 }, - {5463,5503,6638 ,5801,7042,7338 }, {5531,6678,6638 ,5783,7339,7338 }, - {5503,5531,6638 ,7042,5783,7338 }, {5566,6734,6678 ,5759,7341,7339 }, - {5531,5566,6678 ,5783,5759,7339 }, {6782,6781,6734 ,7372,7342,7341 }, - {5566,6782,6734 ,5759,7372,7341 }, {6835,6834,6781 ,7373,7363,7342 }, - {6782,6835,6781 ,7372,7373,7342 }, {6835,6833,6834 ,7373,7343,7363 }, - {6889,6888,6833 ,7374,7344,7343 }, {6835,6889,6833 ,7373,7374,7343 }, - {6889,6904,6888 ,7374,7375,7344 }, {6939,6938,6888 ,7376,7345,7344 }, - {6904,6939,6888 ,7375,7376,7344 }, {6939,6940,6938 ,7376,7377,7345 }, - {6986,6985,6938 ,7378,7346,7345 }, {6940,6986,6938 ,7377,7378,7345 }, - {6986,7021,7020 ,7378,7379,7347 }, {6985,6986,7020 ,7346,7378,7347 }, - {7020,7021,7037 ,7347,7379,7364 }, {7021,7062,7061 ,7379,6563,7141 }, - {7037,7021,7061 ,7364,7379,7141 }, {4752,1297,4323 ,5196,4048,4045 }, - {712,3702,6757 ,3650,1303,3409 }, {4010,4009,3968 ,4343,3870,3848 }, - {3529,1941,3371 ,3837,1034,3708 }, {6155,6970,6969 ,3726,3688,7358 }, - {6156,6155,6969 ,6250,3726,7358 }, {6970,4831,1165 ,3688,3154,3153 }, - {6969,6970,1165 ,7358,3688,3153 }, {978,4965,4966 ,1620,784,4646 }, - {1217,5059,2220 ,6399,1253,6724 }, {3281,2271,2212 ,6794,5071,476 }, - {2073,2247,2074 ,5183,7285,6990 }, {5027,6684,2272 ,5516,1161,1201 }, - {5136,4597,5137 ,1817,5541,1815 }, {4803,468,505 ,4776,1369,986 }, - {7103,7102,6283 ,6455,1240,4298 }, {6323,2249,6531 ,1451,3751,2280 }, - {4551,6352,2249 ,7380,7352,3751 }, {6323,4551,2249 ,1451,7380,3751 }, - {1989,3176,6352 ,3016,7353,7352 }, {4551,1989,6352 ,7380,3016,7352 }, - {5012,6956,3176 ,5212,7362,7353 }, {1989,5012,3176 ,3016,5212,7353 }, - {6417,6438,6956 ,762,7355,7362 }, {5012,6417,6956 ,5212,762,7362 }, - {6417,5388,5037 ,762,5428,3206 }, {6438,6417,5037 ,7355,762,3206 }, - {5037,5388,6317 ,3206,5428,3207 }, {353,256,2212 ,7281,7269,476 }, - {5211,6433,5210 ,6071,6691,6033 }, {6165,7061,7062 ,4219,7141,6563 }, - {5604,6782,5566 ,7213,7372,5759 }, {6940,6939,6904 ,7377,7376,7375 }, - {6889,6940,6904 ,7374,7377,7375 }, {835,3984,5527 ,3030,6017,5977 }, - {4545,2274,4980 ,586,893,241 }, {3661,353,2212 ,789,7281,476 }, - {256,3281,2212 ,7269,6794,476 }, {6465,5009,4985 ,6927,6803,2703 }, - {6968,7008,6967 ,595,3176,4629 }, {5940,6176,6715 ,1625,1624,6929 }, - {3321,3353,3352 ,2461,2424,2724 }, {2074,1394,7047 ,6990,6989,6853 }, - {5974,3079,4574 ,6474,6540,6477 }, {7660,7707,7659 ,7381,7382,7383 }, - {6792,6791,6738 ,5056,6900,5057 }, {6009,5514,6293 ,6129,6128,7212 }, - {5744,5718,5756 ,6090,6126,6076 }, {6531,6509,6323 ,2280,1452,1451 }, - {4586,2163,911 ,5257,243,1159 }, {6946,6916,6917 ,594,596,5515 }, - {6411,6462,6461 ,7370,7384,7371 }, {6462,6506,6461 ,7384,3549,7371 }, - {5715,7050,7028 ,4076,6967,3587 }, {3779,1125,4648 ,6565,5723,5722 }, - {2871,3284,257 ,3649,6720,6067 }, {5106,5120,7096 ,5926,5857,4337 }, - {4392,2094,2341 ,844,5570,845 }, {5041,4990,6065 ,6799,7135,6616 }, - {4803,5267,4777 ,4776,4647,3917 }, {5604,6835,6782 ,7213,7373,7372 }, - {5669,6905,5710 ,5553,2506,5254 }, {2343,2210,1074 ,2685,2510,2715 }, - {158,5027,4755 ,5258,5516,6770 }, {8007,2250,7957 ,3854,3716,7385 }, - {7050,5715,5755 ,6967,4076,4047 }, {1947,2235,1881 ,6723,6870,7066 }, - {5405,6656,6618 ,5518,5517,6910 }, {4552,4807,3935 ,7244,6449,4346 }, - {6657,4990,5041 ,6828,7135,6799 }, {4043,2956,2798 ,419,399,420 }, - {5611,6949,6920 ,6177,4585,6783 }, {7262,7287,7241 ,4335,3459,4465 }, - {7769,7744,7794 ,5535,6101,5749 }, {4021,3733,3936 ,1712,5610,5599 }, - {6323,1989,4551 ,1451,3016,7380 }, {4983,4569,2158 ,480,1344,1160 }, - {6949,6948,6920 ,4585,6782,6783 }, {6918,6946,6917 ,6779,594,5515 }, - {4229,381,4246 ,4877,6450,3665 }, {6092,5940,3714 ,1623,1625,3970 }, - {6483,2164,4961 ,3584,3583,2905 }, {5889,6066,6375 ,1587,1455,7369 }, - {6339,5889,6375 ,6048,1587,7369 }, {6090,6411,6375 ,4897,7370,7369 }, - {6066,6090,6375 ,1455,4897,7369 }, {6090,6260,6462 ,4897,3397,7384 }, - {6411,6090,6462 ,7370,4897,7384 }, {5363,6506,6462 ,3269,3549,7384 }, - {6260,5363,6462 ,3397,3269,7384 }, {4530,4209,2239 ,1376,6269,1377 }, - {5120,5106,5121 ,5857,5926,5855 }, {5605,5647,5604 ,5761,5333,7213 }, - {5647,6835,5604 ,5333,7373,7213 }, {5647,6852,6835 ,5333,5335,7373 }, - {6890,6889,6835 ,5334,7374,7373 }, {6852,6890,6835 ,5335,5334,7373 }, - {5750,6940,6889 ,5156,7377,7374 }, {6890,5750,6889 ,5334,5156,7374 }, - {5774,6986,6940 ,5720,7378,7377 }, {5750,5774,6940 ,5156,5720,7377 }, - {5807,7021,6986 ,4769,7379,7378 }, {5774,5807,6986 ,5720,4769,7378 }, - {7021,5807,7062 ,7379,4769,6563 }, {5807,5839,7062 ,4769,4768,6563 }, - {5839,5840,7062 ,4768,4770,6563 }, {5840,4271,1464 ,4770,5767,5768 }, - {7062,5840,1464 ,6563,4770,5768 }, {5668,5626,5669 ,5912,1460,5553 }, - {5076,4200,158 ,6607,6583,5258 }, {4983,6341,2808 ,480,479,522 }, - {7050,5755,7067 ,6967,4047,3585 }, {4978,6413,6155 ,178,112,3726 }, - {4567,4978,6155 ,6655,178,3726 }, {6413,3340,6970 ,112,114,3688 }, - {7733,7758,7707 ,7386,7387,7382 }, {7708,7733,7707 ,7388,7386,7382 }, - {7733,7780,7758 ,7386,7389,7387 }, {7834,7884,7833 ,7390,7391,7392 }, - {7523,7581,7522 ,7393,7394,7395 }, {7518,7546,7545 ,7396,7397,7398 }, - {7629,7684,7683 ,7399,7400,5267 }, {7656,7629,7683 ,7401,7399,5267 }, - {2328,2282,2283 ,3664,3663,3687 }, {2281,2280,8054 ,3626,3613,7402 }, - {2278,2277,4572 ,3495,3522,5949 }, {7956,8004,7981 ,7403,7404,4252 }, - {7173,7172,7165 ,7264,7405,7265 }, {7574,7656,7603 ,7406,7401,5266 }, - {2250,8006,7957 ,3716,7407,7385 }, {7907,7932,7906 ,7367,7408,7409 }, - {4803,505,5290 ,4776,986,5247 }, {7827,7878,7826 ,7410,7411,1616 }, - {7852,7901,7851 ,7412,7413,6625 }, {7116,7141,7140 ,7262,7414,7415 }, - {7263,7312,7262 ,627,4333,4335 }, {402,7690,448 ,5349,6466,1172 }, - {7540,7574,7603 ,5709,7406,5266 }, {7629,7656,7574 ,7399,7401,7406 }, - {8021,8037,7997 ,7365,4528,7210 }, {7604,7605,7657 ,7416,5239,7417 }, - {7726,7774,7725 ,7418,7419,7420 }, {3351,7497,7438 ,1444,7421,7351 }, - {3352,3351,7438 ,2724,1444,7351 }, {7297,7273,7274 ,7422,3467,7423 }, - {3298,3830,4518 ,7424,5882,1281 }, {7678,7677,7623 ,7425,7426,7427 }, - {7399,7425,7398 ,7428,3995,7429 }, {7379,7378,7319 ,7430,7431,7432 }, - {7252,7297,7274 ,3437,7422,7423 }, {7327,7326,7273 ,7433,7434,3467 }, - {7297,7327,7273 ,7422,7433,3467 }, {7327,7355,7326 ,7433,7435,7434 }, - {7403,7457,7486 ,6588,1078,7436 }, {7457,7539,7538 ,1078,1080,2014 }, - {7856,7905,7855 ,4635,7437,6545 }, {7626,7625,7624 ,7438,7139,7439 }, - {7405,7461,7460 ,7440,7441,7442 }, {7431,7405,7460 ,7443,7440,7442 }, - {7461,7489,7460 ,7441,7444,7442 }, {7489,7519,7518 ,7444,7445,7396 }, - {7460,7489,7518 ,7442,7444,7396 }, {7757,7758,7779 ,7446,7387,7447 }, - {7833,7832,7809 ,7392,7448,7449 }, {7707,7758,7757 ,7382,7387,7446 }, - {7732,7707,7757 ,7450,7382,7446 }, {4022,3534,6836 ,3503,942,852 }, - {7320,7380,7379 ,7282,7451,7430 }, {7833,7883,7832 ,7392,7452,7448 }, - {7519,7547,7546 ,7445,7453,7397 }, {7518,7519,7546 ,7396,7445,7397 }, - {7771,7770,7721 ,4336,4272,7454 }, {7547,7607,7546 ,7453,7455,7397 }, - {7661,7660,7607 ,7456,7381,7455 }, {7606,7659,7633 ,7457,7383,7458 }, - {7726,7725,7681 ,7418,7420,7459 }, {7622,7676,7650 ,7460,7461,7237 }, - {7606,7633,7578 ,7457,7458,7462 }, {7661,7708,7660 ,7456,7388,7381 }, - {7480,7511,7454 ,7463,6677,3996 }, {7781,7780,7733 ,7464,7389,7386 }, - {7325,7382,7381 ,7465,7466,7467 }, {7885,7884,7834 ,7468,7391,7390 }, - {6322,8112,6897 ,3531,3530,54 }, {2048,2096,3875 ,5461,788,5845 }, - {7885,7909,7884 ,7468,6603,7391 }, {2262,7936,7884 ,3359,5528,7391 }, - {7909,2262,7884 ,6603,3359,7391 }, {7382,7405,7431 ,7466,7440,7443 }, - {7582,7581,7523 ,7469,7394,7393 }, {7438,7497,7437 ,7351,7421,5938 }, - {7273,7250,7251 ,3467,3418,2671 }, {7497,7496,7437 ,7421,7470,5938 }, - {2526,2525,2485 ,2636,2937,2815 }, {7273,7296,7250 ,3467,7471,3418 }, - {7684,7705,7683 ,7400,7349,5267 }, {7705,7704,7683 ,7349,3562,5267 }, - {6784,2278,4572 ,7472,3495,5949 }, {7110,7133,7108 ,1990,1989,4111 }, - {7355,7405,7382 ,7435,7440,7466 }, {7582,7637,7581 ,7469,7473,7394 }, - {7714,4744,7983 ,4468,4424,4361 }, {5026,8062,7983 ,4225,3272,4361 }, - {5643,5660,5659 ,4617,3054,3053 }, {7698,7720,7747 ,333,4271,331 }, - {7613,7634,7612 ,5106,7474,5107 }, {7516,7575,7574 ,5708,7475,7406 }, - {6784,4572,8039 ,7472,5949,7476 }, {7274,7273,7252 ,7423,3467,3437 }, - {3824,4744,7714 ,3462,4424,4468 }, {3824,1879,4744 ,3462,1283,4424 }, - {3976,3830,3298 ,919,5882,7424 }, {7398,7425,7397 ,7429,3995,1186 }, - {7253,7297,7252 ,1855,7422,3437 }, {7356,7355,7327 ,7477,7435,7433 }, - {2487,2486,7615 ,4427,2814,2816 }, {6316,6311,2162 ,4435,1097,3278 }, - {3824,3298,1879 ,3462,7424,1283 }, {7935,2290,7960 ,5527,1982,3505 }, - {7461,7490,7489 ,7441,7478,7444 }, {7489,7490,7519 ,7444,7478,7445 }, - {7608,7607,7547 ,7479,7455,7453 }, {2250,2285,8006 ,3716,3701,7407 }, - {7881,7907,7906 ,7480,7367,7409 }, {7709,7708,7661 ,7481,7388,7456 }, - {7262,7311,7287 ,4335,4334,3459 }, {7693,3298,3824 ,724,7424,3462 }, - {3298,7693,3976 ,7424,724,919 }, {2292,7936,2262 ,1983,5528,3359 }, - {7734,7733,7708 ,7482,7386,7388 }, {7709,7734,7708 ,7481,7482,7388 }, - {7835,7834,7780 ,7483,7390,7389 }, {7781,7835,7780 ,7464,7483,7389 }, - {7229,7270,7247 ,2556,2555,7360 }, {1788,145,113 ,676,810,677 }, - {3290,3289,7196 ,1204,2056,2401 }, {7517,7516,7459 ,7484,5708,7485 }, - {7883,7934,7882 ,7452,7486,7487 }, {3294,3293,7110 ,3895,1988,1990 }, - {7150,7149,3293 ,7488,7263,1988 }, {7150,7173,7149 ,7488,7264,7263 }, - {7637,7713,7692 ,7473,7489,7490 }, {7251,7250,3288 ,2671,3418,2058 }, - {7960,2290,162 ,3505,1982,2822 }, {7224,7223,7189 ,7491,7492,7493 }, - {6276,7107,6277 ,4316,7494,4387 }, {6282,7103,6283 ,6617,6455,4298 }, - {7713,7736,7692 ,7489,6752,7490 }, {7809,7832,7808 ,7449,7448,7495 }, - {7266,7315,7265 ,6769,7496,7497 }, {7230,7229,7210 ,7498,2556,7499 }, - {7211,7210,7173 ,7500,7499,7264 }, {7211,7230,7210 ,7500,7498,7499 }, - {7321,7353,7320 ,7501,7502,7282 }, {7188,7187,7161 ,7503,7330,2559 }, - {7631,7658,7605 ,7504,7505,5239 }, {7997,8037,7996 ,7210,4528,7328 }, - {7266,7265,7245 ,6769,7497,7506 }, {7935,7960,7933 ,5527,3505,7507 }, - {7931,7981,7930 ,7508,4252,4278 }, {7804,7803,7775 ,4634,4636,7509 }, - {7753,7804,7775 ,3643,4634,7509 }, {7779,7809,7808 ,7447,7449,7495 }, - {7757,7779,7808 ,7446,7447,7495 }, {7727,7775,7726 ,3563,7509,7418 }, - {7934,7933,7882 ,7486,7507,7487 }, {8025,8024,7980 ,7510,7511,4253 }, - {7383,7355,7382 ,7512,7435,7466 }, {7321,7320,7271 ,7501,7282,2554 }, - {7980,8003,7955 ,4253,3776,4254 }, {7855,7904,7854 ,6545,7513,7514 }, - {7353,7380,7320 ,7502,7451,7282 }, {7541,7516,7517 ,7515,5708,7484 }, - {7541,7575,7516 ,7515,7475,5708 }, {7934,7935,7933 ,7486,5527,7507 }, - {7713,2451,7736 ,7489,2102,6752 }, {7732,7757,7731 ,7450,7446,7516 }, - {8116,3976,8129 ,172,919,723 }, {7707,7732,7731 ,7382,7450,7516 }, - {7535,7534,7480 ,7517,7314,7463 }, {7685,7707,7731 ,7518,7382,7516 }, - {7755,7805,7754 ,7519,7520,7350 }, {7707,7685,7659 ,7382,7518,7383 }, - {1274,6108,1275 ,1687,6975,1688 }, {7980,8024,8003 ,4253,7511,3776 }, - {2281,2326,2280 ,3626,3588,3613 }, {7164,7195,7171 ,7521,7522,4306 }, - {7209,7228,7227 ,7523,7524,7359 }, {7228,7247,7227 ,7524,7360,7359 }, - {7855,7854,7803 ,6545,7514,4636 }, {7574,7575,7629 ,7406,7475,7399 }, - {7805,7804,7754 ,7520,4634,7350 }, {7578,7633,7577 ,7462,7458,7525 }, - {7325,7381,7354 ,7465,7467,7526 }, {7755,7754,7705 ,7519,7350,7349 }, - {8005,8004,7956 ,7527,7404,7403 }, {7540,7603,7628 ,5709,5266,7528 }, - {7798,7825,7771 ,4728,3768,4336 }, {7093,7107,6276 ,4318,7494,4316 }, - {7093,7119,7107 ,4318,7529,7494 }, {7119,7147,7146 ,7529,6937,7530 }, - {7683,7682,7655 ,5267,3564,5268 }, {7880,7879,7857 ,7531,7532,7533 }, - {7604,7657,7630 ,7416,7417,7534 }, {7275,7253,7254 ,1854,1855,450 }, - {7298,7297,7253 ,7535,7422,1855 }, {2285,2283,8004 ,3701,3687,7404 }, - {8005,2285,8004 ,7527,3701,7404 }, {7254,7253,6348 ,450,1855,1607 }, - {5558,5569,5599 ,2302,2075,2213 }, {7603,7655,7628 ,5266,5268,7528 }, - {7427,7426,7399 ,7536,7537,7428 }, {7275,7298,7253 ,1854,7535,1855 }, - {7298,7327,7297 ,7535,7433,7422 }, {7406,7405,7355 ,7538,7440,7435 }, - {7356,7406,7355 ,7477,7538,7435 }, {7490,7547,7519 ,7478,7453,7445 }, - {7662,7661,7607 ,7539,7456,7455 }, {7608,7662,7607 ,7479,7539,7455 }, - {1314,7638,1315 ,1409,7540,1627 }, {1877,3802,3948 ,282,4475,280 }, - {3948,3802,4296 ,280,4475,6023 }, {7720,7698,7648 ,4271,333,3952 }, - {7655,7682,7628 ,5268,3564,7528 }, {68,4368,3530 ,4087,4148,7541 }, - {7481,7535,7480 ,7542,7517,7463 }, {7734,7781,7733 ,7482,7464,7386 }, - {7537,7601,7572 ,7543,7544,5124 }, {7886,7885,7834 ,6561,7468,7390 }, - {7835,7886,7834 ,7483,6561,7390 }, {7886,7909,7885 ,6561,6603,7468 }, - {7884,7935,7883 ,7391,5527,7452 }, {7221,7241,7204 ,7545,4465,5120 }, - {3976,8116,5483 ,919,172,171 }, {7900,7951,7926 ,6922,7546,6923 }, - {1877,3825,3802 ,282,7547,4475 }, {59,2553,395 ,967,2716,966 }, - {7901,7900,7851 ,7413,6922,6625 }, {2283,8041,8004 ,3687,7548,7404 }, - {7753,7775,7727 ,3643,7509,3563 }, {7497,7523,7496 ,7421,7393,7470 }, - {7878,7877,7826 ,7411,7549,1616 }, {7459,7516,7458 ,7485,5708,7550 }, - {7900,7899,7849 ,6922,4116,7551 }, {7515,7487,7540 ,1079,5707,5709 }, - {7648,7699,7720 ,3952,3951,4271 }, {7149,7165,7133 ,7263,7265,1989 }, - {8107,2731,872 ,658,659,2962 }, {2410,3400,1877 ,1,3659,282 }, - {1315,1355,1314 ,1627,1408,1409 }, {7907,7958,7932 ,7367,3855,7408 }, - {7454,7453,7397 ,3996,1187,1186 }, {59,2689,2553 ,967,2821,2716 }, - {209,342,1178 ,4499,4542,206 }, {7328,7327,7298 ,7552,7433,7535 }, - {7275,7328,7298 ,1854,7552,7535 }, {7686,7659,7685 ,7553,7383,7518 }, - {7328,7356,7327 ,7552,7477,7433 }, {7432,7405,7406 ,7554,7440,7538 }, - {7633,7659,7632 ,7458,7383,7555 }, {7659,7686,7632 ,7383,7553,7555 }, - {7537,7572,7514 ,7543,5124,3610 }, {7601,7600,7572 ,7544,7556,5124 }, - {7432,7461,7405 ,7554,7441,7440 }, {7548,7547,7490 ,7557,7453,7478 }, - {7609,7608,7547 ,7558,7479,7453 }, {7548,7609,7547 ,7557,7558,7453 }, - {7663,7662,7608 ,7559,7539,7479 }, {7609,7663,7608 ,7558,7559,7479 }, - {7663,7661,7662 ,7559,7456,7539 }, {7710,7709,7661 ,7560,7481,7456 }, - {7663,7710,7661 ,7559,7560,7456 }, {7735,7734,7709 ,7561,7482,7481 }, - {7710,7735,7709 ,7560,7561,7481 }, {7295,7325,7354 ,7562,7465,7526 }, - {2410,1877,3670 ,1,282,281 }, {3400,1538,1451 ,3659,0,175 }, - {3400,3786,1877 ,3659,4074,282 }, {1877,3786,3825 ,282,4074,7547 }, - {3802,3825,1537 ,4475,7547,4473 }, {976,977,1029 ,782,3931,3930 }, - {7849,7899,7875 ,7551,4116,4118 }, {7782,7781,7734 ,7563,7464,7482 }, - {7836,7835,7781 ,7564,7483,7464 }, {7782,7836,7781 ,7563,7564,7464 }, - {7296,7295,7250 ,7471,7562,3418 }, {7836,7886,7835 ,7564,6561,7483 }, - {7721,7720,7676 ,7454,4271,7461 }, {2263,2295,2294 ,3080,3160,3081 }, - {7883,7882,7832 ,7452,7487,7448 }, {3296,3295,2265 ,4159,7565,2662 }, - {7637,7666,7636 ,7473,7566,7567 }, {7229,7247,7210 ,2556,7360,7499 }, - {7801,7853,7800 ,1618,1617,7568 }, {7110,7108,7109 ,1990,4111,4112 }, - {7802,7801,7751 ,6566,1618,4332 }, {7479,7508,7478 ,4423,6196,1402 }, - {3786,1934,3825 ,4074,4620,7547 }, {1934,3514,1537 ,4620,7569,4473 }, - {3825,1934,1537 ,7547,4620,4473 }, {3514,7764,1537 ,7569,7570,4473 }, - {1537,7764,1745 ,4473,7570,6233 }, {7764,7739,4207 ,7570,7571,4247 }, - {1745,7764,4207 ,6233,7570,4247 }, {4961,2164,3191 ,2905,3583,2903 }, - {7620,7646,7645 ,5033,5191,5034 }, {7457,7487,7515 ,1078,5707,1079 }, - {7429,7487,7457 ,7572,5707,1078 }, {3351,7523,7497 ,1444,7393,7421 }, - {2283,2282,2281 ,3687,3663,3626 }, {7296,7325,7295 ,7471,7465,7562 }, - {7106,7105,7092 ,7573,5279,3968 }, {7879,7905,7856 ,7532,7437,4635 }, - {7484,7483,7427 ,3612,7574,7536 }, {7289,7347,7288 ,7575,7576,7577 }, - {7513,7512,7483 ,3611,5203,7574 }, {7373,7399,7347 ,4989,7428,7576 }, - {7456,7455,7400 ,7578,7579,7580 }, {7754,7804,7753 ,7350,4634,3643 }, - {7320,7379,7319 ,7282,7430,7432 }, {7465,7464,7436 ,7581,4246,4245 }, - {7627,7626,7572 ,7582,7438,5124 }, {7313,7346,7312 ,7583,7584,4333 }, - {7488,7517,7459 ,7585,7484,7485 }, {3514,1934,7764 ,7569,4620,7570 }, - {937,975,974 ,5067,4266,5366 }, {8035,2275,8034 ,6675,3152,7586 }, - {7430,7429,7457 ,7587,7572,1078 }, {7209,7227,7246 ,7523,7359,3772 }, - {7429,7430,7457 ,7572,7587,1078 }, {7221,7263,7241 ,7545,627,4465 }, - {7345,7397,7372 ,7588,1186,4373 }, {7736,450,7691 ,6752,1653,4419 }, - {7582,7667,7637 ,7469,7589,7473 }, {7667,7668,7637 ,7589,7590,7473 }, - {7996,7995,7949 ,7328,4135,7591 }, {7377,7430,7429 ,7592,7587,7572 }, - {7318,7292,7352 ,7593,7594,7595 }, {7268,7292,7318 ,3773,7594,7593 }, - {7227,7269,7268 ,7359,7361,3773 }, {7246,7227,7268 ,3772,7359,3773 }, - {7269,7292,7268 ,7361,7594,3773 }, {7637,7636,7580 ,7473,7567,7596 }, - {7581,7637,7580 ,7394,7473,7596 }, {7230,7271,7229 ,7498,2554,2556 }, - {6346,7275,7253 ,4883,1854,1855 }, {7357,7356,7328 ,7597,7477,7552 }, - {7832,7882,7859 ,7448,7487,7598 }, {7646,7620,7675 ,5191,5033,5192 }, - {1934,2350,7764 ,4620,7599,7570 }, {7764,2350,7739 ,7570,7599,7571 }, - {3338,3530,4368 ,4147,7541,4148 }, {4445,3284,2871 ,3648,6720,3649 }, - {7422,7477,7449 ,1404,1403,7600 }, {7778,7731,7807 ,7601,7516,7602 }, - {7832,7859,7831 ,7448,7598,7603 }, {7731,7757,7807 ,7516,7446,7602 }, - {7357,7406,7356 ,7597,7538,7477 }, {7491,7490,7461 ,7604,7478,7441 }, - {7432,7491,7461 ,7554,7604,7441 }, {7549,7548,7490 ,7605,7557,7478 }, - {7610,7609,7548 ,7606,7558,7557 }, {7549,7610,7548 ,7605,7606,7557 }, - {7960,7959,7933 ,3505,7607,7507 }, {7516,7574,7540 ,5708,7406,5709 }, - {7689,7690,402 ,6444,6466,5349 }, {7225,7245,7207 ,1672,7506,7608 }, - {7225,7207,7194 ,1672,7608,1670 }, {7291,7315,7266 ,3774,7496,6769 }, - {7291,7349,7315 ,3774,7609,7496 }, {7163,7164,7171 ,5460,7521,4306 }, - {7174,7173,7150 ,7610,7264,7488 }, {7996,8036,7995 ,7328,7327,4135 }, - {7664,7663,7609 ,7611,7559,7558 }, {7610,7664,7609 ,7606,7611,7558 }, - {7806,7805,7755 ,7612,7520,7519 }, {6796,6898,8063 ,2617,1946,465 }, - {2350,7813,7739 ,7599,7613,7571 }, {7813,3338,7739 ,7613,4147,7571 }, - {4741,3634,3530 ,5508,5507,7541 }, {7808,7832,7831 ,7495,7448,7603 }, - {7806,7829,7805 ,7612,7614,7520 }, {7633,7632,7576 ,7458,7555,7615 }, - {3297,7734,7735 ,4203,7482,7561 }, {7710,3297,7735 ,7560,4203,7561 }, - {7783,7782,7734 ,7616,7563,7482 }, {3297,7783,7734 ,4203,7616,7482 }, - {7295,7354,7324 ,7562,7526,7617 }, {2265,7836,7782 ,2662,7564,7563 }, - {7316,7317,7350 ,5948,5947,7618 }, {7629,7657,7705 ,7399,7417,7349 }, - {7959,7960,2306 ,7607,3505,6405 }, {8039,4572,8038 ,7476,5949,4121 }, - {7401,7456,7400 ,7619,7578,7580 }, {7245,7265,7244 ,7506,7497,7620 }, - {7245,7244,7207 ,7506,7620,7608 }, {7132,7164,7163 ,7621,7521,5460 }, - {7148,7132,7163 ,6936,7621,5460 }, {7783,2265,7782 ,7616,2662,7563 }, - {7250,7295,7249 ,3418,7562,7622 }, {7849,7875,7797 ,7551,4118,3506 }, - {7932,7931,7906 ,7408,7508,7409 }, {156,3691,1934 ,5539,7623,4620 }, - {1934,3691,2350 ,4620,7623,7599 }, {7763,7838,3338 ,7624,7625,4147 }, - {7813,7763,3338 ,7613,7624,4147 }, {4911,4741,3530 ,7626,5508,7541 }, - {936,937,974 ,5234,5067,5366 }, {7289,7288,7242 ,7575,7577,7627 }, - {7829,7857,7805 ,7614,7533,7520 }, {2265,7886,7836 ,2662,6561,7564 }, - {2907,3791,2941 ,111,3739,109 }, {7668,7713,7637 ,7590,7489,7473 }, - {7604,7575,7541 ,7416,7475,7515 }, {7575,7604,7629 ,7475,7416,7399 }, - {7604,7630,7629 ,7416,7534,7399 }, {7630,7657,7629 ,7534,7417,7399 }, - {7118,7119,7145 ,7628,7529,7629 }, {7386,7412,7385 ,5512,3765,7630 }, - {7206,7243,7224 ,7631,7632,7491 }, {7206,7224,7190 ,7631,7491,7633 }, - {7191,7206,7190 ,7634,7631,7633 }, {7290,7289,7243 ,7635,7575,7632 }, - {7290,7348,7289 ,7635,4990,7575 }, {7538,7537,7485 ,2014,7543,7636 }, - {7654,7653,7601 ,7637,7638,7544 }, {8036,8037,4589 ,7327,4528,776 }, - {156,3740,3691 ,5539,7639,7623 }, {3691,3740,2350 ,7623,7639,7599 }, - {3740,7763,7813 ,7639,7624,7613 }, {2350,3740,7813 ,7599,7639,7613 }, - {7763,7122,7838 ,7624,7640,7625 }, {7838,7122,3338 ,7625,7640,4147 }, - {7122,8046,3530 ,7640,7641,7541 }, {3338,7122,3530 ,4147,7640,7541 }, - {3737,1350,791 ,7642,509,7643 }, {7957,7956,7931 ,7385,7403,7508 }, - {7748,7771,7722 ,7644,4336,7645 }, {7932,7957,7931 ,7408,7385,7508 }, - {7577,7633,7576 ,7525,7458,7615 }, {7995,8036,4588 ,4135,7327,775 }, - {7581,7580,7522 ,7394,7596,7395 }, {8041,2283,2281 ,7548,3687,3626 }, - {7905,7904,7855 ,7437,7513,6545 }, {7690,7689,7613 ,6466,6444,5106 }, - {7635,7690,7613 ,7646,6466,5106 }, {7193,7192,7162 ,7647,7648,7649 }, - {7147,7193,7162 ,6937,7647,7649 }, {7222,7263,7221 ,628,627,7545 }, - {7117,7116,7089 ,7650,7262,5608 }, {7090,7117,7089 ,4080,7650,5608 }, - {7143,7170,7190 ,7651,7652,7633 }, {7170,7191,7190 ,7652,7634,7633 }, - {7144,7170,7143 ,7653,7652,7651 }, {7131,7144,7143 ,7654,7653,7651 }, - {7130,7131,7143 ,6823,7654,7651 }, {7119,7118,7107 ,7529,7628,7494 }, - {7553,7579,7552 ,7655,7656,5546 }, {7553,7613,7579 ,7655,5106,7656 }, - {7193,7194,7192 ,7647,1670,7648 }, {7981,8004,7980 ,4252,7404,4253 }, - {7521,7580,7520 ,7657,7596,7658 }, {3740,1413,7763 ,7639,7659,7624 }, - {7122,3423,8046 ,7640,7660,7641 }, {3423,8046,3530 ,7660,7641,7541 }, - {8046,3423,3530 ,7641,7660,7541 }, {8046,3633,4911 ,7641,7661,7626 }, - {3530,8046,4911 ,7541,7641,7626 }, {6869,4741,4911 ,7662,5508,7626 }, - {3633,6869,4911 ,7661,7662,7626 }, {1350,3737,5571 ,509,7642,4616 }, - {6869,4956,4741 ,7662,5381,5508 }, {7162,7192,7170 ,7649,7648,7652 }, - {7749,7748,7723 ,7663,7644,7664 }, {7748,7799,7771 ,7644,4727,4336 }, - {2281,8054,8024 ,3626,7402,7511 }, {6658,5570,3121 ,7665,508,2076 }, - {7272,7293,7322 ,7666,6473,75 }, {7654,7703,7653 ,7637,7667,7638 }, - {7774,7773,7725 ,7419,7668,7420 }, {7207,7206,7191 ,7608,7631,7634 }, - {7346,7345,7312 ,7584,7588,4333 }, {3615,5700,5681 ,201,4501,2934 }, - {3530,3634,68 ,7541,5507,4087 }, {7522,7580,7521 ,7395,7596,7657 }, - {7148,7163,7147 ,6936,5460,6937 }, {7171,7195,7209 ,4306,7522,7523 }, - {7851,7900,7850 ,6625,6922,3769 }, {7248,7293,7272 ,73,6473,7666 }, - {7205,7204,7188 ,7669,5120,7503 }, {7602,7628,7601 ,5867,7528,7544 }, - {7428,7427,7373 ,7670,7536,4989 }, {7374,7428,7373 ,4988,7670,4989 }, - {7194,7207,7192 ,1670,7608,7648 }, {7465,7521,7464 ,7581,7657,4246 }, - {7854,7878,7827 ,7514,7411,7410 }, {7580,7553,7520 ,7596,7655,7658 }, - {7579,7613,7552 ,7656,5106,5546 }, {3740,156,4264 ,7639,5539,5540 }, - {1413,6477,7763 ,7659,7671,7624 }, {7763,6477,7122 ,7624,7671,7640 }, - {7122,6477,3423 ,7640,7671,7660 }, {3423,3633,8046 ,7660,7661,7641 }, - {5039,6869,3633 ,7672,7662,7661 }, {2733,4956,6869 ,5367,5381,7662 }, - {5039,2733,6869 ,7672,5367,7662 }, {5046,1081,2993 ,5232,3745,3744 }, - {7680,7679,7625 ,7673,7674,7139 }, {7118,7145,7144 ,7628,7629,7653 }, - {7651,7680,7625 ,7675,7673,7139 }, {7858,7907,7881 ,7368,7367,7480 }, - {8054,8053,8024 ,7402,7676,7511 }, {7511,7533,7510 ,6677,7039,1873 }, - {7692,7736,7691 ,7490,6752,4419 }, {7272,7322,7321 ,7666,75,7501 }, - {3843,935,3933 ,7677,5264,7678 }, {6552,2278,6784 ,7679,3495,7472 }, - {7325,7383,7382 ,7465,7512,7466 }, {2278,2243,2242 ,3495,1993,2551 }, - {5681,2453,5659 ,2934,42,3053 }, {7192,7207,7191 ,7648,7608,7634 }, - {7462,7494,7435 ,4310,4309,6244 }, {795,1511,1344 ,302,4921,300 }, - {1511,795,4377 ,4921,302,3090 }, {7426,7425,7399 ,7537,3995,7428 }, - {7347,7346,7313 ,7576,7584,7583 }, {7189,7205,7188 ,7493,7669,7503 }, - {7288,7347,7313 ,7577,7576,7583 }, {7131,7130,7105 ,7654,6823,5279 }, - {7313,7312,7263 ,7583,4333,627 }, {7680,7701,7679 ,7673,3515,7674 }, - {7224,7242,7223 ,7491,7627,7492 }, {7437,7496,7465 ,5938,7470,7581 }, - {7496,7522,7465 ,7470,7395,7581 }, {4897,7837,4264 ,5442,5967,5540 }, - {7837,3912,3740 ,5967,7680,7639 }, {3740,3912,1413 ,7639,7680,7659 }, - {6477,7669,3423 ,7671,7681,7660 }, {3423,7861,3633 ,7660,7682,7661 }, - {7385,7412,7384 ,7630,3765,7683 }, {8136,8063,8140 ,2449,465,2269 }, - {7553,7552,7495 ,7655,5546,4308 }, {7520,7553,7495 ,7658,7655,4308 }, - {7878,7929,7877 ,7411,7684,7549 }, {7626,7624,7570 ,7438,7439,5204 }, - {8060,3783,8037 ,7685,5311,4528 }, {8043,5557,5558 ,6397,756,2302 }, - {7205,7221,7204 ,7669,7545,5120 }, {3326,6346,6347 ,826,4883,451 }, - {8021,8051,8037 ,7365,6172,4528 }, {2280,2243,8053 ,3613,1993,7676 }, - {7571,7626,7570 ,5126,7438,5204 }, {2484,2485,2524 ,3499,2815,3395 }, - {6898,6870,2205 ,1946,2616,2874 }, {7599,7626,7571 ,5125,7438,5126 }, - {7513,7571,7512 ,3611,5126,5203 }, {7651,7625,7626 ,7675,7139,7438 }, - {7223,7222,7189 ,7492,628,7493 }, {2141,8101,8091 ,2015,383,2167 }, - {3862,7810,1494 ,550,552,1083 }, {14,302,223 ,1986,622,1985 }, - {91,14,223 ,1984,1986,1985 }, {7384,7359,7332 ,7683,7686,6685 }, - {7333,7384,7332 ,4353,7683,6685 }, {7411,7410,7359 ,3767,3766,7686 }, - {7384,7411,7359 ,7683,3767,7686 }, {7232,7248,7231 ,2124,73,6944 }, - {7691,7690,7666 ,4419,6466,7566 }, {7223,7264,7222 ,7492,626,628 }, - {7288,7263,7264 ,7577,627,626 }, {7798,7851,7825 ,4728,6625,3768 }, - {7850,7849,7824 ,3769,7551,3770 }, {7999,8022,7998 ,4583,4123,7209 }, - {7751,7750,7701 ,4332,7687,3515 }, {8040,8039,8001 ,7688,7476,7689 }, - {8002,8040,8001 ,3777,7688,7689 }, {1413,3912,6477 ,7659,7680,7671 }, - {7669,3863,7861 ,7681,7690,7682 }, {3423,7669,7861 ,7660,7681,7682 }, - {3863,3538,3633 ,7690,7691,7661 }, {7861,3863,3633 ,7682,7690,7661 }, - {3633,3538,5039 ,7661,7691,7672 }, {5039,4573,2733 ,7672,5314,5367 }, - {4303,85,166 ,3728,2504,3729 }, {7876,7927,7902 ,1725,1716,7692 }, - {7958,8007,7957 ,3855,3854,7385 }, {7706,7730,7657 ,7693,4413,7417 }, - {7955,8003,7979 ,4254,3776,3775 }, {7299,7275,6346 ,7694,1854,4883 }, - {7329,7328,7275 ,7695,7552,1854 }, {7299,7329,7275 ,7694,7695,1854 }, - {7329,7357,7328 ,7695,7597,7552 }, {7652,7651,7626 ,7696,7675,7438 }, - {8054,2280,8053 ,7402,3613,7676 }, {2326,2325,2280 ,3588,1994,3613 }, - {7730,7776,7729 ,4413,4412,7697 }, {8043,5558,5599 ,6397,2302,2213 }, - {4558,7918,4559 ,4209,5555,5237 }, {7754,7753,7704 ,7350,3643,3562 }, - {7399,7398,7346 ,7428,7429,7584 }, {7701,7700,7679 ,3515,7698,7674 }, - {7349,7375,7315 ,7609,7699,7496 }, {3402,1538,3400 ,3660,0,3659 }, - {1973,3862,1494 ,551,550,1083 }, {7597,7596,7534 ,7700,7701,7314 }, - {7534,7535,7481 ,7314,7517,7542 }, {7929,7977,7928 ,7684,1714,1724 }, - {7104,7117,7090 ,5280,7650,4080 }, {7091,7104,7090 ,4153,5280,4080 }, - {7656,7683,7603 ,7401,5267,5266 }, {7635,7613,7553 ,7646,5106,7655 }, - {7522,7521,7465 ,7395,7657,7581 }, {3895,3912,7837 ,4455,7680,5967 }, - {3912,7388,6477 ,7680,7702,7671 }, {7388,7669,6477 ,7702,7681,7671 }, - {3863,587,5039 ,7690,7703,7672 }, {3538,3863,5039 ,7691,7690,7672 }, - {587,3401,4573 ,7703,7704,5314 }, {5039,587,4573 ,7672,7703,5314 }, - {7462,7520,7495 ,4310,7658,4308 }, {7265,7290,7243 ,7497,7635,7632 }, - {7569,7597,7534 ,7705,7700,7314 }, {7407,7406,7357 ,7706,7538,7597 }, - {7407,7432,7406 ,7706,7554,7538 }, {7270,7292,7247 ,2555,7594,7360 }, - {1991,597,153 ,7707,791,663 }, {8105,8137,8107 ,3791,2174,658 }, - {7219,7261,7218 ,1529,1528,7708 }, {5523,8055,3121 ,7709,7710,2076 }, - {5644,3724,3615 ,4133,4132,201 }, {3724,5683,5682 ,4132,3939,3783 }, - {3615,3724,5682 ,201,4132,3783 }, {7346,7398,7345 ,7584,7429,7588 }, - {7464,7463,7412 ,4246,7711,3765 }, {7689,402,7712 ,6444,5349,5350 }, - {7130,7117,7104 ,6823,7650,5280 }, {7623,7677,7622 ,7427,7426,7460 }, - {7133,7165,7132 ,1989,7265,7621 }, {7144,7145,7170 ,7653,7629,7652 }, - {3634,4813,68 ,5507,4088,4087 }, {7334,3912,3895 ,7712,7680,4455 }, - {3376,7334,3895 ,4466,7712,4455 }, {7388,7584,7669 ,7702,7713,7681 }, - {7584,3863,7669 ,7713,7690,7681 }, {587,7583,3401 ,7703,7714,7704 }, - {7954,7953,7903 ,7715,7716,7717 }, {7904,7954,7903 ,7513,7715,7717 }, - {7139,7140,7161 ,1025,7415,2559 }, {7115,7116,7139 ,1024,7262,1025 }, - {7263,7262,7241 ,627,4335,4465 }, {7492,7490,7491 ,7718,7478,7604 }, - {5556,5555,5535 ,3511,6338,3512 }, {8023,8022,7999 ,4582,4123,4583 }, - {6431,5495,6522 ,7719,4134,7720 }, {3121,791,6658 ,2076,7643,7665 }, - {6658,791,1350 ,7665,7643,509 }, {1991,2654,597 ,7707,2773,791 }, - {1350,5570,6658 ,509,508,7665 }, {7715,3724,5495 ,7721,4132,4134 }, - {3338,4207,7739 ,4147,4247,7571 }, {7458,7516,7487 ,7550,5708,5707 }, - {7482,7481,7425 ,7722,7542,3995 }, {7722,7721,7676 ,7645,7454,7461 }, - {7677,7722,7676 ,7426,7645,7461 }, {7455,7514,7484 ,7579,3610,3612 }, - {7751,7801,7750 ,4332,1618,7687 }, {7244,7265,7243 ,7620,7497,7632 }, - {5026,4744,4859 ,4225,4424,5039 }, {2618,7334,3376 ,4454,7712,4466 }, - {7334,2618,3912 ,7712,4454,7680 }, {3912,2618,7388 ,7680,4454,7702 }, - {4546,3863,7584 ,7723,7690,7713 }, {4546,881,3863 ,7723,7724,7690 }, - {881,587,3863 ,7724,7703,7690 }, {7876,7902,7852 ,1725,7692,7412 }, - {8050,3783,4589 ,4529,5311,776 }, {382,1444,4207 ,3534,4035,4247 }, - {7721,7770,7720 ,7454,4272,4271 }, {7550,7549,7490 ,7725,7605,7478 }, - {7492,7550,7490 ,7718,7725,7478 }, {7824,7797,7747 ,3770,3506,331 }, - {7379,7404,7378 ,7430,7726,7431 }, {7116,7140,7139 ,7262,7415,1025 }, - {382,4207,1005 ,3534,4247,3535 }, {8059,8034,2275 ,4235,7586,3152 }, - {7689,7688,7613 ,6444,6443,5106 }, {7886,2296,2295 ,6561,2664,3160 }, - {3737,5495,5571 ,7642,4134,4616 }, {1218,3008,6891 ,3255,546,813 }, - {1517,1622,235 ,600,4238,598 }, {145,2694,2627 ,810,811,2776 }, - {3934,5683,3724 ,7727,3939,4132 }, {3934,3009,5683 ,7727,3747,3939 }, - {2419,2959,890 ,3353,4608,3283 }, {7647,7675,7696 ,4967,5192,7728 }, - {7495,7552,7494 ,4308,5546,4309 }, {7130,7143,7142 ,6823,7651,7729 }, - {8073,8085,2343 ,2567,2016,2685 }, {3693,4590,278 ,5347,1490,1489 }, - {7978,7977,7929 ,7730,1714,7684 }, {7876,7852,7853 ,1725,7412,1617 }, - {4819,3401,3139 ,5216,7704,5400 }, {6292,6282,6283 ,5403,6617,4298 }, - {2618,3682,7388 ,4454,7731,7702 }, {3682,7839,7388 ,7731,7732,7702 }, - {7388,7839,7584 ,7702,7732,7713 }, {881,6712,587 ,7724,7733,7703 }, - {6712,7911,7583 ,7733,7734,7714 }, {587,6712,7583 ,7703,7733,7714 }, - {7911,3139,3401 ,7734,5400,7704 }, {7583,7911,3401 ,7714,7734,7704 }, - {7771,7824,7770 ,4336,3770,4272 }, {7803,7854,7828 ,4636,7514,7735 }, - {7117,7142,7141 ,7650,7729,7414 }, {7485,7514,7456 ,7636,3610,7578 }, - {7849,7850,7824 ,7551,3769,3770 }, {7711,7710,7663 ,7736,7560,7559 }, - {7850,7849,7824 ,3769,7551,3770 }, {7664,7711,7663 ,7611,7736,7559 }, - {7675,7647,7696 ,5192,4967,7728 }, {5535,5519,5536 ,3512,6337,754 }, - {2296,7886,2264 ,2664,6561,4166 }, {818,2844,906 ,1018,1329,1019 }, - {3121,8055,791 ,2076,7710,7643 }, {3737,6522,5495 ,7642,7720,4134 }, - {4573,3401,4819 ,5314,7704,5216 }, {6169,6140,6141 ,2334,2333,2386 }, - {3934,5038,3009 ,7727,3628,3747 }, {4883,1388,4774 ,5538,6311,5332 }, - {7117,7130,7142 ,7650,6823,7729 }, {7375,7428,7374 ,7699,7670,4988 }, - {3693,278,3638 ,5347,1489,5950 }, {8001,8039,8023 ,7689,7476,4582 }, - {8001,8023,8000 ,7689,4582,4581 }, {7877,7928,7876 ,7549,1724,1725 }, - {5495,6431,7715 ,4134,7719,7721 }, {5080,7839,3682 ,7737,7732,7731 }, - {5080,7584,7839 ,7737,7713,7732 }, {5080,2307,7584 ,7737,7738,7713 }, - {7584,2307,4546 ,7713,7738,7723 }, {6712,3139,7911 ,7733,5400,7734 }, - {6797,8108,8123 ,2246,2287,2247 }, {7312,7345,7311 ,4333,7588,4334 }, - {7116,7117,7141 ,7262,7650,7414 }, {7825,7851,7798 ,3768,6625,4728 }, - {7933,7959,7908 ,7507,7607,7366 }, {3297,3296,7783 ,4203,4159,7616 }, - {7882,7933,7908 ,7487,7507,7366 }, {886,2379,213 ,3464,3238,3606 }, - {5519,7962,5536 ,6337,7739,754 }, {7962,5522,5536 ,7739,755,754 }, - {3702,4249,1185 ,1303,6136,6159 }, {5523,2708,8055 ,7709,7740,7710 }, - {2708,6437,791 ,7740,399,7643 }, {8055,2708,791 ,7710,7740,7643 }, - {3737,7785,6522 ,7642,7741,7720 }, {6431,1266,3724 ,7719,7742,4132 }, - {7715,6431,3724 ,7721,7719,4132 }, {1266,3739,3934 ,7742,7743,7727 }, - {3724,1266,3934 ,4132,7742,7727 }, {3702,1185,5520 ,1303,6159,1304 }, - {7725,7702,7703 ,7420,3513,7667 }, {7675,7719,7696 ,5192,6541,7728 }, - {7385,7384,7333 ,7630,7683,4353 }, {7625,7678,7623 ,7139,7425,7427 }, - {7373,7427,7399 ,4989,7536,7428 }, {7750,7772,7748 ,7687,7744,7644 }, - {3875,2618,3184 ,5845,4454,4453 }, {3875,3682,2618 ,5845,7731,4454 }, - {2307,3483,4546 ,7738,7745,7723 }, {3483,881,4546 ,7745,7724,7723 }, - {2277,3693,4572 ,3522,5347,5949 }, {7997,7996,7950 ,7210,7328,7211 }, - {2486,2527,2526 ,2814,2637,2636 }, {7803,7828,7775 ,4636,7735,7509 }, - {7376,7351,7402 ,7746,6587,6589 }, {3296,2265,7783 ,4159,2662,7616 }, - {7882,7908,7859 ,7487,7366,7598 }, {2264,7886,2265 ,4166,6561,2662 }, - {7912,5519,5493 ,7747,6337,6336 }, {5519,7912,7962 ,6337,7747,7739 }, - {7962,7984,5522 ,7739,7748,755 }, {2708,3914,791 ,7740,7749,7643 }, - {6437,2708,791 ,399,7740,7643 }, {3914,3790,3737 ,7749,399,7642 }, - {791,3914,3737 ,7643,7749,7642 }, {7785,7360,6522 ,7741,7750,7720 }, - {6522,7360,6431 ,7720,7750,7719 }, {3739,3910,3934 ,7743,7751,7727 }, - {3934,3910,5038 ,7727,7751,3628 }, {7597,7622,7596 ,7700,7460,7701 }, - {7625,7623,7624 ,7139,7427,7439 }, {7190,7189,7142 ,7633,7493,7729 }, - {7173,7210,7172 ,7264,7499,7405 }, {8039,8038,8023 ,7476,4121,4582 }, - {7540,7628,7602 ,5709,7528,5867 }, {7765,5080,3682 ,7752,7737,7731 }, - {3875,7765,3682 ,5845,7752,7731 }, {3483,1526,6712 ,7745,7753,7733 }, - {881,3483,6712 ,7724,7745,7733 }, {1526,3171,6712 ,7753,7754,7733 }, - {3171,3139,6712 ,7754,5400,7733 }, {3171,4846,3139 ,7754,4237,5400 }, - {7877,7876,7826 ,7549,1725,1616 }, {3295,3296,177 ,7565,4159,3618 }, - {3297,3313,3296 ,4203,4160,4159 }, {7912,7963,7962 ,7747,7755,7739 }, - {7962,7963,7984 ,7739,7755,7748 }, {7963,7985,5522 ,7755,7756,755 }, - {7984,7963,5522 ,7748,7755,755 }, {5522,7985,5523 ,755,7756,7709 }, - {3914,7467,3737 ,7749,7757,7642 }, {3790,3914,3737 ,399,7749,7642 }, - {3737,7467,7785 ,7642,7757,7741 }, {7360,1266,6431 ,7750,7742,7719 }, - {3910,3739,1266 ,7751,7743,7742 }, {3567,5038,3910 ,7758,3628,7751 }, - {3614,4839,5038 ,7759,5484,3628 }, {3567,3614,5038 ,7758,7759,3628 }, - {3614,5092,4839 ,7759,3953,5484 }, {7701,7724,7700 ,3515,7760,7698 }, - {7143,7190,7142 ,7651,7633,7729 }, {7288,7313,7263 ,7577,7583,627 }, - {7727,7726,7681 ,3563,7418,7459 }, {7682,7727,7681 ,3564,3563,7459 }, - {7580,7636,7553 ,7596,7567,7655 }, {7636,7666,7635 ,7567,7566,7646 }, - {7761,7765,3875 ,7761,7752,5845 }, {7761,5080,7765 ,7761,7737,7752 }, - {3639,2307,5080 ,7762,7738,7737 }, {7761,3639,5080 ,7761,7762,7737 }, - {7936,7935,7884 ,5528,5527,7391 }, {7777,7778,7807 ,4411,7601,7602 }, - {7607,7660,7606 ,7455,7381,7457 }, {5493,7888,7912 ,6336,7763,7747 }, - {5214,5215,5235 ,6272,6313,6385 }, {7985,8044,2708 ,7756,7764,7740 }, - {5523,7985,2708 ,7709,7756,7740 }, {3914,3188,7467 ,7749,7765,7757 }, - {7467,6482,7785 ,7757,7766,7741 }, {7785,6482,7360 ,7741,7766,7750 }, - {7360,6482,1266 ,7750,7766,7742 }, {4020,3910,1266 ,7767,7751,7742 }, - {2097,2165,2164 ,846,1041,3583 }, {7426,7482,7425 ,7537,7722,3995 }, - {7773,7802,7751 ,7668,6566,4332 }, {7573,7540,7602 ,2013,5709,5867 }, - {7151,7150,3293 ,1202,7488,1988 }, {7731,7778,7777 ,7516,7601,4411 }, - {7756,7731,7777 ,7768,7516,4411 }, {7685,7731,7756 ,7518,7516,7768 }, - {7212,7211,7173 ,7208,7500,7264 }, {6610,3483,2307 ,7769,7745,7738 }, - {3639,6610,2307 ,7762,7769,7738 }, {3483,6610,1526 ,7745,7769,7753 }, - {8067,8091,8083 ,2168,2167,2103 }, {7320,7319,7292 ,7282,7432,7594 }, - {7515,7540,7573 ,1079,5709,2013 }, {7830,7829,7806 ,7770,7614,7612 }, - {7636,7635,7553 ,7567,7646,7655 }, {7950,7996,7949 ,7211,7328,7591 }, - {7481,7480,7454 ,7542,7463,3996 }, {7397,7424,7371 ,1186,1188,3748 }, - {7888,7938,7912 ,7763,7771,7747 }, {7912,7938,7963 ,7747,7771,7755 }, - {7985,8027,8044 ,7756,7772,7764 }, {8044,8027,2708 ,7764,7772,7740 }, - {8027,3689,3914 ,7772,7773,7749 }, {2708,8027,3914 ,7740,7772,7749 }, - {6482,1939,1266 ,7766,7774,7742 }, {1939,7862,1266 ,7774,7775,7742 }, - {1266,7862,4020 ,7742,7775,7767 }, {4020,3567,3910 ,7767,7758,7751 }, - {3567,5092,3614 ,7758,3953,7759 }, {7600,7627,7572 ,7556,7582,5124 }, - {7145,7146,7162 ,7629,7530,7649 }, {7146,7147,7162 ,7530,6937,7649 }, - {7773,7751,7752 ,7668,4332,3514 }, {402,448,7759 ,5349,1172,399 }, - {7270,7320,7292 ,2555,7282,7594 }, {7403,7429,7457 ,6588,7572,1078 }, - {7174,7212,7173 ,7610,7208,7264 }, {7935,7934,7883 ,5527,7486,7452 }, - {7686,7685,7632 ,7553,7518,7555 }, {6483,7761,3875 ,3584,7761,5845 }, - {2096,6483,3875 ,788,3584,5845 }, {6610,3767,1526 ,7769,7776,7753 }, - {3767,3171,1526 ,7776,7754,7753 }, {3767,6412,4846 ,7776,7777,4237 }, - {3171,3767,4846 ,7754,7776,4237 }, {235,1622,4846 ,598,4238,4237 }, - {6412,235,4846 ,7777,598,4237 }, {1993,4075,342 ,4544,4521,4542 }, - {3405,3456,8086 ,1798,1145,4823 }, {7272,7271,7230 ,7666,2554,7498 }, - {7956,7981,7931 ,7403,4252,7508 }, {3136,2654,2548 ,2783,2773,2813 }, - {5479,7840,5493 ,5387,7778,6336 }, {2287,8007,99 ,3735,3854,3743 }, - {7840,7888,5493 ,7778,7763,6336 }, {7963,7938,7985 ,7755,7771,7756 }, - {8027,3723,3689 ,7772,7779,7773 }, {3723,3821,3914 ,7779,7780,7749 }, - {3689,3723,3914 ,7773,7779,7749 }, {3914,3821,3188 ,7749,7780,7765 }, - {3188,7787,7467 ,7765,7781,7757 }, {7467,7787,6482 ,7757,7781,7766 }, - {1939,3374,7862 ,7774,7782,7775 }, {3374,3586,4020 ,7782,7783,7767 }, - {7862,3374,4020 ,7775,7782,7767 }, {3586,3722,4020 ,7783,7784,7767 }, - {3823,3567,4020 ,7785,7758,7767 }, {3722,3823,4020 ,7784,7785,7767 }, - {3823,5092,3567 ,7785,3953,7758 }, {7189,7188,7141 ,7493,7503,7414 }, - {7242,7264,7223 ,7627,626,7492 }, {7658,7706,7657 ,7505,7693,7417 }, - {7554,7523,3351 ,7786,7393,1444 }, {7128,7127,7114 ,5391,7245,5392 }, - {7910,6483,2096 ,3582,3584,788 }, {2207,3639,7761 ,7787,7762,7761 }, - {6483,2207,7761 ,3584,7787,7761 }, {8086,3456,5771 ,4823,1145,2868 }, - {7352,7377,7403 ,7595,7592,6588 }, {7212,7230,7211 ,7208,7498,7500 }, - {7614,7582,7523 ,7788,7469,7393 }, {7554,7614,7523 ,7786,7788,7393 }, - {7276,6346,3326 ,3696,4883,826 }, {4555,4582,7716 ,5496,5478,5549 }, - {7840,7889,7888 ,7778,7789,7763 }, {7889,7913,7888 ,7789,7790,7763 }, - {7913,7939,7938 ,7790,7791,7771 }, {7888,7913,7938 ,7763,7790,7771 }, - {7939,7964,7938 ,7791,7792,7771 }, {7938,7964,7985 ,7771,7792,7756 }, - {7964,8010,7985 ,7792,7793,7756 }, {7985,8010,8027 ,7756,7793,7772 }, - {3723,1123,3821 ,7779,7794,7780 }, {3821,7784,7787 ,7780,7795,7781 }, - {3188,3821,7787 ,7765,7780,7781 }, {7787,7784,6482 ,7781,7795,7766 }, - {7784,1939,6482 ,7795,7774,7766 }, {3766,5092,3823 ,3954,3953,7785 }, - {7556,3766,3823 ,5116,3954,7785 }, {8133,8131,8107 ,2131,2307,658 }, - {7242,7288,7264 ,7627,7577,626 }, {8022,8021,7998 ,4123,7365,7209 }, - {7351,7352,7403 ,6587,7595,6588 }, {7377,7429,7403 ,7592,7572,6588 }, - {7276,7299,6346 ,3696,7694,4883 }, {7330,7329,7299 ,7796,7695,7694 }, - {7358,7357,7329 ,7797,7597,7695 }, {7330,7358,7329 ,7796,7797,7695 }, - {1973,1659,4685 ,551,5132,4894 }, {3896,6610,3639 ,7798,7769,7762 }, - {2207,3896,3639 ,7787,7798,7762 }, {3896,3767,6610 ,7798,7776,7769 }, - {7317,7318,7351 ,5947,7593,6587 }, {7250,7249,7232 ,3418,7622,2124 }, - {7233,7250,7232 ,2125,3418,2124 }, {7640,7641,4577 ,5351,5356,5352 }, - {6320,7439,7500 ,190,7297,326 }, {7500,7524,4595 ,326,1630,5289 }, - {4557,4558,4584 ,5310,4209,5308 }, {7433,7432,7407 ,7799,7554,7706 }, - {3766,4922,4585 ,3954,5256,3955 }, {5479,7814,7840 ,5387,6988,7778 }, - {7863,7864,7889 ,7800,7801,7789 }, {7840,7863,7889 ,7778,7800,7789 }, - {7864,7914,7913 ,7801,7802,7790 }, {7889,7864,7913 ,7789,7801,7790 }, - {7913,7914,7939 ,7790,7802,7791 }, {7964,7986,8010 ,7792,7803,7793 }, - {7986,8010,8027 ,7803,7793,7772 }, {8010,7986,8027 ,7793,7803,7772 }, - {8010,8045,3723 ,7793,7804,7779 }, {8027,8010,3723 ,7772,7793,7779 }, - {1123,7784,3821 ,7794,7795,7780 }, {7784,5023,1939 ,7795,7805,7774 }, - {5023,3374,1939 ,7805,7782,7774 }, {3374,3722,3586 ,7782,7784,7783 }, - {7556,3823,3722 ,5116,7785,7784 }, {3121,5522,5523 ,2076,755,7709 }, - {7653,7702,7652 ,7638,3513,7696 }, {7120,7119,7093 ,6938,7529,4318 }, - {7272,7321,7271 ,7666,7501,2554 }, {7208,7209,7226 ,1671,7523,6686 }, - {7433,7434,7432 ,7799,7806,7554 }, {7492,7491,7432 ,7718,7604,7554 }, - {7434,7492,7432 ,7806,7718,7554 }, {3830,3976,5483 ,5882,919,171 }, - {4961,2207,6483 ,2905,7787,3584 }, {6802,3767,3896 ,7807,7776,7798 }, - {6802,3842,3767 ,7807,7808,7776 }, {3767,3842,6412 ,7776,7808,7777 }, - {6412,3842,235 ,7777,7808,598 }, {2485,2486,2526 ,2815,2814,2636 }, - {7243,7242,7224 ,7632,7627,7491 }, {7318,7352,7351 ,7593,7595,6587 }, - {7488,7541,7517 ,7585,7515,7484 }, {7439,7468,7500 ,7297,7809,326 }, - {7468,7524,7500 ,7809,1630,326 }, {99,8007,2306 ,3743,3854,6405 }, - {7611,7610,7549 ,7810,7606,7605 }, {7550,7611,7549 ,7725,7810,7605 }, - {6706,7841,7840 ,5389,7811,7778 }, {7814,6706,7840 ,6988,5389,7778 }, - {7841,7864,7863 ,7811,7801,7800 }, {7840,7841,7863 ,7778,7811,7800 }, - {7939,7914,7964 ,7791,7802,7792 }, {8010,7986,8045 ,7793,7803,7804 }, - {8045,61,1123 ,7804,7812,7794 }, {3723,8045,1123 ,7779,7804,7794 }, - {1123,3512,7784 ,7794,7813,7795 }, {7784,7176,5023 ,7795,7814,7805 }, - {5023,3827,3374 ,7805,7815,7782 }, {3827,7817,3722 ,7815,7816,7784 }, - {3374,3827,3722 ,7782,7815,7784 }, {8009,7556,3722 ,7817,5116,7784 }, - {8022,8052,8021 ,4123,4122,7365 }, {8052,8051,8021 ,4122,6172,7365 }, - {7776,7806,7755 ,4412,7612,7519 }, {7209,7246,7225 ,7523,3772,1672 }, - {7226,7209,7225 ,6686,7523,1672 }, {7729,7755,7705 ,7697,7519,7349 }, - {7728,7729,7705 ,7818,7697,7349 }, {7248,7294,7323 ,73,7819,74 }, - {7611,7664,7610 ,7810,7611,7606 }, {3352,3378,3351 ,2724,1442,1444 }, - {3859,2207,4961 ,7820,7787,2905 }, {3859,3896,2207 ,7820,7798,7787 }, - {7268,7318,7317 ,3773,7593,5947 }, {6143,7057,6107 ,4394,7207,7232 }, - {6304,7439,3533 ,7233,7297,192 }, {7525,7524,7468 ,7821,1630,7809 }, - {7525,4575,7524 ,7821,3128,1630 }, {4589,3783,4638 ,776,5311,5154 }, - {2333,7711,7664 ,3537,7736,7611 }, {2333,7710,7711 ,3537,7560,7736 }, - {7841,7865,7864 ,7811,7822,7801 }, {7914,7940,7964 ,7802,7823,7792 }, - {7940,7987,7986 ,7823,7824,7803 }, {7964,7940,7986 ,7792,7823,7803 }, - {7986,8028,8045 ,7803,7825,7804 }, {61,1097,3512 ,7812,7826,7813 }, - {1123,61,3512 ,7794,7812,7813 }, {3512,1097,7784 ,7813,7826,7795 }, - {7176,6683,5023 ,7814,7827,7805 }, {5023,6683,3827 ,7805,7827,7815 }, - {3827,3692,7817 ,7815,7828,7816 }, {7817,7762,3722 ,7816,7829,7784 }, - {7762,8009,3722 ,7829,7817,7784 }, {6760,7556,8009 ,5117,5116,7817 }, - {7762,6760,8009 ,7829,5117,7817 }, {5522,3121,5558 ,755,2076,2302 }, - {7625,7624,7598 ,7139,7439,7140 }, {7600,7653,7627 ,7556,7638,7582 }, - {7653,7652,7627 ,7638,7696,7582 }, {7349,7401,7375 ,7609,7619,7699 }, - {7459,7458,7404 ,7485,7550,7726 }, {3314,3297,7710 ,3575,4203,7560 }, - {2333,3314,7710 ,3537,3575,7560 }, {1274,1316,1315 ,1687,1657,1627 }, - {2548,3896,3859 ,2813,7798,7820 }, {2654,6802,3896 ,2773,7807,7798 }, - {2548,2654,3896 ,2813,2773,7798 }, {7171,7209,7208 ,4306,7523,1671 }, - {7628,7681,7654 ,7528,7459,7637 }, {5112,6120,5113 ,6021,142,141 }, - {7057,6143,5936 ,7207,4394,4393 }, {6083,6304,6303 ,3989,7233,7261 }, - {7413,7439,6304 ,7830,7297,7233 }, {7469,7468,7439 ,7831,7809,7297 }, - {7413,7469,7439 ,7830,7831,7297 }, {7525,7585,4575 ,7821,6805,3128 }, - {7555,3351,3377 ,7832,1444,1443 }, {177,2265,3295 ,3618,2662,7565 }, - {6705,7815,6706 ,4158,5146,5389 }, {6706,7815,7841 ,5389,5146,7811 }, - {7865,7890,7864 ,7822,7833,7801 }, {7864,7890,7914 ,7801,7833,7802 }, - {7914,7890,7940 ,7802,7833,7823 }, {7986,7987,8028 ,7803,7824,7825 }, - {8028,8056,8045 ,7825,7834,7804 }, {8045,8056,61 ,7804,7834,7812 }, - {1097,7301,7784 ,7826,7835,7795 }, {7784,7301,7176 ,7795,7835,7814 }, - {7176,7301,6683 ,7814,7835,7827 }, {448,401,402 ,1172,1387,5349 }, - {7347,7399,7346 ,7576,7428,7584 }, {7514,7572,7513 ,3610,5124,3611 }, - {7657,7728,7705 ,7417,7818,7349 }, {7780,7834,7809 ,7389,7390,7449 }, - {7628,7654,7601 ,7528,7637,7544 }, {2834,3859,4961 ,2860,7820,2905 }, - {2834,2548,3859 ,2860,2813,7820 }, {1991,3842,6802 ,7707,7808,7807 }, - {2654,1991,6802 ,2773,7707,7807 }, {3842,1991,153 ,7808,7707,663 }, - {7834,7833,7809 ,7390,7392,7449 }, {7255,6167,6234 ,7238,5974,5973 }, - {7361,6304,6083 ,7836,7233,3989 }, {7361,7413,6304 ,7836,7830,7233 }, - {7469,7525,7468 ,7831,7821,7809 }, {7641,7640,7585 ,5356,5351,6805 }, - {7668,7667,7582 ,7590,7589,7469 }, {2285,2330,2329 ,3701,3693,3680 }, - {2165,2097,2143 ,1041,846,953 }, {7815,7842,7841 ,5146,7837,7811 }, - {7841,7842,7865 ,7811,7837,7822 }, {7890,7915,7940 ,7833,7838,7823 }, - {7987,8011,8028 ,7824,7839,7825 }, {8011,3003,8056 ,7839,7840,7834 }, - {8028,8011,8056 ,7825,7839,7834 }, {8056,3003,61 ,7834,7840,7812 }, - {7301,3416,6683 ,7835,7841,7827 }, {6683,3416,3827 ,7827,7841,7815 }, - {3416,3894,3827 ,7841,7842,7815 }, {3827,3894,3692 ,7815,7842,7828 }, - {3692,7762,7817 ,7828,7829,7816 }, {7760,6760,7762 ,7843,5117,7829 }, - {7760,2814,6760 ,7843,5255,5117 }, {2049,2096,2048 ,758,788,5461 }, - {6760,2814,4636 ,5117,5255,5118 }, {7902,7952,7901 ,7692,5475,7413 }, - {7119,7120,7147 ,7529,6938,6937 }, {7292,7319,7352 ,7594,7432,7595 }, - {7703,7702,7653 ,7667,3513,7638 }, {2834,2616,2548 ,2860,2812,2813 }, - {7625,7679,7624 ,7139,7674,7439 }, {7414,7413,7361 ,7844,7830,7836 }, - {7526,7525,7469 ,7845,7821,7831 }, {7526,7585,7525 ,7845,6805,7821 }, - {4583,4556,7788 ,5498,5497,7313 }, {7865,7842,7890 ,7822,7837,7833 }, - {7915,7965,7940 ,7838,7846,7823 }, {7940,7965,7987 ,7823,7846,7824 }, - {3301,1097,61 ,7847,7826,7812 }, {3003,3301,61 ,7840,7847,7812 }, - {1097,7811,7301 ,7826,7848,7835 }, {5035,7762,3692 ,7849,7829,7828 }, - {3894,5035,3692 ,7842,7849,7828 }, {5035,6846,7762 ,7849,7850,7829 }, - {401,2334,7712 ,1387,7851,5350 }, {7749,7750,7748 ,7663,7687,7644 }, - {7121,7132,7120 ,7852,7621,6938 }, {7132,7148,7120 ,7621,6936,6938 }, - {7829,7880,7857 ,7614,7531,7533 }, {7438,7437,3321 ,7351,5938,2461 }, - {7345,7372,7311 ,7588,4373,4334 }, {2484,7713,7668 ,3499,7489,7590 }, - {7949,7974,7925 ,7591,4171,7294 }, {6278,7106,7092 ,3967,7573,3968 }, - {7243,7289,7242 ,7632,7575,7627 }, {7596,7595,7533 ,7701,4019,7039 }, - {7140,7141,7161 ,7415,7414,2559 }, {7770,7824,7747 ,4272,3770,331 }, - {7291,7316,7350 ,3774,5948,7618 }, {7336,6083,6014 ,7853,3989,6592 }, - {7336,7361,6083 ,7853,7836,3989 }, {7470,7469,7413 ,7854,7831,7830 }, - {7414,7470,7413 ,7844,7854,7830 }, {7557,7585,7526 ,7855,6805,7845 }, - {7557,7616,7585 ,7855,7856,6805 }, {7616,7641,7585 ,7856,5356,6805 }, - {7658,7657,7605 ,7505,7417,5239 }, {7300,7299,7276 ,7857,7694,3696 }, - {3306,7300,7276 ,3695,7857,3696 }, {7868,4557,7818 ,7858,5310,5309 }, - {2281,2282,2327 ,3626,3663,3627 }, {6705,5439,7815 ,4158,4157,5146 }, - {7842,7866,7890 ,7837,7859,7833 }, {7866,7915,7890 ,7859,7838,7833 }, - {7965,7988,8011 ,7846,7860,7839 }, {7987,7965,8011 ,7824,7846,7839 }, - {3301,7812,7811 ,7847,7861,7848 }, {1097,3301,7811 ,7826,7847,7848 }, - {7811,7812,7301 ,7848,7861,7835 }, {6745,7762,6846 ,7862,7829,7850 }, - {7762,6745,7760 ,7829,7862,7843 }, {6745,3789,2814 ,7862,7863,5255 }, - {7760,6745,2814 ,7843,7862,5255 }, {3789,1973,4906 ,7863,551,4895 }, - {2814,3789,4906 ,5255,7863,4895 }, {7750,7800,7772 ,7687,7568,7744 }, - {7194,7193,7147 ,1670,7647,6937 }, {8006,8005,7956 ,7407,7527,7403 }, - {7300,7330,7299 ,7857,7796,7694 }, {7408,7407,7357 ,7864,7706,7597 }, - {7358,7408,7357 ,7797,7864,7597 }, {7434,7433,7407 ,7806,7799,7706 }, - {7408,7434,7407 ,7864,7806,7706 }, {7493,7492,7434 ,7865,7718,7806 }, - {7493,7550,7492 ,7865,7725,7718 }, {7362,7361,7336 ,7866,7836,7853 }, - {7362,7414,7361 ,7866,7844,7836 }, {7470,7526,7469 ,7854,7845,7831 }, - {7616,7671,7641 ,7856,7867,5356 }, {7641,7671,4579 ,5356,7867,5355 }, - {7815,5440,7842 ,5146,5147,7837 }, {7842,5440,5410 ,7837,5147,4285 }, - {7867,7916,7915 ,7868,7869,7838 }, {7866,7867,7915 ,7859,7868,7838 }, - {7916,7941,7915 ,7869,7870,7838 }, {7915,7941,7965 ,7838,7870,7846 }, - {7988,8029,3003 ,7860,7871,7840 }, {8011,7988,3003 ,7839,7860,7840 }, - {3003,4030,3301 ,7840,7872,7847 }, {7812,8026,7301 ,7861,7873,7835 }, - {8026,3991,3416 ,7873,7874,7841 }, {7301,8026,3416 ,7835,7873,7841 }, - {3991,3481,3416 ,7874,7875,7841 }, {3481,8042,3894 ,7875,399,7842 }, - {3416,3481,3894 ,7841,7875,7842 }, {3789,1852,1973 ,7863,7876,551 }, - {8036,4589,4588 ,7327,776,775 }, {7400,7455,7428 ,7580,7579,7670 }, - {7121,7120,7094 ,7852,6938,4317 }, {7957,8006,7956 ,7385,7407,7403 }, - {7859,7908,7858 ,7598,7366,7368 }, {7611,7687,7664 ,7810,7877,7611 }, - {7687,2333,7664 ,7877,3537,7611 }, {7302,6014,6259 ,7878,6592,6718 }, - {7302,7336,6014 ,7878,7853,6592 }, {7415,7414,7362 ,7879,7844,7866 }, - {7501,7526,7470 ,7880,7845,7854 }, {7558,7557,7526 ,7881,7855,7845 }, - {7501,7558,7526 ,7880,7881,7845 }, {7672,7671,7616 ,5450,7867,7856 }, - {7671,7672,4579 ,7867,5450,5355 }, {6531,8134,8120 ,2280,3263,906 }, - {7676,7720,7699 ,7461,4271,3951 }, {5410,7867,7866 ,4285,7868,7859 }, - {7842,5410,7866 ,7837,4285,7859 }, {7916,7942,7941 ,7869,7882,7870 }, - {7942,7966,7965 ,7882,7883,7846 }, {7941,7942,7965 ,7870,7882,7846 }, - {7966,7988,7965 ,7883,7860,7846 }, {8029,4622,4030 ,7871,7884,7872 }, - {3003,8029,4030 ,7840,7871,7872 }, {4030,4622,3301 ,7872,7884,7847 }, - {3481,6294,3894 ,7875,7885,7842 }, {8042,3481,3894 ,399,7875,7842 }, - {6294,7670,5035 ,7885,7886,7849 }, {3894,6294,5035 ,7842,7885,7849 }, - {936,3933,935 ,5234,7678,5264 }, {7400,7428,7375 ,7580,7670,7699 }, - {8006,2285,8005 ,7407,3701,7527 }, {7685,7756,7730 ,7518,7768,4413 }, - {7708,7707,7660 ,7388,7382,7381 }, {7857,7879,7856 ,7533,7532,4635 }, - {7884,7883,7833 ,7391,7452,7392 }, {7363,7362,7336 ,7887,7866,7853 }, - {7302,7363,7336 ,7878,7887,7853 }, {7440,7470,7414 ,7888,7854,7844 }, - {7415,7440,7414 ,7879,7888,7844 }, {7440,7501,7470 ,7888,7880,7854 }, - {7617,7616,7557 ,7889,7856,7855 }, {7558,7617,7557 ,7881,7889,7855 }, - {7685,7706,7658 ,7518,7693,7505 }, {7867,5410,5411 ,7868,4285,4284 }, - {7555,7554,3351 ,7832,7786,1444 }, {7949,7995,7974 ,7591,4135,4171 }, - {4264,7837,3740 ,5540,5967,7639 }, {7942,7989,7988 ,7882,7890,7860 }, - {7966,7942,7988 ,7883,7882,7860 }, {2950,3301,4622 ,7891,7847,7884 }, - {2950,7812,3301 ,7891,7861,7847 }, {7812,2950,8026 ,7861,7891,7873 }, - {3481,7670,6294 ,7875,7886,7885 }, {7670,6604,6846 ,7886,7892,7850 }, - {5035,7670,6846 ,7849,7886,7850 }, {6604,5042,6745 ,7892,7893,7862 }, - {6846,6604,6745 ,7850,7892,7862 }, {5042,7737,3789 ,7893,7894,7863 }, - {6745,5042,3789 ,7862,7893,7863 }, {7737,7080,1852 ,7894,7895,7876 }, - {3789,7737,1852 ,7863,7894,7876 }, {7080,7810,1973 ,7895,552,551 }, - {1852,7080,1973 ,7876,7895,551 }, {8004,8025,7980 ,7404,7510,4253 }, - {7685,7658,7631 ,7518,7505,7504 }, {7352,7319,7377 ,7595,7432,7592 }, - {7622,7650,7595 ,7460,7237,4019 }, {7730,7756,7777 ,4413,7768,4411 }, - {7295,7324,7323 ,7562,7617,74 }, {7706,7685,7730 ,7693,7518,4413 }, - {7294,7295,7323 ,7819,7562,74 }, {6234,6167,6259 ,5973,5974,6718 }, - {6167,7302,6259 ,5974,7878,6718 }, {7363,7415,7362 ,7887,7879,7866 }, - {7502,7501,7440 ,7896,7880,7888 }, {7502,7558,7501 ,7896,7881,7880 }, - {7617,7672,7616 ,7889,5450,7856 }, {1210,5017,4144 ,4739,5092,4761 }, - {4562,8057,1381 ,5018,7897,5193 }, {4839,4730,5038 ,5484,5438,3628 }, - {7867,5418,7916 ,7868,3471,7869 }, {7916,5418,7942 ,7869,3471,7882 }, - {7989,8012,7988 ,7890,7898,7860 }, {8030,8029,7988 ,7899,7871,7860 }, - {8012,8030,7988 ,7898,7899,7860 }, {8030,4622,8029 ,7899,7884,7871 }, - {2950,7466,8026 ,7891,7900,7873 }, {7466,3991,8026 ,7900,7874,7873 }, - {1312,3481,3991 ,7901,7875,7874 }, {7466,1312,3991 ,7900,7901,7874 }, - {3481,3937,7670 ,7875,7902,7886 }, {5042,7063,7737 ,7893,7903,7894 }, - {7737,7063,7080 ,7894,7903,7895 }, {7928,7977,7927 ,1724,1714,1716 }, - {7225,7267,7245 ,1672,4331,7506 }, {7958,7957,7932 ,3855,7385,7408 }, - {7632,7685,7631 ,7555,7518,7504 }, {7615,7614,7554 ,2816,7788,7786 }, - {7555,7615,7554 ,7832,2816,7786 }, {7615,7582,7614 ,2816,7469,7788 }, - {2485,7668,7582 ,2815,7590,7469 }, {7615,2485,7582 ,2816,2815,7469 }, - {8051,8060,8037 ,6172,7685,4528 }, {6319,6304,3533 ,6789,7233,192 }, - {7666,7690,7635 ,7566,6466,7646 }, {2485,2484,7668 ,2815,3499,7590 }, - {7303,7302,6167 ,7904,7878,5974 }, {7389,7415,7363 ,7905,7879,7887 }, - {7441,7440,7415 ,7906,7888,7879 }, {7389,7441,7415 ,7905,7906,7879 }, - {7559,7558,7502 ,7907,7881,7896 }, {7642,7672,7617 ,7908,5450,7889 }, - {7642,4555,7672 ,7908,5496,5450 }, {4555,7716,7672 ,5496,5549,5450 }, - {2484,2451,7713 ,3499,2102,7489 }, {5411,5418,7867 ,4284,3471,7868 }, - {7315,7375,7314 ,7496,7699,7909 }, {5418,7917,7942 ,3471,4920,7882 }, - {8012,7989,8030 ,7898,7890,7899 }, {3843,4622,8030 ,7677,7884,7899 }, - {7740,3937,3481 ,7910,7902,7875 }, {1312,7740,3481 ,7901,7910,7875 }, - {3937,7740,7670 ,7902,7910,7886 }, {7810,3862,1494 ,552,550,1083 }, - {5598,8043,5599 ,2216,6397,2213 }, {6706,6741,6705 ,5389,5388,4158 }, - {7267,7266,7245 ,4331,6769,7506 }, {7295,7294,7249 ,7562,7819,7622 }, - {3305,7300,3306 ,879,7857,3695 }, {7331,7330,7300 ,7911,7796,7857 }, - {7331,7358,7330 ,7911,7797,7796 }, {7824,7849,7797 ,3770,7551,3506 }, - {7337,7363,7302 ,7912,7887,7878 }, {7303,7337,7302 ,7904,7912,7878 }, - {7337,7389,7363 ,7912,7905,7887 }, {7441,7502,7440 ,7906,7896,7888 }, - {7586,7617,7558 ,7913,7889,7881 }, {7559,7586,7558 ,7907,7913,7881 }, - {7586,7642,7617 ,7913,7908,7889 }, {7409,7408,7358 ,6245,7864,7797 }, - {7435,7434,7408 ,6244,7806,7864 }, {7409,7435,7408 ,6245,6244,7864 }, - {7613,7688,7634 ,5106,6443,7474 }, {7917,7967,7942 ,4920,7914,7882 }, - {7942,7967,7989 ,7882,7914,7890 }, {3933,4622,3843 ,7678,7884,7677 }, - {3251,2950,4622 ,7915,7891,7884 }, {3933,3251,4622 ,7678,7915,7884 }, - {3251,7466,2950 ,7915,7900,7891 }, {7466,7498,1312 ,7900,7916,7901 }, - {7740,6054,7670 ,7910,7917,7886 }, {6054,7786,7670 ,7917,7918,7886 }, - {7670,7786,6604 ,7886,7918,7892 }, {7786,6845,5042 ,7918,7919,7893 }, - {6604,7786,5042 ,7892,7918,7893 }, {6845,6743,7063 ,7919,7920,7903 }, - {5042,6845,7063 ,7893,7919,7903 }, {6743,1351,7080 ,7920,1162,7895 }, - {7063,6743,7080 ,7903,7920,7895 }, {1351,8008,7810 ,1162,1163,552 }, - {7080,1351,7810 ,7895,1162,552 }, {7810,8008,3862 ,552,1163,550 }, - {4582,4581,7716 ,5478,5430,5549 }, {7534,7596,7533 ,7314,7701,7039 }, - {7676,7699,7650 ,7461,3951,7237 }, {7175,7212,7174 ,2347,7208,7610 }, - {7551,7550,7493 ,5108,7725,7865 }, {7255,7303,6167 ,7238,7904,5974 }, - {7390,7389,7337 ,7921,7905,7912 }, {7503,7502,7441 ,7922,7896,7906 }, - {7503,7559,7502 ,7922,7907,7896 }, {7643,7642,7586 ,7923,7908,7913 }, - {7612,7611,7550 ,5107,7810,7725 }, {7551,7612,7550 ,5108,5107,7725 }, - {860,1183,953 ,1385,1238,1237 }, {8013,7989,7967 ,7924,7890,7914 }, - {8013,8030,7989 ,7924,7899,7890 }, {7816,7466,3251 ,7925,7900,7915 }, - {6198,7498,7466 ,7926,7916,7900 }, {7816,6198,7466 ,7925,7926,7900 }, - {6198,1312,7498 ,7926,7901,7916 }, {8049,2317,8035 ,5393,3129,6675 }, - {7902,7901,7852 ,7692,7413,7412 }, {7175,7174,7151 ,2347,7610,1202 }, - {7665,7687,7611 ,7927,7877,7810 }, {2334,2333,7687 ,7851,3537,7877 }, - {5672,5718,5744 ,5324,6126,6090 }, {7304,7303,7255 ,7928,7904,7238 }, - {7304,7337,7303 ,7928,7912,7904 }, {7442,7441,7389 ,7929,7906,7905 }, - {7390,7442,7389 ,7921,7929,7905 }, {7527,7559,7503 ,7930,7907,7922 }, - {7527,7586,7559 ,7930,7913,7907 }, {7694,4555,7642 ,7931,5496,7908 }, - {7643,7694,7642 ,7923,7931,7908 }, {935,8030,8013 ,5264,7899,7924 }, - {4058,4055,1253 ,4708,3678,2353 }, {7816,3251,3933 ,7925,7915,7678 }, - {6198,7961,1312 ,7926,7932,7901 }, {3565,7740,1312 ,7933,7910,7901 }, - {7961,3565,1312 ,7932,7933,7901 }, {7740,3565,6054 ,7910,7933,7917 }, - {7248,7272,7231 ,73,7666,6944 }, {7291,7350,7349 ,3774,7618,7609 }, - {7350,7376,7349 ,7618,7746,7609 }, {7349,7376,7401 ,7609,7746,7619 }, - {7376,7402,7401 ,7746,6589,7619 }, {8050,8037,3783 ,4529,4528,5311 }, - {7401,7400,7375 ,7619,7580,7699 }, {7192,7191,7170 ,7648,7634,7652 }, - {4126,3141,4176 ,124,4701,4703 }, {6347,6346,7860 ,451,4883,452 }, - {5483,5261,3830 ,171,173,5882 }, {6282,6060,5115 ,6617,5914,5913 }, - {5109,5108,7166 ,4182,4184,5971 }, {1934,1418,22 ,4620,4619,4066 }, - {7891,7918,4558 ,7934,5555,4209 }, {2410,3670,489 ,1,281,3639 }, - {7256,7255,5845 ,7935,7238,143 }, {6120,7256,5845 ,142,7935,143 }, - {7338,7337,7304 ,7936,7912,7928 }, {7338,7390,7337 ,7936,7921,7912 }, - {7442,7503,7441 ,7929,7922,7906 }, {7587,7586,7527 ,7937,7913,7930 }, - {7587,7643,7586 ,7937,7923,7913 }, {7717,4556,4555 ,7938,5497,5496 }, - {7694,7717,4555 ,7931,7938,5496 }, {2317,2275,8035 ,3129,3152,6675 }, - {4558,4557,7891 ,4209,5310,7934 }, {17,15,438 ,5190,497,498 }, - {4423,3672,160 ,4289,4277,4295 }, {4680,160,3672 ,5368,4295,4277 }, - {974,7816,3933 ,5366,7925,7678 }, {936,974,3933 ,5234,5366,7678 }, - {3565,7961,6198 ,7933,7932,7926 }, {3565,6759,6054 ,7933,7939,7917 }, - {6054,6759,7786 ,7917,7939,7918 }, {6759,7738,6845 ,7939,7940,7919 }, - {7786,6759,6845 ,7918,7939,7919 }, {7738,1067,6743 ,7940,7941,7920 }, - {6845,7738,6743 ,7919,7940,7920 }, {1067,1352,1351 ,7941,1262,1162 }, - {6743,1067,1351 ,7920,7941,1162 }, {7627,7652,7626 ,7582,7696,7438 }, - {7315,7314,7265 ,7496,7909,7497 }, {7402,7403,7401 ,6589,6588,7619 }, - {7569,7534,7536 ,7705,7314,5205 }, {5106,7134,5108 ,5926,7942,4184 }, - {7166,7177,7197 ,5971,7943,7234 }, {7197,7177,6120 ,7234,7943,142 }, - {7277,7255,7256 ,7944,7238,7935 }, {7277,7304,7255 ,7944,7928,7238 }, - {7391,7390,7338 ,7945,7921,7936 }, {7471,7503,7442 ,7946,7922,7929 }, - {7528,7527,7503 ,7947,7930,7922 }, {7471,7528,7503 ,7946,7947,7922 }, - {7644,7643,7587 ,7948,7923,7937 }, {7717,7766,4556 ,7938,7949,5497 }, - {4556,7766,7788 ,5497,7949,7313 }, {7891,7868,7918 ,7934,7858,5555 }, - {7918,7968,4560 ,5555,7950,5236 }, {7607,7606,7578 ,7455,7457,7462 }, - {7805,7857,7804 ,7520,7533,4634 }, {7189,7222,7205 ,7493,628,7669 }, - {7652,7702,7651 ,7696,3513,7675 }, {1091,160,4680 ,4597,4295,5368 }, - {974,7335,7816 ,5366,4265,7925 }, {7335,6198,7816 ,4265,7926,7925 }, - {6759,1067,7738 ,7939,7941,7940 }, {7483,7482,7426 ,7574,7722,7537 }, - {7605,7604,7542 ,5239,7416,5240 }, {7210,7247,7228 ,7499,7360,7524 }, - {7207,7244,7206 ,7608,7620,7631 }, {7456,7403,7485 ,7578,6588,7636 }, - {7773,7827,7802 ,7668,7410,6566 }, {3303,7385,7333 ,1049,7630,4353 }, - {7094,7120,7093 ,4317,6938,4318 }, {7487,7458,7515 ,5707,7550,1079 }, - {3518,6133,7096 ,4338,4390,4337 }, {6133,5106,7096 ,4390,5926,4337 }, - {7152,5108,7134 ,7951,4184,7942 }, {7152,7166,5108 ,7951,5971,4184 }, - {7213,6120,7177 ,7952,142,7943 }, {7339,7338,7304 ,7953,7936,7928 }, - {7277,7339,7304 ,7944,7953,7928 }, {7416,7442,7390 ,7954,7929,7921 }, - {7391,7416,7390 ,7945,7954,7921 }, {7416,7471,7442 ,7954,7946,7929 }, - {7528,7587,7527 ,7947,7937,7930 }, {7673,7643,7644 ,7955,7923,7948 }, - {7673,7694,7643 ,7955,7931,7923 }, {7673,7717,7694 ,7955,7938,7931 }, - {7819,7818,7788 ,7956,5309,7313 }, {7766,7819,7788 ,7949,7956,7313 }, - {7919,7918,7868 ,7957,5555,7858 }, {7918,7919,7968 ,5555,7957,7950 }, - {4560,7968,4561 ,5236,7950,5361 }, {7857,7856,7804 ,7533,4635,4634 }, - {7430,7458,7487 ,7587,7550,5707 }, {4957,8062,5026 ,2733,3272,4225 }, - {1945,3565,6198 ,7958,7933,7926 }, {7335,1945,6198 ,4265,7958,7926 }, - {3565,1945,6759 ,7933,7958,7939 }, {1067,1353,1352 ,7941,1205,1262 }, - {7118,7131,7105 ,7628,7654,5279 }, {7801,7800,7750 ,1618,7568,7687 }, - {7401,7403,7456 ,7619,6588,7578 }, {7701,7750,7724 ,3515,7687,7760 }, - {7404,7430,7378 ,7726,7587,7431 }, {7429,7430,7487 ,7572,7587,5707 }, - {7132,7165,7164 ,7621,7265,7521 }, {7458,7487,7515 ,7550,5707,1079 }, - {7111,5106,6133 ,7959,5926,4390 }, {7178,7177,7166 ,7960,7943,5971 }, - {7152,7178,7166 ,7951,7960,5971 }, {7234,7256,6120 ,7961,7935,142 }, - {7213,7234,6120 ,7952,7961,142 }, {7234,7277,7256 ,7961,7944,7935 }, - {7339,7391,7338 ,7953,7945,7936 }, {7472,7471,7416 ,7962,7946,7954 }, - {7472,7528,7471 ,7962,7947,7946 }, {7588,7587,7528 ,7963,7937,7947 }, - {7588,7644,7587 ,7963,7948,7937 }, {7718,7717,7673 ,7964,7938,7955 }, - {7718,7766,7717 ,7964,7949,7938 }, {7819,7868,7818 ,7956,7858,5309 }, - {7943,7968,7919 ,7965,7950,7957 }, {7968,8014,4561 ,7950,7966,5361 }, - {7437,7465,7436 ,5938,7581,4245 }, {7188,7204,7187 ,7503,5120,7330 }, - {4582,4556,4583 ,5478,5497,5498 }, {3734,1945,7335 ,7967,7958,4265 }, - {1945,3448,6759 ,7958,7968,7939 }, {3448,5614,6759 ,7968,7969,7939 }, - {5614,1267,1067 ,7969,1353,7941 }, {6759,5614,1067 ,7939,7969,7941 }, - {1067,1267,1353 ,7941,1353,1205 }, {7750,7749,7723 ,7687,7663,7664 }, - {7724,7750,7723 ,7760,7687,7664 }, {7106,7118,7105 ,7573,7628,5279 }, - {7538,7602,7537 ,2014,5867,7543 }, {7403,7486,7485 ,6588,7436,7636 }, - {7927,7952,7902 ,1716,5475,7692 }, {7725,7773,7752 ,7420,7668,3514 }, - {7486,7457,7538 ,7436,1078,2014 }, {7545,7546,7578 ,7398,7397,7462 }, - {7123,7134,5106 ,7970,7942,5926 }, {7111,7123,5106 ,7959,7970,5926 }, - {7123,7152,7134 ,7970,7951,7942 }, {7178,7213,7177 ,7960,7952,7943 }, - {7278,7277,7234 ,7971,7944,7961 }, {7364,7391,7339 ,7972,7945,7953 }, - {7417,7416,7391 ,7973,7954,7945 }, {7364,7417,7391 ,7972,7973,7945 }, - {7529,7528,7472 ,7974,7947,7962 }, {7618,7644,7588 ,7975,7948,7963 }, - {7618,7673,7644 ,7975,7955,7948 }, {7767,7766,7718 ,7976,7949,7964 }, - {7869,7868,7819 ,7977,7858,7956 }, {7869,7919,7868 ,7977,7957,7858 }, - {7990,7968,7943 ,7978,7950,7965 }, {7968,7990,8014 ,7950,7978,7966 }, - {7990,8031,4561 ,7978,7979,5361 }, {8014,7990,4561 ,7966,7978,5361 }, - {4561,8031,4562 ,5361,7979,5018 }, {99,2306,100 ,3743,6405,2823 }, - {8051,278,3783 ,6172,1489,5311 }, {7518,7545,7544 ,7396,7398,7980 }, - {7456,7514,7455 ,7578,3610,7579 }, {7544,7545,7578 ,7980,7398,7462 }, - {7141,7188,7161 ,7414,7503,2559 }, {976,3734,7335 ,782,7967,4265 }, - {5614,7937,1267 ,7969,7981,1353 }, {7570,7598,7569 ,5204,7140,7705 }, - {7598,7624,7597 ,7140,7439,7700 }, {7679,7700,7678 ,7674,7698,7425 }, - {7780,7809,7779 ,7389,7449,7447 }, {7084,7111,6133 ,4391,7959,4390 }, - {7153,7152,7123 ,7982,7951,7970 }, {7214,7213,7178 ,7983,7952,7960 }, - {7235,7234,7213 ,7984,7961,7952 }, {7214,7235,7213 ,7983,7984,7952 }, - {7340,7339,7277 ,7985,7953,7944 }, {7278,7340,7277 ,7971,7985,7944 }, - {7340,7364,7339 ,7985,7972,7953 }, {7417,7472,7416 ,7973,7962,7954 }, - {7589,7588,7528 ,7986,7963,7947 }, {7529,7589,7528 ,7974,7986,7947 }, - {7589,7618,7588 ,7986,7975,7963 }, {7674,7673,7618 ,7987,7955,7975 }, - {7674,7718,7673 ,7987,7964,7955 }, {7789,7819,7766 ,7988,7956,7949 }, - {7767,7789,7766 ,7976,7988,7949 }, {7892,7919,7869 ,7989,7957,7977 }, - {7944,7943,7919 ,7990,7965,7957 }, {7892,7944,7919 ,7989,7990,7957 }, - {8032,8031,7990 ,7991,7979,7978 }, {8031,8032,4562 ,7979,7991,5018 }, - {8008,1428,3862 ,1163,1126,550 }, {8032,8057,4562 ,7991,7897,5018 }, - {7657,7729,7728 ,7417,7697,7818 }, {1029,3734,976 ,3930,7967,782 }, - {7499,1945,3734 ,7992,7958,7967 }, {1029,7499,3734 ,3930,7992,7967 }, - {7499,4297,3448 ,7992,7993,7968 }, {1945,7499,3448 ,7958,7992,7968 }, - {7624,7623,7597 ,7439,7427,7700 }, {7724,7723,7678 ,7760,7664,7425 }, - {7700,7724,7678 ,7698,7760,7425 }, {7131,7118,7144 ,7654,7628,7653 }, - {7486,7538,7485 ,7436,2014,7636 }, {7602,7601,7537 ,5867,7544,7543 }, - {7799,7798,7771 ,4727,4728,4336 }, {7853,7852,7800 ,1617,7412,7568 }, - {7485,7537,7514 ,7636,7543,3610 }, {7273,7325,7296 ,3467,7465,7471 }, - {7147,7163,7194 ,6937,5460,1670 }, {7097,7111,7084 ,7994,7959,4391 }, - {7097,7123,7111 ,7994,7970,7959 }, {7179,7178,7152 ,7995,7960,7951 }, - {7153,7179,7152 ,7982,7995,7951 }, {7235,7278,7234 ,7984,7971,7961 }, - {7365,7364,7340 ,7996,7972,7985 }, {7473,7472,7417 ,7997,7962,7973 }, - {7473,7529,7472 ,7997,7974,7962 }, {7619,7618,7589 ,7998,7975,7986 }, - {7695,7718,7674 ,7999,7964,7987 }, {7695,7767,7718 ,7999,7976,7964 }, - {7843,7819,7789 ,8000,7956,7988 }, {7843,7869,7819 ,8000,7977,7956 }, - {7843,7892,7869 ,8000,7989,7977 }, {7944,7990,7943 ,7990,7978,7965 }, - {8032,1381,8057 ,7991,5193,7897 }, {8025,2281,8024 ,7510,3626,7511 }, - {7355,7383,7325 ,7435,7512,7465 }, {7222,7221,7205 ,628,7545,7669 }, - {4578,4577,7641 ,5353,5352,5356 }, {4297,6695,5614 ,7993,8001,7969 }, - {3448,4297,5614 ,7968,7993,7969 }, {6695,7887,7937 ,8001,8002,7981 }, - {5614,6695,7937 ,7969,8001,7981 }, {7887,1314,1267 ,8002,1409,1353 }, - {7937,7887,1267 ,7981,8002,1353 }, {7722,7771,7721 ,7645,4336,7454 }, - {7598,7597,7569 ,7140,7700,7705 }, {7901,7951,7900 ,7413,7546,6922 }, - {7758,7780,7779 ,7387,7389,7447 }, {2487,7615,7555 ,4427,2816,7832 }, - {7085,7084,6186 ,8003,4391,4365 }, {7082,7085,6186 ,6462,8003,4365 }, - {7085,7097,7084 ,8003,7994,4391 }, {7124,7123,7097 ,8004,7970,7994 }, - {7124,7153,7123 ,8004,7982,7970 }, {7198,7178,7179 ,8005,7960,7995 }, - {7198,7214,7178 ,8005,7983,7960 }, {7279,7278,7235 ,8006,7971,7984 }, - {7279,7340,7278 ,8006,7985,7971 }, {7418,7417,7364 ,8007,7973,7972 }, - {7365,7418,7364 ,7996,8007,7972 }, {7504,7529,7473 ,8008,7974,7997 }, - {7504,7589,7529 ,8008,7986,7974 }, {7741,7767,7695 ,8009,7976,7999 }, - {7741,7789,7767 ,8009,7988,7976 }, {7893,7892,7843 ,8010,7989,8000 }, - {7991,7990,7944 ,8011,7978,7990 }, {7991,8032,7990 ,8011,7991,7978 }, - {8032,8058,1381 ,7991,8012,5193 }, {3304,7300,3305 ,1050,7857,879 }, - {1029,978,3671 ,3930,1620,3089 }, {5437,6705,6740 ,6259,4158,6894 }, - {1178,342,4075 ,206,4542,4521 }, {7679,7678,7625 ,7674,7425,7139 }, - {7570,7569,7536 ,5204,7705,5205 }, {7624,7679,7625 ,7439,7674,7139 }, - {7681,7703,7654 ,7459,7667,7637 }, {7827,7826,7802 ,7410,1616,6566 }, - {3304,7331,7300 ,1050,7911,7857 }, {7359,7358,7331 ,7686,7797,7911 }, - {7098,7097,7085 ,8013,7994,8003 }, {7154,7153,7124 ,8014,7982,8004 }, - {7154,7179,7153 ,8014,7995,7982 }, {7236,7235,7214 ,8015,7984,7983 }, - {7198,7236,7214 ,8005,8015,7983 }, {7305,7340,7279 ,8016,7985,8006 }, - {7305,7365,7340 ,8016,7996,7985 }, {7418,7473,7417 ,8007,7997,7973 }, - {7590,7589,7504 ,8017,7986,8008 }, {7790,7789,7741 ,8018,7988,8009 }, - {7790,7843,7789 ,8018,8000,7988 }, {7945,7944,7892 ,8019,7990,7989 }, - {7893,7945,7892 ,8010,8019,7989 }, {8015,8032,7991 ,8020,7991,8011 }, - {8015,8058,8032 ,8020,8012,7991 }, {213,2379,4163 ,3606,3238,4863 }, - {7850,7900,7849 ,3769,6922,7551 }, {7359,7409,7358 ,7686,6245,7797 }, - {7119,7146,7145 ,7529,7530,7629 }, {7854,7903,7878 ,7514,7717,7411 }, - {3671,7499,1029 ,3089,7992,3930 }, {3671,1077,4297 ,3089,2694,7993 }, - {7499,3671,4297 ,7992,3089,7993 }, {1077,308,4297 ,2694,8021,7993 }, - {4297,308,6695 ,7993,8021,8001 }, {308,4047,7887 ,8021,8022,8002 }, - {6695,308,7887 ,8001,8021,8002 }, {7887,4047,1314 ,8002,8022,1409 }, - {2403,3191,2165 ,2904,2903,1041 }, {7107,7118,7106 ,7494,7628,7573 }, - {8041,2281,8025 ,7548,3626,7510 }, {7494,7493,7434 ,4309,7865,7806 }, - {7435,7494,7434 ,6244,4309,7806 }, {8004,8041,8025 ,7404,7548,7510 }, - {5946,7085,7082 ,5481,8003,6462 }, {7125,7124,7097 ,8023,8004,7994 }, - {7098,7125,7097 ,8013,8023,7994 }, {7180,7179,7154 ,8024,7995,8014 }, - {7180,7198,7179 ,8024,8005,7995 }, {7280,7279,7235 ,8025,8006,7984 }, - {7236,7280,7235 ,8015,8025,7984 }, {7280,7305,7279 ,8025,8016,8006 }, - {7366,7365,7305 ,8026,7996,8016 }, {7366,7418,7365 ,8026,8007,7996 }, - {7443,7473,7418 ,8027,7997,8007 }, {7505,7504,7473 ,8028,8008,7997 }, - {7443,7505,7473 ,8027,8028,7997 }, {7505,7560,7504 ,8028,8029,8008 }, - {7560,7590,7504 ,8029,8017,8008 }, {7742,7741,7695 ,8030,8009,7999 }, - {7844,7843,7790 ,8031,8000,8018 }, {7844,7893,7843 ,8031,8010,8000 }, - {7945,7991,7944 ,8019,8011,7990 }, {8047,8058,8015 ,8032,8012,8020 }, - {8047,6921,1381 ,8032,8033,5193 }, {8058,8047,1381 ,8012,8032,5193 }, - {2487,7555,3377 ,4427,7832,1443 }, {7634,7611,7612 ,7474,7810,5107 }, - {7542,7604,7541 ,5240,7416,7515 }, {4047,7638,1314 ,8022,7540,1409 }, - {8030,935,3843 ,7899,5264,7677 }, {3298,4518,1879 ,7424,1281,1283 }, - {6277,7107,6278 ,4387,7494,3967 }, {7776,7830,7806 ,4412,7770,7612 }, - {7982,2306,8007 ,3853,6405,3854 }, {7634,7665,7611 ,7474,7927,7810 }, - {7688,7687,7665 ,6443,7877,7927 }, {7634,7688,7665 ,7474,6443,7927 }, - {7083,7085,5946 ,5483,8003,5481 }, {7083,7098,7085 ,5483,8013,8003 }, - {7155,7154,7124 ,8034,8014,8004 }, {7125,7155,7124 ,8023,8034,8004 }, - {7215,7198,7180 ,8035,8005,8024 }, {7199,7215,7180 ,8036,8035,8024 }, - {7257,7236,7198 ,8037,8015,8005 }, {7215,7257,7198 ,8035,8037,8005 }, - {7281,7280,7236 ,8038,8025,8015 }, {7257,7281,7236 ,8037,8038,8015 }, - {7306,7305,7280 ,8039,8016,8025 }, {7281,7306,7280 ,8038,8039,8025 }, - {7419,7418,7366 ,8040,8007,8026 }, {7419,7443,7418 ,8040,8027,8007 }, - {7505,7561,7560 ,8028,8041,8029 }, {7791,7790,7741 ,8042,8018,8009 }, - {7742,7791,7741 ,8030,8042,8009 }, {7894,7893,7844 ,8043,8010,8031 }, - {7969,7991,7945 ,8044,8011,8019 }, {8016,8015,7991 ,8045,8020,8011 }, - {7969,8016,7991 ,8044,8045,8011 }, {3785,6921,8047 ,8046,8033,8032 }, - {6921,1169,1381 ,8033,5100,5193 }, {3785,1169,6921 ,8046,5100,8033 }, - {3948,4296,303 ,280,6023,4086 }, {1583,1253,1606 ,5415,2353,3677 }, - {5493,5518,5492 ,6336,6316,6315 }, {7959,2306,7958 ,7607,6405,3855 }, - {5557,5556,5536 ,756,3511,754 }, {1315,1356,1355 ,1627,1530,1408 }, - {308,7638,4047 ,8021,7540,8022 }, {402,7759,448 ,5349,399,1172 }, - {7681,7725,7703 ,7459,7420,7667 }, {7908,7959,7907 ,7366,7607,7367 }, - {4368,68,1005 ,4148,4087,3535 }, {7326,7355,7325 ,7434,7435,7465 }, - {643,644,740 ,3285,1176,1595 }, {7099,7098,7083 ,8047,8013,5483 }, - {7181,7180,7154 ,8048,8024,8014 }, {7155,7181,7154 ,8034,8048,8014 }, - {7181,7199,7180 ,8048,8036,8024 }, {7181,7215,7199 ,8048,8035,8036 }, - {7258,7257,7215 ,8049,8037,8035 }, {7282,7281,7257 ,8050,8038,8037 }, - {7258,7282,7257 ,8049,8050,8037 }, {7282,7306,7281 ,8050,8039,8038 }, - {7282,7307,7306 ,8050,8051,8039 }, {7444,7443,7419 ,8052,8027,8040 }, - {7791,7844,7790 ,8042,8031,8018 }, {7920,7945,7893 ,8053,8019,8010 }, - {7894,7920,7893 ,8043,8053,8010 }, {7920,7969,7945 ,8053,8044,8019 }, - {8048,8047,8015 ,8054,8032,8020 }, {8016,8048,8015 ,8045,8054,8020 }, - {7546,7607,7578 ,7397,7455,7462 }, {3842,153,235 ,7808,663,598 }, - {7638,1274,1315 ,7540,1687,1627 }, {7639,308,1077 ,8055,8021,2694 }, - {1078,7639,1077 ,5060,8055,2694 }, {7639,2993,308 ,8055,3744,8021 }, - {308,2993,7638 ,8021,3744,7540 }, {2993,1274,7638 ,3744,1687,7540 }, - {7624,7625,7570 ,7439,7139,5204 }, {7244,7243,7206 ,7620,7632,7631 }, - {7463,7462,7410 ,7711,4310,3766 }, {7107,7106,6278 ,7494,7573,3967 }, - {7464,7462,7463 ,4246,4310,7711 }, {2306,7982,7958 ,6405,3853,3855 }, - {7126,7125,7098 ,8056,8023,8013 }, {7099,7126,7098 ,8047,8056,8013 }, - {7167,7181,7155 ,8057,8048,8034 }, {7237,7215,7181 ,8058,8035,8048 }, - {7237,7258,7215 ,8058,8049,8035 }, {7237,7282,7258 ,8058,8050,8049 }, - {7341,7307,7282 ,8059,8051,8050 }, {7307,7341,7282 ,8051,8059,8050 }, - {7367,7392,7366 ,8060,8061,8026 }, {7392,7419,7366 ,8061,8040,8026 }, - {7506,7505,7443 ,8062,8028,8027 }, {7444,7506,7443 ,8052,8062,8027 }, - {7506,7562,7561 ,8062,8063,8041 }, {7505,7506,7561 ,8028,8062,8041 }, - {7820,7844,7791 ,8064,8031,8042 }, {7820,7894,7844 ,8064,8043,8031 }, - {7970,7969,7920 ,8065,8044,8053 }, {7970,8016,7969 ,8065,8045,8044 }, - {3721,3785,8047 ,8066,8046,8032 }, {8048,3721,8047 ,8054,8066,8032 }, - {3721,1169,3785 ,8066,5100,8046 }, {4580,4579,7672 ,5410,5355,5450 }, - {3293,7149,7133 ,1988,7263,1989 }, {7542,7541,7488 ,5240,7515,7585 }, - {7959,7958,7907 ,7607,3855,7367 }, {7677,7676,7622 ,7426,7461,7460 }, - {5046,7639,1078 ,5232,8055,5060 }, {5046,2993,7639 ,5232,3744,8055 }, - {489,2955,2473 ,3639,3640,4303 }, {7571,7570,7512 ,5126,5204,5203 }, - {7807,7830,7776 ,7602,7770,4412 }, {7151,7174,7150 ,1202,7610,7488 }, - {7777,7807,7776 ,4411,7602,4412 }, {4557,7868,7891 ,5310,7858,7934 }, - {7776,7755,7729 ,4412,7519,7697 }, {5952,7099,7083 ,6595,8047,5483 }, - {7135,7155,7125 ,8067,8034,8023 }, {7126,7135,7125 ,8056,8067,8023 }, - {7156,7167,7155 ,8068,8057,8034 }, {7135,7156,7155 ,8067,8068,8034 }, - {7167,7156,7181 ,8057,8068,8048 }, {7156,7200,7181 ,8068,8069,8048 }, - {7200,7216,7181 ,8069,8070,8048 }, {7216,7237,7181 ,8070,8058,8048 }, - {7283,7282,7237 ,8071,8050,8058 }, {7283,7307,7282 ,8071,8051,8050 }, - {7307,7368,7341 ,8051,8072,8059 }, {7392,7444,7419 ,8061,8052,8040 }, - {7870,7894,7820 ,8073,8043,8064 }, {7921,7920,7894 ,8074,8053,8043 }, - {7870,7921,7894 ,8073,8074,8043 }, {8017,8016,7970 ,8075,8045,8065 }, - {4563,1169,3721 ,3024,5100,8066 }, {7484,7513,7483 ,3612,3611,7574 }, - {7596,7622,7595 ,7701,7460,4019 }, {7404,7458,7430 ,7726,7550,7587 }, - {7231,7230,7212 ,6944,7498,7208 }, {2243,6552,8053 ,1993,7679,7676 }, - {489,1101,2410 ,3639,2,1 }, {7100,7099,5952 ,8076,8047,6595 }, - {7100,7112,7099 ,8076,8077,8047 }, {7112,7126,7099 ,8077,8056,8047 }, - {7156,7135,7126 ,8068,8067,8056 }, {7135,7156,7126 ,8067,8068,8056 }, - {7156,7201,7200 ,8068,8078,8069 }, {7201,7216,7200 ,8078,8070,8069 }, - {7238,7237,7216 ,8079,8058,8070 }, {7201,7238,7216 ,8078,8079,8070 }, - {7308,7307,7283 ,8080,8051,8071 }, {7308,7368,7307 ,8080,8072,8051 }, - {7445,7444,7392 ,8081,8052,8061 }, {7445,7506,7444 ,8081,8062,8052 }, - {7506,7563,7562 ,8062,8082,8063 }, {7821,7870,7820 ,8083,8073,8064 }, - {7921,7970,7920 ,8074,8065,8053 }, {8033,8048,8016 ,8084,8054,8045 }, - {8017,8033,8016 ,8075,8084,8045 }, {7332,7331,3304 ,6685,7911,1050 }, - {7332,7359,7331 ,6685,7686,7911 }, {7464,7521,7462 ,4246,7657,4310 }, - {7196,7212,7175 ,2401,7208,2347 }, {6108,1274,2993 ,6975,1687,3744 }, - {1172,6108,2993 ,1758,6975,3744 }, {7427,7483,7426 ,7536,7574,7537 }, - {5107,5121,5106 ,4183,5855,5926 }, {7410,7409,7359 ,3766,6245,7686 }, - {7136,7135,7126 ,8085,8067,8056 }, {7112,7136,7126 ,8077,8085,8056 }, - {7136,7157,7156 ,8085,8086,8068 }, {7135,7136,7156 ,8067,8085,8068 }, - {7259,7237,7238 ,8087,8058,8079 }, {7259,7283,7237 ,8087,8071,8058 }, - {7369,7368,7308 ,8088,8072,8080 }, {7369,7393,7368 ,8088,8089,8072 }, - {7474,7506,7445 ,8090,8062,8081 }, {7474,7564,7563 ,8090,8091,8082 }, - {7506,7474,7563 ,8062,8090,8082 }, {7871,7870,7821 ,8092,8073,8083 }, - {7971,7970,7921 ,8093,8065,8074 }, {7971,8017,7970 ,8093,8075,8065 }, - {6340,8048,8033 ,8094,8054,8084 }, {6340,3721,8048 ,8094,8066,8054 }, - {2315,4563,3721 ,3068,3024,8066 }, {6340,2315,3721 ,8094,3068,8066 }, - {7521,7520,7462 ,7657,7658,4310 }, {7828,7827,7773 ,7735,7410,7668 }, - {7412,7463,7410 ,3765,7711,3766 }, {7723,7748,7722 ,7664,7644,7645 }, - {7953,7978,7929 ,7716,7730,7684 }, {7133,7132,7108 ,1989,7621,4111 }, - {7632,7631,7605 ,7555,7504,5239 }, {7552,7551,7493 ,5546,5108,7865 }, - {7494,7552,7493 ,4309,5546,7865 }, {7086,7100,5952 ,6743,8076,6595 }, - {7202,7201,7156 ,8095,8078,8068 }, {7157,7202,7156 ,8086,8095,8068 }, - {7309,7308,7283 ,8096,8080,8071 }, {7259,7309,7283 ,8087,8096,8071 }, - {7394,7393,7369 ,8097,8089,8088 }, {7420,7445,7392 ,8098,8081,8061 }, - {7922,7921,7870 ,8099,8074,8073 }, {7871,7922,7870 ,8092,8099,8073 }, - {7992,8017,7971 ,8100,8075,8093 }, {7992,8033,8017 ,8100,8084,8075 }, - {8024,8040,8002 ,7511,7688,3777 }, {7774,7828,7773 ,7419,7735,7668 }, - {7852,7851,7825 ,7412,6625,3768 }, {2293,2292,2262 ,2561,1983,3359 }, - {7723,7722,7677 ,7664,7645,7426 }, {7678,7723,7677 ,7425,7664,7426 }, - {7314,7374,7348 ,7909,4988,4990 }, {7145,7162,7170 ,7629,7649,7652 }, - {7903,7953,7929 ,7717,7716,7684 }, {8024,8002,8003 ,7511,3777,3776 }, - {8024,8053,8040 ,7511,7676,7688 }, {7576,7632,7605 ,7615,7555,5239 }, - {7688,7712,2334 ,6443,5350,7851 }, {7687,7688,2334 ,7877,6443,7851 }, - {7113,7112,7100 ,8101,8077,8076 }, {7086,7113,7100 ,6743,8101,8076 }, - {7217,7238,7201 ,8102,8079,8078 }, {7202,7217,7201 ,8095,8102,8078 }, - {7217,7259,7238 ,8102,8087,8079 }, {7309,7369,7308 ,8096,8088,8080 }, - {7446,7445,7420 ,8103,8081,8098 }, {7475,7474,7445 ,8104,8090,8081 }, - {7446,7475,7445 ,8103,8104,8081 }, {7474,7530,7564 ,8090,8105,8091 }, - {7822,7871,7821 ,8106,8092,8083 }, {7922,7971,7921 ,8099,8093,8074 }, - {8034,8033,7992 ,7586,8084,8100 }, {8034,6340,8033 ,7586,8094,8084 }, - {2369,2334,401 ,3257,7851,1387 }, {7730,7729,7657 ,4413,7697,7417 }, - {7903,7929,7878 ,7717,7684,7411 }, {7314,7348,7290 ,7909,4990,7635 }, - {7348,7373,7347 ,4990,4989,7576 }, {7800,7852,7825 ,7568,7412,3768 }, - {7772,7748,7722 ,7744,7644,7645 }, {7748,7772,7722 ,7644,7744,7645 }, - {7455,7427,7428 ,7579,7536,7670 }, {7512,7536,7482 ,5203,5205,7722 }, - {7904,7903,7854 ,7513,7717,7514 }, {7165,7172,7195 ,7265,7405,7522 }, - {7576,7605,7543 ,7615,5239,5238 }, {7249,7294,7248 ,7622,7819,73 }, - {7249,7248,7232 ,7622,73,2124 }, {7623,7622,7597 ,7427,7460,7700 }, - {7137,7136,7112 ,8107,8085,8077 }, {7113,7137,7112 ,8101,8107,8077 }, - {7137,7158,7157 ,8107,8108,8086 }, {7136,7137,7157 ,8085,8107,8086 }, - {7158,7182,7157 ,8108,8109,8086 }, {7182,7202,7157 ,8109,8095,8086 }, - {7260,7259,7217 ,8110,8087,8102 }, {7342,7369,7309 ,8111,8088,8096 }, - {7342,7394,7369 ,8111,8097,8088 }, {7531,7530,7474 ,8112,8105,8090 }, - {7475,7531,7474 ,8104,8112,8090 }, {7530,7531,7564 ,8105,8112,8091 }, - {7872,7871,7822 ,8113,8092,8106 }, {7946,7971,7922 ,8114,8093,8099 }, - {7993,7992,7971 ,8115,8100,8093 }, {7946,7993,7971 ,8114,8115,8093 }, - {8059,6340,8034 ,4235,8094,7586 }, {2316,2315,6340 ,3067,3068,8094 }, - {8059,2316,6340 ,4235,3067,8094 }, {2333,2334,2369 ,3537,7851,3257 }, - {7326,7325,7273 ,7434,7465,3467 }, {7425,7481,7454 ,3995,7542,3996 }, - {7231,7272,7230 ,6944,7666,7498 }, {7269,7247,7292 ,7361,7360,7594 }, - {7455,7484,7427 ,7579,3612,7536 }, {8060,8051,3783 ,7685,6172,5311 }, - {7800,7799,7748 ,7568,4727,7644 }, {7772,7800,7748 ,7744,7568,7644 }, - {7483,7512,7482 ,7574,5203,7722 }, {7375,7374,7314 ,7699,4988,7909 }, - {7209,7210,7228 ,7523,7499,7524 }, {7164,7165,7195 ,7521,7265,7522 }, - {7172,7210,7209 ,7405,7499,7523 }, {7195,7172,7209 ,7522,7405,7523 }, - {3321,7386,7387 ,2461,5512,3615 }, {7158,7183,7182 ,8108,8116,8109 }, - {7183,7202,7182 ,8116,8095,8109 }, {7218,7217,7202 ,7708,8102,8095 }, - {7183,7218,7202 ,8116,7708,8095 }, {7284,7309,7259 ,8117,8096,8087 }, - {7260,7284,7259 ,8110,8117,8087 }, {7284,7342,7309 ,8117,8111,8096 }, - {7395,7394,7342 ,8118,8097,8111 }, {7395,7421,7394 ,8118,8119,8097 }, - {7447,7475,7446 ,8120,8104,8103 }, {7591,7564,7531 ,8121,8091,8112 }, - {7895,7871,7872 ,8122,8092,8113 }, {7895,7922,7871 ,8122,8099,8092 }, - {7895,7946,7922 ,8122,8114,8099 }, {8035,8034,7992 ,6675,7586,8100 }, - {7993,8035,7992 ,8115,6675,8100 }, {7629,7705,7684 ,7399,7349,7400 }, - {7692,7691,7666 ,7490,4419,7566 }, {7637,7692,7666 ,7473,7490,7566 }, - {7690,7691,449 ,6466,4419,1169 }, {7929,7928,7877 ,7684,1724,7549 }, - {7378,7377,7319 ,7431,7592,7432 }, {7828,7854,7827 ,7735,7514,7410 }, - {278,4612,3783 ,1489,5249,5311 }, {7800,7825,7799 ,7568,3768,4727 }, - {7572,7571,7513 ,5124,5126,3611 }, {7265,7314,7290 ,7497,7909,7635 }, - {7386,7385,3303 ,5512,7630,1049 }, {7398,7397,7345 ,7429,1186,7588 }, - {7350,7317,7376 ,7618,5947,7746 }, {7317,7351,7376 ,5947,6587,7746 }, - {7114,7113,7086 ,5392,8101,6743 }, {7087,7114,7086 ,6742,5392,6743 }, - {7218,7260,7217 ,7708,8110,8102 }, {7343,7342,7284 ,2750,8111,8117 }, - {7476,7475,7447 ,8123,8104,8120 }, {7592,7591,7531 ,8124,8121,8112 }, - {7793,7822,7792 ,5726,8106,8125 }, {7793,7845,7822 ,5726,5725,8106 }, - {7845,7872,7822 ,5725,8113,8106 }, {7947,7946,7895 ,4354,8114,8122 }, - {7947,7993,7946 ,4354,8115,8114 }, {5644,3615,5660 ,4133,201,3054 }, - {7108,7121,7094 ,4111,7852,4317 }, {7108,7132,7121 ,4111,7621,7852 }, - {7601,7653,7600 ,7544,7638,7556 }, {7523,7522,7496 ,7393,7395,7470 }, - {7775,7828,7774 ,7509,7735,7419 }, {7480,7534,7511 ,7463,7314,6677 }, - {7348,7347,7289 ,4990,7576,7575 }, {7651,7702,7680 ,7675,3513,7673 }, - {7702,7701,7680 ,3513,3515,7673 }, {8053,6552,6784 ,7676,7679,7472 }, - {8053,6784,8039 ,7676,7472,7476 }, {8040,8053,8039 ,7688,7676,7476 }, - {7775,7774,7726 ,7509,7419,7418 }, {7378,7430,7377 ,7431,7587,7592 }, - {7095,7108,7094 ,3924,4111,4317 }, {6552,2243,2278 ,7679,1993,3495 }, - {7114,7127,7137 ,5392,7245,8107 }, {7113,7114,7137 ,8101,5392,8107 }, - {7127,7159,7158 ,7245,5075,8108 }, {7137,7127,7158 ,8107,7245,8108 }, - {7184,7183,7158 ,5074,8116,8108 }, {7159,7184,7158 ,5075,5074,8108 }, - {7261,7260,7218 ,1528,8110,7708 }, {7261,7284,7260 ,1528,8117,8110 }, - {7396,7395,7342 ,6716,8118,8111 }, {7343,7396,7342 ,2750,6716,8111 }, - {7507,7531,7475 ,6706,8112,8104 }, {7476,7507,7475 ,8123,6706,8104 }, - {7593,7592,7531 ,5032,8124,8112 }, {7896,7895,7872 ,4355,8122,8113 }, - {7845,7896,7872 ,5725,4355,8113 }, {7994,7993,7947 ,5582,8115,4354 }, - {7142,7189,7141 ,7729,7493,7414 }, {7725,7752,7702 ,7420,3514,3513 }, - {7682,7681,7628 ,3564,7459,7528 }, {7412,7411,7384 ,3765,3767,7683 }, - {7952,7951,7901 ,5475,7546,7413 }, {7572,7626,7599 ,5124,7438,5125 }, - {7190,7224,7189 ,7633,7491,7493 }, {7482,7536,7481 ,7722,5205,7542 }, - {7536,7534,7481 ,5205,7314,7542 }, {7660,7659,7606 ,7381,7383,7457 }, - {7088,7101,7087 ,4299,4073,6742 }, {7101,7114,7087 ,4073,5392,6742 }, - {7219,7218,7183 ,1529,7708,8116 }, {7184,7219,7183 ,5074,1529,8116 }, - {7285,7284,7261 ,2751,8117,1528 }, {7285,7343,7284 ,2751,2750,8117 }, - {7422,7395,7396 ,1404,8118,6716 }, {7449,7448,7395 ,7600,8126,8118 }, - {7422,7449,7395 ,1404,7600,8118 }, {7449,7477,7448 ,7600,1403,8126 }, - {7565,7531,7507 ,5080,8112,6706 }, {7531,7565,7593 ,8112,5080,5032 }, - {7565,7593,7592 ,5080,5032,8124 }, {7593,7565,7592 ,5032,5080,8124 }, - {7593,7645,7592 ,5032,5034,8124 }, {7896,7947,7895 ,4355,4354,8122 }, - {8018,8035,7993 ,6676,6675,8115 }, {7994,8018,7993 ,5582,6676,8115 }, - {5658,5642,5659 ,49,526,3053 } - -// vertices -8146 -{-0.128951f,0.113893f,0.0385904f},{-0.183541f,0.121141f,0.0176007f},{-0.3356f,0.267483f,0.245606f}, -{0.0990868f,0.131443f,0.150773f},{-0.0330697f,0.108447f,0.0577602f},{-0.0525675f,0.103219f,0.0581332f}, -{-0.129472f,0.111128f,0.0174721f},{0.321716f,0.0172985f,0.188251f},{0.350352f,0.00204496f,0.112787f}, -{-0.0496094f,0.0212148f,0.245825f},{0.284245f,0.0735475f,0.150304f},{-0.296733f,0.306228f,-0.0948973f}, -{0.364127f,-0.0330021f,0.152767f},{0.399804f,-0.11262f,0.0755796f},{-0.10546f,0.41535f,-0.00363974f}, -{-0.407308f,0.165107f,0.333295f},{-0.354815f,0.10291f,0.350047f},{-0.415655f,0.1722f,0.323829f}, -{0.154706f,0.137848f,0.112556f},{0.363426f,-0.0163596f,0.0577281f},{0.344481f,-0.0712067f,-0.05722f}, -{-0.47357f,0.192405f,0.152844f},{-0.433269f,-0.00220573f,0.173326f},{-0.336095f,0.297592f,0.112524f}, -{-0.431192f,0.27075f,0.192f},{0.136655f,0.102968f,0.212456f},{0.172493f,0.0906273f,0.222398f}, -{-0.0907206f,0.100833f,0.0403717f},{-0.212472f,0.206855f,0.0920485f},{-0.390158f,0.166136f,0.336426f}, -{0.0818719f,0.1177f,0.189036f},{-0.181875f,0.080962f,0.174573f},{-0.396981f,-0.110421f,-0.0611684f}, -{0.263654f,0.0893219f,0.152702f},{-0.469351f,0.0768914f,0.0379088f},{0.367586f,-0.0504292f,-0.00258511f}, -{0.373245f,-0.0554837f,0.00500307f},{-0.449931f,0.0420887f,0.0196393f},{-0.104874f,0.430758f,-0.0208675f}, -{-0.392389f,0.230186f,0.285811f},{-0.0333784f,0.0170798f,0.258757f},{-0.0197004f,0.434816f,-0.137706f}, -{-0.131067f,0.378811f,-0.0749943f},{-0.091563f,0.102653f,0.0566477f},{0.175284f,0.113482f,0.190798f}, -{-0.190955f,0.149211f,0.11763f},{-0.0545288f,0.10055f,0.0386676f},{0.216376f,0.0805312f,0.210058f}, -{0.231906f,0.0788913f,0.208501f},{0.328282f,0.00609625f,0.189769f},{0.313646f,0.0244043f,0.192785f}, -{-0.149188f,0.359988f,0.0320504f},{-0.466033f,0.134156f,0.0375229f},{-0.234677f,0.209048f,0.17485f}, -{0.385283f,-0.0772258f,0.133456f},{0.382538f,-0.0547828f,0.0755796f},{0.370396f,-0.091817f,0.193274f}, -{-0.244857f,0.283997f,0.11408f},{-0.047275f,0.301502f,-0.0171956f},{-0.337446f,0.231304f,0.282833f}, -{-0.358197f,0.206437f,0.307669f},{-0.338095f,-0.305122f,0.135758f},{-0.470593f,0.0595544f,0.0379023f}, -{-0.377309f,0.116614f,0.351275f},{-0.30036f,0.324536f,-0.112678f},{-0.115717f,0.107591f,0.0241086f}, -{-0.190904f,0.150715f,0.0987171f},{-0.335529f,0.291643f,0.0379345f},{-0.484316f,0.0419215f,0.264172f}, -{0.152538f,0.102801f,0.211254f},{0.153812f,0.0916176f,0.225215f},{-0.103138f,0.104698f,0.03515f}, -{-0.297048f,0.295598f,0.0953281f},{0.30371f,0.0399987f,0.18802f},{-0.0883798f,0.41845f,-0.0178644f}, -{0.363773f,-0.092788f,-0.0374522f},{-0.352076f,0.35386f,-0.0974052f},{0.0567345f,0.0797466f,0.236108f}, -{0.294335f,-0.114228f,0.291643f},{0.0244911f,0.341809f,-0.0740619f},{-0.166352f,0.361223f,0.0361275f}, -{-0.0908749f,0.0966914f,0.0203724f},{-0.166281f,0.380907f,0.020636f},{-0.0159899f,0.0208225f,0.260622f}, -{-0.474798f,0.157956f,0.154394f},{-0.395045f,0.398315f,-0.246642f},{-0.390222f,0.11662f,0.352786f}, -{-0.444934f,-0.0373236f,0.0384554f},{-0.215192f,0.210083f,0.100627f},{0.345137f,0.00202567f,0.153461f}, -{0.308855f,-0.0536767f,0.250738f},{-0.108379f,0.398566f,-0.000488712f},{-0.377316f,0.201955f,0.313469f}, -{-0.375985f,0.234179f,0.285843f},{-0.145947f,0.392849f,0.0136523f},{0.358667f,-0.0149577f,0.13352f}, -{-0.436697f,-0.00081026f,0.0371307f},{0.399283f,-0.148799f,0.133494f},{0.212189f,0.114485f,0.152053f}, -{0.103035f,-0.451593f,0.311926f},{0.120237f,-0.454622f,0.308067f},{0.00337286f,0.115282f,0.039375f}, -{-0.222993f,0.303122f,0.0742677f},{-0.475924f,0.161339f,0.133758f},{-0.120218f,0.428983f,-0.0409697f}, -{0.369708f,-0.0305328f,0.035433f},{-0.482419f,0.11327f,0.230475f},{0.367676f,-0.0728915f,-0.0214784f}, -{0.377534f,-0.0744864f,-0.000623756f},{0.401881f,-0.148638f,0.0949037f},{-0.0891837f,0.436147f,-0.0219092f}, -{-0.0690814f,0.436153f,-0.035285f},{-0.358043f,0.0803189f,0.354516f},{-0.358088f,0.233304f,0.28655f}, -{-0.279319f,0.131166f,0.262429f},{0.385425f,-0.113488f,0.172059f},{0.0420919f,0.1286f,0.114562f}, -{0.00494195f,0.120401f,0.0939713f},{-0.337381f,0.293245f,0.0591042f},{0.192235f,0.0807048f,0.225292f}, -{0.040645f,0.109752f,0.187454f},{-0.315466f,0.284177f,0.210495f},{-0.355651f,0.284788f,0.207601f}, -{0.230845f,0.0689946f,0.221376f},{-0.16468f,0.398669f,-0.0160702f},{-0.17619f,0.390978f,-0.014932f}, -{-0.262805f,-0.44967f,0.30907f},{-0.242143f,-0.449754f,0.311906f},{-0.374988f,0.341597f,-0.0915855f}, -{-0.352281f,0.342844f,-0.0752323f},{0.356976f,-0.0173049f,0.150998f},{0.362082f,-0.0148741f,0.0948973f}, -{0.380981f,-0.114093f,-0.0206617f},{-0.184435f,0.345584f,0.0454455f},{-0.16558f,0.340909f,0.0421787f}, -{-0.165709f,-0.44913f,0.288852f},{-0.337619f,0.365731f,-0.130787f},{-0.0571911f,-0.128935f,0.325623f}, -{-0.451268f,0.191614f,0.0565062f},{0.00446607f,0.0954117f,0.188926f},{-0.123356f,0.411967f,-0.0662551f}, -{-0.464734f,-0.114524f,0.0774059f},{-0.306225f,0.300492f,-0.0590077f},{-0.299421f,0.28583f,-0.0583004f}, -{-0.354731f,0.187467f,-0.0365647f},{-0.341722f,0.209897f,0.299611f},{-0.372673f,0.355731f,-0.115045f}, -{-0.385148f,0.355165f,-0.137288f},{0.300727f,0.0312016f,0.203305f},{0.36657f,-0.0529501f,0.171216f}, -{0.351934f,-0.00997397f,0.15514f},{0.369599f,-0.0327063f,0.114176f},{0.00206744f,0.0217871f,0.263509f}, -{-0.356776f,0.0418636f,0.346581f},{0.198151f,0.0257355f,0.254262f},{0.193315f,0.0190926f,0.258641f}, -{-0.427719f,0.00261084f,0.190399f},{-0.126475f,0.393608f,0.0137423f},{-0.296354f,0.0562426f,-0.0510337f}, -{-0.347265f,0.359448f,-0.298396f},{-0.479319f,0.22715f,0.16903f},{0.0213916f,0.0220122f,0.268834f}, -{0.136095f,-0.453715f,0.305103f},{-0.0334105f,0.025877f,0.251471f},{-0.467107f,0.112029f,0.0377737f}, -{0.173676f,0.0207453f,0.26203f},{-0.388287f,0.395016f,-0.225517f},{0.286335f,0.0563905f,0.187177f}, -{0.310623f,-0.0532523f,-0.0824153f},{0.380795f,-0.0549564f,0.0370728f},{0.11616f,0.0201923f,0.278827f}, -{-0.316392f,0.233002f,0.268442f},{-0.356088f,0.115495f,0.345635f},{0.0212115f,0.12235f,0.0571364f}, -{0.137176f,0.139404f,0.078647f},{-0.300958f,0.264255f,0.243015f},{0.331607f,0.0236327f,0.15067f}, -{0.251944f,-0.450976f,0.265889f},{0.216614f,-0.108614f,0.324626f},{0.0391209f,0.0243529f,0.272146f}, -{0.350159f,0.00359473f,0.094788f},{-0.396447f,-0.0920678f,-0.0587827f},{0.375457f,-0.0619272f,0.15114f}, -{0.378859f,-0.0548986f,0.11417f},{-0.389926f,0.0207453f,-0.016649f},{-0.39327f,0.168007f,-0.0230282f}, -{0.154043f,-0.0357931f,-0.124575f},{0.175965f,-0.0327128f,-0.11952f},{0.175354f,0.128549f,0.150741f}, -{0.13623f,0.136156f,0.134343f},{0.0985016f,0.136529f,0.115032f},{-0.131163f,0.107514f,0.129051f}, -{-0.108649f,0.108993f,0.0566349f},{-0.0375068f,0.0839973f,0.175737f},{-0.298868f,0.291508f,0.0583325f}, -{-0.192608f,0.14804f,0.134388f},{-0.146976f,0.401826f,-5.1427e-05f},{-0.260792f,-0.433774f,0.302235f}, -{-0.242266f,-0.432822f,0.30464f},{-0.223154f,-0.432128f,0.300621f},{0.0791068f,0.13325f,0.0571686f}, -{-0.472972f,0.157127f,0.17238f},{0.0598019f,0.0811099f,-0.0603196f},{-0.202678f,-0.451117f,0.299971f}, -{-0.185881f,-0.450905f,0.295753f},{-0.180223f,-0.444307f,0.292126f},{-0.295923f,0.435491f,-0.378264f}, -{-0.316868f,0.344902f,-0.112511f},{-0.109878f,0.101553f,0.133636f},{-0.413f,0.264339f,0.224707f}, -{-0.317749f,0.291528f,0.0568664f},{0.0993119f,0.117025f,0.191344f},{-0.468773f,-0.114106f,0.115938f}, -{0.247809f,0.0718048f,0.209132f},{-0.314025f,0.307527f,-0.0538375f},{-0.106804f,0.102318f,0.0163725f}, -{-0.108328f,0.0983956f,0.000623793f},{-0.124166f,0.104466f,-0.00183272f},{-0.430954f,-0.0187196f,0.0181731f}, -{0.359516f,-0.056757f,0.189949f},{0.360924f,-0.0149963f,0.114183f},{-0.203379f,0.301547f,0.0699592f}, -{0.043931f,0.0177872f,0.276653f},{-0.127337f,0.404874f,0.00522815f},{0.377033f,-0.0575802f,0.132555f}, -{0.396801f,-0.148973f,0.15276f},{-0.0911514f,0.443073f,-0.0347513f},{-0.0342529f,0.307598f,-0.0218771f}, -{0.250387f,0.0819974f,0.190296f},{0.0618919f,0.132337f,0.0979776f},{0.370126f,-0.0498955f,0.154092f}, -{-0.0687534f,0.038256f,0.2229f},{-0.0509598f,0.0395936f,0.228051f},{-0.0323752f,0.0376065f,0.242114f}, -{-0.0172824f,0.0393235f,0.24722f},{-0.376454f,0.0422173f,0.34442f},{0.101807f,-0.434835f,0.310807f}, -{0.117163f,-0.4376f,0.307746f},{0.137092f,-0.437143f,0.30435f},{0.157136f,-0.433986f,0.301926f}, -{-0.221996f,0.323739f,0.0583004f},{-0.204993f,0.322929f,0.060056f},{-0.183592f,0.321295f,0.0548343f}, -{0.0599755f,0.0178001f,0.277393f},{-0.371612f,0.134066f,0.346529f},{-0.279319f,0.293347f,0.151384f}, -{0.30418f,0.0563133f,0.149526f},{0.351574f,-0.0295231f,-0.00458504f},{-0.42516f,0.173576f,0.00514455f}, -{0.34978f,-0.0516575f,-0.0410598f},{-0.128784f,0.378316f,0.0167776f},{-0.374165f,0.0802225f,0.35258f}, -{0.335857f,-0.0209511f,-0.0349313f},{0.348609f,-0.0342754f,-0.0208739f},{0.403219f,-0.148555f,0.0756182f}, -{-0.35369f,-0.109778f,-0.0902029f},{-0.334462f,-0.109334f,-0.0956625f},{-0.376461f,-0.110086f,-0.0797852f}, -{-0.0688499f,0.453792f,-0.0389762f},{-0.059101f,0.454365f,-0.0439343f},{-0.241449f,0.312247f,0.0639594f}, -{-0.275866f,0.297437f,0.0577409f},{-0.2969f,0.288724f,0.040526f},{-0.12452f,0.104569f,0.134652f}, -{-0.0449085f,0.106698f,0.07684f},{-0.352564f,0.250764f,0.267805f},{-0.335652f,0.284769f,0.209781f}, -{-0.391682f,-0.0901193f,0.243947f},{0.358397f,-0.0700492f,-0.0368027f},{-0.455037f,0.160406f,0.031118f}, -{-0.207244f,-0.435819f,0.296801f},{-0.202177f,-0.427382f,0.290885f},{-0.184473f,-0.42978f,0.288955f}, -{-0.167245f,-0.431086f,0.284589f},{-0.145227f,-0.433259f,0.278943f},{-0.336938f,0.340073f,-0.0762226f}, -{-0.328333f,0.331713f,-0.0703771f},{-0.316347f,0.321379f,-0.0740426f},{-0.0900582f,-0.471773f,0.341359f}, -{-0.0745475f,-0.4318f,0.343346f},{-0.0611524f,-0.427793f,0.349043f},{-0.0524774f,-0.43423f,0.355699f}, -{-0.0348703f,-0.432513f,0.355416f},{0.174666f,0.132105f,0.133629f},{-0.183251f,0.359828f,0.0370985f}, -{0.249275f,0.0920421f,0.17031f},{0.0221054f,-0.433337f,0.336742f},{0.0347738f,-0.433311f,0.332144f}, -{0.0444905f,-0.433279f,0.329301f},{0.0604707f,-0.433246f,0.324092f},{0.0795826f,-0.433169f,0.317919f}, -{0.0923282f,-0.433124f,0.313591f},{0.174236f,-0.432449f,0.299399f},{0.231996f,0.02189f,0.248693f}, -{0.00507055f,0.11743f,0.131449f},{-0.234034f,0.228925f,0.155545f},{-0.29074f,0.399447f,-0.339243f}, -{-0.127562f,0.398585f,-0.0706215f},{-0.237796f,0.133533f,0.232089f},{-0.313929f,0.1495f,0.285862f}, -{0.381296f,-0.054815f,0.0948651f},{-0.145844f,0.379223f,0.0246809f},{-0.121864f,0.413382f,-0.00367832f}, -{-0.491158f,0.0606347f,0.172946f},{0.400736f,-0.130665f,0.0370921f},{0.0808816f,0.0201151f,0.278145f}, -{-0.186242f,0.340336f,-0.0426803f},{-0.156436f,0.340195f,-0.0631619f},{-0.224472f,-0.266313f,0.252731f}, -{-0.128655f,-0.114562f,-0.142401f},{-0.35713f,0.187769f,0.318234f},{-0.429134f,0.265882f,0.206386f}, -{-0.286734f,0.292544f,0.0523327f},{-0.331015f,0.359448f,-0.337012f},{0.100733f,0.101122f,0.215254f}, -{-0.0531848f,0.10417f,0.0738497f},{-0.14904f,0.117983f,0.0386033f},{-0.373393f,0.250249f,0.26711f}, -{-0.354667f,0.335179f,-0.0613485f},{-0.268779f,-0.426436f,0.293341f},{-0.139356f,-0.426771f,0.273869f}, -{0.0225041f,0.1217f,0.133989f},{-0.0367802f,0.104563f,0.0376901f},{-0.0706633f,0.0942864f,0.0189769f}, -{-0.0814154f,-0.420617f,0.334337f},{-0.0697952f,-0.416919f,0.335648f},{-0.0543552f,-0.414475f,0.34179f}, -{-0.0346131f,-0.419498f,0.351449f},{-0.0170702f,-0.416186f,0.34624f},{0.00188095f,-0.415935f,0.338169f}, -{0.0178869f,-0.420668f,0.334645f},{0.0227227f,-0.414559f,0.328748f},{0.040407f,-0.417208f,0.323945f}, -{0.0598148f,-0.417697f,0.317784f},{0.0748561f,-0.419485f,0.314562f},{0.0834925f,-0.416739f,0.312395f}, -{0.0984952f,-0.418398f,0.310614f},{0.117794f,-0.423285f,0.306016f},{0.137111f,-0.423485f,0.305263f}, -{0.156243f,-0.418347f,0.308177f},{0.0988103f,0.076422f,0.243336f},{0.155008f,0.0210347f,0.268956f}, -{-0.411038f,0.251838f,0.247265f},{-0.410543f,0.241999f,0.261284f},{-0.391753f,0.24632f,0.26695f}, -{-0.177489f,0.115868f,0.134214f},{-0.411945f,0.133436f,0.346246f},{-0.219327f,0.284595f,0.0821324f}, -{0.352751f,-0.0704608f,-0.0463586f},{0.398987f,-0.130729f,0.114176f},{0.116977f,-0.0373878f,-0.131128f}, -{-0.368583f,-0.130304f,-0.0862995f},{-0.3536f,-0.12826f,-0.09237f},{-0.334333f,-0.127784f,-0.0978939f}, -{0.273512f,0.0615929f,0.194058f},{-0.141073f,0.358805f,0.025742f},{0.0806308f,0.134607f,0.114048f}, -{-0.364178f,0.164824f,0.332523f},{0.155439f,0.131526f,0.151584f},{-0.31679f,0.289103f,0.040764f}, -{-0.321736f,0.316562f,-0.055458f},{-0.0391209f,-0.127449f,0.348703f},{-0.112816f,0.109611f,0.0410405f}, -{0.0798013f,-0.0758304f,0.343391f},{0.0260024f,0.107771f,0.182155f},{0.0239188f,0.112517f,0.170445f}, -{0.419128f,-0.26322f,0.170818f},{-0.261185f,-0.414012f,0.28657f},{-0.241172f,-0.412675f,0.287026f}, -{-0.223064f,-0.41227f,0.283753f},{-0.203772f,-0.416855f,0.282943f},{-0.184422f,-0.416925f,0.28019f}, -{-0.16511f,-0.417112f,0.276949f},{-0.152256f,-0.417196f,0.276872f},{-0.144545f,-0.412295f,0.271689f}, -{-0.130668f,-0.413524f,0.27093f},{-0.33933f,0.299868f,0.00039872f},{-0.454754f,0.269998f,0.156593f}, -{-0.355445f,0.290942f,0.187936f},{-0.373869f,0.292685f,0.171158f},{0.0630687f,-0.0750779f,0.341372f}, -{0.301582f,0.036359f,-0.0174399f},{-0.484972f,0.043542f,0.227652f},{-0.0878975f,-0.413839f,0.323211f}, -{-0.0364779f,-0.410373f,0.346343f},{0.117851f,-0.412816f,0.316787f},{0.137098f,-0.412019f,0.321604f}, -{0.153001f,-0.412225f,0.319591f},{0.17729f,-0.415324f,0.301707f},{-0.12652f,0.0335809f,0.221356f}, -{-0.107344f,0.0338317f,0.222655f},{-0.206402f,0.0359345f,0.223974f},{0.0985531f,0.0223723f,0.27902f}, -{0.386113f,-0.167943f,-0.0205717f},{0.059982f,0.0266615f,0.27331f},{-0.324829f,0.228083f,0.278538f}, -{-0.143298f,0.411575f,-0.0170091f},{0.230079f,0.0996624f,0.170142f},{0.00333428f,0.11907f,0.0747822f}, -{-0.0342851f,0.0952124f,0.1515f},{0.367097f,-0.0327707f,0.133501f},{0.305479f,-0.430276f,0.202965f}, -{0.325279f,-0.432378f,0.19436f},{-0.201129f,0.301309f,-0.0341211f},{-0.0687792f,0.41562f,-0.106234f}, -{0.285402f,-0.132542f,-0.130118f},{-0.0900582f,-0.113913f,-0.148195f},{-0.470496f,0.263483f,0.113199f}, -{0.327536f,0.0208932f,0.172078f},{0.349542f,-0.0149705f,0.174387f},{-0.0496415f,0.456307f,-0.0524292f}, -{0.284888f,-0.115135f,0.298344f},{0.155542f,0.11745f,0.189016f},{-0.0713836f,0.10136f,0.0766085f}, -{-0.462342f,0.0766857f,0.0217871f},{0.0812353f,-0.0669496f,0.329192f},{-0.304309f,0.282583f,-0.0389569f}, -{-0.0486705f,-0.130169f,0.338889f},{-0.20372f,-0.40854f,0.273586f},{-0.184428f,-0.408527f,0.272853f}, -{-0.16513f,-0.408553f,0.27212f},{-0.0558985f,-0.105444f,-0.178663f},{-0.0901482f,0.0915726f,0.00273948f}, -{-0.0718337f,-0.401498f,0.322466f},{-0.0522974f,-0.402662f,0.335115f},{-0.0364715f,-0.402199f,0.338381f}, -{-0.017321f,-0.402579f,0.335468f},{0.0019967f,-0.39737f,0.321578f},{0.0213466f,-0.399299f,0.320356f}, -{0.0406707f,-0.398978f,0.322536f},{0.0598727f,-0.40427f,0.318427f},{0.0792611f,-0.403119f,0.324491f}, -{0.0985981f,-0.40245f,0.327597f},{0.117851f,-0.402424f,0.330645f},{0.135806f,-0.396515f,0.336793f}, -{0.143484f,-0.402212f,0.331796f},{0.156288f,-0.402759f,0.327501f},{0.174705f,-0.396778f,0.321295f}, -{-0.393251f,0.175088f,0.330491f},{-0.266657f,0.267921f,0.222089f},{0.0760586f,0.0268223f,0.274274f}, -{-0.374171f,0.17521f,0.329848f},{-0.355291f,0.17002f,0.325764f},{-0.338089f,0.249195f,0.268101f}, -{-0.320527f,0.247998f,0.262757f},{-0.415784f,-0.109244f,-0.0416578f},{-0.395386f,0.21018f,0.303913f}, -{-0.373586f,0.262403f,0.248712f},{0.32452f,-0.413421f,0.205273f},{0.343323f,-0.413382f,0.207029f}, -{0.362815f,-0.411697f,0.208823f},{-0.164191f,0.322324f,0.0389441f},{0.313955f,0.0451368f,0.154735f}, -{-0.158712f,0.3742f,0.0292852f},{0.359059f,-0.0334201f,0.173133f},{-0.0546896f,0.469323f,-0.0593164f}, -{-0.0400727f,0.470847f,-0.0605961f},{0.0435195f,0.129552f,0.0968393f},{-0.0157969f,0.114247f,0.0771229f}, -{0.117157f,0.11671f,0.191499f},{0.174936f,0.0809942f,0.231182f},{-0.335555f,0.259117f,0.257201f}, -{-0.375753f,0.328079f,-0.0684286f},{-0.333819f,0.326189f,-0.0550915f},{0.079872f,0.130202f,0.15094f}, -{-0.299608f,0.266673f,-0.01771f},{-0.319523f,0.302595f,-0.0367641f},{-0.338307f,0.319167f,-0.0382881f}, -{-0.259654f,-0.401923f,0.265567f},{-0.243262f,-0.398174f,0.263728f},{-0.223244f,-0.399826f,0.264204f}, -{-0.202125f,-0.398084f,0.262995f},{-0.184454f,-0.395691f,0.263561f},{-0.165162f,-0.39537f,0.266602f}, -{-0.145806f,-0.395466f,0.26576f},{-0.125568f,-0.396727f,0.264596f},{-0.33623f,0.347474f,-0.0918877f}, -{-0.320829f,0.338645f,-0.0939005f},{-0.312437f,0.328272f,-0.0923378f},{-0.0557121f,-0.394527f,0.325006f}, -{-0.0364844f,-0.394418f,0.326536f},{-0.0172053f,-0.394688f,0.322485f},{0.0600206f,-0.393145f,0.332857f}, -{0.0792804f,-0.393036f,0.334504f},{0.0985531f,-0.392971f,0.336433f},{0.117832f,-0.39245f,0.340124f}, -{0.156339f,-0.393138f,0.334845f},{0.0406707f,0.0795794f,0.232591f},{0.398286f,-0.112762f,0.0371114f}, -{-0.471802f,0.0156329f,0.116536f},{-0.261165f,0.293142f,0.0956368f},{-0.389849f,0.0793929f,0.346034f}, -{-0.306746f,0.246095f,0.256661f},{-0.298302f,0.250976f,0.25041f},{-0.280772f,0.250551f,0.242918f}, -{-0.46694f,0.210668f,0.209247f},{-0.390171f,0.13925f,0.349031f},{0.0996849f,0.137295f,0.0955082f}, -{0.392878f,-0.114517f,0.148445f},{0.387965f,-0.0771036f,0.114151f},{-0.167509f,0.121359f,0.0380695f}, -{-0.292045f,0.246281f,-0.0204173f},{-0.305653f,0.278718f,-0.0245008f},{-0.330192f,0.311321f,-0.0337481f}, -{-0.353953f,0.322311f,-0.0375743f},{-0.241449f,-0.391994f,0.247227f},{0.133755f,0.0177294f,0.27601f}, -{-0.225064f,-0.391692f,0.245606f},{-0.206987f,-0.391981f,0.254288f},{-0.108894f,-0.390431f,0.265098f}, -{-0.12789f,0.110627f,0.113739f},{0.061924f,-0.0584675f,0.301945f},{-0.164365f,0.120048f,0.0967365f}, -{-0.355046f,0.31082f,-0.0183531f},{-0.0707984f,-0.389782f,0.304061f},{-0.0525739f,-0.386701f,0.310003f}, -{-0.0365165f,-0.386663f,0.310286f},{-0.0172696f,-0.386669f,0.309868f},{-0.00438252f,-0.386444f,0.312517f}, -{0.00376513f,-0.378708f,0.321295f},{0.0171538f,-0.381898f,0.327108f},{0.0257387f,-0.378104f,0.334478f}, -{0.0406578f,-0.379377f,0.337777f},{0.0599562f,-0.378895f,0.342388f},{0.077647f,-0.380804f,0.345982f}, -{0.0985402f,-0.38256f,0.350053f},{0.117819f,-0.380734f,0.347635f},{0.137118f,-0.382952f,0.347024f}, -{0.156358f,-0.378824f,0.342722f},{0.174801f,-0.375428f,0.33705f},{-0.293306f,0.246314f,-0.0577537f}, -{-0.475679f,0.0771036f,0.0506543f},{-0.0662712f,-0.117623f,-0.186586f},{-0.344249f,0.391113f,-0.324369f}, -{-0.370872f,0.116569f,0.349307f},{-0.281731f,0.208894f,-0.0190347f},{-0.5f,0.077991f,0.134201f}, -{0.324681f,0.0208289f,3.86026e-05f},{-0.229899f,0.187364f,0.172335f},{0.0615768f,0.0731359f,0.242584f}, -{0.0284267f,0.126562f,0.092563f},{-0.288219f,0.291238f,-0.147847f},{-0.4415f,-0.0193434f,0.147532f}, -{-0.467686f,0.192663f,0.210759f},{-0.0701425f,0.0924215f,0.13388f},{-0.0727147f,0.0979968f,0.0376001f}, -{0.323954f,-0.394007f,0.213292f},{0.342847f,-0.391544f,0.213176f},{0.360828f,-0.392122f,0.216964f}, -{0.383348f,-0.393878f,0.215118f},{-0.147085f,0.03751f,0.223375f},{-0.458689f,0.0765956f,0.0121733f}, -{-0.302842f,0.289637f,-0.244211f},{-0.340597f,0.0807112f,0.352227f},{0.289364f,-0.0535095f,0.267676f}, -{-0.454792f,0.0574001f,0.0140382f},{-0.0704125f,0.457548f,-0.0739462f},{-0.186518f,0.37503f,0.0173564f}, -{-0.296971f,0.266294f,-0.0383975f},{-0.372493f,-0.095058f,0.263213f},{0.211855f,0.119019f,0.132903f}, -{0.00716052f,-0.077483f,0.319726f},{0.051172f,0.127642f,0.144291f},{-0.146391f,0.0978682f,0.152773f}, -{-0.220929f,-0.380824f,0.227735f},{-0.216241f,-0.383261f,0.241401f},{-0.203604f,-0.379036f,0.247278f}, -{-0.190981f,-0.378271f,0.254436f},{-0.181271f,-0.377904f,0.258603f},{-0.16522f,-0.377525f,0.26302f}, -{-0.145799f,-0.377525f,0.263201f},{-0.126462f,-0.377846f,0.259464f},{-0.107247f,-0.382239f,0.256744f}, -{0.322456f,0.0356259f,0.151847f},{-0.0665799f,-0.379133f,0.281078f},{-0.0513521f,-0.377171f,0.28455f}, -{-0.039391f,-0.375152f,0.289258f},{-0.0298029f,-0.374271f,0.298216f},{-0.0215267f,-0.374946f,0.305939f}, -{-0.0127359f,-0.370882f,0.315977f},{0.0824057f,-0.373371f,0.353378f},{0.0985209f,-0.372914f,0.357963f}, -{0.117813f,-0.373351f,0.35251f},{0.137092f,-0.373358f,0.352329f},{0.382756f,-0.0957782f,-0.00136328f}, -{0.394679f,-0.112903f,0.133449f},{-0.389026f,0.097283f,0.348497f},{-0.431128f,0.0196778f,0.305193f}, -{-0.480425f,0.0439793f,0.0615414f},{-0.359651f,0.151455f,0.335198f},{-0.371837f,0.151802f,0.340677f}, -{-0.390171f,0.152741f,0.343436f},{-0.485364f,0.0427446f,0.0765506f},{0.0792932f,0.075213f,0.243651f}, -{0.211874f,0.12071f,0.11453f},{0.368583f,-0.386328f,0.219067f},{0.378274f,-0.386367f,0.21906f}, -{-0.337825f,0.0426482f,0.344201f},{0.249532f,0.0981319f,0.152027f},{0.249686f,0.101135f,0.132594f}, -{0.362307f,-0.0139031f,0.0751937f},{0.00535994f,0.324311f,-0.055323f},{-0.38965f,0.24396f,-0.0210861f}, -{-0.449429f,0.0762419f,-0.000784522f},{-0.313697f,0.286287f,-0.0181602f},{0.191984f,0.110247f,0.189306f}, -{0.00652389f,0.103746f,0.175383f},{-0.165008f,0.392573f,0.00273305f},{-0.35423f,0.294576f,0.173287f}, -{-0.148886f,0.0846597f,0.176888f},{0.207527f,0.0906723f,0.204206f},{-0.107138f,-0.373834f,0.252796f}, -{-0.0889843f,-0.372149f,0.249992f},{-0.304759f,0.320221f,-0.0956882f},{-0.127182f,0.0754059f,0.190611f}, -{-0.108315f,0.0574837f,0.2049f},{-0.0575576f,-0.37148f,0.267104f},{-0.00203533f,-0.363551f,0.329006f}, -{0.00388088f,-0.355828f,0.334677f},{0.0214687f,-0.361326f,0.336883f},{0.0406707f,-0.360625f,0.344819f}, -{0.055667f,-0.361725f,0.348799f},{0.0642198f,-0.358439f,0.352214f},{0.0792354f,-0.359455f,0.35694f}, -{0.0985466f,-0.358947f,0.36204f},{0.117877f,-0.3595f,0.356509f},{0.137105f,-0.359757f,0.353866f}, -{0.156378f,-0.360297f,0.347982f},{0.175998f,-0.359152f,0.34514f},{0.0201054f,0.075766f,0.229575f}, -{-0.297833f,0.399453f,-0.320176f},{-0.259847f,0.0370792f,0.247214f},{0.138578f,0.0243465f,0.272544f}, -{-0.165155f,0.0381917f,0.222835f},{-0.403103f,0.116607f,0.351969f},{0.347426f,-0.0926658f,-0.0576316f}, -{-0.0582393f,0.457156f,-0.0944021f},{-0.298656f,0.344491f,-0.167519f},{-0.411636f,0.151661f,0.338497f}, -{0.0989132f,0.137185f,0.0767821f},{-0.409958f,0.207415f,0.298743f},{0.293691f,0.0650204f,0.156272f}, -{-0.0904505f,0.103559f,0.0759075f},{0.330603f,-0.375428f,0.21762f},{0.34297f,-0.373139f,0.213922f}, -{0.360808f,-0.371872f,0.216546f},{0.368557f,-0.377094f,0.219009f},{0.381483f,-0.372547f,0.219614f}, -{-0.43289f,0.251657f,0.227395f},{-0.313485f,0.255098f,0.254429f},{0.330089f,-0.0531044f,0.230706f}, -{0.30589f,0.0219928f,0.206784f},{0.38237f,-0.0548664f,0.0563198f},{-0.0897302f,0.0956175f,0.133906f}, -{-0.0879168f,0.0444037f,0.215536f},{-0.184441f,0.134401f,0.132915f},{0.19945f,0.101727f,0.198026f}, -{0.193605f,0.0958233f,0.20917f},{-0.354416f,0.26648f,0.245555f},{-0.279338f,0.282004f,0.207678f}, -{-0.355966f,0.29347f,0.0546414f},{-0.354564f,0.296814f,0.0935083f},{-0.201322f,-0.362393f,0.24315f}, -{-0.188229f,-0.361403f,0.253625f},{-0.179206f,-0.358567f,0.258988f},{-0.165188f,-0.359371f,0.263709f}, -{-0.145793f,-0.359403f,0.263953f},{-0.126449f,-0.359776f,0.259644f},{-0.107138f,-0.360413f,0.252352f}, -{-0.0891901f,-0.360021f,0.246384f},{-0.280136f,0.293167f,0.0344748f},{-0.461268f,0.0941706f,0.0216842f}, -{-0.336494f,0.291135f,0.190476f},{-0.0558021f,-0.358059f,0.265053f},{-0.0402142f,-0.356979f,0.28747f}, -{-0.0301695f,-0.353416f,0.302608f},{-0.0231215f,-0.359397f,0.309508f},{-0.0135977f,-0.353481f,0.321681f}, -{-0.410967f,0.0985306f,0.345783f},{-0.396711f,0.102801f,0.350773f},{-0.184447f,0.0336581f,0.224674f}, -{-0.111086f,0.423491f,-0.0134915f},{-0.415186f,0.115971f,0.347674f},{-0.128141f,0.419125f,-0.017665f}, -{-0.290862f,0.286274f,-0.096402f},{0.0463683f,0.437201f,-0.168316f},{0.342841f,-0.1328f,-0.0902865f}, -{0.392421f,-0.0813864f,0.0755796f},{0.356911f,-0.0199286f,0.0177872f},{-0.467024f,-0.0708209f,0.0964471f}, -{0.120951f,0.0267194f,0.27448f},{0.39419f,-0.368914f,0.21897f},{0.215842f,0.0233819f,0.252313f}, -{0.273377f,0.0811099f,0.153577f},{-0.455577f,-0.0533295f,0.056577f},{-0.372969f,0.334041f,-0.0745571f}, -{-0.0136491f,0.113437f,0.0573872f},{-0.357477f,0.241433f,0.278769f},{-0.318064f,0.290531f,0.191627f}, -{-0.335851f,0.278583f,0.225047f},{0.0617826f,0.127681f,0.153719f},{-0.296881f,0.294119f,0.0776695f}, -{-0.319003f,0.265046f,0.24715f},{-0.373631f,0.290094f,0.039928f},{0.00397734f,0.118176f,0.0573101f}, -{-0.260651f,0.281702f,0.190142f},{-0.0537893f,0.0964342f,0.0183338f},{-0.0705605f,-0.359037f,0.248056f}, -{0.0407607f,0.122652f,0.154567f},{-0.0711907f,0.0987235f,0.114543f},{-0.393714f,0.293534f,0.135147f}, -{-0.398814f,0.379653f,-0.243941f},{-0.390955f,-0.0752966f,-0.0572136f},{0.0226327f,0.119938f,0.0371885f}, -{0.0990097f,0.135777f,0.0580818f},{0.118314f,0.138742f,0.0781197f},{0.193155f,0.128774f,0.0961062f}, -{0.00290986f,-0.337115f,0.339397f},{0.021816f,-0.338973f,0.343912f},{0.0373589f,-0.346973f,0.348111f}, -{0.0422784f,-0.339674f,0.352953f},{0.0599305f,-0.341577f,0.356876f},{0.0792289f,-0.34159f,0.357185f}, -{0.0984695f,-0.341307f,0.36004f},{0.117845f,-0.341372f,0.359075f},{0.13715f,-0.341886f,0.354227f}, -{0.154841f,-0.339893f,0.35168f},{0.159619f,-0.346709f,0.349931f},{0.174454f,-0.341944f,0.348754f}, -{0.137098f,0.0797274f,0.234539f},{0.117382f,0.0827112f,0.233671f},{0.370126f,-0.168323f,-0.0577537f}, -{0.174396f,0.134163f,0.114022f},{-0.37837f,0.0210347f,-0.026295f},{-0.108617f,0.021382f,0.232044f}, -{-0.244954f,0.282261f,0.132735f},{0.134796f,0.118331f,0.188508f},{0.080155f,0.135185f,0.0954117f}, -{0.154551f,0.135873f,0.13087f},{-0.0725411f,0.100325f,0.0573808f},{0.344815f,-0.357931f,0.214012f}, -{0.362172f,-0.354844f,0.214276f},{0.379804f,-0.352291f,0.21708f},{0.384653f,-0.358947f,0.218803f}, -{0.397688f,-0.359384f,0.218797f},{-0.3901f,0.188508f,0.322067f},{-0.0718144f,-0.112768f,-0.167171f}, -{-0.0893123f,0.0619337f,-0.0559532f},{-0.196769f,0.307952f,0.0660493f},{-0.0233851f,-0.14159f,0.366895f}, -{0.234459f,0.103842f,0.15258f},{0.360461f,-0.0519726f,-0.020398f},{0.29238f,0.0452911f,0.195595f}, -{-0.375309f,0.320311f,-0.0550657f},{-0.316623f,0.297585f,0.135912f},{-0.372744f,0.282557f,0.208784f}, -{-0.280592f,0.294556f,0.0755024f},{0.0436802f,0.118305f,0.171557f},{0.288746f,0.0260571f,-0.0418957f}, -{-0.129755f,0.113996f,0.0951288f},{-0.180081f,-0.338169f,0.260667f},{-0.1652f,-0.341037f,0.266506f}, -{-0.145831f,-0.340947f,0.267734f},{-0.126501f,-0.341346f,0.263303f},{-0.111459f,-0.340401f,0.257233f}, -{-0.102952f,-0.343745f,0.252982f},{-0.0870229f,-0.340838f,0.24742f},{-0.0707341f,-0.340246f,0.248249f}, -{-0.0517122f,0.0829363f,0.168059f},{0.210993f,0.110421f,0.169995f},{-0.413405f,0.28711f,0.152953f}, -{-0.497717f,0.108736f,0.150156f},{0.0393395f,0.123218f,0.0331629f},{0.23114f,0.112247f,0.112472f}, -{-0.130822f,0.421536f,-0.0386354f},{-0.0864056f,0.0360117f,0.224057f},{-0.0163243f,0.0771229f,0.207485f}, -{-0.00137296f,0.0807627f,0.209697f},{-0.330996f,0.341243f,-0.336857f},{-0.0541558f,0.100904f,0.114061f}, -{-0.126514f,0.0204431f,0.231858f},{-0.301518f,0.303784f,-0.0767113f},{-0.0140221f,0.0699463f,0.219871f}, -{0.364416f,-0.0319861f,0.0164239f},{-0.224549f,0.247941f,0.115726f},{0.274798f,-0.0509115f,0.27484f}, -{0.00366868f,0.07248f,0.224784f},{-0.287434f,0.264455f,0.238854f},{0.370429f,-0.0281663f,0.0755924f}, -{-0.486129f,0.0955853f,0.211286f},{0.402524f,-0.352805f,0.217183f},{-0.392492f,-0.263876f,0.0960741f}, -{-0.373374f,0.363596f,-0.131899f},{-0.14733f,0.115932f,0.0203659f},{0.0461496f,0.417517f,-0.14905f}, -{-0.033507f,0.477419f,-0.0714961f},{0.0626121f,-0.0658371f,0.325713f},{-0.375084f,-0.149693f,0.26284f}, -{-0.239854f,-0.356509f,0.0785891f},{0.0611009f,0.100196f,0.210476f},{-0.317877f,0.29727f,0.153204f}, -{0.0992733f,-0.0652519f,0.325842f},{-0.278129f,0.268152f,0.230417f},{-0.015932f,0.110305f,0.0387448f}, -{-0.0342465f,0.10972f,0.0948008f},{-0.412993f,0.28383f,0.1722f},{-0.0337063f,0.0961191f,0.00265588f}, -{-0.0527154f,0.0908974f,-0.00167195f},{-0.0925019f,0.43587f,-0.0756246f},{0.0438153f,0.125867f,0.0425581f}, -{0.174287f,0.134928f,0.0941706f},{0.0213144f,-0.318408f,0.354863f},{0.0406578f,-0.323224f,0.361603f}, -{0.0599305f,-0.322896f,0.366046f},{0.0792418f,-0.323166f,0.36249f},{0.097312f,-0.323829f,0.363519f}, -{0.117806f,-0.327424f,0.364271f},{0.138397f,-0.323951f,0.364387f},{0.157805f,-0.321604f,0.357699f}, -{0.177978f,-0.320755f,0.346786f},{0.027848f,0.0706215f,0.238475f},{-0.223636f,0.0383203f,0.226314f}, -{0.156378f,0.0796759f,0.235767f},{0.319929f,0.0325649f,0.169229f},{-0.147516f,0.116594f,0.0961384f}, -{-0.313749f,0.293438f,0.17811f},{0.136738f,0.138626f,0.116125f},{0.362358f,-0.337057f,0.210244f}, -{0.381406f,-0.336684f,0.213376f},{0.400826f,-0.336677f,0.215897f},{0.419559f,-0.337655f,0.210829f}, -{0.394679f,-0.0948008f,0.0948716f},{0.394659f,-0.0958233f,0.0384039f},{-0.407849f,0.0805119f,0.336343f}, -{-0.446053f,0.00109963f,0.0566477f},{-0.35713f,0.225485f,-0.0908974f},{-0.290335f,0.285129f,-0.168438f}, -{-0.410299f,-0.0898621f,0.228141f},{-0.392196f,-0.111135f,0.247098f},{-0.0742517f,0.0636057f,0.19465f}, -{-0.239397f,0.266126f,0.172747f},{-0.353374f,0.279753f,0.221408f},{-0.342693f,0.295778f,0.0180895f}, -{-0.0354876f,0.101129f,0.021517f},{-0.394749f,0.288923f,0.172605f},{-0.167168f,-0.32107f,0.268577f}, -{-0.145838f,-0.322485f,0.272036f},{-0.126526f,-0.322742f,0.268795f},{-0.107189f,-0.323552f,0.26003f}, -{-0.0880133f,-0.319681f,0.25241f},{-0.0712421f,-0.318022f,0.250693f},{-0.0627793f,-0.324871f,0.257233f}, -{-0.410318f,-0.0753159f,-0.0372528f},{0.251095f,0.101746f,0.11134f},{0.295132f,0.0662294f,0.136947f}, -{0.00121216f,-0.316614f,0.345314f},{0.0165557f,-0.3217f,0.349564f},{0.10499f,-0.317848f,0.370618f}, -{0.117826f,-0.31788f,0.370683f},{0.130649f,-0.317958f,0.36993f},{0.176743f,0.0583454f,0.244372f}, -{0.00338572f,0.0562169f,0.241201f},{0.117774f,0.062088f,0.253291f},{-0.497955f,0.0649368f,0.134272f}, -{-0.0534099f,0.0723128f,0.189705f},{-0.0364844f,0.0692196f,0.207273f},{-0.14578f,0.0250796f,0.232591f}, -{-0.0344716f,0.0794894f,0.189962f},{-0.374126f,0.210926f,0.306852f},{-0.238844f,0.227845f,0.173602f}, -{-0.410041f,0.290004f,0.114492f},{0.193695f,0.128131f,0.11462f},{-0.291917f,0.284917f,-0.187685f}, -{-0.185264f,0.100659f,-0.0401788f},{0.378094f,-0.0563068f,0.0186489f},{-0.335382f,0.168773f,-0.0424552f}, -{-0.433976f,0.0221343f,0.0171313f},{-0.0405421f,0.318511f,-0.00552392f},{-0.446175f,0.191441f,0.0372014f}, -{-0.303505f,0.396077f,-0.300685f},{-0.369811f,0.296563f,0.0990451f},{-0.41217f,0.00878431f,0.29855f}, -{-0.294347f,0.26549f,-0.148452f},{-0.355812f,0.360175f,-0.111141f},{-0.122121f,0.0838623f,0.17701f}, -{0.0430565f,0.127186f,0.132041f},{0.251764f,0.0635028f,0.215164f},{-0.414492f,0.283952f,0.0753931f}, -{0.0616346f,0.114093f,0.190187f},{-0.393785f,0.291817f,0.153937f},{-0.21853f,0.153397f,0.19463f}, -{0.0606958f,0.12844f,0.0401531f},{0.156468f,0.137963f,0.0765185f},{0.212903f,0.120986f,0.0972252f}, -{0.285743f,0.0747886f,0.133443f},{0.322745f,0.0380438f,0.133648f},{0.0598791f,0.122337f,0.171763f}, -{0.00871031f,-0.310562f,0.351905f},{0.022324f,-0.300466f,0.358908f},{0.0406643f,-0.300415f,0.366676f}, -{0.0599112f,-0.304537f,0.371184f},{0.0776341f,-0.302247f,0.37139f},{0.0824636f,-0.309083f,0.368606f}, -{0.0985209f,-0.304286f,0.373448f},{0.117813f,-0.304202f,0.374747f},{0.137195f,-0.304408f,0.372367f}, -{0.154828f,-0.298685f,0.366991f},{0.0213273f,0.057548f,0.247812f},{0.0985338f,0.0622102f,0.25522f}, -{0.0792868f,0.0621138f,0.253786f},{0.058355f,0.0599402f,0.252802f},{-0.315717f,0.074795f,-0.0470338f}, -{-0.147941f,-0.114858f,-0.139577f},{-0.499453f,0.0780746f,0.153526f},{0.0407157f,0.0706859f,0.241639f}, -{-0.495396f,0.0597666f,0.154915f},{-0.497685f,0.0649883f,0.147159f},{-0.228092f,-0.345076f,0.134433f}, -{-0.294791f,0.267618f,-0.0566284f},{0.390299f,-0.0928009f,0.13505f},{-0.460947f,-0.0740812f,0.151326f}, -{0.34706f,-0.0158773f,-0.00152405f},{-0.109517f,-0.0777853f,-0.137243f},{0.376653f,-0.0786599f,0.17076f}, -{0.365869f,-0.0745892f,0.190193f},{0.363696f,-0.318266f,0.207685f},{0.381502f,-0.319244f,0.204617f}, -{0.40073f,-0.318884f,0.209607f},{0.420138f,-0.319025f,0.208566f},{0.437951f,-0.319417f,0.20245f}, -{0.369933f,-0.0920999f,-0.0271052f},{0.368705f,-0.130832f,-0.0560946f},{-0.049873f,-0.115167f,-0.203183f}, -{0.211038f,0.0167455f,0.257136f},{-0.379412f,0.294782f,0.094132f},{-0.26359f,-0.323951f,0.152619f}, -{-0.262368f,-0.314035f,0.17366f},{-0.237912f,-0.316794f,0.186206f},{-0.0326967f,0.10682f,0.0438636f}, -{-0.20235f,0.169075f,0.116073f},{0.118134f,-0.0765313f,0.340639f},{0.21082f,0.0727243f,0.222758f}, -{0.273814f,0.0845117f,0.133552f},{-0.168879f,-0.303199f,0.271104f},{-0.145831f,-0.303958f,0.276428f}, -{-0.130816f,-0.302563f,0.275625f},{-0.122237f,-0.305829f,0.272621f},{-0.106399f,-0.303109f,0.263882f}, -{-0.0943796f,-0.310286f,0.256275f},{-0.0640912f,-0.298698f,0.260358f},{0.116778f,0.137475f,0.0591364f}, -{-0.00123792f,-0.300711f,0.346651f},{0.0064017f,-0.29565f,0.352953f},{0.193656f,0.0561783f,0.240912f}, -{0.0406964f,0.0575415f,0.251998f},{-0.454329f,0.265078f,0.171268f},{-0.374191f,0.188579f,0.321874f}, -{0.393528f,-0.0958104f,0.112845f},{-0.28784f,0.306234f,-0.186463f},{-0.294412f,0.22542f,-0.0373107f}, -{0.116006f,0.0725186f,0.244153f},{-0.406286f,0.187454f,0.318363f},{0.0225812f,0.0918942f,0.209479f}, -{0.00791934f,0.0883766f,0.206103f},{0.389103f,-0.0944214f,0.0165911f},{0.0820649f,0.110228f,0.202257f}, -{0.34052f,-0.0172085f,-0.0195042f},{-0.0263304f,0.489116f,-0.0886531f},{0.248947f,0.0197486f,0.243478f}, -{-0.168088f,0.11853f,0.0191827f},{-0.316135f,0.285476f,0.0214334f},{0.199309f,0.123707f,0.138098f}, -{-0.130539f,0.340433f,-0.0769428f},{-0.168757f,0.282673f,-0.0395293f},{-0.262477f,-0.306961f,0.190913f}, -{-0.248754f,-0.306363f,0.199158f},{-0.241404f,-0.30264f,0.209144f},{-0.226517f,-0.30462f,0.214861f}, -{-0.220517f,-0.297997f,0.228745f},{-0.334128f,0.292537f,0.0193499f},{0.12034f,0.102511f,0.213646f}, -{-0.00977785f,0.106678f,0.150645f},{-0.158596f,-0.299476f,0.275477f},{-0.0922382f,-0.295058f,0.258191f}, -{-0.0836661f,-0.298428f,0.254474f},{-0.0729784f,-0.298473f,0.253889f},{0.26649f,0.0916369f,0.117077f}, -{-0.190666f,0.149082f,0.0814894f},{0.0624771f,-0.285798f,0.370689f},{0.0792096f,-0.282055f,0.372721f}, -{0.0985145f,-0.281901f,0.37465f},{0.117839f,-0.282023f,0.372728f},{0.135021f,-0.285078f,0.371737f}, -{-0.384634f,0.285682f,-0.0195363f},{-0.365921f,0.285611f,-0.167583f},{-0.436446f,-0.072017f,-0.00124753f}, -{-0.393296f,0.420102f,-0.300125f},{0.117993f,0.13842f,0.114485f},{-0.00438894f,0.0613614f,0.234333f}, -{0.138333f,0.0583068f,0.250847f},{0.156365f,0.0574451f,0.249677f},{-0.0237452f,0.0260378f,0.254352f}, -{-0.0153532f,0.492762f,-0.111482f},{0.377837f,-0.168593f,-0.0397929f},{-0.185393f,0.0721263f,0.186496f}, -{-0.483801f,0.0392528f,0.243741f},{0.042587f,0.0987364f,0.206804f},{-0.224215f,0.077676f,-0.0580238f}, -{0.230002f,-0.0166554f,-0.0977975f},{-0.4969f,0.0778046f,0.108485f},{0.367573f,-0.299026f,0.205903f}, -{0.380936f,-0.299971f,0.193582f},{0.400666f,-0.305829f,0.201531f},{0.420099f,-0.305752f,0.203434f}, -{0.436356f,-0.306016f,0.20063f},{0.341741f,-5.1417e-05f,0.171615f},{-0.202093f,0.36168f,-0.0182052f}, -{-0.201186f,0.151178f,0.0380438f},{-0.488078f,0.0601395f,0.0764606f},{-0.448252f,-0.0895855f,0.0194399f}, -{-0.393412f,0.344047f,-0.149654f},{0.117459f,0.135951f,0.132729f},{-0.164313f,0.113675f,-0.000199332f}, -{0.0989518f,0.127655f,0.167152f},{-0.0500788f,-0.228308f,0.323366f},{-0.27694f,-0.0338896f,-0.106755f}, -{-0.370396f,0.0185782f,-0.0336966f},{-0.295794f,-0.126658f,-0.111752f},{-0.0936851f,-0.131616f,-0.151423f}, -{-0.238973f,-0.29491f,0.222932f},{-0.202286f,-0.297161f,0.245465f},{-0.0333719f,0.109694f,0.0763513f}, -{-0.0296614f,0.0897592f,0.167371f},{0.0786695f,0.123347f,0.175994f},{-0.168943f,-0.283489f,0.272975f}, -{-0.160821f,-0.281419f,0.276036f},{-0.145825f,-0.285753f,0.278242f},{-0.129748f,-0.285824f,0.277483f}, -{-0.120128f,-0.286074f,0.274557f},{-0.108096f,-0.280833f,0.269747f},{0.400743f,-0.26821f,0.171223f}, -{0.00295487f,-0.278332f,0.355899f},{0.0232565f,-0.279888f,0.357892f},{0.0406385f,-0.278293f,0.364316f}, -{0.0567345f,-0.277907f,0.368689f},{0.141478f,-0.276448f,0.368638f},{0.156448f,-0.27821f,0.365229f}, -{0.175676f,-0.279399f,0.358818f},{0.211045f,0.0524614f,0.239362f},{0.214877f,0.0620109f,0.23178f}, -{0.232105f,0.0548535f,0.232835f},{-0.145909f,0.111578f,0.00139547f},{-0.0464005f,0.0519598f,0.221433f}, -{-0.0185621f,0.057683f,0.231478f},{-0.0368445f,0.0611492f,0.217067f},{-0.0323945f,0.0551622f,0.226597f}, -{-0.19781f,0.074332f,0.192772f},{0.192299f,0.127025f,0.132755f},{-0.205212f,0.0821774f,-0.0591942f}, -{0.388569f,-0.0771293f,0.0370728f},{0.400678f,-0.297257f,0.19555f},{0.420054f,-0.297135f,0.198842f}, -{0.441655f,-0.301283f,0.19654f},{-0.335304f,0.297888f,0.131488f},{-0.0276101f,0.469104f,-0.12489f}, -{0.352101f,-0.0110286f,0.0177551f},{0.360448f,-0.0154014f,0.0383075f},{-0.279878f,-0.245182f,0.263554f}, -{-0.287602f,0.306273f,-0.167165f},{0.193502f,0.121919f,0.155243f},{-0.285531f,0.295643f,0.136697f}, -{-0.313794f,-0.127957f,-0.107437f},{-0.355831f,0.0205974f,-0.0426095f},{-0.130803f,0.359609f,-0.077766f}, -{-0.186859f,0.28138f,-0.0334073f},{-0.24433f,-0.134356f,-0.131822f},{-0.167233f,-0.133996f,-0.132356f}, -{-0.223951f,-0.281438f,0.243188f},{-0.20572f,-0.282975f,0.250712f},{-0.182113f,0.1366f,0.0737919f}, -{0.135484f,0.108517f,0.202894f},{-0.18356f,-0.279534f,0.265901f},{-0.0879747f,-0.278223f,0.260789f}, -{-0.0702068f,-0.279232f,0.261265f},{0.305427f,0.0570914f,0.132311f},{-0.375142f,0.289232f,0.0207582f}, -{0.264046f,0.0732838f,0.189634f},{-0.411848f,0.287926f,0.0950838f},{-0.205019f,0.0557153f,0.210122f}, -{-0.480084f,0.19674f,0.133552f},{0.338147f,0.00136971f,0.0018842f},{-0.476972f,0.230957f,0.175345f}, -{-0.355728f,0.297624f,0.133636f},{-0.246651f,0.279303f,0.167962f},{-0.0530112f,0.0594643f,0.209794f}, -{-0.126539f,0.055741f,0.208636f},{-0.218845f,0.228192f,0.0964406f},{-0.336816f,-0.298267f,0.151834f}, -{-0.213984f,0.22834f,0.0841131f},{-0.391283f,0.306183f,-0.092087f},{0.0407736f,0.0879972f,0.222765f}, -{-0.45168f,-0.00158838f,0.11534f},{-0.455892f,-0.0366419f,0.0770072f},{0.381489f,-0.28293f,0.187782f}, -{0.401958f,-0.285271f,0.18701f},{0.420028f,-0.28419f,0.190418f},{0.440233f,-0.2852f,0.189164f}, -{0.454818f,-0.287116f,0.184952f},{-0.455397f,0.116048f,0.0136652f},{0.393431f,-0.149236f,0.165538f}, -{0.397322f,-0.130832f,0.133475f},{-0.389045f,0.304453f,-0.0738818f},{0.0624385f,0.131861f,0.116678f}, -{0.0188322f,0.124157f,0.0999389f},{-0.39282f,0.284447f,0.190309f},{-0.410717f,0.28057f,0.187344f}, -{-0.411199f,0.14786f,-0.0154207f},{-0.148224f,-0.0326613f,-0.120858f},{-0.277596f,-0.127739f,-0.117417f}, -{-0.109337f,-0.1326f,-0.147597f},{-0.432639f,0.0430211f,0.00153052f},{0.0408443f,-0.128112f,-0.22517f}, -{0.0573968f,-0.129739f,-0.22351f},{-0.352564f,-0.296453f,0.132806f},{-0.275538f,0.0185846f,-0.0867432f}, -{0.193212f,-0.0152085f,-0.111154f},{0.0769332f,-0.0398701f,-0.138259f},{-0.164197f,-0.260545f,0.278866f}, -{-0.145831f,-0.263123f,0.278891f},{-0.126565f,-0.263149f,0.278416f},{-0.0620655f,-0.272274f,0.272744f}, -{0.337304f,0.0145397f,0.15276f},{0.00310277f,0.112209f,0.149577f},{-0.0144401f,0.115237f,0.0962863f}, -{-0.327472f,0.350182f,-0.107154f},{0.00212531f,-0.260641f,0.36076f},{0.0213594f,-0.260738f,0.360857f}, -{0.0393653f,-0.261162f,0.366098f},{0.0534356f,-0.264596f,0.368779f},{0.0611781f,-0.258808f,0.373814f}, -{0.0792032f,-0.259554f,0.376354f},{0.0985724f,-0.259548f,0.375911f},{0.11661f,-0.258937f,0.372213f}, -{0.124263f,-0.264455f,0.369448f},{0.137131f,-0.260082f,0.368824f},{0.156442f,-0.260197f,0.367474f}, -{0.174088f,-0.26149f,0.362419f},{0.119292f,0.139082f,0.0968779f},{-0.2802f,0.290557f,0.171351f}, -{0.229996f,0.110646f,0.132195f},{-0.109022f,0.434558f,-0.0368477f},{-0.422999f,-0.0430147f,-0.0129578f}, -{-0.491306f,0.112672f,0.0954632f},{-0.0883412f,0.282075f,-0.017948f},{-0.374158f,0.301206f,-0.0189126f}, -{0.389772f,-0.0770072f,0.0948587f},{-0.483769f,0.113212f,0.211196f},{0.394511f,-0.28037f,0.180206f}, -{0.342667f,-0.0349056f,-0.0382753f},{-0.473531f,0.156477f,0.0759461f},{0.389534f,-0.149706f,0.175306f}, -{0.0982959f,0.134517f,0.133417f},{-0.337054f,0.333996f,-0.0643002f},{-0.276277f,0.294023f,0.13069f}, -{-0.277306f,0.0785955f,-0.0460114f},{-0.0315778f,-0.0332529f,-0.136658f},{-0.127317f,-0.132041f,-0.143925f}, -{-0.426549f,0.02861f,0.00250155f},{-0.128854f,0.301077f,-0.0589884f},{-0.278753f,-0.469413f,0.302203f}, -{0.0773062f,-0.12761f,-0.219813f},{0.172454f,-0.0427896f,-0.123256f},{-0.187843f,-0.26084f,0.272191f}, -{-0.113729f,-0.258757f,0.276936f},{-0.104051f,-0.259207f,0.271914f},{-0.0879875f,-0.259824f,0.26484f}, -{-0.0720845f,-0.259599f,0.266577f},{-0.0622327f,-0.263258f,0.277489f},{-0.394241f,0.269374f,0.228842f}, -{-0.335729f,0.357956f,-0.114884f},{0.0471721f,-0.255252f,0.371371f},{0.231275f,0.0376065f,0.242577f}, -{0.214254f,0.039047f,0.245555f},{0.193701f,0.0395293f,0.248011f},{0.137041f,0.0399408f,0.264982f}, -{-0.395611f,-0.0363718f,-0.0398958f},{-0.184415f,0.0511366f,0.207254f},{-0.165162f,0.0555931f,0.206206f}, -{0.13061f,0.0531944f,0.257889f},{0.0631459f,0.0534131f,0.257059f},{0.0792997f,0.0532909f,0.260519f}, -{-0.464458f,-0.0707308f,0.13496f},{0.0191151f,0.123244f,0.0768143f},{0.0229864f,0.0375293f,0.259985f}, -{0.0627729f,0.0895791f,0.227163f},{-0.463654f,-0.0535095f,0.115585f},{-0.467435f,0.175088f,0.249355f}, -{-0.335201f,0.126498f,-0.0476833f},{-0.374236f,0.166104f,0.335076f},{-0.386859f,0.219858f,0.297997f}, -{0.380821f,-0.264872f,0.188431f},{0.388351f,-0.261998f,0.177435f},{0.423237f,-0.271322f,0.180637f}, -{0.436163f,-0.271342f,0.18065f},{0.439211f,-0.262004f,0.171268f},{0.456632f,-0.264982f,0.169377f}, -{-0.456857f,0.178387f,0.0565448f},{-0.482386f,0.113315f,0.246545f},{-0.467062f,-0.0924408f,0.115816f}, -{0.194987f,0.116318f,0.171358f},{-0.261352f,0.307244f,0.0568342f},{-0.200421f,0.169313f,0.0971352f}, -{-0.374416f,0.271509f,0.233639f},{-0.335163f,0.112466f,-0.0477927f},{-0.258773f,0.226115f,-0.00123467f}, -{-0.393804f,0.03497f,-0.0210218f},{-0.354018f,0.0368027f,-0.039317f},{-0.355484f,-0.0172342f,-0.0600495f}, -{-0.31609f,0.322536f,-0.355358f},{0.0926755f,-0.130157f,-0.217909f},{-0.335259f,0.149905f,-0.0439343f}, -{-0.181123f,-0.254043f,0.278435f},{0.0232758f,0.118369f,0.151114f},{-0.261442f,0.291328f,0.114311f}, -{0.393675f,-0.243696f,0.164818f},{-0.241166f,0.285862f,0.0968522f},{0.00107712f,-0.243542f,0.364078f}, -{0.0200218f,-0.24322f,0.365615f},{0.0341693f,-0.246654f,0.369499f},{0.0419697f,-0.240822f,0.374194f}, -{0.0599434f,-0.241111f,0.381923f},{0.0792032f,-0.240925f,0.385602f},{0.0986367f,-0.241163f,0.383222f}, -{0.117961f,-0.24178f,0.375203f},{0.137105f,-0.241966f,0.371827f},{0.155162f,-0.241085f,0.371737f}, -{0.162937f,-0.246699f,0.368901f},{0.17383f,-0.244648f,0.364509f},{0.174834f,0.0401402f,0.253387f}, -{0.079274f,0.0400695f,0.267934f},{0.0985466f,0.0401531f,0.269933f},{-0.203836f,0.345873f,0.0429697f}, -{-0.164274f,0.0726086f,-0.0688466f},{-0.358075f,0.0621845f,0.353944f},{-0.145851f,0.0558053f,0.208431f}, -{-0.23478f,0.273348f,0.119552f},{-0.075422f,-0.128607f,-0.188123f},{-0.374101f,0.219845f,0.299508f}, -{-0.487467f,0.0957654f,0.246648f},{0.0421626f,0.379396f,-0.112202f},{-0.494547f,0.0776953f,0.0956625f}, -{-0.185155f,0.361628f,-0.0377029f},{-0.222581f,0.320916f,-0.0162438f},{-0.333845f,0.455805f,-0.360246f}, -{-0.0507476f,0.089682f,0.150297f},{-0.0236616f,0.476936f,-0.0794251f},{0.379033f,-0.132401f,-0.0399087f}, -{-0.301878f,0.374702f,-0.262763f},{0.145664f,0.124092f,0.178522f},{-0.108244f,0.0928395f,0.151944f}, -{0.0404135f,0.126813f,0.0586219f},{0.135054f,-0.127571f,-0.203164f},{-0.0112247f,0.438005f,-0.144606f}, -{-0.072734f,0.359937f,-0.0974245f},{-0.220543f,0.301103f,-0.0205524f},{-0.373818f,0.130832f,-0.0395228f}, -{-0.392614f,-0.243664f,0.169242f},{-0.261757f,-0.243966f,0.268281f},{0.0427349f,-0.0352593f,-0.139185f}, -{0.173277f,-0.0130157f,-0.115823f},{-0.233218f,0.26767f,-0.00997394f},{-0.354545f,0.149802f,-0.0412012f}, -{0.0590817f,-0.038436f,-0.138549f},{0.0962187f,-0.0401659f,-0.135404f},{-0.205199f,-0.245934f,0.271065f}, -{-0.18439f,-0.24041f,0.280261f},{-0.16513f,-0.240243f,0.28266f},{-0.145838f,-0.240417f,0.280621f}, -{-0.126539f,-0.240442f,0.280351f},{-0.110527f,-0.240725f,0.276801f},{-0.100849f,-0.241124f,0.272139f}, -{-0.0879618f,-0.241356f,0.26866f},{-0.0735121f,-0.243021f,0.271695f},{-0.00337933f,0.492537f,-0.113347f}, -{-0.317472f,0.297238f,0.116948f},{-0.0153661f,-0.243426f,0.356516f},{0.0277515f,-0.237652f,0.370252f}, -{0.0180412f,0.0443137f,0.254815f},{0.00199026f,0.0394907f,0.251567f},{-0.353812f,0.421253f,-0.335127f}, -{0.117768f,0.040063f,0.268416f},{-0.413405f,0.0750072f,0.329256f},{-0.374242f,0.0575351f,0.350259f}, -{-0.052844f,-0.108042f,-0.188348f},{0.384242f,-0.0774573f,0.0178387f},{-0.295814f,0.248108f,-0.0951802f}, -{0.374782f,-0.0371177f,0.0563133f},{-0.431687f,-0.0206167f,0.174149f},{-0.262426f,0.0814058f,-0.0432848f}, -{-0.232131f,0.222996f,0.147841f},{-0.498682f,0.0778946f,0.118131f},{0.381869f,-0.0774123f,0.152754f}, -{0.39637f,-0.0947558f,0.0563198f},{0.395785f,-0.0947944f,0.0755731f},{-0.0144465f,0.475528f,-0.0930967f}, -{-0.499794f,0.0954053f,0.134105f},{-0.181695f,0.13424f,0.111701f},{0.0992669f,-0.0618051f,0.315527f}, -{-0.173129f,0.125771f,0.0961706f},{0.0410308f,0.437073f,-0.180007f},{0.0606893f,0.131822f,0.0790457f}, -{0.0422205f,0.128587f,0.0778303f},{-0.299563f,-0.286512f,0.210231f},{-0.224967f,-0.134337f,-0.130665f}, -{-0.240542f,-0.24324f,0.268872f},{-0.222382f,-0.236063f,0.278094f},{-0.203759f,-0.236327f,0.277837f}, -{-0.0662455f,-0.244134f,0.282017f},{-0.0150638f,0.0949101f,0.171576f},{0.136841f,0.0919456f,0.224951f}, -{-0.0157776f,-0.22544f,0.361185f},{0.000794167f,-0.225234f,0.368072f},{0.0213787f,-0.223877f,0.374052f}, -{0.0406257f,-0.223716f,0.376637f},{0.0598534f,-0.223292f,0.38229f},{0.0791775f,-0.222861f,0.387647f}, -{0.0985981f,-0.222919f,0.387023f},{0.117948f,-0.223639f,0.377994f},{0.137118f,-0.223948f,0.373403f}, -{0.156416f,-0.223999f,0.372702f},{-0.090592f,0.0532009f,0.206051f},{-0.34297f,0.0636636f,0.352458f}, -{-0.0703997f,0.290158f,-0.0165332f},{-0.284708f,0.379017f,-0.377833f},{-0.45514f,0.209556f,0.0755989f}, -{-0.494347f,0.11282f,0.114749f},{0.268683f,-0.0564612f,0.282975f},{0.194537f,-0.111244f,0.342343f}, -{-0.296611f,0.363667f,-0.261374f},{-0.297511f,0.3259f,-0.302222f},{0.343941f,0.00187775f,0.0181281f}, -{-0.468908f,0.192592f,0.191454f},{-0.375361f,0.225684f,-0.0372335f},{-0.355014f,0.303019f,-0.000675201f}, -{-0.0488313f,0.474744f,-0.0766149f},{-0.246246f,0.281399f,0.151879f},{-0.257455f,0.269065f,0.208636f}, -{0.174744f,0.100158f,0.210199f},{0.079036f,0.134716f,0.0765378f},{0.0479759f,-0.0634577f,0.315347f}, -{-0.410916f,-0.244957f,0.0971287f},{-0.300309f,-0.225928f,0.270416f},{-0.285795f,-0.230604f,0.273258f}, -{-0.278888f,-0.223343f,0.279052f},{-0.261577f,-0.222134f,0.282904f},{-0.242298f,-0.222289f,0.282107f}, -{-0.22298f,-0.221877f,0.285393f},{-0.203714f,-0.222083f,0.285406f},{-0.184409f,-0.222237f,0.2821f}, -{-0.165091f,-0.22189f,0.285695f},{-0.145857f,-0.222089f,0.283624f},{-0.126565f,-0.222385f,0.2803f}, -{-0.108591f,-0.221703f,0.277496f},{-0.100791f,-0.227491f,0.27358f},{-0.0881419f,-0.223144f,0.272596f}, -{-0.0739558f,-0.223639f,0.284351f},{-0.336217f,0.297823f,0.151391f},{-0.147182f,0.0735861f,0.191962f}, -{-0.29937f,0.29637f,0.113135f},{0.00855597f,-0.219588f,0.371474f},{0.173477f,-0.226604f,0.366233f}, -{-0.0686891f,0.0249445f,0.235433f},{-0.107273f,0.0425002f,0.216681f},{0.156384f,0.0377673f,0.260976f}, -{0.0407028f,0.0399023f,0.263438f},{-0.444516f,0.265792f,0.186676f},{-0.467911f,0.154201f,0.265496f}, -{-0.302463f,0.414012f,-0.326099f},{-0.298592f,0.324703f,-0.321835f},{0.358082f,-0.131404f,-0.0702742f}, -{-0.353754f,-0.0912832f,-0.0882094f},{-0.299068f,-0.470126f,0.283869f},{-0.24132f,0.074795f,-0.0535545f}, -{0.374872f,-0.0370663f,0.0755796f},{-0.442111f,0.186791f,0.0245266f},{-0.288733f,0.291187f,-0.160702f}, -{-0.369458f,0.343667f,-0.225948f},{-0.20646f,0.188856f,0.0770972f},{-0.207276f,0.36332f,-0.00239219f}, -{-0.201894f,0.337012f,0.0508022f},{0.370101f,-0.030417f,0.0964921f},{-0.353863f,0.341475f,-0.266004f}, -{0.270104f,0.0767435f,0.174123f},{-0.0709399f,0.0747307f,0.171718f},{-0.295724f,-0.145172f,-0.112659f}, -{-0.293743f,-0.218173f,0.276744f},{-0.413405f,0.288653f,0.134073f},{-0.0186972f,-0.208701f,0.366625f}, -{0.00206101f,-0.206116f,0.373248f},{0.021353f,-0.205884f,0.376374f},{0.0405871f,-0.205492f,0.381493f}, -{0.0599112f,-0.205466f,0.381756f},{0.0791711f,-0.205145f,0.385036f},{0.0985788f,-0.20519f,0.385107f}, -{0.117954f,-0.20571f,0.37865f},{0.135883f,-0.207164f,0.371152f},{0.156429f,-0.210713f,0.370966f}, -{0.174756f,-0.206218f,0.364522f},{-0.139291f,0.0428411f,0.217427f},{-0.126533f,0.0425131f,0.215742f}, -{-0.0522266f,0.074705f,-0.0390855f},{-0.333394f,0.0598566f,0.34896f},{-0.287885f,0.291277f,-0.131764f}, -{-0.431173f,0.00439213f,0.228957f},{-0.341844f,0.305032f,-0.30435f},{-0.289981f,0.327424f,-0.226411f}, -{-0.128449f,0.417761f,-0.0551043f},{0.311414f,0.0249767f,-0.0201601f},{-0.44314f,0.0112151f,0.176419f}, -{0.0824057f,0.10318f,0.211826f},{-0.0110447f,0.0887367f,0.188309f},{-0.2751f,0.294196f,0.114035f}, -{0.136385f,0.13952f,0.0976303f},{-0.15259f,0.4069f,-0.0203916f},{-0.355439f,0.296917f,0.15249f}, -{-0.298379f,0.284621f,0.207093f},{-0.188627f,0.134748f,0.0421466f},{0.0227613f,-0.0735539f,0.322916f}, -{-0.300161f,-0.204315f,0.28037f},{-0.280792f,-0.203897f,0.284615f},{-0.262837f,-0.204418f,0.289843f}, -{-0.241012f,-0.204463f,0.290389f},{-0.223006f,-0.20344f,0.290955f},{-0.20372f,-0.203415f,0.291714f}, -{-0.184447f,-0.204051f,0.283586f},{-0.165085f,-0.203865f,0.286023f},{-0.145883f,-0.203762f,0.286615f}, -{-0.126617f,-0.20409f,0.282403f},{-0.107267f,-0.204598f,0.277039f},{-0.0923797f,-0.206405f,0.274557f}, -{-0.0837562f,-0.204218f,0.281071f},{-0.355046f,0.297367f,0.112987f},{-0.336307f,-0.150278f,0.285238f}, -{-0.487762f,0.134806f,0.114614f},{-0.482329f,0.0442815f,0.212868f},{-0.0140028f,-0.201762f,0.371712f}, -{0.143561f,-0.201923f,0.369551f},{0.156435f,-0.201974f,0.368638f},{-0.0880261f,0.024996f,0.233221f}, -{0.059982f,0.039973f,0.265908f},{0.348371f,0.00301599f,0.0364619f},{-0.443899f,0.00239864f,0.152715f}, -{-0.184351f,0.0597987f,0.197691f},{-0.210749f,0.187782f,0.114382f},{-0.461558f,-0.0538053f,0.0771036f}, -{-0.10955f,0.418713f,-0.0740105f},{-0.414472f,-0.091817f,-0.0382946f},{0.257905f,0.0859651f,0.173544f}, -{-0.297826f,0.293663f,0.170663f},{-0.451365f,0.272699f,0.0952381f},{-0.39556f,-0.0537346f,0.230526f}, -{0.0591974f,0.130395f,0.0599724f},{-0.375438f,0.296023f,0.132079f},{-0.491286f,0.0431047f,0.115115f}, -{-0.0537957f,-0.127237f,-0.212315f},{-0.255082f,-0.19854f,0.294325f},{-0.248722f,-0.198617f,0.294601f}, -{-0.373792f,0.288287f,0.1911f},{-0.437841f,-0.00634706f,0.157153f},{-0.017186f,-0.18802f,0.376239f}, -{0.00208673f,-0.187865f,0.378702f},{0.0213594f,-0.187898f,0.378142f},{0.0406257f,-0.187563f,0.382972f}, -{0.0599434f,-0.187647f,0.381595f},{0.0792032f,-0.187698f,0.380361f},{0.0985466f,-0.187724f,0.380329f}, -{0.117897f,-0.187975f,0.377743f},{0.135915f,-0.187492f,0.372753f},{0.143619f,-0.193074f,0.369165f}, -{0.156455f,-0.18674f,0.367422f},{0.17401f,-0.184701f,0.361686f},{-0.0700203f,0.055143f,0.207614f}, -{-0.0324266f,0.323289f,-0.0133693f},{-0.445693f,-0.0196842f,0.0576059f},{-0.165226f,0.099881f,-0.0395164f}, -{-0.390203f,0.130298f,0.351384f},{-0.489756f,0.0774895f,0.0763577f},{0.397733f,-0.130909f,0.0178001f}, -{-0.423919f,-0.0212533f,0.186965f},{-0.166274f,0.102022f,0.138716f},{-0.0904505f,0.0690332f,0.183981f}, -{-0.424838f,-0.0223851f,0.00402561f},{-0.415996f,0.0336452f,-0.00662999f},{0.264181f,0.0920742f,0.134542f}, -{-0.318205f,-0.188123f,0.283174f},{-0.300154f,-0.185499f,0.289611f},{-0.280862f,-0.185582f,0.28875f}, -{-0.265815f,-0.186804f,0.292094f},{-0.257217f,-0.183473f,0.296093f},{-0.242266f,-0.184669f,0.299109f}, -{-0.224633f,-0.182792f,0.295489f},{-0.219803f,-0.189782f,0.293573f},{-0.202402f,-0.186226f,0.292949f}, -{-0.184441f,-0.185788f,0.286177f},{-0.165123f,-0.186129f,0.282422f},{-0.145786f,-0.185647f,0.287598f}, -{-0.126623f,-0.18555f,0.288177f},{-0.107254f,-0.186309f,0.279528f},{-0.0896981f,-0.187306f,0.281039f}, -{-0.443513f,0.276358f,0.15258f},{-0.0693836f,0.0744928f,-0.0386868f},{-0.0388637f,0.480525f,-0.0943957f}, -{-0.238401f,0.0368927f,0.232385f},{-0.0433909f,0.0347127f,0.237664f},{-0.0368316f,0.043542f,0.234983f}, -{0.16266f,0.0439021f,0.255214f},{-0.389939f,-0.0189576f,-0.0366419f},{-0.392827f,0.0589627f,0.341256f}, -{0.375991f,-0.116807f,-0.0382431f},{0.0163692f,0.340201f,-0.0590527f},{-0.373039f,0.0968457f,0.351513f}, -{0.118276f,0.0920421f,0.224764f},{-0.429308f,-0.0382046f,-0.000225055f},{-0.457744f,0.0940291f,0.0119932f}, -{-0.49056f,0.0783962f,0.262975f},{-0.469474f,0.264268f,0.132761f},{-0.391174f,0.0139095f,0.310685f}, -{-0.385611f,0.245272f,-0.0363332f},{-0.353696f,0.296132f,0.16404f},{-0.324514f,0.333224f,-0.078229f}, -{-0.445108f,0.278448f,0.118652f},{-0.430279f,0.283663f,0.113212f},{-0.128526f,0.100627f,-0.0182566f}, -{-0.36657f,0.325887f,-0.206386f},{-0.0509855f,0.0969615f,0.131391f},{-0.210132f,-0.180721f,0.294126f}, -{-0.0818463f,-0.180721f,0.294106f},{-0.471004f,0.0357802f,0.191126f},{-0.448297f,-0.000610921f,0.13561f}, -{-0.442606f,-0.0213112f,0.0427639f},{-0.446162f,-0.0722549f,0.0192856f},{-0.0179448f,-0.171043f,0.377518f}, -{0.00211245f,-0.17004f,0.378657f},{0.0213466f,-0.170046f,0.378406f},{0.040645f,-0.169834f,0.38119f}, -{0.0600013f,-0.170014f,0.379062f},{0.0792032f,-0.170033f,0.378354f},{0.0985145f,-0.169911f,0.380059f}, -{0.117845f,-0.169995f,0.379563f},{0.137201f,-0.17022f,0.376792f},{0.153162f,-0.168606f,0.372104f}, -{-0.448915f,0.0937333f,-0.000842398f},{0.23289f,-0.166278f,0.335951f},{-0.204704f,0.284769f,0.0757275f}, -{-0.41471f,0.190798f,-0.0013247f},{-0.410382f,0.208546f,-0.00140187f},{0.0517186f,0.38346f,-0.142471f}, -{0.172467f,0.0976303f,-0.0358766f},{0.392601f,-0.0994695f,0.130214f},{-0.165143f,0.0250153f,0.233234f}, -{-0.29827f,0.296132f,0.150831f},{-0.454452f,0.274158f,0.115559f},{-0.322289f,0.35957f,-0.357005f}, -{0.242156f,0.106408f,0.12179f},{-0.355786f,0.296743f,0.017112f},{0.0784122f,-0.0586798f,0.301765f}, -{-0.319466f,-0.169577f,0.290094f},{-0.300148f,-0.171647f,0.293836f},{-0.300161f,-0.16476f,0.295264f}, -{-0.279596f,-0.168162f,0.292409f},{-0.267975f,-0.167229f,0.292486f},{-0.258265f,-0.166953f,0.295997f}, -{-0.242253f,-0.166612f,0.300723f},{-0.222999f,-0.166676f,0.300248f},{-0.203714f,-0.166805f,0.298601f}, -{-0.190859f,-0.167011f,0.296016f},{-0.181155f,-0.167435f,0.290428f},{-0.16513f,-0.167892f,0.284531f}, -{-0.145748f,-0.167429f,0.290029f},{-0.126636f,-0.167358f,0.29093f},{-0.107286f,-0.16811f,0.281476f}, -{-0.0915051f,-0.168207f,0.282132f},{-0.0812225f,-0.16667f,0.297444f},{-0.336269f,0.43371f,-0.360361f}, -{-0.460194f,-0.0583197f,0.0643581f},{-0.442053f,-0.0419022f,0.0256198f},{-0.46739f,-0.0706922f,0.115688f}, -{-0.437983f,-0.0187454f,0.0340954f},{-0.457654f,0.0156908f,0.0572972f},{0.290991f,0.0614128f,0.172091f}, -{0.214742f,-0.166014f,0.341918f},{-0.0160863f,0.102318f,0.155519f},{-0.19774f,0.0611749f,0.198425f}, -{-0.359625f,0.0961448f,0.352092f},{-0.288039f,0.321392f,-0.205775f},{-0.355407f,0.293135f,0.0276068f}, -{0.188698f,0.125179f,0.147976f},{0.154262f,0.138607f,0.0940549f},{-0.427314f,-0.0734253f,-0.0193563f}, -{0.0803543f,0.0910968f,0.226983f},{-0.411167f,0.2732f,0.208296f},{-0.338648f,0.35368f,-0.102029f}, -{-0.0346195f,-0.146696f,0.362464f},{-0.312951f,-0.162529f,0.294518f},{-0.287312f,-0.162586f,0.294827f}, -{0.0412044f,0.120472f,0.0201666f},{-0.316572f,0.433407f,-0.377158f},{-0.453796f,-0.0718498f,0.0387576f}, -{-0.0511013f,-0.0979711f,-0.165281f},{0.0969969f,0.13352f,0.0388605f},{-0.0171667f,-0.152555f,0.373692f}, -{0.00208029f,-0.152355f,0.37629f},{0.0213466f,-0.152265f,0.377435f},{0.040645f,-0.152239f,0.377911f}, -{0.0599627f,-0.152227f,0.377975f},{0.0792225f,-0.15222f,0.377821f},{0.0985274f,-0.152207f,0.37757f}, -{0.117826f,-0.152175f,0.377834f},{0.13715f,-0.152317f,0.376425f},{0.154892f,-0.152966f,0.372168f}, -{0.060117f,-0.116163f,-0.218372f},{0.31025f,0.043169f,0.171075f},{-0.390357f,0.0435742f,0.33777f}, -{-0.200421f,0.0423909f,0.216038f},{-0.184435f,0.0424231f,0.216263f},{-0.373863f,0.291676f,0.0576702f}, -{0.398563f,-0.112672f,0.0948651f},{0.284779f,0.036822f,-0.0329957f},{-0.356718f,0.368072f,-0.127121f}, -{0.362004f,-0.11354f,-0.0547699f},{0.37592f,-0.0959776f,0.184907f},{-0.352371f,0.329661f,-0.0511109f}, -{-0.350416f,0.349609f,-0.0879136f},{-0.335491f,0.306376f,-0.0183081f},{-0.144269f,0.413292f,-0.0335102f}, -{-0.323736f,-0.150741f,0.292306f},{-0.31508f,-0.147416f,0.296183f},{-0.300141f,-0.148715f,0.298659f}, -{-0.280882f,-0.148703f,0.298859f},{-0.261558f,-0.148896f,0.296454f},{-0.242253f,-0.1486f,0.300537f}, -{-0.222999f,-0.148433f,0.302981f},{-0.203739f,-0.148516f,0.301894f},{-0.187541f,-0.148992f,0.29583f}, -{-0.17792f,-0.149333f,0.291303f},{-0.165162f,-0.149828f,0.285136f},{-0.14578f,-0.149487f,0.289341f}, -{-0.126507f,-0.149468f,0.289354f},{-0.107247f,-0.149706f,0.285361f},{-0.0910871f,-0.149449f,0.289058f}, -{-0.0810617f,-0.15332f,0.29628f},{0.0787981f,0.131018f,0.0376194f},{0.135594f,0.138047f,0.0597023f}, -{-0.0820135f,0.450468f,-0.0409954f},{0.301183f,0.0536382f,0.169024f},{-0.485132f,0.0616443f,0.282312f}, -{0.212131f,-0.149873f,0.339121f},{0.232433f,-0.146503f,0.328195f},{0.248754f,-0.148066f,0.325469f}, -{-0.340905f,-0.186457f,0.272332f},{-0.0107617f,0.0523713f,0.2385f},{0.0427671f,0.0982798f,-0.035986f}, -{-0.0806887f,-0.12606f,-0.173506f},{0.382197f,-0.0955403f,0.172059f},{0.355509f,-0.0540304f,-0.0333044f}, -{-0.041063f,0.458423f,-0.0611106f},{-0.406119f,-0.0569306f,0.221491f},{-0.445584f,-0.111585f,0.0194849f}, -{-0.467069f,-0.0925436f,0.0965628f},{-0.495499f,0.115353f,0.154947f},{-0.44869f,-0.00164623f,0.0768464f}, -{-0.392023f,0.306074f,-0.111411f},{-0.076496f,-0.147506f,0.303444f},{0.174756f,0.134362f,0.0740491f}, -{0.193958f,0.128851f,0.0764992f},{0.202891f,0.125372f,0.0889489f},{-0.0161249f,-0.128883f,0.364271f}, -{-0.0108711f,-0.139282f,0.370477f},{0.00423457f,-0.13323f,0.372734f},{0.0213594f,-0.130105f,0.374708f}, -{0.0406514f,-0.130099f,0.374599f},{0.0599434f,-0.134394f,0.377383f},{0.0792675f,-0.130028f,0.37503f}, -{0.0985466f,-0.130182f,0.372824f},{0.116559f,-0.135539f,0.372322f},{0.137111f,-0.139237f,0.371872f}, -{0.156403f,-0.130774f,0.363783f},{0.175573f,-0.130221f,0.358779f},{-0.184473f,0.336015f,0.0502106f}, -{-0.461281f,-0.0544227f,0.13352f},{-0.355394f,0.323424f,-0.246577f},{-0.451744f,-0.00167199f,0.0960677f}, -{-0.488778f,0.0948844f,0.0762548f},{0.0491334f,0.377615f,-0.128253f},{-0.290123f,0.281174f,-0.147828f}, -{-0.316212f,0.293643f,0.0745378f},{-0.0885084f,0.00246939f,-0.107488f},{-0.245648f,0.267271f,0.188579f}, -{-0.35522f,-0.131314f,0.277071f},{-0.3365f,-0.131655f,0.284145f},{-0.0710685f,0.0887624f,-0.000945289f}, -{-0.0934343f,0.0889425f,-0.00949164f},{-0.322739f,-0.130086f,0.292222f},{-0.315183f,-0.132356f,0.295907f}, -{-0.300141f,-0.130523f,0.300273f},{-0.280882f,-0.130414f,0.301405f},{-0.261577f,-0.1306f,0.299547f}, -{-0.242304f,-0.1306f,0.29927f},{-0.223006f,-0.130626f,0.299257f},{-0.20372f,-0.130697f,0.297836f}, -{-0.190917f,-0.135443f,0.295482f},{-0.182994f,-0.130414f,0.289052f},{-0.165085f,-0.131719f,0.284235f}, -{-0.145838f,-0.131475f,0.287598f},{-0.126507f,-0.131237f,0.289669f},{-0.107228f,-0.135597f,0.291778f}, -{-0.0879168f,-0.13098f,0.293013f},{-0.0879425f,-0.130915f,0.294621f},{-0.0714736f,-0.130446f,0.305527f}, -{0.23069f,0.113077f,0.0939777f},{-0.00217037f,-0.124543f,0.368593f},{0.119446f,-0.123707f,0.368496f}, -{0.137131f,-0.126099f,0.365795f},{0.115916f,-0.127546f,-0.208752f},{0.0421819f,0.35959f,-0.110189f}, -{0.231108f,-0.129925f,0.322504f},{0.252638f,-0.130735f,0.320858f},{-0.345188f,0.0937848f,0.351076f}, -{0.335356f,0.013035f,0.165834f},{0.271017f,0.0599081f,-0.0193498f},{-0.298412f,0.278538f,0.223858f}, -{-0.328951f,0.294306f,-0.000379391f},{-0.418363f,-0.014051f,-0.00224428f},{-0.4484f,-0.0194592f,0.076885f}, -{-0.45278f,0.173801f,0.037285f},{-0.107222f,-0.126234f,0.295116f},{0.24287f,0.106646f,0.0991222f}, -{0.286901f,0.0755024f,0.11489f},{0.276155f,0.0845375f,0.111495f},{0.0599434f,-0.116639f,0.373654f}, -{0.189489f,-0.132259f,0.354304f},{0.100566f,0.0614064f,-0.078184f},{-0.320572f,0.340767f,-0.359242f}, -{-0.336127f,0.0973602f,0.345577f},{0.392601f,-0.0814186f,0.0563262f},{-0.475049f,0.0359538f,0.206598f}, -{-0.202871f,0.0996367f,-0.0388219f},{-0.316951f,0.284415f,0.00184562f},{-0.277454f,0.294537f,0.0929809f}, -{-0.411881f,0.0543841f,-0.0163403f},{-0.354937f,-0.114202f,0.277496f},{-0.338848f,-0.113758f,0.281329f}, -{-0.319877f,-0.114202f,0.288807f},{-0.298855f,-0.113508f,0.297515f},{-0.280856f,-0.11235f,0.300833f}, -{-0.26159f,-0.112273f,0.301514f},{-0.242311f,-0.112556f,0.297701f},{-0.221404f,-0.115038f,0.294524f}, -{-0.207964f,-0.111225f,0.295174f},{-0.199309f,-0.114434f,0.292441f},{-0.184338f,-0.113205f,0.288563f}, -{-0.165117f,-0.11352f,0.284197f},{-0.145799f,-0.113373f,0.28655f},{-0.130745f,-0.114434f,0.292351f}, -{-0.122173f,-0.111205f,0.295257f},{-0.107202f,-0.112594f,0.296164f},{-0.0895438f,-0.110395f,0.295277f}, -{-0.0847208f,-0.11736f,0.293862f},{-0.0688177f,-0.113231f,0.299566f},{0.314353f,0.048365f,0.130472f}, -{0.296232f,0.0672069f,0.114408f},{0.00345646f,-0.109315f,0.363069f},{0.0200218f,-0.107328f,0.365249f}, -{0.0278029f,-0.112376f,0.370966f},{0.0406385f,-0.112299f,0.371165f},{0.0792482f,-0.112266f,0.371261f}, -{0.0921224f,-0.112318f,0.369847f},{0.0998071f,-0.107225f,0.367133f},{0.117819f,-0.108222f,0.364914f}, -{0.137118f,-0.108517f,0.359686f},{0.154744f,-0.111231f,0.353577f},{0.169187f,-0.113726f,0.351455f}, -{0.176898f,-0.108588f,0.347018f},{-0.467133f,0.174959f,0.210861f},{0.231218f,-0.113398f,0.318016f}, -{0.251828f,-0.112318f,0.316897f},{-0.359857f,0.393962f,-0.302936f},{-0.208434f,0.229272f,0.0730202f}, -{-0.358165f,0.219794f,0.298222f},{-0.088547f,0.37865f,-0.0349249f},{-0.24251f,0.327996f,0.0392592f}, -{-0.463049f,-0.112775f,0.153268f},{-0.438703f,0.274789f,0.168599f},{0.165303f,0.106826f,0.204071f}, -{-0.453513f,-0.111006f,0.0386933f},{-0.306514f,-0.108421f,0.293007f},{-0.226227f,-0.108337f,0.293045f}, -{0.333002f,0.0246938f,0.134394f},{0.347587f,0.00345971f,0.133533f},{0.338957f,0.0162631f,0.133475f}, -{0.0406707f,-0.103675f,0.367075f},{0.0599434f,-0.103566f,0.367712f},{0.0792289f,-0.103592f,0.367641f}, -{0.159477f,-0.104897f,0.348362f},{-0.290444f,0.419639f,-0.358619f},{-0.108759f,0.0726922f,0.186817f}, -{-0.265885f,0.250294f,0.225896f},{-0.335877f,0.29619f,0.167975f},{0.0435195f,-0.0766727f,0.33979f}, -{-0.186865f,-0.0281727f,-0.11972f},{-0.352957f,-0.0965949f,0.276917f},{-0.338732f,-0.0955661f,0.281258f}, -{-0.319453f,-0.0954246f,0.283238f},{-0.301447f,-0.0940806f,0.28956f},{-0.29364f,-0.0991994f,0.295386f}, -{-0.28083f,-0.0990579f,0.297534f},{-0.261596f,-0.0989743f,0.298177f},{-0.24878f,-0.0991415f,0.296164f}, -{-0.241012f,-0.0939198f,0.291701f},{-0.226195f,-0.0947751f,0.292621f},{-0.216536f,-0.0945114f,0.296106f}, -{-0.206923f,-0.0944471f,0.296865f},{-0.197109f,-0.0947172f,0.293367f},{-0.184235f,-0.0950259f,0.288338f}, -{-0.165072f,-0.0954438f,0.282718f},{-0.145786f,-0.0953667f,0.28421f},{-0.127684f,-0.0940548f,0.290788f}, -{-0.120019f,-0.0992058f,0.29446f},{-0.105929f,-0.0954053f,0.296241f},{-0.0879361f,-0.0943121f,0.298826f}, -{-0.069956f,-0.0952252f,0.298318f},{-0.0487605f,-0.0967557f,0.301926f},{-0.181438f,0.136401f,0.0929488f}, -{-0.0902769f,0.101141f,0.113881f},{0.0040931f,-0.0975982f,0.353577f},{0.0213594f,-0.0953667f,0.354574f}, -{0.0420018f,-0.0918363f,0.357538f},{0.0599562f,-0.0907559f,0.35831f},{0.0792354f,-0.0907495f,0.358773f}, -{0.0985145f,-0.0908138f,0.358329f},{0.117716f,-0.0909424f,0.355905f},{0.133748f,-0.0955853f,0.354484f}, -{0.138578f,-0.0892833f,0.347783f},{0.156268f,-0.0918363f,0.341719f},{0.173933f,-0.0944986f,0.336664f}, -{0.19156f,-0.0969615f,0.333533f},{-0.26022f,0.285888f,0.170528f},{0.213739f,-0.0920099f,0.319154f}, -{0.233475f,-0.093296f,0.314524f},{0.251166f,-0.0991415f,0.313752f},{-0.374191f,0.0666924f,0.352407f}, -{-0.451043f,-0.0192405f,0.0961448f},{-0.332269f,-0.219575f,0.259066f},{0.16922f,0.0707759f,0.240893f}, -{0.338417f,-0.0910389f,-0.0671361f},{0.346854f,-0.0555995f,0.209562f},{0.261487f,0.087174f,0.165654f}, -{0.0286261f,0.125449f,0.0756375f},{-0.129755f,0.108183f,0.00322178f},{-0.392241f,0.283785f,0.039973f}, -{-0.228768f,0.249053f,0.13489f},{-0.447918f,0.154857f,0.0198f},{-0.28085f,-0.0902543f,0.293039f}, -{-0.26159f,-0.0902672f,0.292994f},{-0.11362f,-0.0901707f,0.293765f},{-0.0622456f,-0.0902736f,0.291688f}, -{-0.0538922f,-0.0907688f,0.293026f},{0.134308f,-0.0709559f,0.325321f},{-0.470091f,0.152883f,0.210977f}, -{0.0999292f,-0.0751423f,0.343082f},{0.00420885f,-0.0888267f,0.342671f},{0.0204013f,-0.0871612f,0.346156f}, -{0.0343429f,-0.0868396f,0.348561f},{0.178763f,-0.0881322f,0.330054f},{0.19646f,-0.0908845f,0.326806f}, -{0.253796f,-0.0897463f,0.309816f},{0.156384f,0.070808f,0.241735f},{-0.468966f,0.0231054f,0.152175f}, -{0.280695f,0.0716119f,0.166708f},{-0.357554f,0.245761f,-0.184843f},{0.374049f,-0.0370535f,0.0402302f}, -{-0.186544f,-0.115649f,-0.13042f},{-0.335002f,0.0190412f,-0.0548728f},{-0.162197f,0.122311f,0.0764606f}, -{-0.354558f,-0.0732066f,0.268615f},{-0.337439f,-0.0784991f,0.277329f},{-0.319511f,-0.0774187f,0.27992f}, -{-0.300167f,-0.0772065f,0.283534f},{-0.280869f,-0.0770072f,0.286615f},{-0.261596f,-0.0769043f,0.287316f}, -{-0.242278f,-0.0769107f,0.287534f},{-0.222974f,-0.0768271f,0.289772f},{-0.20372f,-0.0766727f,0.290885f}, -{-0.18439f,-0.0770264f,0.285644f},{-0.16513f,-0.0773223f,0.281798f},{-0.145883f,-0.0773737f,0.280351f}, -{-0.126475f,-0.0771165f,0.285656f},{-0.108514f,-0.0758368f,0.290955f},{-0.100752f,-0.0810135f,0.295367f}, -{-0.0879618f,-0.0809556f,0.29655f},{-0.0686634f,-0.0767049f,0.291386f},{-0.0557764f,-0.081052f,0.293881f}, -{-0.050201f,-0.0766663f,0.296762f},{-0.0362336f,-0.0759976f,0.29799f},{0.40091f,-0.245092f,0.150394f}, -{-0.0724446f,0.0829427f,0.152985f},{0.402138f,-0.256538f,0.157493f},{-0.490245f,0.0784348f,0.246738f}, -{-0.210395f,0.208585f,0.0772065f},{-0.292573f,0.346523f,-0.263657f},{0.134423f,-0.0784412f,0.33788f}, -{0.156352f,-0.0750201f,0.324215f},{0.175657f,-0.0749815f,0.322626f},{0.194833f,-0.0749622f,0.319424f}, -{0.212852f,-0.0760747f,0.314954f},{0.227038f,-0.0798431f,0.313025f},{0.234697f,-0.0746085f,0.310575f}, -{0.250323f,-0.0727565f,0.304672f},{0.0985466f,0.0534002f,0.261689f},{-0.16412f,0.0707566f,0.18865f}, -{-0.316167f,0.149918f,-0.0431754f},{-0.390055f,0.201903f,0.312916f},{-0.377869f,0.291637f,-0.000598033f}, -{0.117048f,0.126986f,0.171859f},{0.228131f,0.107681f,0.147397f},{-0.298328f,0.289502f,0.188965f}, -{-0.171721f,0.126465f,0.0792193f},{-0.394267f,0.293843f,0.118659f},{-0.368435f,0.269805f,-0.18838f}, -{-0.343079f,-0.0673612f,0.271503f},{-0.0879618f,-0.0721327f,0.292659f},{-0.0188386f,-0.0762934f,0.300775f}, -{-0.431944f,0.281341f,0.151494f},{-0.319935f,0.295103f,0.0825183f},{-0.449281f,0.0184367f,0.188753f}, -{-0.495003f,0.077213f,0.174181f},{-0.299055f,0.379898f,-0.382258f},{-0.454696f,-0.0543648f,0.153725f}, -{-0.393733f,0.325218f,-0.129874f},{-0.373265f,-0.262551f,0.170258f},{-0.291672f,0.307296f,-0.114421f}, -{0.0441111f,0.40254f,-0.166966f},{-0.468316f,-0.114234f,0.0966721f},{0.220575f,-0.0708402f,0.312273f}, -{-0.351915f,0.39645f,-0.316678f},{-0.262812f,-0.285476f,0.229433f},{0.35421f,-0.0017234f,0.0884666f}, -{-0.205791f,-0.115848f,-0.128941f},{0.0423748f,-0.0679528f,0.322678f},{-0.112154f,0.0929166f,-0.0174592f}, -{-0.338815f,-0.0536574f,0.266815f},{-0.318192f,-0.0603067f,0.277399f},{-0.300148f,-0.0547378f,0.279798f}, -{-0.280869f,-0.0545706f,0.282075f},{-0.261583f,-0.0544162f,0.28419f},{-0.242285f,-0.0545127f,0.282068f}, -{-0.223012f,-0.0546413f,0.279824f},{-0.202794f,-0.0572007f,0.28174f},{-0.184409f,-0.0545899f,0.280403f}, -{-0.16585f,-0.0558438f,0.278448f},{-0.145844f,-0.0640237f,0.276596f},{-0.126539f,-0.059355f,0.278518f}, -{-0.106437f,-0.0557217f,0.281663f},{-0.0879618f,-0.0543713f,0.284711f},{-0.069538f,-0.056847f,0.288081f}, -{-0.0525224f,-0.0628726f,0.294936f},{-0.0349024f,-0.0605189f,0.295386f},{-0.0236681f,-0.0628726f,0.295888f}, -{-0.0159191f,-0.0575223f,0.291746f},{0.00101924f,-0.0573551f,0.29255f},{0.0210186f,-0.0616893f,0.296447f}, -{0.037121f,-0.0612199f,0.300068f},{0.0586637f,-0.0628147f,0.316852f},{-0.336025f,-0.204122f,0.266287f}, -{-0.467313f,0.0428668f,0.0391242f},{-0.225179f,0.228018f,0.115655f},{0.117453f,-0.0579981f,0.303013f}, -{0.137375f,-0.0581846f,0.304575f},{0.154191f,-0.0535481f,0.307862f},{0.159882f,-0.0619465f,0.315077f}, -{0.177039f,-0.058146f,0.316704f},{0.193579f,-0.0581074f,0.315887f},{0.207572f,-0.0610977f,0.313475f}, -{0.215424f,-0.0565769f,0.310035f},{0.231745f,-0.0562232f,0.30453f},{0.137086f,0.0706859f,0.241111f}, -{-0.378223f,0.24814f,-0.0724864f},{-0.335221f,0.135822f,-0.0458699f},{-0.399457f,-0.0121604f,-0.0235491f}, -{-0.0535578f,0.379184f,-0.110112f},{-0.373367f,-0.0371435f,-0.0575544f},{-0.341786f,0.0280763f,0.335539f}, -{-0.308058f,0.311559f,-0.0721327f},{-0.401502f,0.251773f,0.254165f},{-0.373033f,-0.0535931f,0.248455f}, -{-0.35549f,-0.055876f,0.259921f},{-0.321003f,-0.0483972f,0.272152f},{-0.145857f,-0.0505321f,0.271638f}, -{-0.0525482f,-0.0540433f,0.291367f},{-0.0397254f,-0.0538568f,0.293502f},{0.0228385f,-0.0523263f,0.291245f}, -{-0.30326f,0.295431f,0.163101f},{0.0406771f,-0.0539018f,0.293322f},{0.0602585f,-0.0515353f,0.292653f}, -{-0.457262f,-0.0493746f,0.141185f},{0.0962509f,-0.0508729f,0.29354f},{0.101492f,-0.0563455f,0.300158f}, -{0.169477f,-0.0530979f,0.3128f},{0.201296f,-0.0528472f,0.312299f},{0.117749f,0.053233f,0.260467f}, -{0.390685f,-0.111643f,0.156985f},{-0.475345f,0.161223f,0.114472f},{-0.261197f,0.288878f,0.151693f}, -{-0.0545738f,0.307116f,-0.00269443f},{0.136841f,0.127707f,0.169808f},{-0.361349f,-0.0472461f,0.253355f}, -{-0.206948f,-0.0458634f,0.274229f},{-0.158558f,-0.0459149f,0.272531f},{-0.126572f,-0.0460757f,0.271059f}, -{-0.113704f,-0.0459535f,0.273689f},{-0.0673773f,-0.0400694f,0.280814f},{-0.0525675f,-0.0362882f,0.28356f}, -{-0.0365037f,-0.036121f,0.286338f},{-0.0172245f,-0.0361146f,0.28664f},{0.00206101f,-0.0360632f,0.286518f}, -{0.0208578f,-0.0357095f,0.289142f},{-0.392351f,0.292659f,0.0961898f},{0.0406771f,-0.0358573f,0.29028f}, -{0.0598984f,-0.035285f,0.291958f},{0.0781615f,-0.0362239f,0.293122f},{-0.475621f,0.174612f,0.133687f}, -{0.0998392f,-0.0348349f,0.29282f},{0.117716f,-0.0360889f,0.289277f},{0.136314f,-0.0352207f,0.285862f}, -{0.14387f,-0.045259f,0.296479f},{0.160956f,-0.0419407f,0.299695f},{0.17583f,-0.0401852f,0.302826f}, -{0.194936f,-0.0400952f,0.303386f},{0.214118f,-0.040243f,0.299997f},{0.400627f,-0.130632f,0.0948716f}, -{0.332828f,0.00700302f,-0.00363974f},{-0.330687f,0.0772065f,0.348323f},{-0.437873f,-0.0194528f,0.157249f}, -{-0.294431f,0.286209f,-0.0771293f},{-0.29355f,0.247529f,-0.0371885f},{0.0945532f,0.12343f,0.178676f}, -{-0.0610366f,0.0857529f,0.151423f},{-0.407038f,0.27657f,0.20301f},{-0.373811f,-0.0350985f,0.244642f}, -{-0.356866f,-0.0345455f,0.252011f},{-0.337137f,-0.0355423f,0.258706f},{-0.319485f,-0.0328349f,0.264853f}, -{-0.300148f,-0.032597f,0.270011f},{-0.282489f,-0.0302112f,0.270975f},{-0.277653f,-0.036822f,0.27556f}, -{-0.261583f,-0.0366419f,0.276969f},{-0.245507f,-0.0366934f,0.275818f},{-0.240671f,-0.0301212f,0.271554f}, -{-0.223006f,-0.0325391f,0.269052f},{-0.203727f,-0.0325648f,0.269348f},{-0.184435f,-0.0366419f,0.276364f}, -{-0.171515f,-0.0366676f,0.276287f},{-0.163728f,-0.0314395f,0.270943f},{-0.145728f,-0.0327385f,0.26304f}, -{-0.126591f,-0.0328221f,0.263175f},{-0.107337f,-0.0325198f,0.26794f},{-0.087949f,-0.0367898f,0.27574f}, -{0.0959036f,-0.034224f,0.294183f},{0.155201f,-0.0310601f,0.28484f},{0.232279f,-0.0337417f,0.288016f}, -{-0.13297f,0.0688852f,0.199402f},{0.391347f,-0.0905115f,0.120575f},{-0.222125f,0.188631f,0.0190476f}, -{-0.327948f,-0.150542f,-0.104074f},{-0.315054f,-0.145494f,-0.109051f},{-0.341986f,-0.0289958f,0.25367f}, -{-0.261596f,-0.0278126f,0.27212f},{-0.184415f,-0.0277805f,0.272699f},{-0.0880004f,-0.0278705f,0.270538f}, -{-0.0686055f,-0.0279026f,0.273438f},{0.0856082f,-0.0265715f,0.29401f},{0.17585f,-0.0274011f,0.289965f}, -{0.194974f,-0.0273303f,0.290267f},{0.214189f,-0.027311f,0.287695f},{0.194672f,0.06612f,0.235484f}, -{0.267969f,-0.0357545f,0.266493f},{-0.466728f,0.262821f,0.150381f},{0.385425f,-0.13188f,-0.0206167f}, -{0.389643f,-0.0724414f,0.075586f},{-0.281467f,0.0204109f,0.24486f},{-0.261525f,0.0205717f,0.241574f}, -{-0.310392f,0.290357f,-0.0356644f},{-0.145876f,0.111668f,0.115758f},{-0.432285f,0.0749429f,-0.0124433f}, -{-0.313697f,0.378174f,-0.37222f},{-0.167541f,-0.0280248f,-0.121835f},{-0.354661f,-0.0164046f,0.251362f}, -{-0.337542f,-0.0145526f,0.251555f},{-0.319485f,-0.0195621f,0.258197f},{-0.300148f,-0.0149705f,0.260056f}, -{-0.280862f,-0.014887f,0.261554f},{-0.261596f,-0.0147005f,0.263207f},{-0.242291f,-0.0145526f,0.263927f}, -{-0.222999f,-0.0146362f,0.261291f},{-0.203733f,-0.0146362f,0.263233f},{-0.184415f,-0.0144947f,0.265516f}, -{-0.164975f,-0.0144047f,0.263085f},{-0.148789f,-0.0191891f,0.257831f},{-0.144102f,-0.0126362f,0.253651f}, -{-0.127877f,-0.0141346f,0.253747f},{-0.120244f,-0.0194013f,0.257014f},{-0.106038f,-0.0157037f,0.259406f}, -{-0.0880133f,-0.0146104f,0.26248f},{-0.0687213f,-0.0144304f,0.26585f},{-0.0526189f,-0.0141989f,0.271464f}, -{-0.0365165f,-0.018411f,0.27801f},{-0.0172053f,-0.0138709f,0.278679f},{0.00208029f,-0.0137295f,0.280505f}, -{0.0214173f,-0.0134787f,0.285586f},{0.0407221f,-0.01335f,0.287695f},{0.0600013f,-0.0131635f,0.291328f}, -{0.0792225f,-0.0131957f,0.29118f},{0.0985016f,-0.0144626f,0.289393f},{0.117729f,-0.0134851f,0.284865f}, -{0.137124f,-0.0134915f,0.279895f},{0.154763f,-0.016321f,0.275908f},{0.17574f,-0.0187775f,0.277612f}, -{0.195f,-0.0187132f,0.281303f},{0.214209f,-0.0186554f,0.279039f},{0.232587f,-0.022443f,0.277393f}, -{0.234607f,-0.0142053f,0.268654f},{0.25132f,-0.0183917f,0.265387f},{0.269866f,-0.0204881f,0.259439f}, -{-0.120006f,0.380965f,0.00785186f},{0.372056f,-0.0647696f,-0.00768462f},{-0.243892f,0.0184367f,0.240076f}, -{-0.239089f,0.0251375f,0.2358f},{-0.0170766f,0.0842352f,0.193164f},{-0.263885f,0.147224f,-0.0295231f}, -{-0.18664f,-0.0739912f,-0.129475f},{0.000311863f,0.455419f,-0.155603f},{-0.150854f,0.281258f,-0.0423073f}, -{0.20698f,-0.0177743f,-0.10689f},{-0.319511f,-0.0106427f,0.254622f},{-0.113922f,-0.0103469f,0.254899f}, -{-0.0365615f,-0.00949807f,0.273014f},{0.159561f,-0.00969741f,0.272583f},{0.175689f,-0.00992251f,0.269599f}, -{0.195f,-0.00995464f,0.272146f},{0.214221f,-0.00994179f,0.270396f},{0.394685f,-0.113077f,0.0178708f}, -{0.400666f,-0.148715f,0.114189f},{-0.222929f,0.0250667f,0.234173f},{-0.475608f,0.112221f,0.0505772f}, -{0.077692f,-0.019337f,-0.134529f},{-0.316244f,0.168773f,-0.0416707f},{-0.110032f,0.377866f,-0.0883573f}, -{-0.296997f,0.14986f,-0.0396772f},{-0.315826f,0.0936369f,-0.0470403f},{0.190602f,-0.0323334f,-0.116961f}, -{0.0620462f,-0.0157037f,-0.135423f},{-0.20372f,0.0249639f,0.233382f},{-0.111054f,0.321475f,-0.0743384f}, -{-0.316868f,0.0550658f,-0.0475161f},{-0.337446f,-0.0023536f,0.255272f},{-0.318115f,0.00142761f,0.253362f}, -{-0.299672f,0.00104178f,0.252127f},{-0.280965f,0.00269444f,0.250243f},{-0.26159f,0.00277804f,0.250114f}, -{-0.242298f,0.00290668f,0.250043f},{-0.223019f,0.00295167f,0.25086f},{-0.205019f,0.00393556f,0.251522f}, -{-0.197296f,-0.00129897f,0.256673f},{-0.187644f,-0.0012604f,0.256731f},{-0.182808f,0.00538888f,0.250545f}, -{-0.165053f,0.00322176f,0.250944f},{-0.145741f,0.00293882f,0.246532f},{-0.126552f,0.00269444f,0.244899f}, -{-0.107318f,0.0028745f,0.247227f},{-0.0880004f,0.00292596f,0.24967f},{-0.070374f,0.00535674f,0.250912f}, -{-0.0655895f,-0.00108035f,0.257329f},{-0.0516415f,0.00210285f,0.261696f},{-0.0365937f,0.00380054f,0.265612f}, -{-0.0172245f,0.00390985f,0.270017f},{0.000485494f,0.00627631f,0.272699f},{0.00534707f,-0.000321504f,0.277117f}, -{0.0214173f,0.00432143f,0.27902f},{0.0407607f,0.00445003f,0.282512f},{0.0600077f,0.00450149f,0.284499f}, -{0.0792675f,0.00448859f,0.284557f},{0.0985081f,0.00456576f,0.284165f},{0.117723f,0.00455291f,0.283419f}, -{0.138642f,0.00290668f,0.279039f},{0.156853f,0.00437928f,0.2714f},{0.175657f,0.00355616f,0.265027f}, -{0.194974f,0.0035176f,0.265368f},{0.214241f,0.00346614f,0.263342f},{0.231874f,0.000932473f,0.260339f}, -{0.24642f,-0.00137614f,0.257316f},{0.252175f,0.00538245f,0.251587f},{0.26894f,0.00381982f,0.247175f}, -{0.322064f,-0.0572007f,0.2416f},{-0.291949f,0.326305f,-0.244404f},{0.269679f,-0.0710202f,-0.116948f}, -{-0.216819f,0.248796f,-0.00958167f},{-0.0730684f,-0.0932189f,-0.147172f},{-0.354384f,0.00255942f,0.286846f}, -{-0.148301f,-0.0143211f,-0.117212f},{-0.167258f,-0.115186f,-0.135996f},{-0.202228f,0.26403f,-0.0192791f}, -{-0.240812f,0.26194f,-0.00583259f},{-0.321658f,-0.108916f,-0.100903f},{-0.406144f,-0.109861f,-0.0514581f}, -{-0.184435f,0.0248224f,0.232462f},{-0.0559564f,0.00782613f,0.254391f},{0.236787f,0.00754962f,0.253677f}, -{-0.471461f,0.153892f,0.192476f},{0.354989f,-0.0195428f,0.165815f},{-0.0901997f,-0.0957333f,-0.143802f}, -{-0.354236f,0.000160776f,-0.0532459f},{0.134655f,-0.0128999f,-0.11999f},{-0.22026f,0.262988f,-0.0135172f}, -{-0.0951127f,0.335848f,-0.0834057f},{-0.0741166f,-0.106421f,-0.153333f},{-0.377425f,0.102852f,0.350574f}, -{-0.223025f,0.0160702f,0.241124f},{-0.203733f,0.0163467f,0.240127f},{-0.184435f,0.0163724f,0.239883f}, -{-0.165117f,0.0162567f,0.239793f},{-0.145761f,0.0162889f,0.238417f},{-0.100932f,0.0162567f,0.237523f}, -{-0.0880326f,0.0161667f,0.238951f},{-0.0687277f,0.0162567f,0.242089f},{-0.186582f,-0.0970837f,-0.130993f}, -{-0.205849f,-0.0971673f,-0.131198f},{-0.225983f,-0.0937719f,-0.131147f},{-0.244613f,-0.0927558f,-0.129166f}, -{0.0436095f,-0.0169962f,-0.133642f},{-0.408382f,0.166136f,-0.0139224f},{-0.148024f,-0.0964985f,-0.136401f}, -{-0.167329f,-0.09673f,-0.134388f},{-0.0181698f,-0.468686f,0.352194f},{-0.0138485f,-0.474975f,0.347751f}, -{-0.277743f,0.131031f,-0.0370406f},{-0.392981f,0.111701f,-0.0340182f},{-0.36958f,-0.147365f,-0.0868654f}, -{-0.335568f,-0.145288f,-0.100267f},{-0.244214f,-0.153127f,-0.128105f},{-0.0341115f,0.355397f,-0.101212f}, -{0.0795183f,-0.471322f,0.319308f},{-0.205611f,-0.152838f,-0.129764f},{-0.354609f,0.168599f,-0.0385261f}, -{-0.27928f,0.0571686f,0.270982f},{0.28728f,0.037973f,0.209768f},{-0.196344f,0.15885f,0.115514f}, -{-0.0909392f,0.321437f,-0.0765248f},{-0.411855f,0.0734253f,-0.021562f},{-0.0920967f,0.359847f,-0.0930324f}, -{0.00476189f,0.378239f,-0.128079f},{-0.257673f,0.263824f,0.00112538f},{-0.337176f,0.294003f,0.179235f}, -{0.193759f,-0.468075f,0.296003f},{0.203868f,-0.464377f,0.29401f},{0.226909f,-0.464377f,0.281824f}, -{0.232439f,-0.471187f,0.268165f},{-0.223359f,0.0587248f,0.226636f},{0.337877f,-0.0567763f,0.223099f}, -{0.283409f,-0.0394521f,0.260898f},{0.305871f,-0.038674f,0.243973f},{-0.359792f,0.411254f,-0.319675f}, -{-0.316932f,-0.0879393f,-0.100492f},{-0.295357f,0.0945178f,-0.0458249f},{0.0972734f,-0.0184753f,-0.130112f}, -{-0.319999f,0.0210283f,-0.0620752f},{-0.208865f,-0.48248f,0.296756f},{0.281396f,0.0496897f,0.200804f}, -{-0.0529083f,-0.470326f,0.357101f},{-0.0337449f,-0.470204f,0.355718f},{-0.224896f,-0.153005f,-0.128652f}, -{0.00438891f,-0.470583f,0.342085f},{0.0221504f,-0.470403f,0.336041f},{0.0362593f,-0.467927f,0.332909f}, -{0.0427028f,-0.471567f,0.329391f},{-0.263564f,-0.15341f,-0.125424f},{0.0613195f,-0.470731f,0.324369f}, -{0.0817562f,-0.450185f,0.318607f},{0.0937622f,-0.452223f,0.314877f},{-0.305151f,0.0611363f,0.319868f}, -{-0.261365f,0.170676f,0.226269f},{0.154873f,-0.453645f,0.302691f},{0.136127f,-0.0378509f,-0.128311f}, -{0.174036f,-0.45349f,0.29981f},{0.192531f,-0.450294f,0.297367f},{0.207353f,-0.448899f,0.294859f}, -{0.214967f,-0.453947f,0.292145f},{0.229758f,-0.449645f,0.285791f},{0.242529f,-0.450461f,0.277554f}, -{-0.0154175f,0.365416f,-0.0681393f},{-0.220948f,0.0948201f,0.228051f},{-0.00928267f,0.455734f,-0.103862f}, -{-0.298984f,0.267445f,-0.185949f},{0.306624f,-0.11352f,0.283611f},{-0.26986f,-0.102743f,-0.120941f}, -{-0.277705f,-0.108697f,-0.115308f},{-0.203251f,0.266191f,0.0780875f},{0.116006f,-0.473155f,0.309173f}, -{-0.393952f,-0.00196778f,0.282595f},{-0.260201f,-0.0911417f,-0.125533f},{-0.20664f,0.0760426f,0.208784f}, -{0.0097135f,0.476647f,-0.128587f},{-0.207714f,0.11282f,0.207672f},{-0.239873f,0.0960033f,0.249375f}, -{0.0360663f,0.124607f,0.138832f},{-0.112797f,0.338169f,-0.0814507f},{-0.242034f,-0.473245f,0.309964f}, -{-0.22116f,-0.473226f,0.307559f},{-0.200228f,-0.471837f,0.302923f},{-0.185547f,-0.471965f,0.29855f}, -{-0.175104f,-0.46884f,0.296363f},{-0.165863f,-0.473663f,0.29091f},{0.080335f,-0.0869425f,-0.19045f}, -{-0.0541687f,-0.450931f,0.358381f},{-0.0333912f,-0.452834f,0.356625f},{-0.0183178f,-0.453747f,0.352214f}, -{-0.00994504f,-0.450423f,0.349217f},{0.00439533f,-0.451465f,0.343661f},{0.0232372f,-0.450738f,0.337121f}, -{0.035777f,-0.450262f,0.33262f},{0.0452815f,-0.449876f,0.329552f},{0.0613517f,-0.449175f,0.324562f}, -{0.018665f,0.454686f,-0.13352f},{0.311247f,-0.0895276f,0.271033f},{0.271274f,-0.456088f,0.2118f}, -{0.285441f,-0.447471f,0.207325f},{-0.280271f,-0.151236f,-0.117662f},{-0.373528f,0.0931996f,-0.0408604f}, -{-0.292257f,0.000778124f,-0.0879071f},{0.397997f,-0.14896f,0.0178644f},{-0.242124f,0.112556f,0.245175f}, -{-0.261217f,-0.113392f,-0.12716f},{-0.296405f,0.362252f,-0.378322f},{0.115459f,-0.0204816f,-0.125121f}, -{-0.186608f,0.262988f,-0.0231375f},{0.291949f,0.00689366f,0.23196f},{-0.378467f,0.270114f,-0.0726857f}, -{-0.241282f,0.20991f,0.191331f},{-0.266432f,0.214675f,0.220945f},{-0.321922f,0.148928f,0.300318f}, -{-0.225006f,0.150625f,0.207273f},{-0.449828f,0.0165461f,0.208109f},{0.284508f,0.00328608f,0.240012f}, -{-0.427584f,0.278917f,0.17049f},{0.00499982f,0.381267f,-0.0894312f},{-0.0553069f,0.379377f,-0.0579595f}, -{-0.256998f,0.232591f,0.213659f},{0.270477f,-0.112845f,0.308093f},{0.344745f,-0.150709f,-0.0930774f}, -{0.192775f,-0.434263f,0.297823f},{0.209186f,-0.432417f,0.295637f},{0.219372f,-0.431883f,0.293373f}, -{0.231095f,-0.4316f,0.287881f},{0.244581f,-0.431517f,0.279149f},{0.255146f,-0.431465f,0.271811f}, -{0.26494f,-0.432809f,0.261349f},{0.27321f,-0.432964f,0.247317f},{0.285917f,-0.0718819f,0.279567f}, -{0.34805f,-0.0900614f,0.229112f},{0.284939f,-0.431819f,0.227575f},{0.290688f,-0.436957f,0.212559f}, -{-0.0194303f,0.32381f,-0.0228095f},{0.0190058f,0.416668f,-0.11754f},{-0.317016f,0.0406546f,0.324202f}, -{-0.225031f,-0.115771f,-0.13096f},{-0.29591f,-0.108099f,-0.111006f},{-0.128745f,-0.0962477f,-0.138915f}, -{-0.0921482f,0.378952f,-0.0964985f},{-0.257146f,0.212231f,0.213305f},{-0.31108f,0.215099f,0.26967f}, -{0.266625f,0.0558632f,0.208238f},{-0.0705347f,0.303026f,0.00482944f},{-0.160982f,0.264551f,0.0449439f}, -{-0.241436f,-0.45848f,0.31334f},{-0.221925f,-0.453098f,0.308042f},{-0.347986f,0.126401f,-0.0469438f}, -{-0.056741f,0.419929f,-0.059683f},{-0.0377255f,0.417562f,-0.0774766f},{0.00501911f,0.418546f,-0.108415f}, -{-0.108431f,0.360291f,-0.0161152f},{-0.123684f,0.360297f,0.0013183f},{0.118681f,-0.0667567f,0.323301f}, -{-0.0209672f,-0.434443f,0.352278f},{-0.0112955f,-0.434044f,0.34923f},{0.00418956f,-0.433484f,0.343494f}, -{-0.288412f,0.311244f,-0.202566f},{-0.248072f,0.078467f,0.258558f},{-0.239661f,0.0757982f,0.249683f}, -{-0.149638f,0.267715f,0.0368927f},{-0.259879f,0.0952252f,0.267863f},{-0.231166f,0.0767757f,0.241549f}, -{-0.0733899f,0.417614f,-0.038436f},{0.298727f,0.0175557f,0.219131f},{-0.259866f,0.132851f,0.251034f}, -{-0.312057f,0.0155944f,0.265104f},{-0.338449f,0.149506f,0.320871f},{-0.300669f,0.00340824f,-0.0818816f}, -{-0.352905f,-0.0371435f,-0.0703514f},{-0.11135f,0.359725f,-0.0874891f},{-0.109395f,-0.114292f,-0.144587f}, -{-0.244433f,-0.115784f,-0.131648f},{-0.468921f,0.0167261f,0.133224f},{0.366917f,-0.111482f,0.208218f}, -{-0.198383f,0.11336f,0.189576f},{-0.0144787f,0.417626f,-0.0947879f},{-0.221199f,0.0771487f,0.229909f}, -{0.388229f,-0.0951802f,0.152728f},{-0.0728047f,0.360516f,-0.0380631f},{-0.0275329f,0.417562f,-0.0853734f}, -{-0.167503f,0.30617f,0.0426546f},{-0.204106f,0.13197f,0.189602f},{-0.198376f,0.13516f,0.172773f}, -{-0.192216f,0.125488f,0.167673f},{0.361046f,-0.170882f,-0.0731745f},{-0.229083f,0.28365f,0.0875856f}, -{0.358242f,-0.113347f,0.225941f},{-0.319581f,0.0599724f,0.339983f},{-0.0514099f,0.365204f,-0.0523841f}, -{0.268168f,0.0377544f,0.222404f},{-0.223347f,0.267413f,0.095669f},{-0.0961931f,0.384071f,-0.0266679f}, -{-0.112733f,0.380348f,-0.00300953f},{-0.0167101f,0.49093f,-0.096177f},{-0.490592f,0.0611877f,0.262905f}, -{-0.0644706f,0.415916f,-0.0521012f},{-0.0676409f,0.398431f,-0.0530208f},{0.189097f,-0.416366f,0.29518f}, -{0.197984f,-0.414379f,0.292962f},{0.21145f,-0.415858f,0.291116f},{0.230838f,-0.413607f,0.284338f}, -{0.244838f,-0.415363f,0.277721f},{0.254284f,-0.413954f,0.270718f},{0.267223f,-0.413929f,0.261072f}, -{0.277094f,-0.414038f,0.252693f},{0.28557f,-0.413279f,0.244648f},{0.293492f,-0.417189f,0.231073f}, -{0.305878f,-0.416784f,0.212713f},{-0.227327f,0.128941f,0.224642f},{-0.223224f,0.112466f,0.227247f}, -{-0.318803f,0.192f,0.286119f},{-0.101537f,0.393704f,-0.0115687f},{-0.297634f,-0.0333687f,-0.0998939f}, -{0.380833f,-0.409485f,0.203865f},{-0.3536f,-0.14678f,-0.0937976f},{-0.433192f,-0.208842f,0.0983956f}, -{-0.296804f,0.112357f,-0.0439471f},{-0.311974f,-0.108466f,-0.106807f},{0.327903f,-0.112755f,0.266737f}, -{-0.312842f,0.0968265f,0.324909f},{-0.321896f,0.0938169f,0.336722f},{-0.133099f,0.360361f,0.0160252f}, -{-0.182062f,0.285933f,0.0615414f},{0.0271084f,0.458397f,-0.14642f},{-0.0142793f,0.398547f,-0.0889875f}, -{-0.260168f,0.0768786f,0.267303f},{-0.245635f,0.248346f,0.189332f},{-0.255288f,0.250031f,0.207112f}, -{-0.254149f,0.180946f,0.213967f},{-0.0864249f,0.361982f,-0.0313945f},{-0.160506f,0.299064f,0.0497283f}, -{-0.146526f,0.304022f,0.0418829f},{-0.16522f,0.285142f,0.054307f},{0.3565f,-0.0403074f,0.185563f}, -{0.401939f,-0.130542f,0.0756053f},{-0.471544f,0.0158323f,0.0947558f},{-0.214549f,0.188586f,0.0321405f}, -{-0.0324845f,0.379506f,-0.0701778f},{-0.00051769f,0.474737f,-0.113488f},{-0.44822f,-0.0546284f,0.0385583f}, -{-0.246645f,0.0419408f,0.241221f},{-0.339844f,0.168355f,0.316575f},{-0.247905f,0.0936947f,0.258853f}, -{0.301106f,-0.410617f,0.225131f},{-0.277724f,0.15476f,0.247806f},{-0.282046f,0.0767114f,0.280949f}, -{0.402042f,-0.408662f,0.188142f},{0.418954f,-0.410295f,0.170355f},{0.435513f,-0.408321f,0.152812f}, -{0.438639f,-0.413022f,0.133706f},{0.0369602f,0.397331f,-0.12026f},{-0.015006f,0.379615f,-0.0788013f}, -{-0.296013f,0.194772f,0.249735f},{-0.271403f,0.0767499f,0.273618f},{-0.296052f,0.233439f,0.253876f}, -{-0.0931256f,0.358702f,-0.026057f},{0.0373653f,0.416655f,-0.134652f},{0.289987f,-0.0919456f,0.286853f}, -{-0.30328f,0.230276f,0.258461f},{0.289203f,-0.015723f,0.248269f},{-0.302868f,0.212533f,0.260371f}, -{-0.44323f,-0.0558117f,0.0205267f},{-0.192968f,0.266171f,0.0703579f},{0.374203f,-0.082634f,-0.0143404f}, -{0.0159127f,0.46994f,-0.135108f},{0.0217646f,0.378901f,-0.095611f},{0.0231021f,0.473882f,-0.151879f}, -{0.301756f,-0.0208418f,0.240513f},{0.309402f,-0.0145526f,0.228989f},{0.182943f,-0.402064f,0.308781f}, -{0.195637f,-0.397074f,0.30462f},{0.208427f,-0.395601f,0.296775f},{0.216311f,-0.399395f,0.289367f}, -{0.231893f,-0.396225f,0.281206f},{0.2504f,-0.396482f,0.270808f},{0.267165f,-0.396199f,0.261143f}, -{0.278348f,-0.400424f,0.254674f},{0.287988f,-0.395203f,0.249285f},{0.299434f,-0.395974f,0.239967f}, -{0.307318f,-0.396444f,0.228726f},{0.313742f,-0.401936f,0.215215f},{-0.303987f,0.113392f,0.300588f}, -{-0.294502f,0.113173f,0.285811f},{0.31917f,-0.0224945f,0.222327f},{0.400608f,-0.39247f,0.205743f}, -{0.408922f,-0.397061f,0.1951f},{0.420208f,-0.392611f,0.18883f},{0.427822f,-0.397479f,0.177113f}, -{0.439635f,-0.392412f,0.1684f},{0.446156f,-0.399505f,0.150465f},{0.361876f,-0.0899392f,0.208707f}, -{-0.231739f,0.0949937f,0.240803f},{0.22797f,-0.0427896f,0.297444f},{-0.000562705f,0.412919f,-0.102955f}, -{0.208209f,-0.114646f,0.336581f},{0.325954f,-0.0160188f,0.209434f},{-0.229314f,-0.422893f,0.297373f}, -{0.335549f,-0.0257162f,0.204546f},{0.342674f,-0.0180701f,0.189614f},{0.25267f,0.0384875f,0.231658f}, -{-0.247024f,0.193113f,0.203543f},{-0.293878f,0.160278f,0.252693f},{-0.277229f,0.176194f,0.231568f}, -{-0.183457f,0.30354f,0.0561461f},{0.0275457f,0.419292f,-0.126272f},{-0.354101f,0.131256f,0.338709f}, -{0.00573935f,0.343995f,-0.0542169f},{-0.0781551f,0.4f,-0.0418507f},{-0.3189f,0.113263f,0.32172f}, -{-0.146404f,0.283489f,0.0418765f},{-0.334025f,0.0150671f,0.30518f},{-0.00970067f,0.32399f,-0.0313044f}, -{-0.182737f,0.266159f,0.0625575f},{-0.0179705f,0.45576f,-0.0938105f},{-0.000446955f,0.455728f,-0.11372f}, -{-0.320874f,0.213749f,0.28192f},{0.302707f,0.0025787f,0.224906f},{-0.0689592f,0.379358f,-0.0494132f}, -{-0.104206f,0.378342f,-0.0179094f},{-0.1296f,0.268184f,0.0197164f},{0.370371f,-0.0281856f,0.0563133f}, -{0.187129f,-0.392251f,0.315f},{0.316977f,-0.392238f,0.220057f},{-0.284277f,0.108646f,0.277837f}, -{-0.278888f,0.114041f,0.272088f},{0.150313f,-0.00275876f,0.275464f},{0.412485f,-0.387647f,0.200412f}, -{0.431275f,-0.387942f,0.182316f},{0.455345f,-0.389711f,0.15114f},{-0.0200026f,0.310922f,-0.0380052f}, -{0.175824f,0.0522877f,-0.0882287f},{0.283087f,-0.0592392f,0.275515f},{0.00377156f,0.361879f,-0.0719591f}, -{0.390254f,-0.131533f,-0.00779394f},{0.242452f,0.0339861f,0.239407f},{-0.238729f,0.194444f,0.190971f}, -{-0.316668f,0.169814f,0.286049f},{-0.261217f,0.112659f,0.26275f},{-0.0322916f,0.455812f,-0.074795f}, -{-0.0542909f,0.3464f,-0.0339217f},{-0.127864f,0.341989f,0.00335682f},{-0.115446f,0.305971f,0.0322626f}, -{-0.129755f,0.323848f,0.0176007f},{-0.0725218f,0.318768f,0.0133436f},{-0.207887f,0.168895f,0.0386483f}, -{0.0360728f,0.453194f,-0.156779f},{0.0101058f,0.457323f,-0.124903f},{-0.211533f,0.188663f,0.0418186f}, -{-0.0685862f,0.325848f,0.002135f},{0.307324f,-0.0717597f,0.265432f},{-0.0945404f,0.40009f,-0.0183209f}, -{0.177837f,-0.382605f,0.330009f},{0.191991f,-0.377975f,0.322234f},{0.200344f,-0.382894f,0.311617f}, -{0.213064f,-0.378001f,0.30754f},{0.230722f,-0.376554f,0.301514f},{0.236652f,-0.382116f,0.290717f}, -{0.250394f,-0.377563f,0.282364f},{0.258966f,-0.38229f,0.272062f},{0.270091f,-0.377743f,0.265541f}, -{0.283795f,-0.375737f,0.258988f},{0.290463f,-0.378882f,0.253516f},{0.305235f,-0.376612f,0.245362f}, -{0.313382f,-0.382438f,0.232005f},{0.322231f,-0.377113f,0.225607f},{-0.292052f,0.0570336f,0.285714f}, -{0.262085f,-0.0423974f,0.279104f},{-0.305601f,0.0956368f,0.315276f},{-0.297235f,0.0772451f,0.304858f}, -{-0.496135f,0.0952059f,0.111591f},{-0.169921f,0.26612f,0.0528215f},{0.402376f,-0.375493f,0.214102f}, -{0.417096f,-0.373068f,0.204971f},{0.426922f,-0.375383f,0.195081f},{0.43851f,-0.372522f,0.187312f}, -{0.445326f,-0.379178f,0.174316f},{0.456529f,-0.372972f,0.168065f},{0.463731f,-0.380155f,0.151333f}, -{-0.319536f,0.0236584f,0.302132f},{0.02316f,0.398142f,-0.110672f},{-0.396113f,-0.0172985f,0.225954f}, -{-0.27838f,0.0343655f,0.251625f},{-0.204119f,0.247343f,0.0765635f},{-0.317221f,0.415234f,-0.373956f}, -{-0.00159804f,0.325687f,-0.0402495f},{-0.334713f,0.133533f,0.32381f},{-0.0906884f,0.286422f,0.00184562f}, -{0.331388f,-0.0875084f,0.251304f},{0.323703f,-0.094878f,0.262667f},{-0.335253f,0.191968f,0.304112f}, -{-0.0371403f,0.436661f,-0.0764413f},{0.0386708f,0.435954f,-0.149725f},{-0.0347031f,0.34287f,-0.0372014f}, -{-0.0741873f,0.340799f,-0.01971f},{-0.326018f,0.186438f,0.29691f},{0.0039066f,0.436693f,-0.113276f}, -{-0.470258f,0.19256f,0.17213f},{-0.1118f,0.339095f,-0.00407059f},{0.211913f,-0.109598f,-0.153326f}, -{0.170133f,0.0323526f,0.258873f},{0.203135f,-0.373306f,0.315803f},{0.24377f,-0.372367f,0.295527f}, -{0.261847f,-0.372773f,0.276416f},{-0.305415f,0.195048f,0.264442f},{-0.305382f,0.0776631f,0.321167f}, -{-0.465918f,0.174753f,0.172265f},{-0.241661f,0.0589627f,0.245458f},{-0.233565f,0.247799f,0.157506f}, -{0.470959f,-0.370734f,0.151024f},{0.00161085f,0.397589f,-0.0976882f},{-0.24631f,0.12907f,0.242384f}, -{0.341066f,-0.0399023f,0.206759f},{-0.210633f,0.208341f,0.0389377f},{-0.16785f,0.247285f,0.0393235f}, -{-0.192801f,0.0938427f,0.183113f},{0.249326f,-0.038436f,0.283213f},{-0.337317f,0.0215106f,0.322909f}, -{-0.153317f,0.299264f,0.0489309f},{0.0229285f,0.436655f,-0.130948f},{0.337767f,-0.0763126f,-0.0658564f}, -{-0.144063f,0.340651f,0.0202759f},{-0.0110833f,0.31743f,-0.0566734f},{-0.22815f,0.170766f,0.189544f}, -{-0.182615f,0.378534f,-0.0300955f},{0.403109f,-0.148568f,0.0563969f},{0.359426f,-0.0361403f,0.00128615f}, -{0.189502f,-0.359159f,0.335854f},{0.199071f,-0.359313f,0.327063f},{0.213135f,-0.359082f,0.319141f}, -{0.232253f,-0.357442f,0.31525f},{0.237815f,-0.362953f,0.309649f},{0.249886f,-0.357718f,0.301347f}, -{0.256021f,-0.363133f,0.290749f},{0.267769f,-0.358059f,0.28192f},{0.274766f,-0.363615f,0.272499f}, -{0.288528f,-0.359326f,0.266628f},{0.309479f,-0.359493f,0.252706f},{0.320102f,-0.358857f,0.242069f}, -{0.329478f,-0.360316f,0.229523f},{0.249211f,0.0551815f,0.223446f},{0.263847f,-0.0760683f,0.298569f}, -{-0.261467f,0.0591171f,0.261985f},{0.400839f,-0.148748f,0.0371628f},{-0.24278f,0.229446f,0.191351f}, -{0.420253f,-0.356452f,0.208701f},{0.441384f,-0.356554f,0.195061f},{0.452979f,-0.35586f,0.185743f}, -{0.462535f,-0.357005f,0.173551f},{0.477017f,-0.356818f,0.152979f},{-0.0931771f,0.328195f,0.000559486f}, -{-0.147105f,0.322556f,0.0240057f},{-0.332674f,0.215286f,0.291341f},{-0.484425f,0.0606154f,0.1922f}, -{0.0209736f,0.359635f,-0.0773866f},{0.370621f,-0.103174f,0.19856f},{0.0443297f,0.398135f,-0.130356f}, -{-0.347979f,0.195595f,0.310697f},{-0.188872f,0.111746f,0.168046f},{-0.302122f,0.0224752f,0.262448f}, -{-0.19581f,0.158921f,0.094595f},{-0.474637f,0.189756f,0.11262f},{-0.328218f,0.118562f,0.327571f}, -{0.302302f,-0.353873f,0.261619f},{0.337844f,-0.355133f,0.222398f},{0.287023f,0.0218385f,0.224835f}, -{-0.330565f,0.168226f,0.307302f},{0.43289f,-0.351185f,0.201994f},{0.470535f,-0.351847f,0.165847f}, -{-0.129517f,0.3041f,0.0381531f},{-0.495852f,0.115186f,0.132401f},{-0.371998f,-0.281168f,0.0942992f}, -{0.320964f,0.00302242f,0.202135f},{-0.066895f,0.346728f,-0.0293945f},{-0.0516607f,0.323623f,-0.0016398f}, -{-0.305247f,0.172001f,0.264429f},{-0.369978f,0.442159f,-0.334922f},{-0.273551f,0.213196f,0.231227f}, -{-0.0336999f,0.398508f,-0.0774766f},{-0.297016f,0.176271f,0.248076f},{0.191695f,-0.341108f,0.339211f}, -{0.210138f,-0.341057f,0.326305f},{0.230517f,-0.340343f,0.322015f},{0.244433f,-0.338542f,0.315752f}, -{0.252831f,-0.341102f,0.306717f},{0.262657f,-0.338806f,0.296859f},{0.271904f,-0.341185f,0.289078f}, -{0.285769f,-0.339462f,0.279714f},{0.29328f,-0.344915f,0.271271f},{0.306579f,-0.339539f,0.265554f}, -{0.326128f,-0.340896f,0.248629f},{0.334359f,-0.345429f,0.234443f},{0.342423f,-0.340285f,0.225851f}, -{0.349587f,-0.343204f,0.214932f},{-0.295216f,0.28457f,-0.205325f},{0.340031f,-0.0957268f,0.244892f}, -{-0.453384f,0.0383525f,0.308678f},{-0.206524f,0.09455f,0.209112f},{0.435783f,-0.33696f,0.202939f}, -{0.446336f,-0.339204f,0.197138f},{0.457866f,-0.337822f,0.187351f},{0.466059f,-0.338111f,0.176547f}, -{0.471904f,-0.338459f,0.167892f},{0.481846f,-0.338864f,0.153969f},{0.303202f,-0.0957333f,0.280055f}, -{0.0814218f,-0.0515803f,0.29255f},{-0.292264f,0.345217f,-0.341024f},{-0.0167551f,0.356053f,-0.0587505f}, -{-0.19363f,0.107617f,0.182425f},{-0.164204f,0.243098f,0.0192984f},{-0.247487f,0.230038f,0.203376f}, -{-0.124462f,0.283644f,0.0264107f},{-0.219212f,0.247761f,0.0982477f},{-0.21082f,0.130903f,0.203293f}, -{-0.292605f,0.211903f,0.251201f},{-0.310257f,0.172207f,0.274229f},{-0.241192f,0.170798f,0.20827f}, -{-0.218337f,0.132022f,0.212688f},{0.319665f,-0.335674f,0.258641f},{0.337111f,-0.336053f,0.238623f}, -{-0.324443f,0.16811f,0.299051f},{-0.310984f,0.0778753f,0.329893f},{-0.319781f,0.0780104f,0.33977f}, -{-0.212723f,0.247503f,0.0867303f},{-0.111903f,0.327655f,0.00719593f},{-0.287132f,0.171544f,0.23987f}, -{-0.195708f,0.242571f,0.0661265f},{0.317562f,-0.076139f,0.257664f},{-0.106804f,0.318067f,0.0255683f}, -{-0.302739f,0.130337f,0.282878f},{-0.310894f,0.135976f,0.290222f},{-0.191585f,0.28338f,0.0687952f}, -{0.194016f,-0.319443f,0.337095f},{0.211733f,-0.321552f,0.328806f},{0.231353f,-0.322774f,0.323301f}, -{0.24642f,-0.322466f,0.316903f},{0.256098f,-0.322536f,0.308241f},{0.267371f,-0.321765f,0.298537f}, -{0.273506f,-0.326838f,0.293785f},{0.287344f,-0.322485f,0.285579f},{0.307743f,-0.323861f,0.269805f}, -{0.323073f,-0.32143f,0.26149f},{0.332546f,-0.323867f,0.251092f},{0.340134f,-0.320414f,0.243246f}, -{0.347445f,-0.324067f,0.22879f},{0.353149f,-0.328247f,0.21652f},{-0.298476f,0.095341f,0.302948f}, -{-0.291113f,0.0951159f,0.290724f},{-0.48919f,0.0783126f,0.230668f},{0.457493f,-0.320871f,0.190232f}, -{0.467326f,-0.324928f,0.17838f},{0.474811f,-0.320138f,0.16993f},{0.483763f,-0.321134f,0.157011f}, -{0.488161f,-0.321031f,0.148625f},{-0.0857175f,0.396045f,-0.0339217f},{0.345233f,-0.114582f,0.246526f}, -{-0.0343365f,0.360728f,-0.0558889f},{-0.277596f,0.193653f,0.228842f},{-0.455699f,-0.0891225f,0.038719f}, -{0.402235f,-0.13053f,0.0563583f},{-0.488714f,0.0780746f,0.192135f},{0.346564f,-0.1702f,-0.0924986f}, -{-0.360197f,0.287618f,-0.207794f},{0.169702f,-0.313784f,0.354754f},{0.299865f,-0.318048f,0.275464f}, -{0.355612f,-0.314749f,0.220244f},{-0.177753f,0.242481f,0.0468217f},{0.448632f,-0.315919f,0.196881f}, -{0.311498f,0.00544677f,0.212662f},{-0.243262f,0.14869f,0.227414f},{-0.0769911f,0.379383f,-0.04405f}, -{-0.314482f,0.133552f,-0.0457734f},{-0.427822f,0.00120256f,0.0205267f},{-0.297923f,0.24859f,-0.113122f}, -{-0.236767f,0.180811f,0.193653f},{-0.285808f,0.376689f,-0.360123f},{-0.288335f,0.304633f,-0.13287f}, -{-0.354223f,-0.222089f,0.246018f},{0.206987f,-0.310447f,0.33343f},{0.219893f,-0.301328f,0.329514f}, -{0.23089f,-0.301251f,0.3228f},{0.244728f,-0.30273f,0.315688f},{0.254548f,-0.299733f,0.308582f}, -{0.269043f,-0.300884f,0.298859f},{0.289016f,-0.300582f,0.288184f},{0.30128f,-0.300659f,0.277631f}, -{0.308932f,-0.302312f,0.272866f},{0.325871f,-0.299572f,0.263927f},{0.333214f,-0.309154f,0.255915f}, -{0.343516f,-0.299733f,0.246076f},{0.351194f,-0.306865f,0.232899f},{-0.324096f,0.127372f,0.316569f}, -{0.458355f,-0.303045f,0.188367f},{0.474715f,-0.303276f,0.172342f},{0.484348f,-0.303739f,0.158034f}, -{0.488881f,-0.300743f,0.148433f},{-0.185644f,0.247124f,0.0580239f},{-0.318411f,0.0184432f,0.285946f}, -{-0.0494679f,0.415948f,-0.0680621f},{-0.266908f,0.231768f,0.224417f},{0.375901f,-0.0972251f,-0.0192984f}, -{-0.310476f,0.0367319f,0.308395f},{0.325941f,-0.0720298f,0.247214f},{-0.0904505f,0.342626f,-0.0160445f}, -{0.323137f,-0.0387383f,0.22861f},{-0.34477f,0.182007f,0.315257f},{-0.482824f,0.0947237f,0.0602039f}, -{0.172461f,-0.296769f,0.359423f},{0.180094f,-0.302177f,0.350683f},{0.192299f,-0.297347f,0.346175f}, -{0.209636f,-0.297097f,0.337314f},{0.358738f,-0.296884f,0.225099f},{-0.231481f,0.144838f,0.218501f}, -{-0.174866f,0.25187f,0.0510595f},{0.0382849f,0.358741f,-0.0940355f},{0.00948199f,0.40337f,-0.105437f}, -{-0.0533199f,0.355944f,-0.0437928f},{-0.329292f,0.154535f,0.309013f},{-0.299132f,0.0402945f,0.28493f}, -{-0.469062f,0.0256133f,0.0585576f},{-0.0876338f,0.318446f,0.0195621f},{-0.282431f,0.21445f,0.244815f}, -{-0.185753f,0.0938748f,0.170605f},{-0.2486f,0.162773f,0.222147f},{-0.409804f,-0.0203466f,-0.0172149f}, -{0.246278f,-0.0565512f,0.297617f},{0.31135f,-0.282692f,0.272609f},{0.371734f,-0.293926f,0.198457f}, -{0.274052f,-0.011035f,0.254854f},{0.462734f,-0.28037f,0.176682f},{0.473396f,-0.283309f,0.168239f}, -{0.482065f,-0.280004f,0.154928f},{0.488502f,-0.286955f,0.147256f},{0.355336f,-0.0938298f,0.221742f}, -{-0.385644f,-0.0936176f,-0.070255f},{-0.229443f,0.266911f,0.112292f},{-0.28103f,0.232713f,0.246024f}, -{-0.0279059f,0.436661f,-0.0857271f},{-0.0987525f,0.336832f,-0.00780037f},{-0.132468f,0.287444f,0.033761f}, -{0.192711f,-0.279515f,0.352574f},{0.201521f,-0.279393f,0.348388f},{0.211668f,-0.279393f,0.340433f}, -{0.22242f,-0.27938f,0.333378f},{0.233243f,-0.279367f,0.326395f},{0.245172f,-0.27783f,0.31727f}, -{0.253358f,-0.280332f,0.307932f},{0.268136f,-0.279386f,0.297643f},{0.288328f,-0.279059f,0.287335f}, -{0.303903f,-0.277464f,0.277837f},{0.32661f,-0.278718f,0.263561f},{0.345934f,-0.278891f,0.24623f}, -{0.36021f,-0.279412f,0.227253f},{0.36857f,-0.279464f,0.207698f},{0.372068f,-0.285174f,0.199029f}, -{-0.499177f,0.0955082f,0.153455f},{-0.482046f,0.209968f,0.133494f},{-0.0162342f,0.337552f,-0.0352014f}, -{-0.076258f,0.309418f,0.0135044f},{-0.0918524f,0.0832128f,-0.0219671f},{-0.349998f,0.15015f,0.330182f}, -{-0.290624f,0.0768914f,0.291476f},{0.281312f,-0.0972187f,0.295515f},{-0.0157326f,0.436661f,-0.096402f}, -{-0.016067f,0.313353f,-0.0512716f},{-0.266927f,0.0447767f,0.256918f},{-0.324392f,0.0462815f,0.338529f}, -{-0.298624f,0.0591621f,0.303161f},{0.353098f,-0.102164f,0.229716f},{-0.21318f,0.261574f,0.0861387f}, -{0.492849f,-0.283226f,0.134684f},{0.0356741f,0.375403f,-0.101309f},{0.269242f,-0.0938169f,0.302961f}, -{0.379361f,-0.150484f,-0.0398829f},{0.270863f,-0.0711231f,0.289502f},{0.362139f,-0.151886f,-0.0719526f}, -{-0.462303f,0.0608019f,0.0229896f},{-0.0906884f,0.305135f,0.0184882f},{-0.0543552f,0.337352f,-0.0225845f}, -{-0.2624f,0.148439f,0.243992f},{-0.293184f,0.131089f,0.270634f},{-0.197296f,0.094132f,0.193865f}, -{-0.279531f,0.0439793f,0.261503f},{-0.1169f,0.271001f,0.0107649f},{0.190441f,-0.262172f,0.355063f}, -{0.201984f,-0.261895f,0.349217f},{0.213565f,-0.261863f,0.343372f},{0.227301f,-0.261754f,0.334973f}, -{0.236838f,-0.263168f,0.327996f},{0.24894f,-0.260178f,0.320993f},{0.256567f,-0.266352f,0.309225f}, -{0.266528f,-0.260603f,0.301051f},{0.273293f,-0.266474f,0.293804f},{0.286933f,-0.261959f,0.285431f}, -{0.304257f,-0.261676f,0.276583f},{0.313299f,-0.261484f,0.27275f},{0.326166f,-0.261477f,0.263066f}, -{0.345298f,-0.261664f,0.245465f},{0.360191f,-0.262101f,0.227369f},{0.368622f,-0.262718f,0.211286f}, -{0.373535f,-0.263258f,0.201196f},{0.355747f,-0.0973281f,-0.0497219f},{-0.153548f,0.343011f,0.0336388f}, -{0.475203f,-0.262641f,0.15096f},{0.484431f,-0.260873f,0.133886f},{0.296695f,-0.0675219f,0.272589f}, -{0.0291791f,0.36586f,-0.0880936f},{-0.252953f,0.0538568f,0.254911f},{-0.296611f,0.305817f,-0.244442f}, -{0.394196f,-0.149301f,-0.00137614f},{-0.294939f,0.0174657f,0.250101f},{-0.0417382f,0.337487f,-0.0269187f}, -{-0.111884f,0.285277f,0.0182438f},{-0.300199f,-0.305321f,0.170843f},{-0.310874f,0.195203f,0.273663f}, -{-0.00157232f,0.374972f,-0.0819909f},{-0.467641f,-0.114054f,0.135192f},{-0.445532f,-0.0192534f,0.13469f}, -{-0.48319f,0.0278319f,0.0975724f},{0.335234f,-0.16685f,-0.104138f},{-0.446426f,0.0595158f,0.0026816f}, -{-0.0854732f,-0.131076f,-0.165879f},{-0.210762f,0.14786f,0.186386f},{-0.0732292f,0.438963f,-0.0937912f}, -{-0.352095f,0.359474f,-0.285496f},{-0.0802643f,0.422379f,-0.0257162f},{-0.00456257f,0.356265f,-0.0636635f}, -{0.257931f,-0.0343397f,0.272988f},{-0.107009f,0.301945f,0.0255362f},{-0.00114789f,0.3377f,-0.0415099f}, -{-0.0524774f,0.437343f,-0.0565962f},{0.0514549f,0.383396f,-0.136047f},{-0.292032f,0.0369249f,0.266107f}, -{-0.306997f,0.0260635f,0.278821f},{0.191142f,-0.244854f,0.356233f},{0.203566f,-0.244513f,0.351693f}, -{0.214048f,-0.244507f,0.344246f},{0.231854f,-0.244236f,0.33615f},{0.252522f,-0.244571f,0.323925f}, -{0.270097f,-0.244931f,0.304042f},{0.288315f,-0.245921f,0.287566f},{0.302289f,-0.242121f,0.279554f}, -{0.3109f,-0.245703f,0.273117f},{0.325864f,-0.244674f,0.265188f},{0.345368f,-0.244359f,0.245671f}, -{0.36014f,-0.244777f,0.227472f},{0.36967f,-0.245246f,0.212874f},{0.375084f,-0.245651f,0.203595f}, -{0.381914f,-0.246275f,0.190669f},{0.38936f,-0.245638f,0.174753f},{0.291145f,-0.0359409f,0.253278f}, -{0.254272f,-0.0530337f,0.29037f},{-0.28575f,0.144632f,0.258808f},{0.0141571f,0.329494f,-0.0638436f}, -{-0.414929f,0.245169f,0.0165204f},{-0.317208f,0.131674f,0.303855f},{-0.204415f,-0.261458f,0.263316f}, -{-0.423675f,-0.108736f,-0.0320054f},{0.29573f,0.0261407f,0.214739f},{-0.307177f,0.0458571f,0.313128f}, -{0.244658f,-0.239465f,0.332022f},{0.264008f,-0.239696f,0.314607f},{0.281171f,-0.240037f,0.294113f}, -{0.33515f,-0.239632f,0.25931f},{-0.475133f,0.157525f,0.0939584f},{-0.381605f,0.418109f,-0.31127f}, -{-0.317819f,-0.314434f,0.132928f},{0.387007f,-0.149873f,-0.0206167f},{-0.213379f,0.0719012f,0.221864f}, -{-0.300649f,0.284679f,-0.225845f},{-0.0719495f,0.00154982f,-0.110222f},{-0.294026f,0.342208f,-0.359886f}, -{-0.416755f,-0.208431f,0.173589f},{-0.397791f,0.244089f,-0.00489371f},{-0.0996592f,0.290222f,0.0133694f}, -{-0.0757886f,0.290743f,-0.00540174f},{-0.0452944f,0.384206f,-0.0660557f},{-0.0610817f,0.441446f,-0.0430918f}, -{-0.307685f,0.144851f,0.27774f},{0.38801f,-0.112652f,-0.00266871f},{0.336725f,-0.000199339f,0.183357f}, -{0.230157f,0.0578695f,-0.0557795f},{0.193065f,-0.22724f,0.359236f},{0.207109f,-0.22553f,0.353204f}, -{0.214093f,-0.228404f,0.348246f},{0.231925f,-0.226526f,0.34206f},{0.245539f,-0.226372f,0.333423f}, -{0.25296f,-0.226436f,0.327153f},{0.264831f,-0.2256f,0.31826f},{0.273602f,-0.228938f,0.305939f}, -{0.2842f,-0.224437f,0.298788f},{0.293023f,-0.228031f,0.292685f},{0.307209f,-0.227182f,0.283605f}, -{0.325337f,-0.226662f,0.267792f},{0.33742f,-0.225176f,0.258924f},{0.347478f,-0.227542f,0.246391f}, -{0.360371f,-0.227433f,0.227928f},{0.370146f,-0.227825f,0.213839f},{0.375457f,-0.228237f,0.204347f}, -{0.382949f,-0.225581f,0.190965f},{0.389721f,-0.227414f,0.176367f},{-0.464149f,0.17485f,0.191557f}, -{0.335317f,-0.00309312f,-0.0148612f},{-0.294605f,0.246108f,-0.0770907f},{-0.231636f,0.247857f,0.147918f}, -{-0.257378f,0.195544f,0.212797f},{-0.300174f,0.149108f,0.266191f},{-0.266483f,0.126832f,0.258397f}, -{-0.184467f,0.073078f,-0.0691939f},{0.316778f,-0.222109f,0.278094f},{0.393463f,-0.22135f,0.167634f}, -{0.398994f,-0.222141f,0.152883f},{0.40428f,-0.223215f,0.133481f},{-0.224337f,0.188322f,0.154188f}, -{0.0944117f,-0.00196778f,-0.126137f},{-0.141645f,0.261509f,0.0257677f},{-0.153027f,0.289978f,0.0494518f}, -{-0.202595f,0.225678f,0.0589692f},{-0.350725f,0.323347f,-0.265856f},{0.371689f,-0.0461207f,0.136742f}, -{-0.287788f,0.306292f,-0.147879f},{0.193508f,-0.20555f,0.359879f},{0.21318f,-0.209279f,0.354638f}, -{0.230407f,-0.209041f,0.345648f},{0.243481f,-0.20899f,0.33624f},{0.254413f,-0.208913f,0.329443f}, -{0.267898f,-0.208861f,0.320684f},{0.276869f,-0.209016f,0.310929f},{0.288103f,-0.209697f,0.301347f}, -{0.308038f,-0.2089f,0.288222f},{0.319832f,-0.207517f,0.278834f},{0.32796f,-0.209993f,0.269477f}, -{0.338552f,-0.209286f,0.258751f},{0.349098f,-0.209562f,0.245799f},{0.361194f,-0.205698f,0.22924f}, -{0.370628f,-0.206161f,0.21452f},{0.37565f,-0.206508f,0.204926f},{0.381772f,-0.204598f,0.19265f}, -{-0.18529f,0.230616f,0.0361275f},{-0.192518f,0.233105f,0.0540176f},{-0.26629f,0.193145f,0.221073f}, -{-0.309517f,0.153905f,0.275007f},{0.00359793f,-0.0376451f,-0.136844f},{0.400395f,-0.112588f,0.056339f}, -{0.377425f,-0.112543f,0.18883f},{-0.27231f,0.227221f,0.233259f},{-0.392177f,0.323874f,-0.150098f}, -{0.392782f,-0.0995724f,0.0242693f},{0.297447f,-0.204656f,0.295566f},{0.389238f,-0.203325f,0.179113f}, -{0.393997f,-0.203846f,0.168702f},{0.400254f,-0.203286f,0.152606f},{0.404016f,-0.205543f,0.137488f}, -{0.406575f,-0.203736f,0.0958555f},{0.373728f,-0.0370471f,0.0916627f},{-0.285036f,0.196302f,0.239285f}, -{-0.49265f,0.113205f,0.172702f},{0.391894f,-0.0905887f,0.0307064f},{-0.0491335f,0.400045f,-0.0677341f}, -{0.387496f,-0.131507f,0.172104f},{-0.30445f,0.042571f,0.302254f},{-0.289537f,0.331526f,-0.205775f}, -{0.210852f,-0.192984f,0.353641f},{0.230388f,-0.186656f,0.3435f},{0.2464f,-0.187447f,0.334999f}, -{0.256336f,-0.189357f,0.329636f},{0.26829f,-0.187139f,0.321404f},{0.277544f,-0.187287f,0.312067f}, -{0.287859f,-0.187396f,0.302119f},{0.297582f,-0.195955f,0.295823f},{0.3078f,-0.187319f,0.288036f}, -{0.320893f,-0.187293f,0.278641f},{0.330063f,-0.187415f,0.269316f},{0.336108f,-0.187647f,0.261021f}, -{0.3465f,-0.187949f,0.247799f},{0.405495f,-0.20337f,0.114061f},{-0.463545f,0.155307f,0.0387769f}, -{0.349606f,-0.0372335f,0.194515f},{-0.25541f,0.153847f,0.234912f},{0.335838f,-0.0763834f,0.238951f}, -{0.275666f,0.0441979f,0.211537f},{-0.40626f,0.244191f,0.00486803f},{-0.247198f,0.214655f,0.203582f}, -{-0.194151f,0.251947f,0.0684094f},{-0.393611f,-0.26093f,0.0749301f},{-0.336989f,0.11408f,0.337558f}, -{0.193643f,-0.184219f,0.35469f},{0.214215f,-0.182181f,0.348728f},{0.363619f,-0.184116f,0.227555f}, -{0.372885f,-0.184528f,0.21245f},{0.377219f,-0.183409f,0.203685f},{0.383579f,-0.18629f,0.191351f}, -{0.389901f,-0.185685f,0.179049f},{0.393913f,-0.185467f,0.168824f},{0.399412f,-0.186483f,0.153088f}, -{0.403026f,-0.186547f,0.134369f},{0.153992f,-0.0128613f,-0.119212f},{0.342526f,-0.0724093f,0.226012f}, -{0.351702f,-0.0712453f,0.212816f},{-0.323607f,0.0270281f,0.316819f},{-0.0144658f,0.347044f,-0.0496318f}, -{0.24024f,0.0426288f,0.236269f},{-0.410202f,0.0403524f,0.321244f},{0.295923f,-0.178888f,0.293463f}, -{-0.380415f,0.441587f,-0.323456f},{0.315099f,-0.0676699f,0.254069f},{0.255937f,0.0257355f,0.23643f}, -{-0.233983f,0.153783f,0.214951f},{-0.433906f,-0.109958f,-0.0181473f},{-0.293139f,0.346458f,-0.282949f}, -{-0.47429f,0.245143f,0.0948394f},{-0.298727f,0.325096f,-0.339359f},{0.270522f,0.0224816f,0.232616f}, -{-0.0683805f,0.449986f,-0.0894955f},{0.160712f,-0.171879f,0.369146f},{0.174441f,-0.167917f,0.363262f}, -{0.187348f,-0.165776f,0.355075f},{0.197418f,-0.167114f,0.348883f},{0.24514f,-0.170104f,0.333404f}, -{0.25141f,-0.16494f,0.328877f},{0.266342f,-0.165725f,0.318806f},{0.277287f,-0.165692f,0.311874f}, -{0.28674f,-0.165789f,0.302878f},{0.294534f,-0.16611f,0.291585f},{0.306186f,-0.165937f,0.285791f}, -{0.320392f,-0.165744f,0.278126f},{0.329388f,-0.165905f,0.268461f},{0.335632f,-0.166104f,0.26041f}, -{0.346127f,-0.166381f,0.247375f},{0.363381f,-0.166792f,0.227176f},{0.372846f,-0.167236f,0.212366f}, -{0.376017f,-0.167487f,0.205871f},{0.38365f,-0.16858f,0.191942f},{0.389933f,-0.166516f,0.179422f}, -{-0.392833f,0.0234912f,0.319732f},{-0.494894f,0.0964214f,0.174059f},{-0.0558921f,0.396836f,-0.0624288f}, -{-0.253506f,0.117868f,0.254564f},{-0.0270828f,0.450976f,-0.084441f},{-0.0342787f,0.379268f,-0.11507f}, -{-0.381399f,-0.0122504f,-0.0409311f},{0.369933f,-0.151256f,-0.0590527f},{0.0296164f,0.38456f,-0.104524f}, -{-0.0463297f,0.431909f,-0.0671232f},{-0.310083f,0.0582618f,0.327507f},{0.331279f,-0.00854636f,0.198232f}, -{0.35731f,-0.0743127f,0.205871f},{-0.392602f,-0.0367319f,0.227928f},{-0.215926f,0.0532652f,0.217864f}, -{-0.286309f,0.0630462f,0.280576f},{-0.46703f,0.191994f,0.0951931f},{-0.369458f,-0.277586f,0.132684f}, -{0.392743f,-0.117739f,0.00504166f},{-0.0631459f,0.365101f,-0.0467509f},{-0.325035f,0.00603198f,0.262551f}, -{-0.314392f,-0.0357866f,-0.090563f},{-0.0242726f,0.346928f,-0.0468859f},{0.394499f,-0.131205f,0.00184562f}, -{0.353773f,-0.0515031f,0.196663f},{0.173123f,-0.150137f,0.36467f},{0.190126f,-0.14977f,0.355461f}, -{0.199875f,-0.149822f,0.346921f},{0.265705f,-0.148503f,0.31808f},{0.276772f,-0.148452f,0.311302f}, -{0.285705f,-0.148632f,0.301598f},{0.294502f,-0.148818f,0.29165f},{0.306527f,-0.148613f,0.286537f}, -{0.321633f,-0.148272f,0.280094f},{0.330391f,-0.148478f,0.270075f},{0.337838f,-0.147269f,0.26014f}, -{0.347072f,-0.149712f,0.246455f},{0.360615f,-0.149519f,0.228887f},{0.370171f,-0.14995f,0.214572f}, -{0.375168f,-0.150304f,0.204784f},{0.381952f,-0.150812f,0.19184f},{0.298502f,-0.0759397f,0.275194f}, -{0.33124f,-0.0341532f,0.215356f},{-0.271448f,0.0951159f,0.273721f},{-0.0428379f,0.374792f,-0.062506f}, -{0.22062f,-0.145429f,0.331745f},{0.114508f,0.00446288f,-0.119282f},{-0.457262f,0.227337f,0.0693869f}, -{0.333793f,-0.0678563f,0.235941f},{-0.282194f,0.0950195f,0.280801f},{-0.353799f,0.226996f,-0.10954f}, -{-0.372088f,0.422546f,-0.321089f},{0.278161f,-0.0846404f,0.290981f},{0.373618f,-0.150953f,-0.0526349f}, -{-0.309517f,0.113656f,0.309482f},{0.197817f,-0.131153f,0.347841f},{0.210472f,-0.132478f,0.339745f}, -{0.219572f,-0.132677f,0.330292f},{0.266393f,-0.1328f,0.315308f},{0.27321f,-0.129957f,0.310016f}, -{0.284489f,-0.131507f,0.299926f},{0.294437f,-0.131539f,0.291804f},{0.306829f,-0.131243f,0.287161f}, -{0.321067f,-0.13107f,0.279361f},{0.33014f,-0.131211f,0.26985f},{0.33868f,-0.131423f,0.259509f}, -{0.348288f,-0.131822f,0.245246f},{0.359657f,-0.132337f,0.22787f},{0.369187f,-0.132099f,0.209877f}, -{0.373663f,-0.137539f,0.202727f},{0.379676f,-0.133372f,0.18964f},{-0.393232f,0.266429f,-0.0018713f}, -{-0.386332f,0.318556f,-0.0768207f},{-0.384435f,0.284216f,-0.00197419f},{-0.234812f,0.117643f,0.236436f}, -{-0.23489f,0.0535288f,0.23578f},{-0.374834f,0.170168f,-0.0319604f},{-0.0530176f,0.034687f,-0.0872898f}, -{-0.391007f,0.326273f,-0.111803f},{-0.105858f,0.346156f,-0.0124497f},{-0.284901f,-0.307379f,0.175287f}, -{0.0462268f,0.397987f,-0.147699f},{0.396698f,-0.112768f,0.114164f},{-0.294573f,0.346574f,-0.205781f}, -{-0.382042f,0.248281f,-0.0404103f},{0.301756f,-0.0592071f,0.263098f},{-0.451204f,0.0230218f,0.0365069f}, -{-0.496013f,0.0583776f,0.113443f},{-0.367014f,0.453825f,-0.336015f},{0.265088f,0.0171763f,0.238275f}, -{-0.350133f,0.114054f,-0.0474583f},{0.0793125f,-0.0969293f,-0.202637f},{-0.184801f,0.230391f,0.0214463f}, -{-0.297061f,0.264165f,-0.167287f},{0.0243175f,0.418411f,-0.166252f},{-0.467223f,0.19274f,0.230018f}, -{0.262966f,-0.118594f,0.314202f},{0.319414f,-0.118298f,0.277052f},{0.335613f,-0.118517f,0.260802f}, -{-0.214363f,0.270905f,0.0846661f},{-0.301241f,0.247413f,-0.132774f},{-0.216234f,0.117546f,0.218051f}, -{-0.340494f,0.127443f,0.332504f},{-0.486219f,0.134652f,0.095341f},{-0.0820585f,0.412855f,-0.0283914f}, -{-0.112675f,-0.091489f,-0.140169f},{-0.0356548f,0.30491f,-0.0375936f},{0.033642f,0.347982f,-0.0946079f}, -{-0.289055f,0.321347f,-0.218642f},{-0.289184f,0.180727f,0.236848f},{-0.334507f,-0.0908009f,-0.0943185f}, -{-0.380448f,0.248204f,-0.0540368f},{0.0440211f,0.38148f,-0.149088f},{-0.373059f,-0.0920935f,-0.0786277f}, -{-0.315627f,-0.0169255f,-0.0797981f},{0.00336643f,0.327083f,-0.0718112f},{-0.425436f,0.207395f,0.0221344f}, -{0.24876f,-0.472712f,-0.00379407f},{0.237996f,-0.475419f,-0.0214655f},{0.232973f,-0.473644f,-0.0391434f}, -{0.229333f,-0.47401f,-0.0584097f},{0.226768f,-0.473483f,-0.0764348f},{0.21536f,-0.483161f,-0.0790199f}, -{0.215553f,-0.479669f,-0.0921128f},{0.243217f,-0.466917f,0.259413f},{0.246272f,-0.467946f,0.247426f}, -{0.2504f,-0.468242f,0.230372f},{-0.357651f,0.244089f,-0.170348f},{-0.296708f,0.346574f,-0.186476f}, -{-0.284097f,0.395949f,-0.37966f},{-0.317807f,-0.306826f,0.154715f},{-0.27665f,-0.0892061f,-0.114967f}, -{0.377882f,-0.452609f,0.0563905f},{0.365676f,-0.455542f,0.0379345f},{0.36284f,-0.450699f,0.0208804f}, -{0.350294f,-0.457143f,0.0219286f},{0.246008f,-0.467168f,-0.0164175f},{0.223842f,-0.470146f,-0.0938298f}, -{0.212466f,-0.469425f,-0.113649f},{0.177528f,0.0819909f,-0.0581396f},{0.250445f,-0.0753995f,-0.128144f}, -{-0.287994f,0.321437f,-0.18647f},{0.257706f,-0.456783f,0.246899f},{0.266753f,-0.453702f,0.228102f}, -{-0.463313f,-0.0535996f,0.0963442f},{-0.292862f,0.266171f,-0.115655f},{-0.297691f,0.418154f,-0.340291f}, -{-0.486406f,0.0608212f,0.211479f},{-0.392788f,0.092788f,-0.0334844f},{-0.333645f,0.073824f,-0.0471689f}, -{0.401514f,-0.441831f,0.0767628f},{0.397302f,-0.441947f,0.0568471f},{0.388287f,-0.44295f,0.0376966f}, -{0.378776f,-0.444076f,0.0248802f},{0.359496f,-0.445253f,0.00628921f},{0.344159f,-0.450371f,0.0042957f}, -{-0.201231f,0.169287f,0.0771036f},{0.25568f,-0.458268f,-0.0205074f},{0.248497f,-0.453471f,-0.0392013f}, -{0.238356f,-0.459477f,-0.0585383f},{0.236433f,-0.456005f,-0.0791228f},{0.233108f,-0.455432f,-0.0939584f}, -{0.228137f,-0.453645f,-0.108517f},{0.22152f,-0.46122f,-0.110086f},{0.207739f,-0.462738f,-0.12325f}, -{0.193013f,-0.469998f,-0.129411f},{0.0398026f,-0.0865888f,-0.191074f},{-0.467647f,0.0190926f,0.246281f}, -{-0.292798f,0.305984f,-0.22515f},{-0.0710363f,-0.0359988f,-0.136619f},{-0.496019f,0.056204f,0.13433f}, -{0.261358f,-0.447111f,0.256468f},{0.26712f,-0.446609f,0.243651f},{-0.469294f,0.0183531f,0.0758561f}, -{-0.355683f,0.217601f,-0.0730137f},{-0.206736f,0.169075f,0.134896f},{-0.298148f,0.43724f,-0.361525f}, -{-0.29227f,0.266262f,-0.096357f},{-0.286824f,0.396965f,-0.360117f},{-0.429559f,0.152137f,1.28796e-05f}, -{0.417263f,-0.431394f,0.113746f},{0.418292f,-0.432346f,0.0939777f},{0.421462f,-0.43025f,0.0760104f}, -{0.417102f,-0.430546f,0.0568278f},{0.411803f,-0.430751f,0.0441787f},{0.405071f,-0.431832f,0.0345455f}, -{0.39608f,-0.428835f,0.0193756f},{0.381856f,-0.434423f,0.0154336f},{0.364422f,-0.435478f,-0.00126682f}, -{0.289216f,-0.0535674f,-0.0970258f},{-0.453339f,0.134864f,0.0193306f},{0.269724f,-0.452873f,-0.0171763f}, -{0.244555f,-0.449497f,-0.0585769f},{0.241179f,-0.449799f,-0.0713803f},{0.212524f,-0.450153f,-0.127932f}, -{0.155471f,0.0844796f,-0.0584097f},{-0.462837f,-0.0924729f,0.15249f},{-0.481685f,0.0599273f,0.0604418f}, -{-0.47656f,0.0597601f,0.0508215f},{-0.294315f,0.376772f,-0.302241f},{0.0440661f,0.419118f,-0.17339f}, -{-0.20855f,0.188798f,0.0578245f},{-0.287113f,0.417118f,-0.380277f},{-0.370043f,-0.258249f,0.186502f}, -{-0.210177f,0.16521f,0.154014f},{-0.401611f,-0.0144818f,0.216019f},{0.439886f,-0.415434f,0.114472f}, -{0.44069f,-0.416218f,0.0951867f},{0.440446f,-0.415112f,0.0759204f},{0.43597f,-0.415356f,0.0566927f}, -{0.423385f,-0.421093f,0.0375679f},{0.421539f,-0.41407f,0.020308f},{0.405296f,-0.4218f,0.0159866f}, -{0.315569f,-0.0725507f,-0.0834893f},{-0.108765f,0.0418508f,-0.0803318f},{0.302238f,-0.0549371f,-0.0891289f}, -{0.271486f,-0.43169f,-0.0343847f},{0.256265f,-0.438925f,-0.0425581f},{0.251686f,-0.436108f,-0.0600173f}, -{0.248471f,-0.43623f,-0.0766277f},{0.24631f,-0.434648f,-0.0921128f},{0.237391f,-0.440835f,-0.109984f}, -{0.230446f,-0.433742f,-0.127115f},{0.215707f,-0.436205f,-0.134716f},{0.00438248f,-0.0895598f,-0.188193f}, -{-0.293428f,0.266049f,-0.131738f},{-0.300553f,0.380226f,-0.282229f},{-0.296058f,0.326035f,-0.282981f}, -{-0.150725f,0.37847f,-0.061072f},{-0.45377f,0.0130671f,0.153905f},{-0.431726f,0.0403845f,0.320234f}, -{-0.458683f,0.0119096f,0.140979f},{-0.353413f,0.305341f,-0.246449f},{-0.204119f,0.169069f,0.0578631f}, -{-0.109042f,0.272705f,-0.00145331f},{0.449043f,-0.409749f,0.0951416f},{0.436105f,-0.410643f,0.0375422f}, -{0.40271f,-0.413234f,0.000861727f},{0.306546f,-0.074287f,-0.0900743f},{0.269499f,-0.0541912f,-0.108228f}, -{0.100129f,0.070165f,-0.0682357f},{0.262104f,-0.428867f,-0.0521269f},{0.243442f,-0.431086f,-0.110164f}, -{0.218157f,-0.0130735f,-0.101431f},{-0.108019f,-0.476364f,-0.188161f},{-0.335703f,-0.278917f,0.190425f}, -{-0.375515f,0.270152f,-0.130504f},{-0.431944f,0.190862f,0.0184432f},{-0.487537f,0.078184f,0.211369f}, -{-0.289775f,0.331468f,-0.186476f},{0.0238481f,0.341397f,-0.0924857f},{-0.288521f,0.39191f,-0.34404f}, -{-0.446143f,0.0075689f,0.264294f},{-0.225732f,0.208109f,0.13487f},{0.0427799f,0.363577f,-0.128607f}, -{0.458786f,-0.395499f,0.133726f},{0.461525f,-0.396122f,0.115688f},{0.459699f,-0.399807f,0.0951031f}, -{0.460323f,-0.397119f,0.0742484f},{0.458426f,-0.395183f,0.056577f},{0.446169f,-0.400977f,0.0373943f}, -{0.439462f,-0.396843f,0.0184432f},{0.428928f,-0.402225f,0.0122118f},{0.419314f,-0.399698f,-0.000353668f}, -{0.40662f,-0.403916f,-0.00723448f},{0.0976528f,0.0429054f,-0.0970322f},{0.287975f,-0.41598f,-0.036629f}, -{0.275512f,-0.417671f,-0.0584611f},{0.266586f,-0.418668f,-0.0745378f},{0.253018f,-0.421536f,-0.091161f}, -{0.24723f,-0.417035f,-0.110479f},{0.231848f,-0.41652f,-0.131038f},{0.307492f,-0.0907044f,-0.0960162f}, -{0.440838f,-0.2645f,0.0228546f},{0.459384f,-0.319617f,0.00039872f},{-0.03415f,-0.0165011f,-0.131044f}, -{-0.296032f,0.326208f,-0.12925f},{-0.259333f,-0.27547f,0.242835f},{-0.303955f,0.309939f,-0.303907f}, -{-0.239005f,0.247696f,0.173621f},{-0.208993f,0.152182f,0.0179416f},{-0.192061f,0.145751f,0.059818f}, -{-0.209662f,0.208521f,0.0578181f},{-0.0908363f,-0.0219285f,-0.124105f},{-0.300752f,0.304575f,-0.264204f}, -{-0.128597f,0.261561f,-0.000932427f},{-0.292573f,0.2663f,-0.0770715f},{0.468425f,-0.389859f,0.107919f}, -{0.469159f,-0.389807f,0.095058f},{0.46856f,-0.389717f,0.0790007f},{0.457275f,-0.390682f,0.03742f}, -{0.449937f,-0.391357f,0.0247388f},{0.432722f,-0.392901f,0.00583906f},{0.41172f,-0.394187f,-0.0133114f}, -{0.304617f,-0.411684f,-0.0309572f},{0.286933f,-0.407781f,-0.058609f},{0.280965f,-0.40809f,-0.0777981f}, -{0.272824f,-0.408469f,-0.0935468f},{0.13452f,0.0551622f,-0.0911482f},{0.00276838f,-0.0574065f,-0.142613f}, -{0.0986881f,-0.111392f,-0.208566f},{-0.0535256f,-0.0160316f,-0.128793f},{-0.480194f,0.112318f,0.0601846f}, -{-0.291717f,0.331552f,-0.167159f},{-0.291486f,0.376772f,-0.321514f},{0.0521751f,0.396354f,-0.154664f}, -{-0.466503f,0.262262f,0.0949037f},{-0.304456f,0.303926f,-0.282345f},{-0.230684f,0.208173f,0.154329f}, -{-0.438227f,-0.0888203f,-0.00416705f},{-0.317356f,-0.279991f,0.207871f},{-0.309556f,0.298486f,-0.301161f}, -{-0.394203f,0.00450149f,0.299174f},{-0.497608f,0.0648661f,0.118202f},{0.474933f,-0.375789f,0.133629f}, -{0.47793f,-0.375473f,0.114311f},{0.479036f,-0.375467f,0.0950195f},{0.47784f,-0.375454f,0.0757275f}, -{0.474194f,-0.375776f,0.0564869f},{0.470213f,-0.374702f,0.0414842f},{0.4642f,-0.378284f,0.0329765f}, -{0.456767f,-0.376547f,0.0194078f},{0.447642f,-0.382708f,0.0118903f},{0.439333f,-0.378206f,0.000366566f}, -{0.427507f,-0.384714f,-0.00714445f},{0.417784f,-0.379435f,-0.0165654f},{-0.0898074f,0.0744092f,-0.0384811f}, -{0.174776f,-0.0560882f,-0.130272f},{0.295061f,-0.127295f,-0.121662f},{0.306707f,-0.393621f,-0.0401016f}, -{0.294945f,-0.398193f,-0.0587891f},{0.292759f,-0.395338f,-0.0759461f},{0.289241f,-0.393987f,-0.0908781f}, -{0.272901f,-0.395241f,-0.112292f},{0.255384f,-0.402244f,-0.11734f},{0.326739f,-0.0737533f,-0.0754767f}, -{0.0427671f,0.0614836f,-0.0778946f},{0.024787f,0.0598694f,-0.0759268f},{0.0609787f,-0.0979068f,-0.204971f}, -{0.370113f,-0.108202f,-0.0410212f},{-0.293151f,0.346593f,-0.225067f},{-0.349182f,-0.294312f,0.142934f}, -{-0.198035f,0.154304f,0.0579017f},{-0.460979f,0.0270666f,0.192534f},{-0.284065f,0.227549f,-0.0155815f}, -{-0.211939f,0.163828f,0.0225845f},{0.263307f,0.0682615f,-0.015575f},{-0.144294f,-0.489791f,-0.179949f}, -{0.302778f,-0.387962f,-0.0587505f},{0.298405f,-0.388778f,-0.0717211f},{0.283737f,-0.389698f,-0.106762f}, -{0.306045f,0.0186232f,-0.0359667f},{-0.0324716f,0.064043f,-0.0604032f},{-0.0153082f,0.0546413f,-0.0698948f}, -{0.270367f,0.0232468f,-0.0589048f},{0.058818f,-0.471593f,-0.152047f},{-0.238632f,0.0343269f,-0.0881515f}, -{0.251802f,0.0835021f,0.000527333f},{0.052143f,0.412617f,-0.165088f},{-0.468483f,0.0215491f,0.265831f}, -{-0.231687f,0.203267f,0.167236f},{-0.221269f,0.170843f,0.173268f},{-0.335838f,-0.487309f,-0.0170734f}, -{-0.317948f,0.209016f,-0.0551107f},{-0.236909f,0.268364f,0.153243f},{-0.355079f,0.287393f,-0.246384f}, -{-0.217675f,0.171081f,0.0178065f},{-0.439738f,0.0120318f,0.289688f},{0.4833f,-0.35786f,0.13487f}, -{0.484611f,-0.361365f,0.114292f},{0.485865f,-0.361275f,0.0949809f},{0.484656f,-0.35912f,0.0740555f}, -{0.481518f,-0.357223f,0.0563648f},{0.474387f,-0.357886f,0.0371307f},{0.462078f,-0.359905f,0.0167197f}, -{0.453493f,-0.358374f,0.00308674f},{0.444111f,-0.362361f,-0.0054146f},{0.0754349f,0.029954f,-0.102312f}, -{-0.474747f,0.0408347f,0.0529051f},{0.323382f,-0.376927f,-0.03742f},{0.314842f,-0.377467f,-0.045722f}, -{0.310508f,-0.375879f,-0.0588663f},{0.30654f,-0.373197f,-0.0730652f},{0.299865f,-0.373756f,-0.0897206f}, -{0.29492f,-0.379743f,-0.0974952f},{0.289422f,-0.375679f,-0.110389f},{0.271101f,-0.378528f,-0.12743f}, -{0.00521203f,0.0642294f,-0.0609819f},{0.321961f,0.00183919f,-0.0339667f},{0.286959f,-0.0164046f,-0.0771872f}, -{0.420176f,-0.265104f,0.0233819f},{0.0740008f,-0.0641651f,-0.143892f},{-0.0716794f,0.0824154f,-0.0214269f}, -{-0.29319f,0.346394f,-0.302228f},{-0.280541f,-0.282036f,0.227324f},{-0.146101f,0.253818f,0.0192406f}, -{-0.390807f,-0.220514f,0.206148f},{0.0528182f,0.402739f,-0.162246f},{-0.233102f,0.193158f,0.179949f}, -{0.486489f,-0.352252f,0.127153f},{0.487975f,-0.352124f,0.114273f},{0.489042f,-0.352079f,0.0949487f}, -{0.488078f,-0.352059f,0.0788785f},{0.468322f,-0.354085f,0.0241922f},{0.0194559f,0.0802225f,-0.0425388f}, -{0.0245297f,0.0399794f,-0.0934954f},{-0.482663f,0.0772772f,0.0602553f},{0.330353f,-0.362123f,-0.0421208f}, -{0.317839f,-0.368535f,-0.0525771f},{0.280033f,-0.371969f,-0.123237f},{0.00321209f,0.0560947f,-0.074467f}, -{-0.0921032f,-0.0124755f,-0.115996f},{0.155805f,0.0435163f,-0.0979968f},{0.0239831f,0.0742355f,-0.0537089f}, -{-0.30209f,0.342954f,-0.148047f},{-0.376994f,-0.248468f,0.193524f},{-0.414832f,-0.0382303f,-0.0205588f}, -{0.489524f,-0.338581f,0.133584f},{0.492798f,-0.338304f,0.114247f},{0.494219f,-0.338182f,0.0949166f}, -{0.492907f,-0.338272f,0.0756117f},{0.488952f,-0.337687f,0.0576573f},{0.484521f,-0.343552f,0.0499148f}, -{0.48103f,-0.339385f,0.0371307f},{0.471615f,-0.340298f,0.0210733f},{0.465313f,-0.340876f,0.0115109f}, -{0.455661f,-0.337333f,-0.00201921f},{0.448323f,-0.346883f,-0.00728592f},{0.229906f,0.0176136f,-0.0870004f}, -{0.341992f,-0.359969f,-0.0333044f},{0.32272f,-0.355056f,-0.0600366f},{0.312495f,-0.356863f,-0.0761004f}, -{0.303948f,-0.356149f,-0.0911996f},{0.291717f,-0.357255f,-0.110556f},{0.279017f,-0.362921f,-0.123044f}, -{-0.0522717f,0.0835278f,-0.0215491f},{-0.0338478f,0.0893026f,-0.0163596f},{0.156378f,0.0574451f,-0.0872576f}, -{0.267853f,-0.168811f,-0.147146f},{-0.126996f,0.0363654f,-0.0887431f},{0.0581042f,0.100196f,-0.0409376f}, -{-0.486476f,0.112498f,0.0762162f},{-0.293994f,0.326189f,-0.263683f},{-0.396801f,-0.208456f,0.211575f}, -{-0.43289f,-0.204662f,0.135134f},{-0.458406f,-0.0975531f,0.0515611f},{-0.216016f,0.173004f,0.154812f}, -{-0.235005f,0.268229f,0.138819f},{0.487081f,-0.334253f,0.146368f},{-0.0743738f,-0.469959f,-0.181248f}, -{-0.301569f,0.0376644f,-0.0603903f},{-0.497852f,0.0824411f,0.166387f},{0.346326f,-0.34215f,-0.0371949f}, -{0.332333f,-0.343796f,-0.058474f},{0.319626f,-0.349854f,-0.0715218f},{0.272406f,-0.359423f,-0.128658f}, -{0.26303f,-0.355448f,-0.142593f},{-0.0144658f,-0.115945f,-0.219247f},{-0.0125495f,0.0629755f,-0.0593807f}, -{-0.444941f,0.172072f,0.0224495f},{0.00631167f,-0.0170863f,-0.127764f},{-0.0145301f,-0.106228f,-0.209845f}, -{-0.45222f,0.0166683f,0.285078f},{-0.477821f,0.0350407f,0.274229f},{-0.23015f,0.22796f,0.134928f}, -{-0.207681f,0.188823f,0.0963763f},{-0.218221f,0.208353f,0.11563f},{-0.0711649f,-0.482081f,0.33824f}, -{-0.374094f,-0.00108035f,0.286422f},{0.36958f,-0.0675798f,0.176342f},{0.492753f,-0.320472f,0.133578f}, -{0.496836f,-0.320125f,0.114241f},{0.498785f,-0.319958f,0.0948909f},{0.498148f,-0.320028f,0.0755539f}, -{0.493563f,-0.320356f,0.056249f},{0.488553f,-0.319424f,0.0412334f},{0.484058f,-0.322781f,0.0328607f}, -{0.473416f,-0.322298f,0.0177486f},{-0.22552f,-0.03306f,-0.116273f},{0.339709f,-0.333494f,-0.0574579f}, -{0.326713f,-0.335603f,-0.0747114f},{0.308263f,-0.338452f,-0.0923764f},{0.291325f,-0.340073f,-0.111836f}, -{0.280914f,-0.338613f,-0.125436f},{0.272721f,-0.342388f,-0.13397f},{0.265339f,-0.34143f,-0.145802f}, -{0.174396f,-0.105939f,-0.17647f},{0.265249f,-0.0190926f,-0.0887624f},{-0.0135334f,0.0801711f,-0.0390084f}, -{-0.110829f,-0.0155043f,-0.117257f},{-0.321427f,-0.122806f,-0.102132f},{-0.431456f,0.226842f,0.037002f}, -{-0.292598f,0.346593f,-0.244365f},{-0.289524f,0.376715f,-0.334407f},{-0.442336f,-0.0914504f,0.00441145f}, -{0.155136f,0.0992123f,-0.0394971f},{-0.220401f,0.0890261f,-0.0467252f},{-0.297453f,0.226758f,-0.0571235f}, -{-0.469004f,0.175049f,0.230147f},{-0.48101f,0.026893f,0.136169f},{-0.225771f,-0.290621f,0.23369f}, -{-0.47629f,0.208f,0.173692f},{-0.47476f,0.13559f,0.0549565f},{0.364159f,-0.322453f,-0.020726f}, -{0.357233f,-0.317565f,-0.0383332f},{0.351915f,-0.325732f,-0.0437799f},{0.321292f,-0.331642f,-0.0844281f}, -{0.298476f,-0.334195f,-0.104402f},{0.31126f,-0.0140253f,-0.0577152f},{0.2842f,-0.11408f,-0.124851f}, -{-0.493222f,0.0603582f,0.0957654f},{-0.39111f,-0.0106042f,0.244256f},{-0.332321f,0.414868f,-0.355223f}, -{-0.287962f,0.37674f,-0.343995f},{-0.288611f,0.321456f,-0.167165f},{0.191849f,0.0695348f,-0.0683f}, -{-0.292753f,0.346343f,-0.321507f},{0.272162f,0.0412913f,-0.0399923f},{-0.364384f,-0.290068f,0.113553f}, -{-0.290245f,0.303585f,-0.207402f},{-0.438266f,0.0121475f,0.198039f},{-0.353182f,-0.258943f,0.20755f}, -{-0.0692872f,-0.478042f,0.349088f},{0.493981f,-0.302543f,0.133571f},{0.49845f,-0.302164f,0.114215f}, -{0.5f,-0.302022f,0.0948523f},{0.499408f,-0.302125f,0.075451f},{0.494373f,-0.30255f,0.0561654f}, -{0.488656f,-0.304537f,0.0410662f},{0.483975f,-0.30199f,0.0326163f},{0.472972f,-0.30226f,0.0202695f}, -{-0.390042f,-0.0561139f,-0.0530401f},{-0.404878f,-0.0396f,-0.0322047f},{-0.261004f,0.172316f,-0.0231825f}, -{0.346963f,-0.318073f,-0.058892f},{0.339401f,-0.315096f,-0.0698112f},{0.331613f,-0.317353f,-0.078454f}, -{0.323736f,-0.317096f,-0.089862f},{0.31263f,-0.323109f,-0.0999839f},{0.305659f,-0.318221f,-0.10846f}, -{0.294913f,-0.320723f,-0.117089f},{0.286123f,-0.320543f,-0.12869f},{0.27793f,-0.3268f,-0.13651f}, -{0.267532f,-0.319366f,-0.146092f},{0.227559f,0.0757082f,-0.0364232f},{-0.203444f,0.0201601f,-0.0971351f}, -{0.243847f,0.07048f,-0.0308672f},{-0.289602f,0.281271f,-0.115675f},{-0.290766f,0.231555f,-0.0258319f}, -{0.384582f,-0.301264f,-0.00464292f},{-0.262683f,-0.4823f,0.299836f},{-0.372847f,-0.242108f,0.20863f}, -{-0.354024f,-0.299405f,0.114273f},{-0.411032f,-0.225543f,0.151416f},{-0.226414f,0.170818f,0.00573617f}, -{-0.409308f,0.226379f,0.00172344f},{-0.458477f,-0.115012f,0.0517025f},{0.367078f,-0.304923f,-0.0234912f}, -{0.363471f,-0.29817f,-0.0387833f},{0.35414f,-0.310646f,-0.0525321f},{0.440221f,-0.285418f,0.00548537f}, -{-0.489634f,0.0610013f,0.230771f},{-0.332147f,0.289515f,-0.319668f},{-0.256098f,-0.294389f,0.219202f}, -{-0.293325f,0.361718f,-0.28291f},{-0.292663f,0.32653f,-0.147854f},{-0.3932f,-0.261503f,0.116517f}, -{-0.28883f,0.301283f,-0.122131f},{-0.400505f,-0.231021f,0.173641f},{-0.429925f,0.00713804f,0.209775f}, -{0.498077f,-0.284345f,0.114189f},{0.499132f,-0.284261f,0.0948201f},{0.496688f,-0.284467f,0.075451f}, -{0.491164f,-0.284962f,0.0561461f},{0.487203f,-0.289791f,0.0432977f},{0.482676f,-0.28275f,0.0357609f}, -{0.473917f,-0.282885f,0.0238256f},{-0.447249f,0.22717f,0.0597537f},{-0.438143f,0.226983f,0.0499534f}, -{-0.489145f,0.0429632f,0.095849f},{0.357027f,-0.296839f,-0.0525642f},{0.350564f,-0.299006f,-0.0612585f}, -{0.342082f,-0.295997f,-0.0719462f},{0.333517f,-0.303662f,-0.0786791f},{0.326456f,-0.299733f,-0.091444f}, -{0.317511f,-0.300447f,-0.104061f},{0.306643f,-0.302846f,-0.112331f},{0.285698f,-0.30264f,-0.128067f}, -{-0.472245f,0.174682f,0.152979f},{-0.469969f,0.152953f,0.230263f},{-0.483094f,0.0261792f,0.114871f}, -{0.233037f,-0.0750651f,-0.134279f},{-0.497949f,0.10864f,0.137256f},{-0.28955f,0.281232f,-0.131738f}, -{0.309447f,-0.150008f,-0.116639f},{-0.378332f,-0.206643f,0.233356f},{-0.374178f,0.0174464f,0.323186f}, -{-0.154873f,0.253696f,0.0322498f},{-0.379097f,0.268429f,-0.0550014f},{-0.217025f,0.18946f,0.136144f}, -{-0.400029f,0.226224f,-0.00787111f},{0.371573f,-0.287991f,-0.0247452f},{0.294225f,-0.297347f,-0.119456f}, -{-0.418485f,0.228025f,0.0135044f},{-0.42152f,0.239954f,0.0242179f},{-0.146127f,0.0584097f,-0.0732259f}, -{-0.394048f,0.187267f,-0.0230346f},{-0.35032f,0.454493f,-0.352638f},{0.193405f,0.0027459f,-0.107791f}, -{0.081589f,0.100608f,-0.0416835f},{-0.0187743f,-0.00719588f,-0.126941f},{-0.292534f,0.361622f,-0.302228f}, -{-0.111498f,-0.470692f,0.322247f},{-0.395161f,0.417421f,-0.282634f},{-0.278509f,-0.48138f,0.29565f}, -{-0.452034f,0.0168805f,0.170657f},{0.249912f,-0.148297f,-0.151339f},{-0.473769f,0.209099f,0.18973f}, -{-0.337304f,-0.228623f,0.251394f},{-0.381907f,-0.26976f,0.114736f},{0.489659f,-0.269393f,0.131989f}, -{0.491434f,-0.262898f,0.113945f},{0.492939f,-0.262699f,0.0949745f},{0.491229f,-0.263754f,0.0761712f}, -{0.488727f,-0.26875f,0.0603775f},{0.482374f,-0.260397f,0.0549307f},{0.476316f,-0.262924f,0.0415485f}, -{-0.336732f,0.341301f,-0.320755f},{-0.370255f,0.226462f,-0.0519211f},{-0.486875f,0.0963699f,0.264159f}, -{-0.129002f,-0.0141925f,-0.118453f},{-0.473975f,0.0342111f,0.171956f},{0.384988f,-0.284827f,0.000218661f}, -{0.375277f,-0.280518f,-0.0187839f},{0.368731f,-0.277721f,-0.0397479f},{0.359631f,-0.277663f,-0.057773f}, -{0.353272f,-0.283605f,-0.0653548f},{0.346391f,-0.279721f,-0.0750522f},{0.32944f,-0.28219f,-0.0926465f}, -{0.319466f,-0.282113f,-0.104003f},{0.31234f,-0.282724f,-0.110183f},{0.29427f,-0.284422f,-0.118093f}, -{0.285814f,-0.285123f,-0.126459f},{0.275236f,-0.28192f,-0.137121f},{-0.299846f,0.416623f,-0.384965f}, -{-0.348873f,0.287103f,-0.285007f},{-0.481731f,0.112466f,0.261445f},{-0.490721f,0.0610913f,0.246835f}, -{-0.482721f,0.133417f,0.076885f},{-0.331993f,0.323031f,-0.336889f},{-0.361419f,-0.286872f,0.133931f}, -{0.0434166f,0.0389441f,-0.0937719f},{-0.381882f,-0.226649f,0.213209f},{-0.335645f,0.242629f,-0.188026f}, -{-0.464934f,0.0268287f,0.171313f},{-0.212331f,0.183621f,0.128427f},{-0.356551f,-0.2654f,0.192315f}, -{-0.464811f,-0.0710202f,0.0771808f},{0.0998135f,0.0067136f,-0.119469f},{-0.369374f,0.251902f,-0.150503f}, -{0.384724f,-0.263773f,-0.00166552f},{0.379303f,-0.262139f,-0.0197357f},{0.338102f,-0.275991f,-0.0849683f}, -{-0.260818f,0.0960612f,-0.036674f},{0.229462f,-0.0564998f,-0.129989f},{-0.0901997f,0.0448153f,-0.0784219f}, -{0.275017f,0.0672905f,0.000250814f},{-0.208537f,0.342838f,-0.0226938f},{-0.218665f,0.33842f,-0.0145654f}, -{-0.393907f,0.361911f,-0.225819f},{-0.288753f,0.291296f,-0.115675f},{-0.357632f,0.0262114f,0.336015f}, -{-0.2802f,-0.319816f,0.151204f},{0.00395806f,0.491913f,-0.130401f},{-0.108546f,0.0785827f,-0.037928f}, -{0.375007f,-0.257644f,-0.0355551f},{0.370068f,-0.261085f,-0.0441015f},{0.363824f,-0.260159f,-0.0559853f}, -{0.357625f,-0.260693f,-0.0655927f},{0.348629f,-0.261451f,-0.0752387f},{0.33897f,-0.262281f,-0.0850198f}, -{0.329677f,-0.263091f,-0.0945757f},{0.319382f,-0.263979f,-0.103945f},{0.305614f,-0.265239f,-0.113938f}, -{0.287537f,-0.265188f,-0.132986f},{0.0602585f,-0.0592071f,-0.144002f},{-0.374506f,0.339243f,-0.209807f}, -{-0.48773f,0.113192f,0.191936f},{-0.337098f,0.00798691f,0.287521f},{-0.0892158f,-0.452095f,-0.183222f}, -{-0.147966f,0.251985f,0.00030869f},{-0.317626f,-0.201383f,0.276441f},{-0.429514f,0.00733738f,0.2843f}, -{-0.456201f,0.191775f,0.0726279f},{-0.368409f,0.306633f,-0.168027f},{0.371798f,-0.0463908f,0.0113694f}, -{-0.449712f,-0.0191184f,0.115456f},{0.388711f,-0.241812f,-0.000347237f},{0.29854f,-0.261246f,-0.123199f}, -{0.193322f,0.0785634f,-0.0559982f},{-0.445076f,0.208418f,0.0577345f},{-0.446632f,0.114652f,0.000135062f}, -{-0.291299f,0.361577f,-0.321514f},{-0.143825f,0.0790135f,-0.0590656f},{-0.375097f,-0.0163917f,0.247973f}, -{-0.363078f,0.304755f,-0.189846f},{-0.384164f,0.248281f,-0.0467959f},{-0.486393f,0.0956818f,0.230578f}, -{0.395592f,-0.243368f,0.0176072f},{0.382673f,-0.240442f,-0.0205845f},{0.375734f,-0.24106f,-0.0366226f}, -{0.370049f,-0.241542f,-0.0461528f},{0.361844f,-0.24133f,-0.0578631f},{0.35668f,-0.247207f,-0.0655027f}, -{0.344455f,-0.24369f,-0.075348f},{0.336545f,-0.248879f,-0.0850455f},{0.329247f,-0.244101f,-0.0926529f}, -{0.319954f,-0.245812f,-0.104106f},{0.310488f,-0.246629f,-0.113681f},{0.302045f,-0.247388f,-0.123456f}, -{0.292071f,-0.244236f,-0.134555f},{0.191746f,-0.131372f,-0.183711f},{-0.0560657f,0.0633034f,-0.05722f}, -{-0.33852f,-0.267425f,0.209106f},{-0.408189f,-0.0210411f,0.207968f},{-0.355092f,0.00830841f,0.306119f}, -{-0.28775f,0.412212f,-0.363345f},{-0.0922511f,0.398026f,-0.094878f},{-0.470445f,0.153024f,0.249542f}, -{-0.306122f,0.290994f,-0.258841f},{0.394518f,-0.131931f,0.151461f},{0.0388572f,0.456101f,-0.170921f}, -{0.403649f,-0.224996f,0.0363525f},{0.398505f,-0.222951f,0.0189062f},{0.211135f,-0.130671f,-0.169917f}, -{0.0247484f,0.09219f,-0.0328735f},{-0.217874f,-0.35478f,0.114993f},{-0.148172f,0.0707695f,-0.0669753f}, -{-0.445616f,0.0105785f,0.0410791f},{-0.395753f,-0.226346f,0.190772f},{-0.289807f,0.311373f,-0.128562f}, -{-0.413726f,-0.00173626f,0.226334f},{-0.473853f,0.17447f,0.114408f},{-0.372769f,-0.278968f,0.115f}, -{0.407103f,-0.224147f,0.0562876f},{0.393553f,-0.221459f,0.00189706f},{0.389463f,-0.221806f,-0.00772964f}, -{0.383238f,-0.222353f,-0.0206103f},{0.376756f,-0.222925f,-0.0331693f},{0.369998f,-0.223485f,-0.0430468f}, -{0.360358f,-0.224282f,-0.0560239f},{0.344854f,-0.2256f,-0.0719269f},{0.329452f,-0.226874f,-0.0912253f}, -{0.318147f,-0.227851f,-0.107347f},{0.311839f,-0.228333f,-0.116691f},{0.302617f,-0.2256f,-0.126182f}, -{-0.126938f,0.0753609f,-0.0523327f},{-0.418189f,-0.0564933f,-0.0256004f},{-0.201379f,0.320523f,-0.0340053f}, -{0.289576f,0.0437799f,-0.0211054f},{-0.289962f,0.361538f,-0.33761f},{0.389624f,-0.0725443f,0.0563262f}, -{-0.276998f,-0.313218f,0.167654f},{-0.40718f,-0.221736f,0.171834f},{0.0390244f,0.449098f,-0.179878f}, -{-0.332185f,0.305341f,-0.333899f},{-0.312926f,-0.273162f,0.222655f},{0.408614f,-0.223125f,0.0928395f}, -{0.407874f,-0.22135f,0.0749108f},{-0.428935f,-0.0908717f,-0.0191826f},{-0.0479631f,0.471458f,-0.091399f}, -{-0.425977f,-0.0560368f,-0.0160638f},{0.0831967f,-0.0666924f,-0.148786f},{-0.288489f,0.361519f,-0.347256f}, -{-0.129748f,-0.0760812f,-0.133899f},{-0.479653f,0.210064f,0.146323f},{-0.343356f,0.357937f,-0.306935f}, -{-0.486457f,0.0412077f,0.153989f},{0.391669f,-0.126678f,0.159185f},{-0.362853f,0.219581f,-0.0601395f}, -{0.0237516f,-0.097611f,-0.205505f},{-0.359548f,0.440365f,-0.343513f},{0.250683f,0.061297f,-0.0380052f}, -{-0.352397f,0.2565f,-0.259509f},{0.406704f,-0.202302f,0.075721f},{0.405707f,-0.202399f,0.0564484f}, -{0.403431f,-0.202592f,0.0372078f},{0.399534f,-0.202932f,0.0179673f},{0.395135f,-0.203305f,0.00197423f}, -{0.390936f,-0.203665f,-0.00767819f},{0.383875f,-0.204238f,-0.0204431f},{0.376171f,-0.204868f,-0.0333237f}, -{0.36902f,-0.205453f,-0.0429439f},{0.359419f,-0.205299f,-0.057683f},{0.346622f,-0.20825f,-0.0732967f}, -{0.338899f,-0.207903f,-0.0846403f},{0.33007f,-0.208643f,-0.0942606f},{0.320938f,-0.209492f,-0.107334f}, -{0.31209f,-0.207247f,-0.117662f},{0.304186f,-0.208276f,-0.124137f},{-0.348384f,0.342317f,-0.284036f}, -{-0.463435f,0.174162f,0.0758754f},{-0.0486512f,0.452526f,-0.109765f},{-0.437288f,-0.036912f,0.0178515f}, -{-0.287653f,0.361377f,-0.357017f},{-0.356146f,0.241433f,-0.151095f},{-0.195598f,0.155313f,0.075914f}, -{-0.148108f,-0.0737147f,-0.130735f},{0.14133f,-0.107103f,-0.194894f},{-0.468625f,0.0943635f,0.0377994f}, -{-0.200338f,0.221523f,0.0386161f},{-0.221958f,0.0961384f,-0.0375936f},{-0.434401f,-0.0554902f,-3.21349e-05f}, -{-0.375329f,0.247966f,-0.0918041f},{-0.489807f,0.0955532f,0.192039f},{-0.465647f,-0.0924215f,0.135082f}, -{-0.476965f,0.210109f,0.155982f},{-0.439147f,-0.0508151f,0.012752f},{0.133317f,0.083007f,-0.0597923f}, -{-0.302971f,0.361506f,-0.204521f},{-0.319453f,-0.286955f,0.19263f},{-0.214652f,0.193659f,0.122118f}, -{0.404177f,-0.184483f,0.114234f},{0.405186f,-0.184412f,0.0949552f},{0.406189f,-0.184335f,0.0756825f}, -{0.405534f,-0.184406f,0.0564291f},{0.403225f,-0.184631f,0.0372078f},{0.398781f,-0.185023f,0.017948f}, -{0.393939f,-0.18692f,0.00299671f},{0.390113f,-0.184129f,-0.00556893f},{0.384145f,-0.18618f,-0.0205524f}, -{0.376242f,-0.186766f,-0.0365133f},{0.37111f,-0.187139f,-0.0461786f},{0.366667f,-0.187512f,-0.0558181f}, -{0.358789f,-0.187203f,-0.0704929f},{0.350661f,-0.193286f,-0.078184f},{0.343761f,-0.18836f,-0.0895662f}, -{0.333304f,-0.194669f,-0.0972444f},{0.325401f,-0.188663f,-0.107752f},{0.308463f,-0.187685f,-0.11752f}, -{-0.433809f,0.209929f,0.0358059f},{-0.345034f,0.306595f,-0.289315f},{-0.382981f,0.261805f,-0.0373814f}, -{-0.341838f,0.341352f,-0.304601f},{-0.388113f,0.346079f,-0.204952f},{-0.398852f,0.0174142f,-0.00798686f}, -{-0.412035f,0.0197743f,-0.00122181f},{-0.296122f,-0.0897206f,-0.106923f},{-0.301948f,0.364516f,-0.223478f}, -{-0.386737f,-0.241124f,0.18856f},{-0.319112f,0.290537f,-0.321147f},{-0.338076f,0.206218f,-0.0533487f}, -{-0.12697f,-0.407267f,-0.133867f},{-0.337954f,0.304826f,-0.320568f},{-0.419134f,0.21025f,0.0134851f}, -{-0.388872f,0.226096f,-0.0177036f},{-0.388595f,0.345294f,-0.132086f},{0.117434f,0.0805762f,-0.0601845f}, -{-0.29901f,0.363352f,-0.24279f},{-0.311588f,-0.313225f,0.14451f},{-0.214331f,0.203376f,0.0319475f}, -{0.393611f,-0.167204f,0.168843f},{0.398113f,-0.166876f,0.152773f},{0.40091f,-0.166696f,0.133513f}, -{0.402305f,-0.166606f,0.114221f},{0.403534f,-0.166528f,0.094923f},{0.404768f,-0.166451f,0.0756503f}, -{0.404312f,-0.166496f,0.0564226f},{0.401148f,-0.166773f,0.037195f},{0.395868f,-0.167249f,0.017993f}, -{0.392692f,-0.165918f,0.00290668f},{0.390479f,-0.169133f,-0.00570398f},{0.328179f,-0.168355f,-0.107971f}, -{-0.242484f,0.0954567f,-0.0339667f},{0.0977235f,-0.07684f,-0.168927f},{-0.184415f,0.0829427f,-0.0602038f}, -{-0.228298f,-0.255497f,0.259722f},{-0.126128f,0.11471f,0.0564998f},{-0.146963f,0.11898f,0.0773223f}, -{-0.430079f,0.282325f,0.0953989f},{-0.335414f,0.294782f,0.073824f},{-0.366808f,0.23007f,-0.0692132f}, -{-0.0931578f,0.0893219f,0.149326f},{-0.305775f,0.448204f,-0.372451f},{-0.316032f,0.450011f,-0.373281f}, -{-0.188209f,0.132562f,0.150548f},{-0.206929f,0.154124f,0.168522f},{-0.317549f,0.453014f,-0.358863f}, -{-0.130333f,0.0906209f,0.167557f},{-0.303402f,0.433298f,-0.345352f},{-0.308443f,0.443632f,-0.350227f}, -{-0.179335f,0.124279f,0.0366934f},{-0.191168f,0.128189f,0.0249896f},{-0.313228f,0.437652f,-0.336478f}, -{-0.322366f,0.450899f,-0.34361f},{-0.444799f,0.276518f,0.0951288f},{-0.337523f,0.455567f,-0.337385f}, -{-0.356281f,0.455972f,-0.341931f},{-0.311697f,0.42108f,-0.317887f},{-0.321691f,0.43542f,-0.323424f}, -{-0.337471f,0.449105f,-0.326665f},{-0.389502f,0.308234f,-0.129102f},{-0.298617f,0.296402f,0.132041f}, -{-0.215308f,0.160136f,0.179551f},{-0.392595f,0.260873f,0.244687f},{-0.335825f,0.441696f,-0.317353f}, -{-0.355593f,0.452333f,-0.320601f},{-0.167567f,0.0814058f,0.173416f},{-0.355805f,0.274969f,0.230449f}, -{-0.163104f,0.121951f,0.0571043f},{-0.172686f,0.125867f,0.0598116f},{-0.183509f,0.13296f,0.0551494f}, -{-0.438111f,0.274165f,0.0738883f},{-0.39037f,0.280261f,0.206212f},{-0.286933f,0.295437f,0.09891f}, -{-0.189541f,0.367107f,0.0278641f},{-0.310167f,0.405755f,-0.299785f},{-0.318315f,0.4167f,-0.302633f}, -{-0.324835f,0.428173f,-0.309591f},{-0.337414f,0.432629f,-0.303334f},{-0.36994f,0.449928f,-0.321591f}, -{0.230948f,0.0913283f,0.187473f},{-0.372377f,0.296679f,0.116266f},{0.270329f,-0.11226f,-0.131115f}, -{-0.109241f,0.0828205f,0.172181f},{-0.36284f,0.28774f,-0.188508f},{-0.352358f,0.287277f,-0.265683f}, -{-0.200942f,0.153596f,0.15177f},{0.00113499f,-0.0836629f,0.330485f},{-0.317067f,0.296203f,0.0975274f}, -{-0.397412f,0.274454f,0.215987f},{-0.429121f,0.278949f,0.07693f},{-0.323337f,0.296878f,-0.0186875f}, -{0.0342465f,0.466442f,-0.171712f},{0.0799106f,0.0706215f,-0.0687952f},{-0.341639f,0.218289f,-0.0877785f}, -{-0.431449f,0.283406f,0.132639f},{-0.330237f,0.42272f,-0.296106f},{-0.355143f,0.44095f,-0.302074f}, -{-0.338597f,0.314241f,-0.0275489f},{0.0233915f,-0.0809749f,0.338073f},{-0.0720588f,0.068403f,0.18575f}, -{-0.37576f,0.276531f,0.223311f},{-0.127504f,0.0984277f,0.151005f},{-0.354069f,0.0557667f,-0.0424938f}, -{-0.371419f,0.295662f,0.151609f},{-0.415745f,0.27138f,0.0370792f},{-0.370236f,0.315739f,-0.039973f}, -{-0.16884f,0.110607f,0.128999f},{-0.0144401f,0.113746f,0.11509f},{-0.160699f,0.0890775f,0.163107f}, -{-0.307247f,0.393351f,-0.284814f},{-0.315491f,0.401235f,-0.281521f},{-0.32171f,0.412205f,-0.289958f}, -{-0.369342f,0.447079f,-0.307064f},{-0.376493f,0.441323f,-0.300775f},{-0.387566f,0.438835f,-0.315012f}, -{-0.0306775f,0.108562f,0.111765f},{-0.451262f,0.26457f,0.0748851f},{-0.294997f,0.272962f,0.232475f}, -{-0.394325f,0.290004f,0.07675f},{-0.279422f,0.286518f,0.190367f},{-0.320758f,0.295894f,0.168618f}, -{-0.342372f,0.27374f,0.234976f},{-0.0900518f,0.0837143f,0.156786f},{-0.0354748f,0.100672f,0.136857f}, -{-0.109858f,0.0888846f,0.162252f},{0.176268f,0.121777f,0.172683f},{-0.166596f,0.0948201f,0.152947f}, -{-0.0411016f,0.104318f,0.115881f},{-0.149034f,0.107829f,0.128915f},{-0.186428f,-0.134111f,-0.131449f}, -{0.240864f,0.0891547f,0.184547f},{-0.266072f,0.309135f,0.0362561f},{-0.353317f,0.293238f,0.0387062f}, -{0.015141f,0.485644f,-0.152741f},{0.325215f,-0.0565898f,-0.0726407f},{-0.335562f,0.417601f,-0.281727f}, -{-0.35414f,0.431452f,-0.287849f},{0.15632f,0.109533f,0.200926f},{-0.111652f,0.107849f,0.112041f}, -{0.171162f,0.125732f,0.164606f},{0.264869f,0.0522877f,-0.0369055f},{0.400203f,-0.28601f,0.00717664f}, -{-0.319388f,0.279194f,0.223626f},{-0.409752f,0.281322f,0.0571364f},{-0.433713f,0.267953f,0.0543648f}, -{-0.267326f,0.278653f,0.208997f},{-0.0725668f,0.100846f,0.0960612f},{-0.261191f,0.290402f,0.133031f}, -{-0.183837f,0.113469f,0.152259f},{-0.464696f,0.244044f,0.0771615f},{0.260529f,0.0686216f,0.202148f}, -{-0.0344844f,0.0789814f,-0.0375743f},{-0.450934f,-0.0369441f,0.0577474f},{-0.196942f,0.340021f,-0.0344555f}, -{0.0789781f,0.0928973f,-0.0507379f},{0.214067f,0.0979454f,0.190264f},{0.205669f,0.10882f,0.181866f}, -{0.00593869f,0.48718f,-0.148947f},{-0.279383f,0.27774f,0.218797f},{-0.309968f,0.385808f,-0.260873f}, -{-0.320372f,0.399363f,-0.266821f},{-0.353239f,0.425633f,-0.278313f},{-0.371496f,0.433343f,-0.284197f}, -{-0.38938f,0.434545f,-0.300672f},{-0.380595f,0.294466f,0.150002f},{-0.14542f,-0.415112f,-0.13224f}, -{-0.0912929f,0.076422f,0.171576f},{0.155104f,0.127051f,0.16802f},{-0.335671f,0.296556f,0.0937076f}, -{-0.351838f,0.295617f,0.0773287f},{-0.243693f,0.319585f,0.0538697f},{0.137073f,0.132883f,0.152182f}, -{-0.47013f,0.156355f,0.0566799f},{-0.462323f,-0.0917205f,0.0598438f},{0.11935f,0.132227f,0.153474f}, -{-0.440922f,-0.0770072f,0.00667504f},{-0.146082f,0.0971866f,-0.0368348f},{-0.355728f,0.131931f,-0.0438699f}, -{-0.479653f,0.0475676f,0.192245f},{-0.35839f,0.294383f,0.0687695f},{-0.146603f,0.0898878f,0.168136f}, -{0.0804765f,0.132845f,0.132523f},{-0.33106f,0.404347f,-0.259246f},{-0.340597f,0.41281f,-0.265162f}, -{-0.355246f,0.418919f,-0.262332f},{-0.386293f,0.430526f,-0.2861f},{-0.461538f,-0.072152f,0.0592135f}, -{-0.288309f,0.0437028f,-0.0627182f},{-0.343336f,0.296164f,0.08347f},{0.0623806f,0.130375f,0.135288f}, -{0.0797948f,-0.0629498f,0.318909f},{-0.230877f,0.263702f,0.128967f},{-0.365876f,0.310183f,-0.182168f}, -{-0.464966f,-0.0927365f,0.0772773f},{-0.47721f,0.0314074f,0.22461f},{-0.42026f,0.00966527f,0.0123597f}, -{-0.406125f,0.187711f,-0.0143918f},{-0.177888f,0.0991286f,0.151969f},{0.027237f,0.126073f,0.112279f}, -{0.0190058f,0.122922f,0.118691f},{0.00530206f,0.119572f,0.112807f},{-0.3051f,0.373756f,-0.243593f}, -{-0.313459f,0.384123f,-0.244114f},{-0.322089f,0.394482f,-0.249677f},{-0.374557f,0.421697f,-0.264667f}, -{-0.378088f,0.427452f,-0.273914f},{0.219044f,0.102254f,0.177596f},{-0.387206f,0.269207f,-0.0319604f}, -{-0.48074f,0.0297547f,0.0799074f},{-0.393991f,0.286853f,0.0585898f},{0.0944375f,0.0846982f,0.234976f}, -{0.0764445f,0.126478f,0.16584f},{-0.388441f,-0.110948f,-0.0707823f},{-0.364101f,0.229986f,-0.0788528f}, -{-0.480361f,0.227729f,0.152683f},{-0.388557f,0.290627f,-0.0904215f},{0.308257f,0.0406997f,0.00110609f}, -{-0.400929f,-0.07048f,-0.0452718f},{-0.408286f,-0.0569885f,-0.0353236f},{-0.411064f,0.00485518f,0.00178774f}, -{-0.375721f,0.00127326f,-0.0385518f},{-0.385296f,0.295219f,0.110813f},{-0.0561622f,0.103682f,0.0916241f}, -{-0.467249f,0.209781f,0.0951224f},{-0.335041f,0.401756f,-0.24441f},{-0.355632f,0.412006f,-0.246732f}, -{-0.391798f,0.414746f,-0.265683f},{0.470805f,-0.247876f,0.0585576f},{-0.238587f,0.32462f,0.00147907f}, -{-0.109151f,0.110074f,0.0755603f},{-0.360043f,0.257895f,0.258191f},{0.101537f,0.0912768f,0.225864f}, -{-0.167053f,0.116504f,0.115141f},{0.287023f,0.0577538f,-0.0010739f},{0.284856f,0.0531816f,-0.0135301f}, -{-0.468876f,0.174335f,0.0951802f},{-0.399045f,-0.0575158f,-0.0449503f},{-0.400093f,0.378727f,-0.226436f}, -{-0.374956f,0.293463f,0.0760297f},{-0.425462f,0.277631f,0.0640816f},{-0.147458f,0.119385f,0.0581653f}, -{-0.307588f,0.374297f,-0.229079f},{-0.317787f,0.383943f,-0.225871f},{-0.325491f,0.393126f,-0.235574f}, -{-0.350609f,0.407144f,-0.240352f},{-0.372808f,0.413678f,-0.247793f},{0.47703f,-0.246468f,0.0764284f}, -{0.457545f,-0.244719f,0.054577f},{-0.392794f,0.206263f,-0.0201601f},{-0.318044f,0.274557f,0.233832f}, -{-0.19529f,0.141005f,0.15885f},{-0.418903f,-0.00291306f,0.195994f},{-0.110251f,0.109939f,0.0938877f}, -{0.336957f,0.0148291f,0.024996f},{0.329703f,0.0246037f,0.0209897f},{0.321279f,0.0350921f,0.0179866f}, -{0.312546f,0.0445259f,0.0194785f},{0.300553f,0.0499855f,0.00521528f},{-0.0685219f,-0.132896f,-0.203331f}, -{-0.244992f,0.32716f,0.0155172f},{-0.446407f,-0.0366998f,0.153982f},{-0.306334f,0.295019f,0.0873348f}, -{-0.336578f,0.396997f,-0.226526f},{-0.354583f,0.403067f,-0.225382f},{0.457339f,-0.237819f,0.0758818f}, -{0.439282f,-0.242822f,0.055696f},{-0.147137f,0.104035f,0.139082f},{-0.0884827f,0.102627f,0.0958747f}, -{-0.0929713f,0.0635414f,0.192791f},{0.201521f,0.0841066f,0.217446f},{-0.199193f,0.357339f,0.0339603f}, -{0.302103f,0.0538632f,0.0212405f},{0.290585f,0.0616122f,0.0160509f},{0.26568f,0.0744992f,0.000971048f}, -{-0.43916f,-0.103328f,-0.00632775f},{-0.442478f,-0.111842f,0.00203854f},{-0.497402f,0.0911225f,0.166406f}, -{-0.402846f,0.203852f,-0.0139802f},{-0.457789f,-0.0685766f,0.15732f},{0.264181f,0.0370149f,-0.0539018f}, -{-0.352989f,0.266654f,-0.266223f},{-0.349895f,0.305231f,-0.265753f},{-0.392872f,0.00293882f,-0.0182309f}, -{-0.483062f,0.0447574f,0.171904f},{-0.24251f,-0.278364f,0.244037f},{-0.461667f,-0.114781f,0.0613742f}, -{-0.0333334f,0.476094f,-0.111418f},{-0.308463f,0.37058f,-0.211029f},{-0.317376f,0.379827f,-0.208926f}, -{-0.372178f,0.404051f,-0.227247f},{-0.379489f,0.405768f,-0.237549f},{-0.299357f,0.269027f,-0.00139544f}, -{0.477088f,-0.244282f,0.0955082f},{0.439153f,-0.236635f,0.0765249f},{0.421128f,-0.237825f,0.0749429f}, -{0.419314f,-0.242944f,0.0557153f},{-0.460374f,0.110331f,0.0227003f},{-0.103575f,0.065895f,0.19373f}, -{-0.261287f,0.298331f,0.0754188f},{-0.243089f,0.300878f,0.0763898f},{-0.236362f,0.293277f,0.0843896f}, -{-0.454072f,0.27439f,0.134825f},{0.354757f,-0.00544677f,0.0437092f},{0.339497f,0.0163017f,0.0414006f}, -{0.332623f,0.0255554f,0.0390341f},{0.32326f,0.0375487f,0.037285f},{0.283171f,0.0696569f,0.0240378f}, -{0.269686f,0.0779203f,0.0181924f},{0.245751f,0.0899457f,0.00502237f},{-0.405611f,-0.0968008f,-0.0510208f}, -{-0.438028f,-0.0347256f,0.172837f},{-0.383103f,0.00792259f,-0.0261085f},{-0.338809f,0.360342f,-0.318999f}, -{-0.489891f,0.0399794f,0.133591f},{0.0094627f,-0.081798f,0.332973f},{-0.329896f,0.387981f,-0.203415f}, -{-0.340217f,0.394778f,-0.20973f},{-0.355574f,0.314614f,-0.0240507f},{-0.377991f,0.305109f,-0.0350792f}, -{0.460464f,-0.236353f,0.0941063f},{-0.275962f,0.296003f,0.0702357f},{0.100617f,0.108286f,0.205749f}, -{-0.0984117f,0.10646f,0.0950516f},{0.356628f,-0.00610268f,0.058384f},{0.349535f,0.00374265f,0.0549243f}, -{0.339934f,0.017022f,0.0585833f},{0.315807f,0.0460242f,0.0391756f},{0.306816f,0.0548278f,0.0411177f}, -{0.294232f,0.0638886f,0.0342047f},{0.250484f,0.0926272f,0.0191312f},{0.233706f,0.102003f,0.0171892f}, -{-0.147465f,0.036166f,-0.0884216f},{-0.396781f,0.341796f,-0.169486f},{-0.445191f,0.0280056f,0.0249381f}, -{-0.455976f,-0.0343011f,0.117044f},{-0.399013f,0.00875856f,-0.00724091f},{-0.127176f,0.0845696f,-0.0427317f}, -{-0.198408f,0.156471f,0.135269f},{0.115016f,-0.0638114f,0.317102f},{-0.304714f,0.35912f,-0.186592f}, -{-0.31072f,0.367512f,-0.188766f},{-0.320218f,0.377171f,-0.190232f},{-0.355548f,0.397447f,-0.206238f}, -{-0.373445f,0.395544f,-0.207402f},{0.477088f,-0.245683f,0.114575f},{0.451506f,-0.234211f,0.100293f}, -{0.441243f,-0.234005f,0.0964471f},{0.431976f,-0.235073f,0.0881644f},{0.412736f,-0.234275f,0.0805955f}, -{0.0239703f,0.103148f,0.190881f},{0.332636f,0.0271889f,0.0590271f},{0.32333f,0.0394714f,0.0564226f}, -{0.284232f,0.0735796f,0.0411948f},{0.27004f,0.0828591f,0.03506f},{0.212665f,0.113f,0.0187711f}, -{-0.478534f,0.0301598f,0.255979f},{-0.479448f,0.196611f,0.117495f},{-0.356821f,0.305463f,-0.227144f}, -{-0.460966f,0.191904f,0.0822739f},{-0.367432f,0.287933f,-0.149931f},{-0.45667f,-0.0321533f,0.0962156f}, -{0.248201f,0.0532009f,-0.0508022f},{-0.0157262f,0.109566f,0.133494f},{-0.284592f,0.29538f,0.113746f}, -{-0.0297643f,0.486023f,-0.0808334f},{-0.333722f,0.385505f,-0.187061f},{-0.342976f,0.390939f,-0.191402f}, -{-0.355657f,0.392547f,-0.189936f},{0.458824f,-0.236513f,0.115424f},{0.421507f,-0.235311f,0.0960162f}, -{-0.25921f,0.294865f,0.0855085f},{0.355419f,-0.00317029f,0.0764863f},{0.349342f,0.00503524f,0.0742613f}, -{0.307035f,0.0570336f,0.0588727f},{0.295138f,0.0672519f,0.0544034f},{0.262233f,0.0901515f,0.0422559f}, -{0.250394f,0.0972316f,0.0371307f},{0.228137f,0.107701f,0.0250796f},{0.19574f,0.119154f,0.0164239f}, -{-0.312656f,0.361332f,-0.372072f},{-0.481377f,0.209865f,0.117417f},{-0.443989f,-0.0430726f,0.168753f}, -{-0.459654f,-0.0406611f,0.112292f},{-0.44478f,0.278126f,0.137809f},{-0.390061f,0.280788f,0.0173564f}, -{-0.128552f,0.115482f,0.0745571f},{-0.371072f,0.297926f,-0.00272658f},{-0.304694f,0.354104f,-0.169692f}, -{-0.314495f,0.36494f,-0.168612f},{-0.32263f,0.3724f,-0.170059f},{-0.369805f,0.39173f,-0.192058f}, -{-0.394872f,0.379126f,-0.208585f},{0.474046f,-0.249818f,0.134298f},{0.453641f,-0.23443f,0.115418f}, -{0.440137f,-0.234076f,0.110331f},{0.420954f,-0.237388f,0.115302f},{0.413598f,-0.233452f,0.100183f}, -{0.25294f,-0.111566f,-0.137037f},{0.0383942f,0.104601f,0.196084f},{0.115466f,0.108762f,0.204881f}, -{0.34041f,0.0172792f,0.0793672f},{0.333317f,0.0269252f,0.0777274f},{0.324096f,0.0392913f,0.075078f}, -{0.286187f,0.0757339f,0.0602232f},{0.274708f,0.0836243f,0.0544677f},{0.264985f,0.0908846f,0.0569564f}, -{0.240156f,0.103527f,0.038539f},{0.229713f,0.109469f,0.0399409f},{0.210678f,0.118607f,0.039465f}, -{0.178737f,0.124163f,0.0155043f},{-0.478348f,0.214565f,0.168824f},{-0.0894087f,-0.0338703f,-0.131456f}, -{0.0999292f,-0.0885438f,-0.188676f},{-0.339047f,0.283894f,-0.305527f},{0.0879553f,-0.0823446f,0.351108f}, -{0.225797f,0.0867239f,0.198463f},{0.122147f,0.12426f,0.179261f},{-0.335253f,0.38092f,-0.170773f}, -{-0.348378f,0.389055f,-0.179621f},{-0.377785f,0.384843f,-0.184393f},{-0.389978f,0.37728f,-0.190778f}, -{0.459808f,-0.240565f,0.131944f},{0.439822f,-0.235362f,0.119745f},{0.411418f,-0.231735f,0.108935f}, -{0.407669f,-0.22553f,0.113996f},{0.305698f,0.0594129f,0.0766921f},{0.287164f,0.0762033f,0.0766535f}, -{0.249706f,0.100743f,0.0565255f},{0.196254f,0.123835f,0.0345841f},{0.186711f,0.125617f,0.0280377f}, -{0.172474f,0.127231f,0.0207132f},{0.154731f,0.12907f,0.017665f},{-0.374281f,-0.0746278f,-0.0723256f}, -{-0.498122f,0.0952895f,0.121231f},{-0.163258f,0.379737f,-0.0499984f},{0.162281f,0.123822f,0.175261f}, -{-0.44386f,-0.127134f,0.185685f},{-0.316205f,0.359931f,-0.151564f},{-0.354854f,0.385492f,-0.168085f}, -{-0.374268f,0.380804f,-0.170631f},{0.440259f,-0.239105f,0.134111f},{-0.0803994f,0.0880743f,0.144413f}, -{0.339741f,0.0176715f,0.098492f},{0.332796f,0.0273818f,0.0974567f},{0.322424f,0.0410083f,0.0941771f}, -{0.316019f,0.0491302f,0.0851934f},{0.274972f,0.0856821f,0.0744221f},{0.266425f,0.0920099f,0.0758175f}, -{0.231353f,0.11098f,0.0588534f},{0.212369f,0.120221f,0.0584097f},{0.188364f,0.127661f,0.0408733f}, -{0.17457f,0.130658f,0.0373557f},{0.136275f,0.130671f,0.0183531f},{0.11834f,0.0629433f,-0.0799717f}, -{-0.380486f,0.225883f,-0.0275361f},{-0.479396f,0.130022f,0.0632584f},{-0.477133f,0.0945629f,0.0505965f}, -{-0.367663f,0.295219f,0.084216f},{-0.0727276f,0.458262f,-0.0540883f},{-0.085576f,0.449574f,-0.0604868f}, -{-0.338063f,0.376001f,-0.154259f},{0.456767f,-0.248269f,0.14977f},{0.419372f,-0.244224f,0.134716f}, -{0.407443f,-0.240468f,0.132735f},{0.306257f,0.058847f,0.095251f},{0.287801f,0.0757339f,0.0952188f}, -{0.252381f,0.101f,0.075168f},{0.200768f,0.124543f,0.0515546f},{0.191335f,0.128581f,0.0587441f}, -{0.156165f,0.134021f,0.0397479f},{0.136558f,0.135256f,0.0385776f},{0.118996f,0.130954f,0.0188997f}, -{0.100482f,0.129096f,0.0171442f},{-0.0688242f,-0.0185718f,-0.127745f},{-0.458008f,-0.0671618f,0.0515482f}, -{0.420054f,-0.285148f,0.00508667f},{-0.350346f,0.442442f,-0.351911f},{-0.452863f,-0.0364875f,0.134729f}, -{-0.095042f,0.443433f,-0.0547635f},{-0.0495f,-0.189582f,0.356001f},{-0.303575f,0.339359f,-0.132311f}, -{-0.31009f,0.346568f,-0.131603f},{-0.320289f,0.356259f,-0.132285f},{-0.330321f,0.368245f,-0.145224f}, -{-0.354294f,0.378142f,-0.14941f},{-0.37131f,0.375396f,-0.154053f},{0.456825f,-0.25558f,0.159062f}, -{0.438388f,-0.247921f,0.153198f},{0.423404f,-0.248301f,0.148227f},{-0.40898f,0.277001f,0.0416578f}, -{-0.045976f,0.106029f,0.0999646f},{-0.103595f,0.104698f,0.116903f},{0.34005f,0.0165011f,0.116993f}, -{0.333021f,0.0263915f,0.116016f},{0.322456f,0.0400566f,0.114016f},{0.275718f,0.0854314f,0.0930131f}, -{0.266522f,0.0921321f,0.096775f},{0.242156f,0.106968f,0.0805376f},{0.231269f,0.112427f,0.0765956f}, -{0.213617f,0.120929f,0.0772001f},{0.17329f,0.133198f,0.055188f},{0.116591f,0.13552f,0.0403331f}, -{0.0802193f,0.127379f,0.0192598f},{-0.493428f,0.0950774f,0.0955275f},{0.2484f,0.0440115f,-0.0601652f}, -{-0.370294f,0.253812f,-0.169512f},{-0.111022f,0.432783f,-0.0540754f},{-0.341767f,0.371763f,-0.140233f}, -{0.00490979f,0.107778f,0.165281f},{0.354532f,-0.00598052f,0.126903f},{0.306489f,0.0576638f,0.11372f}, -{0.251905f,0.101791f,0.0923829f},{0.155001f,0.136703f,0.0576573f},{0.0638982f,0.126054f,0.0237292f}, -{-0.471158f,0.227446f,0.0947944f},{0.210871f,-0.0339346f,-0.115122f},{-0.364416f,0.301225f,-0.175711f}, -{-0.415199f,0.171673f,-0.00596764f},{-0.0313398f,0.106003f,0.124022f},{-0.373933f,-0.114942f,0.265239f}, -{-0.30726f,0.337359f,-0.118234f},{-0.354751f,0.372734f,-0.135635f},{-0.365773f,0.371879f,-0.139565f}, -{-0.377734f,0.368914f,-0.148497f},{-0.249732f,0.278743f,0.182431f},{0.414472f,-0.255606f,0.157571f}, -{-0.366409f,0.244616f,0.275818f},{0.0588116f,0.123977f,0.0193756f},{-0.0135591f,-0.0344555f,-0.136722f}, -{-0.334996f,-0.0174078f,-0.070943f},{-0.331845f,0.0327707f,-0.0486544f},{-0.296154f,0.189544f,-0.0344876f}, -{-0.311447f,0.0182952f,-0.068628f},{-0.411861f,0.00317034f,0.28592f},{-0.336385f,0.0394071f,-0.0446609f}, -{-0.373824f,0.149577f,-0.0365519f},{-0.206145f,-0.0328928f,-0.118819f},{-0.164853f,0.36213f,-0.0554644f}, -{-0.0502331f,0.364876f,-0.104202f},{0.0241696f,0.436738f,-0.172361f},{-0.0166265f,0.37692f,-0.118337f}, -{-0.0686377f,0.380663f,-0.106048f},{-0.29883f,-0.487836f,0.113443f},{-0.294437f,-0.484492f,0.132182f}, -{-0.308141f,-0.482139f,0.178213f},{-0.315858f,-0.470853f,0.190759f},{-0.322353f,-0.472705f,0.211215f}, -{-0.321221f,-0.473354f,0.227131f},{-0.318231f,-0.473683f,0.247111f},{-0.312199f,-0.470326f,0.264217f}, -{-0.261795f,-0.470602f,0.309167f},{-0.445468f,-0.10873f,0.186689f},{-0.0117649f,0.455272f,-0.144748f}, -{-0.143323f,0.321115f,-0.0665766f},{-0.0528568f,-0.072287f,-0.145269f},{-0.388891f,0.147744f,-0.0298704f}, -{-0.309575f,0.112421f,-0.0459663f},{-0.2584f,0.111939f,-0.0322755f},{-0.130366f,0.321269f,-0.0709109f}, -{-0.0524003f,-0.48237f,0.339783f},{-0.446195f,0.0441143f,0.316884f},{0.0216617f,-0.0345262f,-0.137951f}, -{-0.352847f,-0.483708f,0.0576445f},{-0.356075f,-0.469773f,0.0596958f},{-0.350429f,-0.475136f,0.0710717f}, -{-0.341156f,-0.469335f,0.0783448f},{-0.33214f,-0.475084f,0.0933861f},{-0.323581f,-0.473946f,0.103637f}, -{-0.313916f,-0.47374f,0.112247f},{-0.304296f,-0.473528f,0.120806f},{-0.295865f,-0.474049f,0.132092f}, -{-0.309215f,-0.47648f,0.173525f},{-0.388344f,-0.183197f,0.240886f},{-0.309209f,0.0606862f,-0.0464551f}, -{-0.144937f,-0.469689f,0.286795f},{-0.1356f,-0.476428f,0.291116f},{-0.127562f,-0.46976f,0.302588f}, -{-0.0715572f,-0.470249f,0.35494f},{-0.409167f,-0.16748f,0.227555f},{-0.387206f,-0.136735f,0.256403f}, -{-0.392647f,-0.167596f,0.24468f},{-0.37884f,0.348703f,-0.110453f},{-0.3565f,-0.472139f,0.0207839f}, -{-0.357188f,-0.468531f,0.0413749f},{-0.287049f,-0.46821f,0.139822f},{-0.307768f,-0.464139f,0.169345f}, -{-0.312887f,-0.453194f,0.195717f},{-0.313858f,-0.451362f,0.207813f},{-0.316077f,-0.453792f,0.227613f}, -{-0.314012f,-0.451928f,0.247651f},{-0.309286f,-0.455181f,0.261207f},{-0.304244f,-0.449902f,0.266995f}, -{-0.295235f,-0.449838f,0.283444f},{-0.286007f,-0.449561f,0.292402f},{-0.277171f,-0.450313f,0.299952f}, -{-0.374519f,-0.186734f,0.249908f},{-0.331883f,-0.183576f,0.278467f},{-0.462709f,0.150928f,0.280904f}, -{-0.433076f,0.152747f,0.323128f},{-0.104116f,-0.464307f,0.334298f},{-0.0812482f,-0.461503f,0.352503f}, -{-0.0733385f,-0.451188f,0.354908f},{-0.336172f,-0.166644f,0.281759f},{-0.43777f,-0.108312f,0.197183f}, -{-0.147838f,-0.133494f,-0.137751f},{-0.0286004f,-0.225665f,0.353288f},{-0.408935f,0.226353f,0.280621f}, -{-0.429083f,0.225813f,0.264442f},{-0.370602f,-0.166496f,0.26077f},{-0.298154f,-0.314164f,0.152426f}, -{-0.0732806f,0.0510787f,-0.0722163f},{-0.334481f,-0.451728f,0.0750458f},{-0.328919f,-0.46104f,0.0899135f}, -{-0.3187f,-0.451317f,0.0951738f},{-0.312122f,-0.457619f,0.107006f},{-0.298617f,-0.453034f,0.113488f}, -{-0.291473f,-0.460133f,0.125867f},{-0.279428f,-0.454069f,0.132092f},{-0.29737f,-0.452873f,0.171982f}, -{-0.45276f,0.174856f,0.284865f},{-0.44431f,0.173737f,0.29774f},{-0.427289f,0.16712f,0.318903f}, -{-0.406575f,-0.18373f,0.22281f},{-0.366802f,-0.217016f,0.238655f},{-0.141523f,-0.451227f,0.283952f}, -{-0.127375f,-0.449658f,0.302408f},{-0.113157f,-0.44805f,0.322588f},{-0.103524f,-0.449651f,0.334819f}, -{-0.0899618f,-0.448269f,0.342323f},{0.271126f,-0.130645f,-0.13741f},{-0.0707276f,-0.203961f,0.30428f}, -{0.00260761f,-0.072017f,0.302408f},{-0.455802f,-0.0919906f,0.169216f},{-0.44559f,-0.0912961f,0.186283f}, -{-0.0584965f,-0.210964f,0.323957f},{0.173792f,0.00269444f,-0.113758f},{-0.348648f,-0.455509f,0.0179094f}, -{-0.349555f,-0.452879f,0.0386161f},{-0.350937f,-0.451349f,0.0576959f},{-0.284753f,-0.445658f,0.118749f}, -{-0.308392f,-0.440108f,0.208173f},{-0.310733f,-0.437607f,0.229247f},{-0.309234f,-0.439041f,0.247343f}, -{-0.298547f,-0.434102f,0.265612f},{-0.291383f,-0.432648f,0.279033f},{-0.282592f,-0.432314f,0.288492f}, -{-0.272618f,-0.43661f,0.296852f},{-0.458715f,0.178895f,0.272531f},{-0.0676602f,-0.18647f,0.32253f}, -{-0.437976f,-0.0909038f,0.196875f},{-0.136584f,-0.445799f,0.288981f},{-0.0789525f,-0.443819f,0.349481f}, -{-0.428742f,-0.091116f,0.208373f},{-0.0783094f,-0.204212f,0.290229f},{-0.0325874f,-0.208662f,0.359738f}, -{-0.476387f,0.095849f,0.29264f},{-0.464033f,0.192155f,0.248481f},{-0.355021f,-0.18438f,0.264718f}, -{-0.421417f,-0.0858814f,0.216456f},{0.211874f,-0.0764349f,-0.137063f},{-0.419778f,-0.133899f,0.216379f}, -{-0.345446f,-0.44749f,0.0345069f},{-0.342796f,-0.444474f,0.0628726f},{-0.323922f,-0.444275f,0.0805248f}, -{-0.304701f,-0.443548f,0.102254f},{-0.445847f,0.190984f,0.282139f},{-0.304759f,-0.432591f,0.208778f}, -{-0.471949f,0.22553f,0.189505f},{-0.305209f,-0.42996f,0.245233f},{-0.472509f,0.133822f,0.267766f}, -{-0.0580335f,-0.23016f,0.305907f},{-0.412189f,0.111244f,-0.0244944f},{-0.350809f,-0.201775f,0.259194f}, -{-0.0508891f,-0.209247f,0.341642f},{-0.132706f,-0.43178f,0.286441f},{-0.123234f,-0.432751f,0.30037f}, -{-0.114218f,-0.430378f,0.308453f},{-0.106373f,-0.431169f,0.321893f},{-0.0908621f,-0.431697f,0.335636f}, -{-0.0644835f,-0.435356f,0.353127f},{-0.380763f,-0.0849297f,0.253034f},{-0.449288f,0.15413f,0.303514f}, -{-0.427443f,0.0979583f,0.336549f},{-0.438742f,-0.157519f,0.176856f},{-0.482116f,0.0947301f,0.28201f}, -{-0.358661f,-0.0896756f,0.271914f},{-0.463943f,0.11282f,0.299669f},{-0.446722f,0.114215f,0.321578f}, -{-0.450188f,0.0614321f,0.31981f},{-0.335607f,-0.433182f,0.0214527f},{-0.335639f,-0.43232f,0.0373557f}, -{-0.335767f,-0.432803f,0.0577666f},{-0.328237f,-0.435549f,0.0709881f},{-0.317929f,-0.430771f,0.0761326f}, -{-0.310128f,-0.435304f,0.0892769f},{-0.296978f,-0.432571f,0.0957654f},{-0.276869f,-0.433388f,0.110524f}, -{-0.261345f,-0.428771f,0.115553f},{-0.452278f,-0.129121f,0.171351f},{-0.387547f,0.358644f,-0.150857f}, -{-0.446857f,-0.147513f,0.169577f},{-0.295409f,-0.417614f,0.246751f},{-0.29301f,-0.420887f,0.262281f}, -{-0.283827f,-0.413819f,0.267406f},{-0.276895f,-0.417755f,0.282338f},{-0.426626f,-0.151667f,0.205633f}, -{-0.419507f,-0.151211f,0.216675f},{-0.464561f,0.244564f,0.187544f},{-0.0957429f,-0.426546f,0.329423f}, -{-0.427842f,-0.109006f,0.208855f},{-0.0315842f,-0.131005f,0.356342f},{-0.221398f,0.341102f,0.0392399f}, -{-0.436317f,0.0953217f,0.328613f},{-0.44842f,0.0965886f,0.319385f},{-0.0449986f,-0.204238f,0.353802f}, -{-0.409996f,-0.111668f,0.228552f},{-0.448921f,0.0793415f,0.320652f},{-0.413983f,-0.189016f,0.209865f}, -{-0.418858f,-0.170207f,0.213517f},{-0.393039f,-0.149989f,0.249072f},{-0.472271f,0.114196f,0.286049f}, -{-0.0770361f,-0.184045f,0.303456f},{-0.0587087f,-0.111366f,0.307225f},{-0.466773f,0.13143f,0.28448f}, -{-0.304373f,-0.426906f,0.08338f},{-0.283203f,-0.42724f,0.0985177f},{-0.470818f,0.0794573f,0.303206f}, -{0.0180348f,-0.0658371f,0.300537f},{-0.472207f,0.0373171f,0.287296f},{-0.424388f,-0.0574644f,0.203434f}, -{-0.427327f,-0.186952f,0.188206f},{-0.355272f,0.247703f,-0.205633f},{-0.460972f,0.221845f,0.219196f}, -{-0.220324f,0.282094f,-0.0189769f},{-0.424035f,-0.167602f,0.206501f},{-0.124147f,-0.416437f,0.282898f}, -{-0.109241f,-0.416295f,0.30163f},{-0.100746f,-0.418707f,0.315951f},{-0.0343944f,-0.111752f,0.340491f}, -{-0.428613f,-0.0390084f,0.190444f},{-0.435346f,-0.151584f,0.188849f},{-0.433398f,0.177049f,0.306505f}, -{-0.292097f,0.0731423f,-0.0469374f},{-0.477171f,0.117597f,0.271355f},{-0.0671586f,-0.220334f,0.299341f}, -{-0.435584f,0.21434f,0.271271f},{-0.447121f,0.208231f,0.264737f},{-0.454374f,0.194328f,0.267734f}, -{-0.428761f,0.208746f,0.282788f},{-0.0505161f,-0.112524f,0.320318f},{-0.319511f,-0.419511f,0.057175f}, -{-0.30845f,-0.41908f,0.0689946f},{-0.295852f,-0.417035f,0.0745828f},{-0.280985f,-0.413292f,0.0778046f}, -{-0.276342f,-0.419292f,0.0914569f},{-0.260008f,-0.414514f,0.0950452f},{-0.254246f,-0.419215f,0.105797f}, -{-0.240407f,-0.41562f,0.111405f},{-0.461442f,-0.128395f,0.151854f},{-0.430112f,0.0803511f,0.327166f}, -{-0.05822f,-0.191975f,0.341243f},{-0.205334f,0.361525f,0.0194656f},{-0.462625f,0.20989f,0.229748f}, -{-0.464291f,0.225054f,0.206225f},{-0.280007f,-0.405132f,0.244384f},{-0.278727f,-0.404682f,0.250751f}, -{-0.273512f,-0.404321f,0.2605f},{-0.410048f,0.0592521f,0.327919f},{-0.420376f,-0.116427f,0.216385f}, -{-0.0372239f,-0.191145f,0.365609f},{-0.0676474f,-0.147635f,0.320208f},{-0.334912f,-0.035658f,-0.0790007f}, -{-0.11571f,-0.410964f,0.289772f},{-0.0967975f,-0.410778f,0.307231f},{-0.459918f,0.0791679f,0.313257f}, -{-0.462799f,0.173641f,0.266088f},{-0.37394f,-0.132311f,0.265773f},{-0.45458f,0.131385f,0.306106f}, -{-0.410099f,-0.133423f,0.229388f},{-0.458336f,0.0964535f,0.311083f},{-0.432144f,-0.168991f,0.189698f}, -{-0.434587f,0.197093f,0.28893f},{-0.384557f,0.377666f,-0.178637f},{-0.4486f,-0.0571364f,0.170059f}, -{-0.300611f,-0.412051f,0.061027f},{-0.268567f,-0.411479f,0.0835214f},{-0.245236f,-0.411138f,0.101141f}, -{-0.430729f,0.114665f,0.337526f},{-0.18547f,0.381428f,0.0018006f},{-0.446433f,0.225388f,0.245452f}, -{-0.259577f,-0.398058f,0.244584f},{-0.0629658f,-0.182476f,0.334748f},{-0.455841f,-0.10945f,0.169776f}, -{-0.354686f,-0.167313f,0.270351f},{0.021816f,0.453555f,-0.172824f},{-0.435938f,0.256969f,0.215987f}, -{-0.0266197f,-0.19027f,0.371377f},{-0.108488f,-0.400058f,0.282358f},{-0.0891708f,-0.400842f,0.300203f}, -{-0.0369474f,-0.167924f,0.367345f},{-0.480599f,0.0447832f,0.280563f},{-0.428247f,-0.131031f,0.205395f}, -{-0.471255f,0.0615029f,0.30219f},{-0.467905f,0.0962027f,0.302376f},{-0.0124852f,-0.112241f,0.356728f}, -{-0.0659497f,-0.201543f,0.315546f},{-0.43069f,0.0579081f,0.325719f},{-0.391721f,0.361043f,-0.168503f}, -{-0.0402592f,-0.108016f,0.328118f},{-0.0692936f,-0.165249f,0.322337f},{-0.415758f,0.231973f,0.269123f}, -{-0.0491078f,-0.168175f,0.356812f},{-0.411855f,-0.150805f,0.227131f},{-0.276252f,-0.403736f,0.0591621f}, -{-0.263139f,-0.393949f,0.0586862f},{-0.256587f,-0.398482f,0.0750908f},{-0.238754f,-0.400064f,0.0943507f}, -{-0.221173f,-0.398187f,0.111971f},{-0.0518022f,-0.0313495f,-0.13678f},{-0.461873f,0.126678f,0.295373f}, -{-0.0625993f,-0.164754f,0.334028f},{-0.469712f,0.248879f,0.172548f},{-0.316585f,0.30408f,-0.337539f}, -{-0.0603357f,-0.142793f,0.331031f},{-0.453995f,0.254313f,0.193306f},{-0.450413f,0.248108f,0.208013f}, -{-0.407579f,-0.202386f,0.205923f},{-0.0902254f,-0.390258f,0.286531f},{-0.454368f,0.227427f,0.228777f}, -{-0.458053f,0.230726f,0.216012f},{-0.0643806f,-0.130118f,0.316434f},{-0.0579306f,-0.16876f,0.342966f}, -{-0.386557f,0.300614f,-0.0578695f},{-0.39601f,0.0348349f,0.328883f},{-0.413051f,0.214733f,0.289624f}, -{-0.0550433f,-0.147391f,0.341378f},{-0.396743f,0.361866f,-0.187402f},{-0.0361757f,-0.0912382f,0.305373f}, -{-0.246677f,-0.390277f,0.0792386f},{-0.226819f,-0.3942f,0.100441f},{-0.26366f,-0.134787f,-0.126446f}, -{-0.436922f,-0.132131f,0.193434f},{-0.0280152f,-0.167911f,0.37211f},{-0.277692f,0.11217f,-0.0390727f}, -{-0.0964053f,-0.386515f,0.274377f},{-0.0776663f,-0.386161f,0.292003f},{-0.36648f,0.256198f,-0.207614f}, -{-0.396286f,-0.190219f,0.229266f},{-0.454702f,0.211504f,0.249484f},{-0.0332691f,-0.0973731f,0.320819f}, -{-0.241224f,-0.374187f,0.0783962f},{-0.236639f,-0.385737f,0.087277f},{-0.224665f,-0.375756f,0.0965114f}, -{-0.214909f,-0.377351f,0.114614f},{-0.360847f,-0.149674f,0.271348f},{-0.226536f,-0.378438f,0.208411f}, -{-0.211958f,-0.374168f,0.234558f},{-0.0197968f,-0.0909424f,0.325385f},{-0.0126588f,-0.0958169f,0.341037f}, -{-0.485203f,0.0782483f,0.283611f},{-0.0904955f,-0.378817f,0.263721f},{-0.0708563f,-0.373782f,0.263747f}, -{-0.435166f,0.231472f,0.252204f},{-0.44177f,-0.0567249f,0.181435f},{-0.433931f,-0.0563455f,0.191724f}, -{-0.478322f,0.0742806f,0.295245f},{-0.445044f,0.130986f,0.32208f},{-0.0440468f,-0.116491f,0.332086f}, -{-0.358898f,0.270249f,-0.244905f},{-0.415553f,-0.0548728f,0.211466f},{-0.195482f,0.374914f,0.00135046f}, -{-0.398286f,0.398322f,-0.265959f},{-0.422491f,-0.182303f,0.20245f},{-0.0459182f,-0.146323f,0.352953f}, -{-0.25505f,-0.376264f,0.0585705f},{-0.221964f,-0.359371f,0.208373f},{-0.216093f,-0.359487f,0.222231f}, -{-0.21026f,-0.356882f,0.230481f},{-0.457905f,0.155063f,0.288119f},{-0.427893f,0.242931f,0.244635f}, -{-0.0752998f,-0.37139f,0.253111f},{-0.360834f,-0.114736f,0.274769f},{-0.0265812f,-0.115848f,0.350857f}, -{-0.460439f,0.205389f,0.24441f},{-0.416607f,-0.0167583f,0.196129f},{-0.350076f,-0.14824f,0.277245f}, -{-0.411231f,-0.0384168f,0.209408f},{-0.315588f,0.00127969f,-0.0730394f},{0.172898f,-0.129436f,-0.189807f}, -{-0.0764638f,-0.166014f,0.30682f},{-0.428452f,0.19211f,0.298402f},{-0.250825f,-0.368805f,0.0646989f}, -{-0.389058f,0.322427f,-0.0952188f},{-0.356712f,-0.206849f,0.252834f},{-0.0465419f,-0.357403f,0.278377f}, -{-0.224099f,0.347449f,0.0191119f},{-0.404106f,-0.150387f,0.237523f},{-0.43651f,0.136484f,0.328948f}, -{-0.465236f,0.0237292f,0.280358f},{-0.0378927f,-0.229034f,0.34296f},{-0.225662f,-0.354555f,0.0966657f}, -{-0.218459f,-0.360895f,0.133224f},{-0.222896f,-0.359718f,0.149725f},{-0.226658f,-0.35885f,0.169487f}, -{-0.446072f,0.241349f,0.225652f},{-0.208961f,-0.338079f,0.231587f},{-0.199334f,-0.338716f,0.243671f}, -{-0.190434f,-0.338407f,0.253085f},{-0.430259f,0.0928652f,-0.0149255f},{-0.370763f,-0.20236f,0.24396f}, -{-0.428697f,0.131423f,0.336812f},{-0.134944f,-0.137848f,-0.140883f},{-0.380165f,-0.168901f,0.253413f}, -{-0.452137f,-0.0750715f,0.171486f},{-0.394569f,-0.13215f,0.248159f},{-0.223205f,-0.347867f,0.118093f}, -{-0.228395f,-0.3415f,0.153513f},{-0.229205f,-0.337693f,0.171049f},{-0.226941f,-0.341288f,0.187949f}, -{-0.222208f,-0.337764f,0.206135f},{-0.216453f,-0.335346f,0.219665f},{-0.0562201f,-0.340066f,0.26477f}, -{-0.045288f,-0.339288f,0.281103f},{-0.0397254f,-0.338864f,0.28927f},{-0.0306775f,-0.338214f,0.302916f}, -{-0.0162857f,-0.338002f,0.322864f},{-0.443153f,-0.0753416f,0.186393f},{-0.436272f,-0.0714447f,0.194534f}, -{-0.443584f,0.144947f,0.317508f},{-0.489775f,0.132587f,0.152317f},{-0.427597f,-0.0741005f,0.205923f}, -{-0.417887f,-0.0715154f,0.215511f},{-0.426838f,0.145391f,0.332716f},{-0.409778f,-0.0735732f,0.224424f}, -{-0.243153f,-0.337134f,0.138073f},{-0.238452f,-0.33559f,0.146426f},{-0.234761f,0.336902f,0.0319668f}, -{-0.373387f,0.055458f,-0.0377222f},{-0.00782935f,-0.332369f,0.334369f},{-0.399386f,-0.0709559f,0.233349f}, -{-0.39073f,-0.0730523f,0.24169f},{0.0324137f,-0.332806f,0.353249f},{-0.376943f,-0.0711102f,0.251529f}, -{-0.465454f,0.0420951f,0.300209f},{-0.354879f,0.254474f,-0.242256f},{-0.368152f,-0.0732902f,0.259702f}, -{-0.41426f,0.194174f,0.307849f},{-0.175792f,0.340015f,-0.0504935f},{-0.335864f,0.00357545f,0.269503f}, -{-0.247333f,-0.325314f,0.159545f},{-0.240471f,-0.322408f,0.170895f},{-0.229861f,-0.320549f,0.193357f}, -{-0.223835f,-0.318286f,0.208328f},{-0.216009f,-0.317411f,0.22324f},{-0.208305f,-0.316961f,0.233716f}, -{-0.200177f,-0.316536f,0.243838f},{-0.191431f,-0.316221f,0.253355f},{-0.181309f,-0.316112f,0.261619f}, -{-0.387148f,-0.0592585f,0.240423f},{-0.0554613f,-0.321855f,0.268049f},{-0.0459503f,-0.321289f,0.281219f}, -{-0.0403621f,-0.32089f,0.289322f},{-0.0314427f,-0.320228f,0.303116f},{-0.0189415f,-0.319321f,0.322369f}, -{-0.0096428f,-0.318704f,0.335745f},{-0.0709527f,-0.0763191f,-0.143185f},{-0.412138f,0.0923057f,-0.0229381f}, -{-0.315684f,0.037748f,-0.054159f},{-0.371953f,0.0373943f,-0.032089f},{-0.0837626f,-0.0820745f,-0.141339f}, -{-0.31917f,0.112447f,-0.0468409f},{-0.383554f,0.306099f,-0.0502749f},{-0.14951f,0.301977f,-0.0557538f}, -{-0.146989f,0.359506f,-0.0680235f},{-0.0904248f,0.416559f,-0.0912253f},{-0.242909f,0.281901f,-0.00522811f}, -{-0.14686f,0.340272f,-0.0684029f},{-0.277113f,0.00260441f,-0.0934632f},{-0.20972f,-0.303701f,0.234783f}, -{-0.192158f,-0.302948f,0.253696f},{-0.184525f,-0.297354f,0.261445f},{-0.056831f,-0.303765f,0.26886f}, -{-0.0474165f,-0.303135f,0.28221f},{-0.0416996f,-0.302781f,0.290126f},{-0.0336099f,-0.302768f,0.302871f}, -{-0.0201698f,-0.301997f,0.324903f},{-0.0113919f,-0.300704f,0.336915f},{-0.0915244f,-0.0767114f,-0.138401f}, -{-0.31216f,-0.0945757f,-0.104903f},{-0.456374f,0.113887f,0.308447f},{-0.401116f,-0.172303f,0.235144f}, -{-0.0199254f,-0.107077f,0.34858f},{-0.373367f,0.0742934f,-0.0393878f},{-0.379554f,0.0314266f,-0.0254075f}, -{-0.244844f,0.00772325f,-0.102247f},{0.118289f,-0.0103276f,-0.120999f},{-0.165966f,0.320832f,-0.0557924f}, -{0.00993857f,0.455458f,-0.164033f},{-0.233404f,0.301f,-0.0111057f},{-0.0537764f,0.398206f,-0.11527f}, -{-0.0713321f,0.322536f,-0.07711f},{-0.28993f,-0.0385711f,-0.105804f},{-0.0270956f,-0.0990386f,0.332851f}, -{-0.00941129f,-0.0826083f,0.319334f},{-0.255114f,0.31945f,0.0384232f},{-0.0271278f,-0.296923f,0.316292f}, -{-0.00624098f,-0.065567f,0.292544f},{-0.244638f,0.304627f,0.000353705f},{0.00179091f,-0.0658114f,0.293675f}, -{-0.461127f,0.187479f,0.260963f},{-0.360635f,-0.270557f,0.17285f},{-0.277834f,0.149751f,-0.0346741f}, -{-0.459937f,0.0661715f,0.313636f},{-0.356075f,0.252288f,-0.226777f},{-0.300714f,0.0763063f,-0.046275f}, -{-0.386563f,0.341648f,-0.116253f},{-0.0601685f,-0.287084f,0.268679f},{-0.0514228f,-0.285534f,0.283702f}, -{-0.0382014f,-0.284692f,0.306009f},{-0.0291856f,-0.282936f,0.322395f},{-0.0161056f,-0.28219f,0.341063f}, -{-0.00232471f,-0.286537f,0.350111f},{-0.335253f,-0.258924f,0.224443f},{-0.385155f,0.333037f,-0.0948522f}, -{-0.0333591f,0.43542f,-0.127803f},{-0.411855f,-0.207029f,0.191672f},{-0.446426f,0.022861f,0.300524f}, -{-0.277055f,0.170085f,-0.031208f},{-0.258972f,0.00383911f,-0.100222f},{-0.317266f,-0.245445f,0.248603f}, -{-0.272728f,0.300087f,0.0339153f},{0.230388f,-0.091444f,-0.138401f},{-0.0138677f,-0.131848f,-0.228597f}, -{-0.201257f,-0.274763f,0.258956f},{-0.0455002f,-0.279547f,0.297772f},{-0.225276f,0.00369118f,-0.1068f}, -{-0.370486f,0.256436f,-0.188766f},{-0.382705f,0.288885f,-0.0146748f},{0.00393876f,0.417485f,-0.150645f}, -{-0.385271f,0.287875f,-0.0345519f},{-0.260792f,-0.0337803f,-0.108704f},{-0.244831f,-0.0334458f,-0.111713f}, -{0.134803f,-0.116003f,-0.199814f},{-0.392602f,0.0739076f,-0.032269f},{-0.239179f,0.224848f,0.00285523f}, -{-0.334828f,0.0558953f,-0.0452461f},{-0.372088f,-0.0197486f,-0.0509951f},{-0.460844f,0.239163f,0.200495f}, -{-0.0567988f,-0.266589f,0.285836f},{-0.0479953f,-0.264763f,0.302518f},{-0.0426835f,-0.269921f,0.308286f}, -{-0.0364136f,-0.265336f,0.322581f},{-0.0279445f,-0.261644f,0.338645f},{-0.0204399f,-0.265175f,0.346375f}, -{-0.0110511f,-0.263548f,0.353577f},{-0.0415196f,-0.213491f,0.350619f},{-0.366557f,-0.114839f,-0.0851419f}, -{-0.387206f,0.286878f,-0.0535867f},{-0.0459696f,-0.223099f,0.337192f},{-0.23932f,0.111945f,-0.0249381f}, -{-0.368429f,-0.18074f,0.257278f},{-0.39747f,0.150677f,-0.024115f},{-0.40736f,0.0371628f,-0.0137487f}, -{-0.279833f,0.0576059f,-0.0560432f},{-0.18682f,-0.0372271f,-0.123777f},{-0.200994f,0.287045f,-0.0307f}, -{-0.405437f,0.0665188f,0.332163f},{-0.392486f,-0.00592905f,0.264339f},{-0.167876f,-0.0127777f,-0.115559f}, -{-0.431706f,0.110852f,-0.014887f},{-0.383843f,0.297264f,-0.0405903f},{-0.359869f,-0.136562f,0.274609f}, -{-0.205707f,-0.134285f,-0.130022f},{-0.379097f,-0.128182f,-0.07911f},{-0.167509f,-0.0371756f,-0.123816f}, -{-0.148236f,0.00388414f,-0.109051f},{-0.108071f,-0.0344876f,-0.125636f},{-0.130231f,-0.0316775f,-0.120556f}, -{-0.12252f,-0.0370213f,-0.122819f},{-0.390344f,-0.203717f,0.223781f},{-0.060863f,-0.248262f,0.289296f}, -{-0.053069f,-0.248204f,0.302363f},{-0.0462461f,-0.24533f,0.317038f},{-0.0402077f,-0.246346f,0.327642f}, -{-0.0311919f,-0.245748f,0.34132f},{-0.0216617f,-0.250088f,0.350182f},{-0.479345f,0.10862f,0.276891f}, -{-0.0165558f,0.416456f,-0.13696f},{-0.240613f,0.00181343f,-0.105263f},{-0.251307f,-0.00141475f,-0.104061f}, -{-0.243983f,-0.345249f,0.0791357f},{-0.37976f,-0.146928f,-0.0790264f},{-0.284489f,0.186753f,-0.0306292f}, -{-0.166853f,-0.488621f,-0.151378f},{-0.176988f,-0.48165f,-0.146484f},{-0.182602f,-0.485354f,-0.132883f}, -{-0.182563f,-0.469779f,-0.130819f},{-0.188415f,-0.472615f,-0.114112f},{-0.192512f,-0.473065f,-0.0986913f}, -{-0.196087f,-0.475657f,-0.0901064f},{-0.20235f,-0.47093f,-0.0717211f},{0.132764f,-0.0231825f,-0.122986f}, -{0.039944f,-0.48882f,-0.149474f},{0.0224976f,-0.0872319f,-0.190502f},{0.135433f,-0.056204f,-0.131603f}, -{-0.343092f,-0.463438f,0.00420567f},{-0.487267f,0.130806f,0.17258f},{-0.163702f,-0.472956f,-0.165364f}, -{-0.171027f,-0.467946f,-0.152497f},{0.0600398f,0.0716697f,-0.0695862f},{0.0408508f,-0.0974438f,-0.205595f}, -{0.300392f,-0.193556f,-0.123572f},{-0.335619f,-0.449535f,0.00314461f},{-0.173612f,0.381512f,-0.0386097f}, -{-0.186685f,0.381075f,-0.0166104f},{-0.482695f,0.130813f,0.191782f},{0.00456896f,0.0809042f,-0.037928f}, -{-0.322411f,0.376715f,-0.357763f},{-0.327215f,0.382174f,-0.349963f},{-0.33297f,0.377602f,-0.33707f}, -{-0.342153f,0.376753f,-0.319134f},{-0.351407f,0.377486f,-0.301778f},{-0.358731f,0.376528f,-0.286988f}, -{-0.278682f,-0.454268f,0.148587f},{-0.289023f,-0.458513f,0.162754f},{-0.480489f,0.126414f,0.211106f}, -{-0.478753f,0.126446f,0.223967f},{-0.314533f,0.396926f,-0.373435f},{-0.337992f,0.395717f,-0.337192f}, -{-0.372744f,0.393184f,-0.287315f},{-0.145664f,0.399228f,-0.0548149f},{-0.369689f,0.404225f,-0.30208f}, -{-0.341741f,0.412334f,-0.341507f},{-0.47602f,0.131777f,0.231665f},{-0.175091f,-0.462834f,-0.138176f}, -{-0.181431f,-0.450474f,-0.112922f},{-0.187457f,-0.452378f,-0.0945114f},{-0.198215f,-0.457599f,-0.0711102f}, -{-0.322347f,-0.449432f,-0.0207646f},{-0.342114f,-0.444552f,0.0145719f},{-0.475576f,0.130928f,0.249651f}, -{-0.388409f,0.328401f,-0.169358f},{-0.372094f,0.323552f,-0.188772f},{-0.360223f,0.323527f,-0.227272f}, -{-0.346783f,0.324787f,-0.280885f},{-0.306334f,-0.447471f,0.184972f},{-0.377014f,0.354587f,-0.231073f}, -{-0.0322337f,0.0547957f,-0.0699784f},{-0.213797f,0.357223f,0.0104113f},{-0.489724f,0.134935f,0.133899f}, -{-0.388544f,0.426584f,-0.314903f},{-0.360107f,0.341494f,-0.246744f},{-0.362088f,0.26956f,-0.22697f}, -{-0.144899f,-0.453497f,-0.168876f},{-0.161966f,-0.451529f,-0.151211f},{-0.168705f,-0.448545f,-0.137327f}, -{-0.177663f,-0.450487f,-0.128858f},{-0.191148f,-0.446744f,-0.0748786f},{-0.31416f,-0.436713f,-0.0157422f}, -{-0.320385f,-0.433047f,0.000713822f},{-0.331632f,-0.436893f,0.00825056f},{-0.398807f,0.272673f,0.0160702f}, -{-0.259255f,0.306582f,0.0174271f},{-0.16639f,0.0193627f,-0.0963892f},{-0.2655f,-0.443079f,0.133751f}, -{-0.267403f,-0.442867f,0.143391f},{-0.274734f,-0.442063f,0.153011f},{-0.281171f,-0.433812f,0.169056f}, -{-0.295209f,-0.439838f,0.175518f},{-0.299312f,-0.434674f,0.188206f},{-0.183753f,0.0188611f,-0.0958747f}, -{-0.145092f,0.0895598f,-0.0480499f},{-0.0156812f,-0.0939005f,-0.187737f},{-0.357644f,0.287502f,-0.227073f}, -{-0.388158f,0.288332f,-0.0727115f},{-0.436201f,0.137925f,-0.000482281f},{-0.443339f,0.13341f,0.00564614f}, -{-0.152873f,-0.447098f,-0.158869f},{-0.205546f,-0.434385f,-0.0600752f},{0.249809f,-0.0934632f,-0.132144f}, -{0.117897f,0.0717212f,-0.0700427f},{-0.460078f,-0.0407382f,0.096267f},{-0.299132f,-0.431536f,-0.0201794f}, -{-0.373547f,0.270056f,-0.149796f},{-0.371355f,0.26994f,-0.169081f},{-0.256085f,-0.435066f,0.130497f}, -{-0.260657f,-0.432256f,0.151358f},{-0.307132f,-0.429189f,0.226957f},{-0.410871f,0.260808f,0.0192406f}, -{-0.105749f,0.430977f,-0.0668081f},{-0.476682f,0.187891f,0.13361f},{-0.328989f,0.397312f,-0.352194f}, -{-0.146269f,-0.434886f,-0.151243f},{-0.163432f,-0.433066f,-0.131983f},{-0.169901f,-0.431382f,-0.113977f}, -{-0.172757f,-0.428777f,-0.0962863f},{-0.178994f,-0.435002f,-0.0914054f},{-0.182042f,-0.430301f,-0.075168f}, -{-0.188068f,-0.430121f,-0.0630205f},{-0.286296f,-0.426526f,-0.0209511f},{-0.295679f,-0.423536f,-0.0106942f}, -{-0.299158f,-0.419125f,0.00205783f},{-0.30964f,-0.421794f,0.00842418f},{-0.319067f,-0.420539f,0.0211762f}, -{-0.317787f,-0.415877f,0.0403717f},{-0.241513f,-0.42742f,0.130504f},{-0.246574f,-0.426957f,0.146503f}, -{-0.265088f,-0.424977f,0.165782f},{-0.278605f,-0.41899f,0.188264f},{-0.289878f,-0.422186f,0.194675f}, -{-0.296367f,-0.421485f,0.207543f},{-0.296624f,-0.416861f,0.226842f},{-0.214041f,0.35705f,0.000868158f}, -{-0.372178f,0.360188f,-0.245767f},{-0.126732f,-0.431999f,-0.168876f},{-0.137542f,-0.430205f,-0.159088f}, -{-0.150487f,-0.428944f,-0.139693f},{-0.107415f,0.0218128f,-0.0993151f},{-0.107826f,-0.0982734f,-0.142163f}, -{-0.260014f,-0.410617f,-0.0196071f},{-0.275139f,-0.418797f,-0.0182245f},{-0.280573f,-0.410868f,0.00176845f}, -{-0.301145f,-0.413131f,0.0196264f},{-0.478277f,0.24097f,0.165397f},{-0.479788f,0.243169f,0.150992f}, -{-0.23289f,-0.419176f,0.124035f},{-0.22716f,-0.414501f,0.131655f},{-0.237886f,-0.41652f,0.151256f}, -{-0.245224f,-0.411183f,0.167319f},{-0.258143f,-0.416636f,0.172162f},{-0.261242f,-0.410231f,0.188219f}, -{-0.279152f,-0.410733f,0.208804f},{-0.234761f,0.338857f,0.0169963f},{-0.109099f,-0.452146f,-0.183042f}, -{-0.12879f,-0.415852f,-0.150034f},{-0.137793f,-0.420694f,-0.146503f},{-0.160075f,-0.418713f,-0.114035f}, -{-0.16293f,-0.414913f,-0.093386f},{-0.167233f,-0.411961f,-0.0760554f},{0.137401f,0.0762162f,-0.0700106f}, -{0.193206f,0.0219222f,-0.0992637f},{0.117524f,0.0372528f,-0.107186f},{-0.242619f,-0.416353f,-0.0356644f}, -{-0.269223f,-0.407247f,-0.0048487f},{-0.283293f,-0.406013f,0.0177808f},{-0.290901f,-0.405099f,0.0402945f}, -{-0.286155f,-0.405035f,0.0532973f},{-0.477178f,0.13523f,0.211067f},{-0.359001f,0.238642f,-0.130349f}, -{-0.36293f,0.23879f,-0.11426f},{-0.227366f,-0.410913f,0.117514f},{-0.229591f,-0.410585f,0.1464f}, -{-0.251204f,-0.408251f,0.181776f},{-0.265866f,-0.406694f,0.201074f},{-0.277969f,-0.405363f,0.226771f}, -{-0.344474f,0.321842f,-0.289502f},{-0.364229f,0.372869f,-0.272808f},{-0.39909f,0.359654f,-0.208148f}, -{-0.167573f,0.0368927f,-0.0891675f},{-0.149921f,-0.409479f,-0.111752f},{-0.155606f,-0.408765f,-0.0957525f}, -{-0.171252f,-0.408855f,-0.0626539f},{-0.128803f,0.0930517f,-0.0337481f},{-0.236954f,-0.399897f,-0.031761f}, -{-0.245462f,-0.39474f,-0.0222887f},{-0.253468f,-0.396849f,-0.0136394f},{-0.260998f,-0.394527f,0.00144692f}, -{-0.266863f,-0.393839f,0.0208096f},{-0.271139f,-0.397891f,0.0370406f},{-0.266123f,-0.39137f,0.0419858f}, -{-0.218028f,-0.398206f,0.130208f},{-0.225591f,-0.397363f,0.149455f},{-0.230806f,-0.39528f,0.164496f}, -{-0.234845f,-0.397846f,0.173094f},{-0.239385f,-0.395852f,0.188129f},{-0.240941f,-0.393396f,0.2058f}, -{-0.255069f,-0.398714f,0.210662f},{-0.260741f,-0.398077f,0.226726f},{0.422581f,-0.303431f,-0.008855f}, -{-0.252979f,0.320176f,0.0204238f},{0.00404165f,0.0687116f,-0.0526414f},{0.0234815f,0.028057f,-0.100048f}, -{-0.0830745f,0.449953f,-0.0670911f},{-0.121877f,-0.402958f,-0.124716f},{-0.132301f,-0.403363f,-0.111636f}, -{-0.142712f,-0.403344f,-0.095984f},{-0.159342f,-0.401923f,-0.0683258f},{-0.166024f,-0.395119f,-0.0611942f}, -{0.0255393f,-0.0174078f,-0.13015f},{0.210421f,0.0209189f,-0.0930066f},{0.233301f,-0.11307f,-0.146889f}, -{-0.430722f,0.244603f,0.0369442f},{-0.476554f,0.228989f,0.109829f},{-0.47928f,0.226076f,0.118395f}, -{-0.480772f,0.227626f,0.133404f},{-0.236536f,-0.391434f,0.223472f},{-0.231886f,-0.391839f,0.233137f}, -{-0.374023f,0.377255f,-0.266467f},{-0.392621f,0.402617f,-0.285676f},{-0.36331f,0.354966f,-0.253329f}, -{-0.360352f,0.305559f,-0.207871f},{-0.0127617f,0.0691425f,-0.0529565f},{0.225211f,-0.100518f,-0.143616f}, -{0.22833f,-0.0351178f,-0.111739f},{0.400203f,-0.263914f,0.0221408f},{0.286573f,-0.0366419f,-0.0902029f}, -{-0.107479f,0.0613164f,-0.058474f},{-0.0914923f,-0.401138f,-0.148098f},{-0.0929006f,-0.395145f,-0.13352f}, -{-0.104617f,-0.399666f,-0.133211f},{-0.110173f,-0.396367f,-0.114093f},{-0.107247f,-0.390348f,-0.0948522f}, -{-0.127697f,-0.397434f,-0.09228f},{-0.128777f,-0.393499f,-0.074049f},{-0.146777f,-0.391113f,-0.0637793f}, -{0.0422655f,-0.00248225f,-0.127166f},{-0.0146008f,0.0365648f,-0.0938812f},{-0.234967f,-0.384721f,-0.0298961f}, -{-0.244812f,-0.378399f,-0.0178837f},{-0.255571f,-0.377197f,0.00137618f},{-0.26114f,-0.376528f,0.0207518f}, -{-0.260188f,-0.376483f,0.0402431f},{-0.477473f,0.209826f,0.107881f},{-0.34704f,0.303643f,-0.280718f}, -{-0.216215f,-0.381248f,0.131378f},{-0.222665f,-0.379615f,0.149326f},{-0.227957f,-0.378978f,0.168689f}, -{-0.229198f,-0.378753f,0.188039f},{-0.421314f,0.195351f,0.0116652f},{-0.157689f,0.393672f,-0.0470981f}, -{-0.358873f,0.35858f,-0.267483f},{-0.394415f,0.342664f,-0.187473f},{0.250214f,0.0217163f,-0.0747114f}, -{-0.0781615f,-0.389061f,-0.137552f},{-0.0940581f,-0.38829f,-0.114215f},{-0.0967204f,-0.388026f,-0.101341f}, -{-0.110759f,-0.386779f,-0.0755217f},{-0.224793f,-0.379332f,-0.0364618f},{0.309421f,-0.0351564f,-0.0752451f}, -{-0.354301f,0.212225f,-0.053233f},{-0.356635f,0.2038f,-0.0401016f},{-0.212697f,-0.371692f,0.11727f}, -{-0.0316228f,-0.0987171f,-0.188586f},{0.100437f,0.099045f,-0.0386418f},{-0.376178f,0.319128f,-0.169448f}, -{-0.362467f,0.319096f,-0.211157f},{-0.300559f,0.395724f,-0.384277f},{-0.365618f,0.363963f,-0.259812f}, -{0.286451f,0.0156522f,-0.0540175f},{-0.110263f,0.00234718f,-0.109418f},{-0.067493f,-0.378502f,-0.149243f}, -{-0.0773962f,-0.376142f,-0.133758f},{-0.0834796f,-0.375563f,-0.11426f},{-0.0887785f,-0.374985f,-0.094968f}, -{-0.0947783f,-0.374297f,-0.0758946f},{0.327723f,-0.0941063f,-0.0786534f},{-0.261332f,0.0396836f,-0.0784283f}, -{0.0601363f,0.00210928f,-0.129205f},{-0.234491f,-0.361545f,-0.0312144f},{-0.24433f,-0.360458f,-0.0179544f}, -{-0.250625f,-0.359802f,-0.00518309f},{-0.254902f,-0.359339f,0.00448862f},{-0.258381f,-0.358934f,0.0206553f}, -{-0.256709f,-0.359005f,0.0401981f},{-0.252696f,-0.359326f,0.0564162f},{-0.248773f,-0.359622f,0.0660429f}, -{-0.226395f,-0.361004f,0.187975f},{-0.43997f,0.24032f,0.0500048f},{-0.185708f,0.0393235f,-0.0903636f}, -{0.399167f,-0.275515f,0.0147327f},{-0.0604257f,-0.373454f,-0.159667f},{0.021726f,0.00198706f,-0.117398f}, -{-0.447256f,0.245632f,0.0579596f},{0.192859f,-0.110691f,-0.169872f},{-0.224626f,0.343153f,-0.00208995f}, -{-0.0538279f,0.437452f,-0.112003f},{-0.46213f,0.169589f,0.056577f},{-0.0297193f,0.454834f,-0.127893f}, -{0.174493f,0.040108f,-0.0943442f},{0.0798784f,0.0608919f,-0.0775023f},{-0.128925f,0.00378121f,-0.110685f}, -{0.306341f,-0.131018f,-0.115533f},{-0.0521945f,-0.359069f,-0.170985f},{-0.0679753f,-0.35905f,-0.153082f}, -{-0.0764767f,-0.358188f,-0.136973f},{-0.0822835f,-0.357609f,-0.127276f},{-0.085396f,-0.357255f,-0.114395f}, -{-0.0885663f,-0.356863f,-0.0950709f},{-0.0949005f,-0.355339f,-0.0771744f},{-0.244137f,0.0433684f,-0.0812385f}, -{0.00293558f,0.00318962f,-0.117385f},{-0.224826f,-0.359513f,-0.0394714f},{-0.238709f,-0.335687f,-0.0346741f}, -{-0.246516f,-0.342497f,-0.0181602f},{-0.250452f,-0.346484f,-0.00528599f},{-0.254458f,-0.340947f,0.00241795f}, -{-0.259416f,-0.341108f,0.0204624f},{-0.262072f,-0.339925f,0.0405711f},{-0.260541f,-0.339442f,0.0580367f}, -{-0.250715f,-0.346066f,0.0657085f},{-0.229764f,-0.34777f,0.0946079f},{-0.478084f,0.143294f,0.0695798f}, -{-0.0194624f,0.454918f,-0.137661f},{0.230504f,0.0393814f,-0.0744413f},{-0.0131475f,0.00237936f,-0.119089f}, -{-0.261159f,-0.336709f,0.0775474f},{-0.336951f,0.323102f,-0.320594f},{-0.482161f,0.146793f,0.15314f}, -{-0.36412f,0.292286f,-0.172464f},{-0.341118f,0.323173f,-0.304447f},{-0.154821f,0.402887f,-0.0399472f}, -{-0.480985f,0.14397f,0.17247f},{-0.373953f,0.305714f,-0.150085f},{0.0102794f,0.469335f,-0.163043f}, -{-0.047185f,-0.340516f,-0.185473f},{-0.0574934f,-0.341931f,-0.17566f},{-0.0636925f,-0.339854f,-0.168181f}, -{-0.0706248f,-0.340658f,-0.15314f},{-0.0778142f,-0.339886f,-0.136979f},{-0.0816469f,-0.339539f,-0.127417f}, -{-0.0869393f,-0.338999f,-0.114536f},{-0.0922639f,-0.33842f,-0.0952124f},{-0.0962638f,-0.33887f,-0.0771679f}, -{-0.249024f,-0.326324f,-0.0227131f},{-0.257783f,-0.31788f,-0.0144175f},{-0.261165f,-0.323372f,-0.000257208f}, -{-0.266278f,-0.326858f,0.0179351f},{-0.2693f,-0.329141f,0.0326421f},{-0.14104f,0.379949f,-0.068075f}, -{0.217597f,-0.0904601f,-0.14069f},{-0.478329f,0.144021f,0.185338f},{-0.297132f,0.16867f,-0.03742f}, -{-0.349812f,0.27331f,-0.282345f},{-0.0403556f,0.45639f,-0.116228f},{0.00156584f,0.473284f,-0.154117f}, -{-0.185734f,0.0511109f,-0.0847947f},{-0.0329411f,0.0695283f,-0.0532716f},{0.281827f,-0.0642809f,-0.104826f}, -{-0.0320729f,0.00306098f,-0.118446f},{0.208871f,-0.118466f,-0.163217f},{0.154847f,-0.090473f,-0.168831f}, -{-0.167374f,-0.073914f,-0.129115f},{-0.072599f,0.340851f,-0.0886917f},{-0.366667f,0.381724f,-0.279457f}, -{-0.230234f,0.324427f,-0.00771678f},{-0.444722f,0.260564f,0.0609241f},{-0.390074f,0.266377f,-0.0179994f}, -{-0.205019f,0.0589885f,-0.0783897f},{0.155696f,0.0757082f,-0.0711424f},{0.289036f,0.00604484f,-0.0610784f}, -{-0.05386f,-0.32471f,-0.188232f},{-0.0694608f,-0.322703f,-0.169332f},{-0.0759301f,-0.322035f,-0.153191f}, -{-0.0800071f,-0.326137f,-0.137089f},{-0.0837948f,-0.318942f,-0.132272f},{-0.0893701f,-0.3208f,-0.114633f}, -{-0.0966689f,-0.319919f,-0.0953024f},{-0.0994277f,-0.324112f,-0.0823703f},{-0.106489f,-0.321019f,-0.0733867f}, -{0.292431f,-0.0723835f,-0.100453f},{-0.149445f,-0.470924f,-0.172438f},{0.0788817f,0.000926046f,-0.129231f}, -{0.0984116f,0.0203595f,-0.112736f},{0.118257f,-0.112266f,-0.202592f},{0.20846f,-0.0947365f,-0.144658f}, -{0.17383f,-0.073406f,-0.137037f},{-0.316964f,-0.304125f,-0.00106747f},{-0.464509f,0.227427f,0.0788464f}, -{-0.42925f,0.260982f,0.0385454f},{-0.163574f,0.397498f,-0.0332915f},{-0.351902f,0.235922f,-0.147539f}, -{-0.22152f,0.0564291f,-0.0771293f},{-0.0656667f,-0.318678f,-0.179255f},{0.252535f,-0.0537153f,-0.117816f}, -{-0.0121893f,-0.0160059f,-0.130941f},{-0.127453f,-0.47147f,-0.182393f},{0.0793254f,0.0197872f,-0.113578f}, -{0.458831f,-0.267097f,0.0243722f},{-0.317376f,-0.295476f,-0.0150156f},{-0.333626f,-0.295296f,0.00389057f}, -{-0.336764f,-0.2979f,0.0185653f},{-0.257429f,0.283187f,0.00455936f},{-0.405932f,-0.241375f,0.133391f}, -{-0.354153f,0.0745571f,-0.0441465f},{-0.419096f,0.153346f,-0.00814763f},{-0.327099f,0.327359f,-0.349841f}, -{-0.322951f,0.394309f,-0.360857f},{-0.37075f,0.287991f,-0.130658f},{-0.36621f,0.267438f,-0.206064f}, -{-0.162898f,0.000514465f,-0.108871f},{-0.0462654f,-0.312871f,-0.199325f},{-0.0594933f,-0.300961f,-0.192058f}, -{-0.0672487f,-0.304775f,-0.182322f},{-0.0766374f,-0.303913f,-0.169435f},{-0.0791132f,-0.30808f,-0.153217f}, -{-0.0874795f,-0.302756f,-0.133976f},{-0.0951449f,-0.30208f,-0.114762f},{-0.0997557f,-0.306196f,-0.101907f}, -{-0.103241f,-0.300428f,-0.0942606f},{-0.11018f,-0.303219f,-0.0795022f},{0.321511f,-0.0410662f,-0.0695154f}, -{-0.0158227f,-0.485991f,-0.167647f},{0.139388f,-0.0693933f,-0.138169f},{-0.333099f,-0.281046f,-0.0147905f}, -{-0.340777f,-0.283181f,-0.00391625f},{-0.351394f,-0.27911f,0.00481658f},{-0.357329f,-0.284029f,0.0211119f}, -{-0.386068f,-0.0377737f,-0.0490209f},{-0.321331f,0.235285f,-0.148297f},{-0.374062f,-0.280004f,0.0586155f}, -{-0.372666f,-0.282261f,0.0763448f},{0.249629f,-0.0174978f,-0.0920742f},{-0.164429f,0.0917784f,-0.0503135f}, -{0.335099f,-0.00899008f,-0.0222115f},{-0.374043f,0.250539f,-0.110157f},{0.213424f,0.0407125f,-0.0809684f}, -{-0.363529f,0.337031f,-0.230636f},{0.214073f,0.0646603f,-0.0599209f},{-0.0494036f,-0.298383f,-0.201749f}, -{-0.0826758f,-0.298711f,-0.153262f},{0.288766f,-0.16813f,-0.13006f},{0.349883f,-0.104794f,-0.0615607f}, -{-0.369618f,-0.275419f,0.0223337f},{-0.372994f,-0.277071f,0.0392592f},{-0.363252f,0.274158f,-0.210945f}, -{-0.371876f,0.252358f,-0.130369f},{-0.166056f,0.0586155f,-0.0782997f},{-0.0469342f,0.0687309f,-0.0523006f}, -{-0.0710235f,-0.281856f,-0.185775f},{-0.0795184f,-0.290126f,-0.172843f},{-0.084097f,-0.283644f,-0.168522f}, -{-0.0888235f,-0.284647f,-0.153436f},{-0.0927912f,-0.284152f,-0.134047f},{-0.0977621f,-0.2852f,-0.119077f}, -{-0.102334f,-0.281837f,-0.110601f},{-0.110096f,-0.283251f,-0.095013f},{0.193167f,-0.0444487f,-0.125932f}, -{0.210254f,-0.0442237f,-0.126176f},{-0.338134f,-0.268429f,-0.02416f},{-0.353317f,-0.261464f,-0.0176714f}, -{-0.356571f,-0.267033f,-0.00273944f},{-0.370892f,-0.259053f,0.00223789f},{-0.378017f,-0.261207f,0.018829f}, -{-0.380563f,-0.266255f,0.036031f},{-0.388769f,-0.257387f,0.0409119f},{-0.393296f,-0.259284f,0.0599917f}, -{-0.224581f,0.0217292f,-0.0973795f},{-0.277493f,0.0697534f,-0.0489566f},{-0.348191f,0.38202f,-0.311495f}, -{0.230028f,-0.150413f,-0.164348f},{-0.174428f,0.365828f,-0.0464615f},{-0.00840811f,0.473888f,-0.144368f}, -{-0.127317f,0.0454583f,-0.0789106f},{-0.0519373f,-0.281245f,-0.207955f},{0.328263f,0.00381982f,-0.0205267f}, -{-0.385071f,-0.255535f,0.0264493f},{-0.403219f,-0.253587f,0.0716247f},{-0.412279f,-0.24295f,0.0788335f}, -{-0.410434f,-0.242712f,0.115668f},{-0.479229f,0.245175f,0.114061f},{-0.48065f,0.245272f,0.133314f}, -{-0.391457f,0.382155f,-0.259612f},{0.0414745f,0.078602f,-0.057355f},{0.097119f,0.032134f,-0.104755f}, -{-0.380975f,0.283476f,-0.0952445f},{-0.297859f,0.0199222f,-0.0754959f},{-0.0166522f,0.476062f,-0.133867f}, -{0.251429f,0.0748529f,-0.0162503f},{-0.0652552f,-0.273599f,-0.199029f},{-0.0789203f,-0.263027f,-0.187409f}, -{-0.0867143f,-0.266744f,-0.16957f},{-0.0926819f,-0.266152f,-0.153474f},{-0.0976142f,-0.267895f,-0.135738f}, -{-0.105775f,-0.264969f,-0.11498f},{-0.11371f,-0.266043f,-0.10136f},{0.223366f,-0.0452654f,-0.125063f}, -{-0.164191f,0.0825826f,-0.0599595f},{-0.25966f,-0.4712f,-0.0566155f},{0.152616f,-0.130073f,-0.200251f}, -{-0.0534999f,-0.0905823f,-0.151551f},{-0.358661f,-0.248108f,-0.036076f},{-0.376686f,-0.248043f,-0.0189383f}, -{-0.392094f,-0.241774f,0.000803851f},{-0.394306f,-0.243728f,0.0184432f},{-0.400145f,-0.245285f,0.03297f}, -{-0.409405f,-0.240314f,0.0406161f},{-0.412511f,-0.241253f,0.0587698f},{-0.476059f,0.249876f,0.155802f}, -{-0.381837f,0.372689f,-0.253587f},{0.0425099f,0.051426f,-0.0864795f},{-0.242034f,0.0572844f,-0.0712903f}, -{-0.0562265f,-0.265136f,-0.213819f},{-0.0698724f,-0.258506f,-0.203993f},{-0.0831645f,-0.258114f,-0.182509f}, -{-0.101318f,-0.260763f,-0.130954f},{-0.0545867f,0.00329893f,-0.113752f},{0.212292f,0.0944536f,-0.0180444f}, -{0.227436f,0.0886209f,-0.0160766f},{-0.371393f,-0.23879f,-0.0384425f},{-0.389373f,-0.238487f,-0.0192598f}, -{-0.405399f,-0.236391f,0.0231697f},{-0.261307f,-0.265336f,0.252268f},{-0.478856f,0.152291f,0.101656f}, -{-0.480149f,0.152413f,0.114511f},{-0.194711f,0.375621f,-0.00891288f},{-0.479936f,0.152529f,0.133803f}, -{-0.374621f,0.285663f,-0.112993f},{-0.382448f,0.336967f,-0.195331f},{-0.260792f,0.0700299f,-0.0518826f}, -{-0.0886049f,-0.241594f,-0.185068f},{-0.0948683f,-0.248005f,-0.166535f},{-0.0981866f,-0.252121f,-0.150317f}, -{-0.105325f,-0.246873f,-0.13424f},{-0.112263f,-0.246918f,-0.116922f},{0.0821356f,-0.110093f,-0.211627f}, -{0.289306f,-0.150799f,-0.128838f},{-0.205109f,0.00398703f,-0.106389f},{0.23579f,0.0818816f,-0.0195878f}, -{0.136121f,-0.081618f,-0.163789f},{-0.00316069f,0.0486287f,-0.0831098f},{-0.378866f,-0.22953f,-0.0397801f}, -{-0.387393f,-0.222649f,-0.0356902f},{-0.396486f,-0.225935f,-0.0234333f},{-0.404749f,-0.22207f,-0.0145719f}, -{-0.408363f,-0.222977f,0.000681669f},{-0.414556f,-0.223279f,0.0187132f},{-0.420665f,-0.226301f,0.0392914f}, -{-0.425784f,-0.221337f,0.0586155f},{-0.420003f,-0.226192f,0.0779525f},{-0.419192f,-0.225961f,0.097238f}, -{-0.417244f,-0.22625f,0.116575f},{-0.41498f,-0.224546f,0.135044f},{0.000530508f,0.43643f,-0.153616f}, -{0.247841f,-0.0313559f,-0.101321f},{-0.0731263f,-0.242809f,-0.209009f},{-0.101801f,-0.242712f,-0.150336f}, -{-0.0732871f,0.0348092f,-0.0873284f},{0.220356f,-0.122761f,-0.158651f},{0.1365f,0.0392913f,-0.106254f}, -{0.155336f,0.0330022f,-0.105945f},{0.100579f,-0.0536767f,-0.136889f},{0.115652f,-0.0799138f,-0.168798f}, -{-0.423469f,-0.217395f,0.0263722f},{-0.427533f,-0.216951f,0.0392463f},{-0.425494f,-0.216983f,0.0779011f}, -{-0.424337f,-0.21688f,0.0971866f},{-0.425662f,-0.216598f,0.116234f},{-0.423797f,-0.216681f,0.12851f}, -{-0.423861f,0.225183f,0.0220893f},{0.100174f,-0.066583f,-0.146233f},{0.117781f,0.100608f,-0.0368284f}, -{-0.0833832f,-0.235883f,-0.199106f},{-0.0978393f,-0.231247f,-0.170998f},{-0.104392f,-0.227542f,-0.162303f}, -{-0.107845f,-0.228681f,-0.150445f},{-0.111389f,-0.228263f,-0.134343f},{-0.116778f,-0.227954f,-0.12181f}, -{0.249667f,-0.128967f,-0.145706f},{0.232472f,0.0238128f,-0.0833221f},{-0.392711f,-0.207087f,-0.0382303f}, -{-0.402485f,-0.210778f,-0.0256197f},{-0.409521f,-0.204836f,-0.0176264f},{-0.417019f,-0.205781f,-0.000688062f}, -{-0.421044f,-0.208868f,0.0135237f},{-0.426826f,-0.203151f,0.0212534f},{-0.433874f,-0.203408f,0.0392656f}, -{-0.436709f,-0.205222f,0.0569371f},{-0.434806f,-0.20726f,0.077856f},{-0.434021f,-0.208842f,0.115675f}, -{-0.426948f,-0.203672f,0.15186f},{-0.419392f,-0.211967f,0.157686f},{-0.347349f,0.218392f,-0.0859072f}, -{-0.14086f,0.412385f,-0.0475226f},{0.154384f,0.0215427f,-0.112858f},{-0.243057f,0.0221793f,-0.0944857f}, -{-0.0784766f,-0.222494f,-0.212701f},{-0.0877432f,-0.221594f,-0.20236f},{-0.0960066f,-0.220906f,-0.18609f}, -{-0.184673f,0.00709305f,-0.102762f},{0.00357221f,0.0290087f,-0.101013f},{-0.358982f,-0.204495f,-0.0763319f}, -{-0.374499f,-0.206366f,-0.0561397f},{-0.107196f,-0.404501f,-0.146388f},{-0.421803f,-0.200129f,0.00706088f}, -{-0.441404f,-0.198405f,0.0617279f},{-0.441841f,-0.198167f,0.0778239f},{-0.442954f,-0.198026f,0.097103f}, -{-0.442626f,-0.197916f,0.116363f},{-0.424305f,-0.199215f,0.171094f},{-0.42233f,-0.199756f,0.181563f}, -{-0.033552f,-0.110974f,-0.208964f},{-0.32481f,0.410244f,-0.363647f},{-0.0341886f,-0.0863831f,-0.153114f}, -{0.215347f,0.00317677f,-0.0975853f},{-0.10544f,-0.206263f,-0.166702f},{-0.111595f,-0.210225f,-0.150535f}, -{-0.114463f,-0.209916f,-0.134433f},{-0.116205f,-0.214244f,-0.121559f},{-0.0201055f,0.0293688f,-0.101296f}, -{0.205476f,0.0341211f,-0.0879907f},{0.173072f,0.0181537f,-0.109257f},{-0.361824f,-0.192013f,-0.0803061f}, -{-0.369959f,-0.185345f,-0.0759332f},{-0.376383f,-0.192547f,-0.0622745f},{0.0600784f,0.0621138f,-0.0787177f}, -{-0.397058f,-0.190901f,-0.0428603f},{-0.40473f,-0.187197f,-0.0339732f},{-0.413649f,-0.188984f,-0.0203209f}, -{-0.420009f,-0.191859f,-0.00282304f},{-0.425642f,-0.184708f,0.00212857f},{-0.429642f,-0.186438f,0.0198643f}, -{-0.437494f,-0.185814f,0.0391563f},{-0.44478f,-0.185177f,0.0584419f},{-0.447198f,-0.184791f,0.0777853f}, -{-0.448767f,-0.184624f,0.0970323f},{-0.447564f,-0.184586f,0.116279f},{-0.443822f,-0.183865f,0.134227f}, -{-0.439828f,-0.189216f,0.141912f},{-0.434227f,-0.185383f,0.154863f},{-0.432086f,-0.185505f,0.170991f}, -{-0.372679f,0.204006f,-0.0321276f},{-0.380731f,0.208058f,-0.0269509f},{-0.385669f,0.292717f,-0.108125f}, -{-0.384955f,0.275155f,-0.0501334f},{-0.457513f,0.0372528f,0.0313302f},{-0.0781293f,-0.209074f,-0.214385f}, -{-0.0885985f,-0.202334f,-0.204315f},{-0.0979165f,-0.200945f,-0.190463f},{-0.100585f,-0.203717f,-0.181891f}, -{-0.290669f,0.41126f,-0.387428f},{0.246542f,-0.0402495f,-0.109823f},{-0.388872f,-0.187074f,-0.0538118f}, -{-0.421507f,-0.183107f,-0.0125269f},{-0.376924f,0.270249f,-0.111244f},{0.135272f,0.0239992f,-0.115713f}, -{-0.221777f,0.0372528f,-0.0892061f},{0.458972f,-0.281965f,0.0151571f},{-0.0687985f,-0.207048f,-0.221607f}, -{-0.11216f,-0.187557f,-0.147654f},{-0.125125f,-0.188746f,-0.129906f},{0.136224f,-0.0950966f,-0.185917f}, -{-0.159561f,0.0490338f,-0.0826726f},{-0.377965f,-0.167352f,-0.077065f},{-0.39329f,-0.17031f,-0.0587762f}, -{-0.408022f,-0.171068f,-0.038436f},{-0.418806f,-0.170213f,-0.0255233f},{-0.427141f,-0.169647f,-0.0158773f}, -{-0.435854f,-0.168728f,0.000495179f},{-0.437925f,-0.172734f,0.0198257f},{-0.447076f,-0.167744f,0.0390856f}, -{-0.448728f,-0.167544f,0.0583583f},{-0.449712f,-0.167326f,0.0776695f},{-0.450297f,-0.167146f,0.0969229f}, -{-0.449378f,-0.167216f,0.116215f},{-0.447352f,-0.167255f,0.135494f},{-0.444323f,-0.165081f,0.153101f}, -{-0.437745f,-0.172175f,0.158059f},{-0.437012f,-0.167917f,0.170966f},{-0.128308f,0.265824f,-0.0182373f}, -{-0.376872f,0.270306f,-0.0919713f},{-0.345265f,0.336864f,-0.291669f},{-0.0700781f,-0.189023f,-0.223221f}, -{-0.080573f,-0.185692f,-0.212334f},{-0.0877818f,-0.185081f,-0.202456f},{-0.096013f,-0.184386f,-0.189428f}, -{-0.10144f,-0.183943f,-0.179705f},{-0.104682f,-0.183647f,-0.166747f},{-0.146892f,0.0471175f,-0.0806276f}, -{-0.107704f,0.0503778f,-0.0712196f},{-0.0904633f,0.050918f,-0.071869f},{-0.445179f,-0.163641f,0.0197807f}, -{-0.441044f,0.20481f,0.0434584f},{-0.463165f,0.257715f,0.0824154f},{-0.436195f,0.124215f,-0.00681005f}, -{-0.463442f,0.258603f,0.168477f},{-0.0122279f,0.490132f,-0.127771f},{0.192447f,-0.0923057f,-0.150741f}, -{-0.3861f,-0.159468f,-0.0706472f},{-0.397045f,-0.146979f,-0.0587698f},{-0.403296f,-0.153828f,-0.0512009f}, -{-0.41109f,-0.150014f,-0.0392527f},{-0.42851f,-0.152034f,-0.0189962f},{-0.438639f,-0.152702f,-0.00389053f}, -{-0.442375f,-0.149513f,0.00473942f},{-0.449436f,-0.150426f,0.0197421f},{-0.456413f,-0.15069f,0.0377351f}, -{-0.456812f,-0.153821f,0.0583325f},{-0.458169f,-0.153641f,0.0776052f},{-0.456612f,-0.153764f,0.0968458f}, -{-0.455628f,-0.153757f,0.116144f},{-0.455841f,-0.151474f,0.137005f},{-0.4526f,-0.149384f,0.154612f}, -{-0.457108f,0.24904f,0.0697727f},{-0.435938f,0.174599f,0.0144369f},{-0.0689142f,-0.16804f,-0.222166f}, -{-0.0786438f,-0.167577f,-0.212385f},{-0.0840327f,-0.167126f,-0.202559f},{-0.0928748f,-0.166419f,-0.186303f}, -{-0.102688f,-0.166516f,-0.165609f},{-0.111601f,-0.165641f,-0.149005f},{-0.387663f,-0.146169f,-0.0707115f}, -{-0.460053f,-0.145236f,0.0454391f},{-0.460496f,-0.145031f,0.0583261f},{-0.462857f,-0.144896f,0.0775538f}, -{-0.462085f,-0.144812f,0.0968072f},{-0.461165f,-0.144761f,0.116106f},{-0.460696f,-0.144613f,0.132137f}, -{0.20037f,0.0470274f,-0.0826468f},{-0.377708f,0.301283f,-0.134021f},{-0.0979422f,-0.161397f,-0.173499f}, -{-0.119028f,-0.15995f,-0.142497f},{0.0999871f,0.079528f,-0.0589499f},{-0.413495f,-0.129668f,-0.0401402f}, -{-0.432227f,-0.131147f,-0.0199608f},{-0.438915f,-0.133674f,-0.00619914f},{-0.441867f,-0.13098f,0.00160125f}, -{-0.448889f,-0.133185f,0.0197421f},{-0.45678f,-0.132594f,0.0357674f},{-0.46004f,-0.132388f,0.0454262f}, -{-0.462721f,-0.132111f,0.0582489f},{-0.465982f,-0.131777f,0.0775023f},{-0.466663f,-0.131616f,0.0967493f}, -{-0.466638f,-0.131533f,0.116028f},{-0.464985f,-0.131501f,0.135288f},{-0.457262f,-0.136041f,0.157654f}, -{-0.299678f,-0.473072f,-0.0419022f},{-0.066014f,-0.152439f,-0.219549f},{-0.0736086f,-0.147384f,-0.208488f}, -{-0.0819427f,-0.153545f,-0.199479f},{-0.0862963f,-0.14867f,-0.186367f},{-0.0939488f,-0.148085f,-0.166966f}, -{-0.109556f,-0.148574f,-0.150355f},{-0.221694f,-0.48738f,-0.0727243f},{-0.388229f,-0.128594f,-0.0705443f}, -{-0.396473f,-0.128941f,-0.0591492f},{-0.423617f,-0.126382f,-0.0322497f},{-0.282952f,0.025549f,-0.0794444f}, -{-0.439114f,0.213549f,0.0500113f},{0.213347f,0.0806791f,-0.0397029f},{-0.402633f,-0.123334f,-0.0517282f}, -{0.279788f,-0.0226423f,-0.084949f},{0.00770069f,-0.0975017f,-0.202469f},{-0.463043f,0.028475f,0.0439793f}, -{-0.438684f,0.159937f,0.012154f},{-0.0821935f,-0.135037f,-0.183261f},{0.112443f,0.0452011f,-0.0996109f}, -{-0.440008f,0.0363911f,0.0118517f},{0.0788109f,-0.0764541f,-0.171068f},{-0.0513071f,0.0541204f,-0.0704157f}, -{-0.0725218f,0.0608791f,-0.0584676f},{0.138854f,-0.0875727f,-0.173519f},{0.262078f,-0.0821195f,-0.124337f}, -{-0.0899425f,0.0356066f,-0.0881129f},{0.26658f,-0.0933218f,-0.125514f},{0.276104f,-0.0914312f,-0.121025f}, -{0.401579f,-0.301399f,-0.00446929f},{0.289235f,-0.0925565f,-0.113353f},{-0.0525868f,0.045259f,-0.0791357f}, -{0.0232886f,-0.079618f,-0.172843f},{0.0404006f,-0.114704f,-0.220147f},{-0.127575f,0.0222308f,-0.0996624f}, -{-0.091055f,-0.415993f,-0.167731f},{0.461493f,-0.258995f,0.0334973f},{0.0801485f,0.0388862f,-0.0953474f}, -{0.0859811f,0.0112665f,-0.121064f},{0.211128f,-0.0580817f,-0.13316f},{-0.0155011f,0.0200122f,-0.109476f}, -{0.13569f,0.0984984f,-0.0425517f},{0.209334f,0.0733224f,-0.0531558f},{0.37383f,-0.297662f,-0.0146426f}, -{0.174473f,-0.0865953f,-0.153281f},{-0.0290248f,-0.00725378f,-0.126877f},{0.264291f,0.0159287f,-0.0684544f}, -{0.30427f,-0.0999389f,-0.105508f},{0.312405f,-0.103913f,-0.101238f},{0.325838f,-0.111083f,-0.093624f}, -{-0.0629594f,-0.448423f,-0.178367f},{0.153825f,0.00549181f,-0.117688f},{0.0600527f,0.0406289f,-0.0930709f}, -{0.193785f,-0.0587441f,-0.134587f},{0.232806f,0.00174273f,-0.0917398f},{0.176403f,0.0629755f,-0.0804797f}, -{0.440729f,-0.274448f,0.0136845f},{0.185399f,0.0156072f,-0.10664f},{0.32742f,-0.0140767f,-0.0403781f}, -{0.119909f,-0.0675284f,-0.140188f},{-0.120462f,-0.417369f,-0.160014f},{-0.184846f,0.0625961f,-0.0775216f}, -{0.334127f,-0.108717f,-0.0832449f},{0.339111f,-0.118543f,-0.0857078f},{0.348841f,-0.12961f,-0.0804411f}, -{-0.278059f,0.0395357f,-0.0715282f},{0.212832f,0.054352f,-0.0712839f},{0.303788f,0.0003923f,-0.0545191f}, -{-0.0927848f,-0.471593f,-0.185357f},{0.438767f,-0.321842f,-0.0139288f},{0.0999292f,0.0890518f,-0.0499019f}, -{-0.279441f,-0.470139f,-0.048963f},{0.0730555f,0.0125012f,-0.122363f},{0.00391304f,0.0395164f,-0.0928394f}, -{-0.260947f,0.0601653f,-0.0610141f},{-0.205894f,-0.449568f,-0.0642744f},{0.19574f,0.0603518f,-0.0749622f}, -{0.119163f,-0.094087f,-0.189229f},{-0.0131282f,-0.0585062f,-0.143738f},{0.250722f,-0.165963f,-0.157017f}, -{-0.260921f,0.0503457f,-0.0701842f},{0.268876f,-0.184875f,-0.148606f},{-0.105344f,0.0338253f,-0.0893669f}, -{0.455017f,-0.300942f,0.00419281f},{0.156976f,-0.110363f,-0.188618f},{-0.074033f,0.0204431f,-0.097939f}, -{-0.10908f,-0.418257f,-0.165628f},{0.273441f,-0.298261f,-0.137044f},{-0.109234f,-0.428674f,-0.175023f}, -{0.406022f,-0.243195f,0.03742f},{0.00558501f,-0.131558f,-0.23043f},{0.025385f,-0.152947f,-0.238134f}, -{0.41743f,-0.248706f,0.0421723f},{0.0629336f,0.012572f,-0.12242f},{0.0616732f,0.0293945f,-0.101669f}, -{0.0579434f,0.0198579f,-0.113565f},{0.269679f,0.00122184f,-0.0735732f},{0.0437703f,-0.146934f,-0.230874f}, -{-0.242703f,0.0852513f,-0.042333f},{-0.186017f,-0.00108035f,-0.107206f},{-0.0730748f,0.0450918f,-0.0788142f}, -{0.264979f,-0.303926f,-0.144748f},{-0.0814283f,0.433549f,-0.0899842f},{0.420144f,-0.274981f,0.0141282f}, -{0.00217032f,-0.46875f,-0.16359f},{0.0806758f,-0.0558438f,-0.1386f},{0.230292f,-0.165487f,-0.167686f}, -{-0.0914344f,-0.485078f,-0.183917f},{0.079737f,0.0510144f,-0.0862352f},{0.059519f,0.0513617f,-0.086531f}, -{-0.0636282f,0.435066f,-0.105038f},{-0.0721102f,0.311488f,-0.0673805f},{0.0599562f,-0.0869232f,-0.19056f}, -{-0.0704897f,-0.490711f,-0.165313f},{0.1921f,0.0920035f,-0.034687f},{0.17421f,-0.0966528f,-0.167056f}, -{0.321433f,0.0167261f,-0.0155172f},{0.0605029f,-0.0743577f,-0.167403f},{0.0802386f,0.0808591f,-0.0602617f}, -{0.0422526f,0.0701264f,-0.0677534f},{-0.127317f,0.0551558f,-0.0697598f},{0.156667f,-0.0688402f,-0.134427f}, -{0.287216f,-0.00226358f,-0.0682293f},{0.137787f,0.0655992f,-0.0798302f},{0.0426642f,-0.0758882f,-0.168644f}, -{0.0249027f,0.0505129f,-0.0853477f},{-0.0142793f,0.0467831f,-0.0810392f},{-0.112752f,0.40072f,-0.0819266f}, -{-0.0764188f,0.420405f,-0.10026f},{-0.148532f,0.021099f,-0.0983505f},{-0.0322337f,0.0449889f,-0.0789685f}, -{0.0228963f,0.47257f,-0.16847f},{0.344397f,-0.112003f,-0.0732838f},{0.334835f,-0.0549564f,-0.0632262f}, -{0.00402235f,-0.0809749f,-0.165081f},{0.0234044f,-0.0553422f,-0.143532f},{0.193618f,0.0389377f,-0.0904022f}, -{-0.0916209f,-0.427208f,-0.176412f},{-0.292843f,0.400572f,-0.387647f},{-0.277351f,-0.432546f,-0.0328735f}, -{0.0236101f,-0.130761f,-0.229671f},{0.0407672f,0.0189962f,-0.109791f},{0.232697f,-0.13069f,-0.155558f}, -{-0.0537443f,0.0202373f,-0.097791f},{-0.255513f,-0.419279f,-0.0314331f},{0.17466f,0.0740234f,-0.0699334f}, -{-0.270593f,0.296801f,0.0237677f},{-0.176981f,0.35514f,-0.0475869f},{-0.0332369f,0.0160252f,-0.107681f}, -{0.341156f,-0.0549757f,-0.0554966f},{0.171097f,0.0880808f,-0.0495739f},{0.322231f,-0.020308f,-0.0531044f}, -{-0.0737501f,-0.486299f,-0.181094f},{-0.0327803f,-0.0931031f,-0.173191f},{0.258316f,0.0655092f,-0.025459f}, -{0.244568f,-0.00190989f,-0.0878557f},{0.0420533f,-0.0569692f,-0.145031f},{-0.033552f,-0.0750973f,-0.145648f}, -{-0.299814f,0.281284f,0.0215106f},{-0.279737f,0.283412f,0.0196843f},{-0.209373f,0.327385f,-0.0267129f}, -{0.196408f,0.0842545f,-0.0456062f},{-0.0161635f,-0.0777531f,-0.149191f},{-0.2435f,-0.47057f,-0.0622038f}, -{0.00624094f,-0.0729365f,-0.149339f},{0.0225748f,-0.0716054f,-0.151667f},{0.151915f,-0.0584418f,-0.128607f}, -{0.302399f,-0.0201666f,-0.0695926f},{0.235443f,-0.146613f,-0.15968f},{0.202723f,0.00639853f,-0.103077f}, -{-0.0153082f,-0.470872f,-0.168438f},{0.022652f,0.0167455f,-0.107334f},{-0.219732f,0.0707759f,-0.0663708f}, -{0.0407607f,-0.0696055f,-0.151082f},{0.0616411f,-0.0680557f,-0.152548f},{-0.279319f,-0.487778f,-0.0510337f}, -{-0.293659f,-0.489888f,-0.0501784f},{0.00330855f,0.0187904f,-0.109469f},{0.0112504f,0.0501527f,-0.0848847f}, -{-0.30555f,0.276789f,0.00826342f},{-0.296746f,0.274049f,0.0108936f},{-0.283763f,0.27257f,0.0122118f}, -{-0.280612f,0.265593f,0.00686153f},{0.26386f,-0.137719f,-0.142786f},{0.269647f,-0.0361596f,-0.0978554f}, -{0.260156f,-0.0403396f,-0.104575f},{-0.203038f,0.0361982f,-0.0896177f},{0.417604f,-0.298164f,-0.00448858f}, -{-0.205939f,-0.073959f,-0.131282f},{-0.0925919f,-0.436269f,-0.180843f},{-0.0775634f,-0.436153f,-0.17975f}, -{0.116546f,0.024758f,-0.115083f},{0.20718f,-0.00464937f,-0.10401f},{0.285299f,-0.0771229f,-0.109115f}, -{-0.0350568f,0.0268866f,-0.0985177f},{-0.0529211f,-0.469638f,-0.17683f},{0.115234f,-0.073078f,-0.15377f}, -{0.192241f,-0.0755088f,-0.13833f},{0.0680782f,-0.0558631f,-0.140079f},{0.134211f,-0.0758111f,-0.150696f}, -{-0.129465f,-0.447863f,-0.175904f},{-0.110122f,-0.437568f,-0.179467f},{-0.146391f,-0.399132f,-0.0756053f}, -{-0.090174f,0.0221536f,-0.0997267f},{0.296984f,-0.0316839f,-0.0818816f},{0.0440661f,0.0283978f,-0.100518f}, -{0.153336f,-0.0782933f,-0.147989f},{0.173522f,0.02861f,-0.10127f},{-0.245719f,0.0662872f,-0.0612649f}, -{-0.279467f,0.248005f,-0.0012411f},{-0.260773f,0.24596f,-0.000218624f},{0.321485f,-0.129147f,-0.106768f}, -{0.023713f,-0.114099f,-0.220867f},{0.24413f,-0.0576059f,-0.124697f},{-0.0915759f,-0.406855f,-0.157082f}, -{-0.296058f,-0.270261f,0.234983f},{0.00615734f,0.0945629f,-0.0194463f},{0.168081f,-0.0794766f,-0.144581f}, -{0.252497f,0.00464294f,-0.0807627f},{0.24822f,0.0340825f,-0.0687502f},{0.313916f,0.00494521f,-0.0416064f}, -{0.0403749f,-0.469702f,-0.154934f},{-0.293164f,0.254763f,-0.00702226f},{0.0280087f,-0.0414585f,-0.142111f}, -{0.0618211f,0.0931031f,-0.0507122f},{-0.17102f,0.00729881f,-0.103051f},{-0.25896f,0.0220122f,-0.0907302f}, -{-0.0683676f,-0.430282f,-0.176702f},{0.143471f,0.0490145f,-0.0974759f},{0.154763f,0.0894312f,-0.0509244f}, -{-0.245468f,-0.429954f,-0.0434134f},{-0.0755121f,-0.0124948f,-0.121404f},{-0.261712f,-0.45576f,-0.0506865f}, -{0.188447f,0.0503714f,-0.0862159f},{-0.0160284f,0.0915083f,-0.0186553f},{-0.288245f,0.242037f,-0.0126362f}, -{0.439166f,-0.300878f,-0.00482298f},{-0.0333334f,0.0365197f,-0.0880615f},{0.317967f,-0.0967814f,-0.0894826f}, -{0.0200926f,0.0669368f,-0.0639915f},{-0.281396f,-0.450725f,-0.0420436f},{0.161168f,-0.0859651f,-0.159204f}, -{-0.013334f,-0.0866789f,-0.168876f},{-0.260336f,-0.435716f,-0.0411498f},{-0.299878f,-0.48938f,-0.0368348f}, -{0.292592f,-0.109083f,-0.117334f},{-0.275538f,0.230571f,-0.006212f},{0.331504f,-0.140124f,-0.101926f}, -{0.305942f,-0.112993f,-0.110987f},{-0.242639f,-0.437381f,-0.049381f},{0.317446f,-0.113977f,-0.103482f}, -{-0.0706248f,-0.414482f,-0.167506f},{0.0406385f,0.0091251f,-0.118633f},{0.252342f,-0.320954f,-0.156136f}, -{0.331214f,-0.127102f,-0.098209f},{-0.286836f,0.4f,-0.387441f},{-0.00711554f,-0.0828655f,-0.163146f}, -{0.323568f,-0.148651f,-0.108871f},{-0.205218f,0.0724285f,-0.0683129f},{-0.223134f,-0.454969f,-0.0629433f}, -{0.38266f,-0.335706f,-0.0232275f},{-0.27431f,0.21917f,-0.00699654f},{-0.260381f,0.211685f,-0.00508663f}, -{0.390312f,-0.260422f,0.0117103f},{0.337832f,-0.0386418f,-0.05059f},{0.117459f,0.0530465f,-0.0919584f}, -{0.0412752f,-0.0419022f,-0.14186f},{-0.227938f,0.0485451f,-0.0817144f},{0.0407221f,-0.1673f,-0.236796f}, -{-0.194158f,-0.250577f,0.273869f},{-0.184525f,0.0924215f,-0.0508601f},{0.0057715f,-0.0839266f,-0.174837f}, -{0.0450371f,0.0886145f,-0.0488473f},{0.0313655f,0.0688788f,-0.0662808f},{0.160294f,0.06794f,-0.079335f}, -{-0.299466f,-0.441446f,-0.0306742f},{0.11807f,-0.0567377f,-0.135372f},{0.176113f,-0.472351f,-0.135089f}, -{-0.126842f,0.0658114f,-0.0616507f},{0.1534f,-0.100363f,-0.182406f},{0.245191f,-0.114536f,-0.141526f}, -{-0.202826f,-0.490389f,-0.073779f},{-0.267294f,0.205112f,-0.012932f},{-0.240606f,0.205492f,0.00168485f}, -{0.327459f,-0.0332272f,-0.058564f},{0.235661f,0.0680685f,-0.041034f},{0.0310183f,-0.140105f,-0.232719f}, -{0.046066f,-0.16876f,-0.235111f},{-0.205585f,0.0910453f,-0.0491688f},{0.0606829f,-0.108337f,-0.213601f}, -{0.0407607f,-0.107411f,-0.2147f},{0.0204913f,-0.107128f,-0.215125f},{0.00281983f,-0.105373f,-0.210572f}, -{0.00645958f,-0.114749f,-0.220302f},{-0.147851f,-0.488614f,-0.17031f},{-0.123697f,-0.451297f,-0.179313f}, -{0.204485f,0.089592f,-0.0321211f},{0.11699f,0.0893798f,-0.0503521f},{0.134745f,0.0903315f,-0.0517154f}, -{0.440002f,-0.250082f,0.0402109f},{0.459384f,-0.251735f,0.0420758f},{-0.259615f,0.192746f,-0.0167261f}, -{-0.241024f,0.190868f,-0.00066877f},{-0.0119771f,-0.0980033f,-0.198862f},{0.0374296f,-0.153371f,-0.236552f}, -{0.276483f,-0.150227f,-0.137668f},{-0.111543f,-0.408559f,-0.15114f},{0.289222f,-0.204649f,-0.134684f}, -{0.271126f,-0.203061f,-0.148297f},{0.419784f,-0.320067f,-0.0175557f},{0.466393f,-0.311077f,0.0125913f}, -{0.103788f,-0.127289f,-0.213157f},{0.0621813f,-0.0796309f,-0.178985f},{0.213032f,-0.148741f,-0.175615f}, -{-0.276123f,0.19364f,-0.0243014f},{-0.237057f,0.175345f,-0.000983873f},{-0.051217f,-0.0594772f,-0.143346f}, -{-0.0341115f,-0.0593293f,-0.144195f},{-0.195013f,0.140182f,0.0354008f},{-0.0339764f,-0.483142f,-0.170406f}, -{0.267313f,-0.151204f,-0.143571f},{0.382132f,-0.321662f,-0.0154464f},{0.40372f,-0.320575f,-0.0174657f}, -{0.157876f,-0.12471f,-0.195923f},{-0.0725218f,-0.447722f,-0.179679f},{-0.0453651f,-0.133153f,-0.221298f}, -{-0.0336806f,-0.13051f,-0.223787f},{0.205791f,-0.147436f,-0.179486f},{-0.243204f,-0.489933f,-0.0578631f}, -{0.235147f,-0.0296067f,-0.103167f},{-0.247056f,0.172014f,-0.0121411f},{-0.221713f,0.154066f,-2.57039e-05f}, -{-0.201141f,0.135912f,0.0175429f},{0.288097f,-0.18638f,-0.132729f},{-0.241725f,-0.454281f,-0.0580045f}, -{-0.223064f,-0.473014f,-0.0674833f},{-0.0658854f,-0.465335f,-0.178657f},{0.252683f,-0.304164f,-0.154522f}, -{0.100559f,-0.0970258f,-0.199235f},{0.172474f,-0.114562f,-0.183679f},{0.0369409f,0.0861901f,-0.0460435f}, -{0.362075f,-0.339404f,-0.0242629f},{-0.0222147f,-0.0861901f,-0.159821f},{-0.233565f,0.161043f,-0.00777465f}, -{-0.213115f,0.148137f,0.00656572f},{0.0732227f,-0.117109f,-0.217337f},{0.18628f,-0.115874f,-0.178978f}, -{-0.123922f,-0.486454f,-0.18665f},{0.398839f,-0.335353f,-0.0244236f},{0.12106f,-0.0842031f,-0.173937f}, -{-0.296405f,0.0342433f,-0.0656313f},{-0.256805f,0.155757f,-0.0229317f},{-0.240356f,0.151571f,-0.0168869f}, -{-0.228626f,0.151365f,-0.0101476f},{-0.215733f,0.136684f,-0.00267514f},{-0.207392f,0.130748f,0.00387771f}, -{0.278091f,-0.176985f,-0.140973f},{0.00451752f,0.111064f,0.0211183f},{0.0224784f,0.115508f,0.018546f}, -{-0.279962f,-0.294164f,0.208308f},{0.317472f,0.0347706f,0.00812194f},{-0.226047f,0.135121f,-0.0132664f}, -{-0.202601f,0.121314f,7.07559e-05f},{-0.184576f,0.116607f,-0.000681631f},{-0.0169223f,0.103913f,0.0169963f}, -{-0.0125623f,0.107128f,0.0231697f},{0.040735f,0.11462f,0.00070096f},{0.060207f,0.119263f,0.00183276f}, -{0.0800906f,0.121507f,0.000392289f},{0.0970676f,0.121469f,-0.00239862f},{0.116057f,0.122093f,-0.00194847f}, -{0.136745f,0.122343f,-0.00261726f},{0.15668f,0.121314f,-0.00171054f},{0.175811f,0.118646f,0.000971048f}, -{0.194151f,0.112221f,-0.000225055f},{0.134372f,0.00556251f,-0.120093f},{-0.115472f,0.0872769f,-0.0327256f}, -{-0.114977f,0.0688852f,-0.0518761f},{-0.0382078f,-0.103366f,-0.193608f},{0.271293f,-0.0128099f,-0.0826275f}, -{-0.252992f,0.138716f,-0.0265072f},{-0.242188f,0.134099f,-0.0231053f},{-0.215167f,0.124703f,-0.00695796f}, -{0.00827945f,0.108106f,0.00857852f},{0.022832f,0.109945f,0.00102249f},{0.212755f,0.107791f,0.00616702f}, -{0.230613f,0.0964599f,0.00186491f},{0.22543f,-0.132883f,-0.161088f},{0.299415f,0.0143018f,-0.0474454f}, -{0.356455f,-0.0437028f,-0.0169641f},{-0.0465548f,0.0114209f,-0.107849f},{0.0974341f,0.052217f,-0.0876628f}, -{-0.221945f,0.114665f,-0.0193305f},{-0.202511f,0.112221f,-0.0181023f},{-0.186158f,0.112742f,-0.0161152f}, -{-0.239404f,-0.484917f,-0.0675219f},{-0.029102f,-0.117887f,-0.217536f},{0.406305f,-0.255284f,0.0327835f}, -{0.419893f,-0.255754f,0.033208f},{-0.0154754f,0.0985306f,-0.000263639f},{0.00136006f,0.101585f,-0.00249508f}, -{0.043005f,0.109611f,-0.0146876f},{0.0620076f,0.11327f,-0.016456f},{0.0792418f,0.113746f,-0.0197807f}, -{0.0978779f,0.113392f,-0.0183852f},{0.117909f,0.112839f,-0.0178644f},{0.137471f,0.114331f,-0.018501f}, -{0.155722f,0.113064f,-0.0185975f},{0.174686f,0.110357f,-0.0158837f},{0.21527f,0.101457f,-0.0032539f}, -{0.462657f,-0.297823f,0.0121604f},{0.440478f,-0.255458f,0.0329186f},{0.240201f,-0.104659f,-0.139391f}, -{-0.169046f,0.108524f,-0.0214012f},{-0.149214f,0.106916f,-0.0149063f},{0.0234172f,0.101907f,-0.01753f}, -{0.184396f,0.106157f,-0.0178579f},{0.193778f,0.101367f,-0.0190926f},{-0.133767f,-0.465335f,-0.178547f}, -{0.186409f,-0.0962027f,-0.161062f},{-0.261165f,-0.490434f,-0.0584804f},{-0.070599f,-0.397383f,-0.151481f}, -{-0.247622f,0.108164f,-0.0284299f},{-0.228555f,0.105804f,-0.0256197f},{-0.186595f,0.107688f,-0.0281663f}, -{-0.160519f,0.105386f,-0.025922f},{-0.147664f,0.103579f,-0.0243207f},{-0.0743545f,0.0868204f,-0.00658498f}, -{-0.0456031f,0.0891804f,-0.00969099f},{0.0395839f,0.103418f,-0.0260313f},{0.0621041f,0.107341f,-0.0307257f}, -{0.0794476f,0.107984f,-0.0316067f},{0.0958008f,0.106614f,-0.030282f},{0.126276f,0.106267f,-0.0302498f}, -{0.136899f,0.107109f,-0.0312851f},{0.150571f,0.106961f,-0.0313816f},{0.178949f,0.10244f,-0.0266872f}, -{0.150924f,-0.486299f,-0.125578f},{0.134089f,-0.486807f,-0.128459f},{0.118392f,-0.486319f,-0.133185f}, -{0.0979808f,-0.483766f,-0.142265f},{0.0787209f,-0.484049f,-0.14442f},{0.059982f,-0.483933f,-0.146986f}, -{0.0217517f,-0.486319f,-0.150915f},{0.00719267f,-0.489219f,-0.149513f},{-0.0549082f,-0.482345f,-0.175068f}, -{0.199855f,-0.476094f,-0.120543f},{0.157419f,-0.473052f,-0.139314f},{0.136558f,-0.470429f,-0.144278f}, -{0.117253f,-0.470191f,-0.1475f},{0.0979615f,-0.470023f,-0.149558f},{0.0786759f,-0.469998f,-0.151043f}, -{-0.22442f,-0.0713611f,-0.131063f},{0.0219896f,-0.470287f,-0.158329f},{-0.0307547f,-0.468165f,-0.172586f}, -{-0.324398f,-0.270171f,0.217665f},{0.0275329f,0.382361f,-0.144728f},{-0.0119193f,0.384026f,-0.123764f}, -{-0.243462f,-0.0706344f,-0.1266f},{-0.0151732f,0.39838f,-0.130722f},{-0.0697823f,0.398154f,-0.107617f}, -{-0.260908f,-0.0702357f,-0.11772f},{-0.276946f,-0.0708402f,-0.111238f},{-0.204202f,0.277444f,-0.0249509f}, -{-0.316591f,-0.489946f,-0.0348027f},{-0.321048f,-0.491084f,-0.0186618f},{0.152622f,-0.465959f,-0.142356f}, -{0.0141957f,-0.464461f,-0.161101f},{-0.29283f,-0.0713353f,-0.105617f},{-0.302418f,-0.0715925f,-0.101791f}, -{-0.315376f,-0.0719334f,-0.0965306f},{-0.334584f,-0.0724543f,-0.0895598f},{-0.112591f,0.302691f,-0.0615093f}, -{-0.349574f,-0.0743063f,-0.0856757f},{-0.358185f,-0.0715411f,-0.0805247f},{0.00820872f,0.399987f,-0.144671f}, -{-0.178859f,0.320749f,-0.0490531f},{-0.104971f,0.307752f,-0.0656828f},{-0.0410694f,0.441092f,-0.121565f}, -{-0.319614f,-0.474319f,-0.0342883f},{-0.333967f,-0.471162f,-0.0213819f},{-0.348937f,-0.484627f,0.00558826f}, -{0.265435f,-0.471522f,0.00476514f},{-0.0139835f,0.35932f,-0.107906f},{-0.0550175f,0.357673f,-0.0990772f}, -{0.194409f,-0.452731f,-0.134549f},{0.17511f,-0.452397f,-0.138684f},{0.162223f,-0.452275f,-0.140079f}, -{0.152564f,-0.452101f,-0.141938f},{0.136455f,-0.451857f,-0.144909f},{0.117151f,-0.451567f,-0.1486f}, -{0.0978714f,-0.451336f,-0.151744f},{0.0785859f,-0.45113f,-0.154561f},{0.0592939f,-0.451008f,-0.156516f}, -{0.0399955f,-0.450892f,-0.158567f},{0.0270891f,-0.455387f,-0.159744f},{0.0193981f,-0.449664f,-0.162477f}, -{0.00133434f,-0.450146f,-0.167326f},{-0.0147359f,-0.449799f,-0.171467f},{-0.0307868f,-0.449561f,-0.174721f}, -{-0.0500788f,-0.44942f,-0.176952f},{-0.242336f,-0.482878f,0.298177f},{-0.319247f,0.126562f,-0.0472203f}, -{-0.431095f,0.0555095f,-0.0061284f},{-0.287203f,-0.468345f,-0.044796f},{-0.38992f,0.13053f,-0.0323076f}, -{-0.349137f,-0.474191f,0.00606413f},{0.324231f,-0.464403f,0.0193563f},{0.323909f,-0.455207f,0.00261087f}, -{0.305087f,-0.4565f,-0.00248222f},{0.28811f,-0.462313f,-0.00134399f},{0.278348f,-0.461175f,-0.00605123f}, -{0.00435675f,0.360104f,-0.113617f},{-0.0341886f,0.364934f,-0.107283f},{-0.318012f,0.189827f,-0.0402752f}, -{-0.274509f,-0.458886f,-0.0477541f},{-0.300212f,-0.455368f,-0.037285f},{-0.316141f,-0.456108f,-0.0309186f}, -{0.297441f,-0.450699f,-0.00994178f},{0.287891f,-0.450957f,-0.0121411f},{-0.399508f,0.13024f,-0.0256133f}, -{0.200846f,-0.438417f,-0.139552f},{0.193019f,-0.432301f,-0.144613f},{0.175001f,-0.433189f,-0.146098f}, -{0.155702f,-0.433298f,-0.145513f},{0.136423f,-0.433311f,-0.146619f},{0.117144f,-0.433201f,-0.148548f}, -{0.0978393f,-0.432976f,-0.151384f},{0.0785666f,-0.432841f,-0.155043f},{0.0592167f,-0.432655f,-0.156818f}, -{0.039944f,-0.432616f,-0.158156f},{0.0271084f,-0.432443f,-0.159699f},{0.0174431f,-0.432198f,-0.162393f}, -{0.00134721f,-0.431812f,-0.166644f},{-0.014768f,-0.43144f,-0.170869f},{-0.0308511f,-0.431214f,-0.173673f}, -{-0.0501495f,-0.431182f,-0.175242f},{-0.0301823f,0.399897f,-0.12462f},{-0.268213f,-0.449658f,-0.046365f}, -{-0.33625f,0.00163985f,-0.0621202f},{0.345535f,-0.441259f,-0.00639849f},{0.34068f,-0.43333f,-0.0138259f}, -{0.323073f,-0.435671f,-0.0155429f},{0.305042f,-0.436352f,-0.0183467f},{0.289531f,-0.43389f,-0.0237677f}, -{0.274978f,-0.440031f,-0.0245394f},{0.207283f,-0.428874f,-0.142137f},{-0.277486f,0.0933989f,-0.0426095f}, -{-0.322244f,-0.0305328f,-0.0829812f},{-0.223347f,-0.434533f,-0.0549436f},{-0.259757f,-0.0169448f,-0.105681f}, -{-0.0928941f,0.310215f,-0.0684094f},{-0.166165f,0.340118f,-0.0569049f},{-0.188499f,0.320652f,-0.0430661f}, -{0.381329f,-0.429542f,0.00839203f},{0.355034f,-0.431163f,-0.0114594f},{0.219919f,-0.41499f,-0.139725f}, -{0.210324f,-0.414636f,-0.144092f},{0.194286f,-0.414263f,-0.149654f},{0.174924f,-0.414083f,-0.152683f}, -{0.155638f,-0.414045f,-0.154741f},{0.136391f,-0.418938f,-0.155474f},{0.117054f,-0.41861f,-0.158818f}, -{0.104251f,-0.418964f,-0.159448f},{0.0964117f,-0.411627f,-0.171467f},{0.0784058f,-0.417138f,-0.171377f}, -{0.0591203f,-0.417003f,-0.173808f},{0.0398283f,-0.417382f,-0.171075f},{0.0205492f,-0.417742f,-0.169647f}, -{0.00121859f,-0.412887f,-0.172342f},{-0.0148709f,-0.413151f,-0.169705f},{-0.0309347f,-0.413254f,-0.168895f}, -{-0.050201f,-0.413459f,-0.16784f},{-0.376846f,0.0291824f,0.336182f},{-0.0667085f,-0.0604096f,-0.141764f}, -{-0.0752677f,-0.0574966f,-0.139732f},{-0.0910935f,-0.0558696f,-0.135616f},{-0.10962f,-0.0549243f,-0.132491f}, -{-0.05377f,0.417266f,-0.115745f},{-0.128083f,-0.054069f,-0.128986f},{0.377477f,-0.422443f,-0.00421206f}, -{0.361381f,-0.416212f,-0.0185396f},{0.343838f,-0.418379f,-0.0225073f},{0.322964f,-0.420443f,-0.025041f}, -{0.310077f,-0.420385f,-0.0269252f},{0.136333f,-0.408276f,-0.167114f},{0.11697f,-0.407775f,-0.172985f}, -{0.0783544f,-0.407157f,-0.180187f},{0.059056f,-0.407177f,-0.181647f},{0.0397575f,-0.40746f,-0.180001f}, -{0.0204591f,-0.407492f,-0.179583f},{-0.372737f,0.188187f,-0.0315874f},{-0.396814f,-0.245272f,0.151635f}, -{0.0300472f,0.402907f,-0.161988f},{-0.185033f,-0.415022f,-0.0589884f},{-0.20417f,-0.415749f,-0.0533873f}, -{-0.219167f,-0.417845f,-0.0483007f},{-0.227629f,-0.415363f,-0.0426931f},{-0.380833f,-0.271683f,0.093952f}, -{-0.0345552f,0.417343f,-0.126768f},{0.380705f,-0.411922f,-0.0144947f},{0.339015f,-0.410701f,-0.028102f}, -{0.3229f,-0.410675f,-0.0285714f},{-0.251223f,-0.065387f,-0.121064f},{0.250477f,-0.395171f,-0.128118f}, -{0.234034f,-0.397981f,-0.133552f},{0.219848f,-0.400971f,-0.140954f},{0.212215f,-0.39481f,-0.148793f}, -{0.194312f,-0.399916f,-0.156046f},{0.174834f,-0.394283f,-0.166696f},{0.155542f,-0.394161f,-0.168837f}, -{0.13742f,-0.394341f,-0.175608f},{0.1169f,-0.392913f,-0.18292f},{0.0975756f,-0.39274f,-0.185345f}, -{0.0782643f,-0.392868f,-0.186013f},{0.0589916f,-0.392888f,-0.186933f},{0.0396804f,-0.392952f,-0.187254f}, -{0.0203884f,-0.392933f,-0.187499f},{0.00426672f,-0.393312f,-0.1851f},{-0.0102666f,-0.391357f,-0.18229f}, -{-0.0150188f,-0.398688f,-0.177518f},{-0.0311083f,-0.394534f,-0.172586f},{-0.0471593f,-0.395293f,-0.164104f}, -{-0.0565931f,-0.395942f,-0.15894f},{-0.153072f,0.320954f,-0.0621009f},{-0.107093f,0.396296f,-0.0868846f}, -{-0.167715f,0.302543f,-0.0497283f},{-0.185103f,0.30145f,-0.0428025f},{-0.108058f,0.345346f,-0.0850583f}, -{0.398556f,-0.396341f,-0.019292f},{0.382325f,-0.399434f,-0.0228417f},{0.364673f,-0.401614f,-0.0251117f}, -{0.359734f,-0.394f,-0.0299476f},{0.342192f,-0.396418f,-0.030507f},{0.322829f,-0.396495f,-0.030925f}, -{0.226369f,-0.391762f,-0.141198f},{0.194119f,-0.389749f,-0.1642f},{0.129658f,-0.388296f,-0.181383f}, -{-0.432073f,0.00232147f,0.247658f},{-0.184923f,-0.396682f,-0.0553037f},{-0.202884f,-0.398251f,-0.0495482f}, -{-0.223424f,-0.398296f,-0.0397093f},{-0.328552f,-0.0035883f,-0.0680685f},{-0.376268f,-0.264924f,0.15395f}, -{-0.355079f,-0.00288092f,0.268069f},{-0.0902833f,0.343147f,-0.0872769f},{0.377496f,-0.39182f,-0.0286229f}, -{0.256419f,-0.379737f,-0.13725f},{0.247854f,-0.376026f,-0.146317f},{0.234047f,-0.378007f,-0.152149f}, -{0.216588f,-0.381267f,-0.154972f},{0.211746f,-0.373904f,-0.162381f},{0.194087f,-0.375679f,-0.167885f}, -{0.176081f,-0.376091f,-0.17456f},{0.155464f,-0.379595f,-0.177113f},{0.13915f,-0.379493f,-0.178136f}, -{0.134513f,-0.372406f,-0.181383f},{0.116797f,-0.374348f,-0.184927f},{0.0975113f,-0.374059f,-0.189145f}, -{0.0783351f,-0.373814f,-0.193357f},{0.0589724f,-0.378483f,-0.194155f},{0.0395968f,-0.37856f,-0.195595f}, -{0.0202984f,-0.378599f,-0.19418f},{0.0030449f,-0.375711f,-0.194624f},{-0.0119836f,-0.374612f,-0.189846f}, -{-0.0269284f,-0.373711f,-0.182599f},{-0.0354426f,-0.377313f,-0.176271f},{-0.0504003f,-0.376695f,-0.166818f}, -{-0.210794f,-0.392843f,-0.0463393f},{-0.341433f,0.0888203f,-0.0460564f},{-0.0527925f,0.340221f,-0.0890389f}, -{0.401373f,-0.380669f,-0.0243658f},{0.380589f,-0.377705f,-0.0326999f},{0.361471f,-0.377859f,-0.0330021f}, -{0.341986f,-0.37784f,-0.0325327f},{0.226298f,-0.371924f,-0.160329f},{0.168332f,-0.370245f,-0.179705f}, -{0.1554f,-0.370136f,-0.181595f},{0.0589402f,-0.368676f,-0.200817f},{0.0395839f,-0.368554f,-0.203395f}, -{0.0202212f,-0.369062f,-0.199428f},{0.00733414f,-0.36921f,-0.1989f},{-0.354249f,0.0934375f,-0.0446931f}, -{-0.398344f,-0.251227f,0.136806f},{-0.108051f,-0.377563f,-0.0586862f},{-0.127337f,-0.377679f,-0.058384f}, -{-0.146635f,-0.377589f,-0.0602488f},{-0.165844f,-0.377673f,-0.060146f},{-0.185091f,-0.378174f,-0.0551172f}, -{-0.201019f,-0.378895f,-0.0484357f},{-0.2108f,-0.379229f,-0.0450918f},{-0.360641f,-0.031954f,-0.0637793f}, -{-0.0316164f,0.341442f,-0.0910903f},{0.431693f,-0.3751f,-0.00904149f},{0.396473f,-0.373351f,-0.0290151f}, -{0.253159f,-0.359448f,-0.152561f},{0.232581f,-0.357468f,-0.165924f},{0.213289f,-0.357159f,-0.17094f}, -{0.195167f,-0.35777f,-0.17483f},{0.174718f,-0.356329f,-0.181904f},{0.155329f,-0.356021f,-0.185917f}, -{0.136025f,-0.356169f,-0.185582f},{0.116745f,-0.355873f,-0.189383f},{0.0987331f,-0.356522f,-0.192862f}, -{0.084605f,-0.359815f,-0.197273f},{0.0768625f,-0.354201f,-0.199788f},{0.0588437f,-0.354825f,-0.203505f}, -{0.0395003f,-0.354612f,-0.206887f},{0.0201762f,-0.354831f,-0.206109f},{0.00404809f,-0.355043f,-0.204772f}, -{-0.0103759f,-0.353095f,-0.200675f},{-0.0152053f,-0.360503f,-0.194618f},{-0.0312884f,-0.356683f,-0.187235f}, -{-0.030118f,-0.479399f,0.347571f},{0.0219446f,0.397531f,-0.15269f},{-0.358667f,0.110723f,-0.0458442f}, -{-0.424781f,0.0588084f,-0.0108742f},{0.433861f,-0.359384f,-0.0142889f},{0.418909f,-0.360207f,-0.0223272f}, -{0.406106f,-0.3644f,-0.026983f},{0.398486f,-0.358799f,-0.0295875f},{0.380615f,-0.359686f,-0.0323269f}, -{0.361361f,-0.359853f,-0.0312401f},{-0.0793962f,0.398103f,-0.102235f},{-0.200968f,0.251413f,-0.0134979f}, -{-0.341304f,0.0793994f,-0.0464294f},{0.245494f,-0.353307f,-0.160914f},{0.187605f,-0.351982f,-0.179139f}, -{0.0910099f,-0.350683f,-0.198199f},{-0.0441111f,-0.352735f,-0.180618f},{-0.233243f,0.281978f,-0.0114851f}, -{-0.0771647f,0.377428f,-0.102164f},{-0.108128f,-0.359358f,-0.0574708f},{-0.127408f,-0.359423f,-0.0577023f}, -{-0.146712f,-0.359242f,-0.0606604f},{-0.165985f,-0.359172f,-0.0619658f},{-0.185232f,-0.359538f,-0.0583004f}, -{-0.204511f,-0.360201f,-0.0518568f},{-0.339915f,0.269303f,-0.283605f},{0.254966f,-0.340008f,-0.156072f}, -{0.245442f,-0.339577f,-0.161442f},{0.232549f,-0.339179f,-0.166464f},{0.213154f,-0.338658f,-0.173326f}, -{0.197167f,-0.338439f,-0.176895f},{0.187438f,-0.338214f,-0.179653f},{0.174608f,-0.338008f,-0.182618f}, -{0.155297f,-0.337758f,-0.186746f},{0.135986f,-0.337481f,-0.190971f},{0.116662f,-0.341661f,-0.196309f}, -{0.103813f,-0.341803f,-0.196888f},{0.0960773f,-0.335938f,-0.200688f},{0.0780586f,-0.336568f,-0.204579f}, -{0.0587473f,-0.336491f,-0.206225f},{0.0394489f,-0.336253f,-0.20962f},{0.0217324f,-0.338349f,-0.212752f}, -{0.00291629f,-0.337629f,-0.213241f},{-0.0121379f,-0.336652f,-0.208206f},{-0.0271728f,-0.335816f,-0.201248f}, -{-0.0355584f,-0.339333f,-0.19445f},{0.43806f,-0.342523f,-0.0153435f},{0.418954f,-0.34186f,-0.0241021f}, -{0.399823f,-0.34624f,-0.0280055f},{0.38064f,-0.346413f,-0.0280827f},{0.353471f,-0.346156f,-0.0265007f}, -{-0.412408f,0.130015f,-0.0195942f},{-0.316122f,-0.255265f,0.240365f},{-0.186936f,-0.0145526f,-0.112871f}, -{-0.296907f,0.131153f,-0.0426031f},{0.116668f,-0.332388f,-0.199248f},{0.0168837f,-0.331211f,-0.217305f}, -{0.0071991f,-0.331321f,-0.217118f},{-0.375753f,0.00609625f,0.303244f},{-0.109498f,-0.341667f,-0.0609241f}, -{-0.127491f,-0.340857f,-0.0605575f},{-0.146835f,-0.340677f,-0.0623324f},{-0.164474f,-0.342812f,-0.0642037f}, -{-0.186563f,-0.341648f,-0.063059f},{-0.20453f,-0.341282f,-0.0579338f},{-0.219411f,-0.340561f,-0.0491753f}, -{-0.227919f,-0.344323f,-0.0415485f},{-0.373702f,0.11208f,-0.0423523f},{0.0166908f,0.412739f,-0.157738f}, -{-0.206177f,-0.0147069f,-0.112755f},{0.232414f,-0.321205f,-0.16431f},{0.213135f,-0.320716f,-0.171113f}, -{0.193843f,-0.320343f,-0.176708f},{0.174557f,-0.31999f,-0.182065f},{0.155259f,-0.319797f,-0.186476f}, -{0.139195f,-0.319263f,-0.192142f},{0.129401f,-0.318671f,-0.198527f},{0.116598f,-0.318369f,-0.203492f}, -{0.0972605f,-0.318086f,-0.20764f},{0.0779685f,-0.31772f,-0.212656f},{0.058638f,-0.317707f,-0.21398f}, -{0.0408508f,-0.319945f,-0.214688f},{0.0232758f,-0.317199f,-0.22189f},{0.00712193f,-0.317347f,-0.220906f}, -{-0.00791295f,-0.316041f,-0.218687f},{-0.0164593f,-0.319456f,-0.214546f},{-0.0314813f,-0.318671f,-0.2069f}, -{-0.333761f,0.0945243f,-0.0467638f},{-0.101826f,-0.33561f,-0.0671297f},{-0.169342f,-0.335777f,-0.065985f}, -{-0.178943f,-0.33588f,-0.0656699f},{-0.128867f,0.289489f,-0.0502813f},{-0.389348f,0.055143f,-0.0314395f}, -{0.0361306f,-0.312729f,-0.219633f},{0.0188064f,0.379345f,-0.136735f},{-0.114701f,-0.326723f,-0.0646731f}, -{-0.127568f,-0.326813f,-0.0641008f},{-0.143671f,-0.326723f,-0.0642037f},{-0.148539f,-0.319597f,-0.0669946f}, -{-0.166217f,-0.321642f,-0.0696376f},{-0.185386f,-0.321867f,-0.0692003f},{-0.200408f,-0.320729f,-0.0664802f}, -{-0.20889f,-0.324208f,-0.0617858f},{-0.222549f,-0.322581f,-0.0527636f},{-0.230279f,-0.328845f,-0.0446866f}, -{-0.27829f,-0.0147905f,-0.0996752f},{-0.402839f,-0.255696f,0.0866918f},{-0.156641f,0.359429f,-0.0620752f}, -{-0.259853f,0.129867f,-0.0303977f},{-0.225507f,-0.0148805f,-0.111746f},{0.232311f,-0.302794f,-0.167403f}, -{0.214324f,-0.303141f,-0.175171f},{0.19374f,-0.301759f,-0.182271f},{0.174396f,-0.301206f,-0.189023f}, -{0.15513f,-0.301013f,-0.193872f},{0.142391f,-0.305534f,-0.195479f},{0.134507f,-0.299341f,-0.202058f}, -{0.116527f,-0.299746f,-0.208643f},{0.0971769f,-0.299553f,-0.211813f},{0.081081f,-0.299264f,-0.215794f}, -{0.0714157f,-0.299135f,-0.217761f},{0.0585608f,-0.299129f,-0.218829f},{0.0392624f,-0.298923f,-0.222064f}, -{0.0231922f,-0.298633f,-0.226571f},{0.00704477f,-0.298704f,-0.226906f},{-0.0123372f,-0.299238f,-0.222308f}, -{-0.0332305f,-0.302395f,-0.212347f},{-0.148166f,-0.0508858f,-0.125301f},{-0.127607f,-0.317276f,-0.0687245f}, -{-0.242896f,-0.315733f,-0.0365133f},{-0.167451f,-0.0509308f,-0.126793f},{-0.349825f,-0.274268f,0.182084f}, -{-0.302971f,0.0889425f,-0.0468152f},{-0.18675f,-0.0509437f,-0.127417f},{-0.298257f,0.209826f,-0.0373686f}, -{-0.206067f,-0.0509694f,-0.127006f},{-0.244806f,-0.0151764f,-0.108157f},{-0.296392f,-0.0161731f,-0.0915919f}, -{-0.224112f,-0.0520305f,-0.125938f},{0.245371f,-0.298781f,-0.161191f},{0.20662f,-0.297367f,-0.179917f}, -{-0.0283432f,-0.294974f,-0.218765f},{-0.238362f,-0.0558181f,-0.124401f},{-0.24251f,-0.265773f,0.253985f}, -{-0.244851f,-0.0492267f,-0.118369f},{-0.127684f,-0.302858f,-0.0759525f},{-0.146989f,-0.302871f,-0.0744606f}, -{-0.166287f,-0.302807f,-0.0762933f},{-0.185483f,-0.303051f,-0.0754702f},{-0.203521f,-0.302871f,-0.0691617f}, -{-0.21109f,-0.308685f,-0.0650333f},{-0.223887f,-0.304826f,-0.0569242f},{-0.236465f,-0.31026f,-0.046783f}, -{-0.280856f,-0.314929f,-0.00204493f},{-0.296888f,-0.313347f,0.00282951f},{-0.143819f,0.287103f,-0.0472782f}, -{-0.258921f,-0.0529436f,-0.113276f},{-0.351143f,0.0140575f,-0.0489502f},{-0.276875f,-0.052352f,-0.110086f}, -{-0.294849f,-0.0535738f,-0.106627f},{-0.409984f,0.019472f,0.307707f},{-0.399006f,0.0548214f,-0.0255812f}, -{-0.270586f,-0.020083f,-0.103309f},{0.266541f,-0.281946f,-0.143217f},{0.255744f,-0.286988f,-0.155622f}, -{0.247262f,-0.283284f,-0.164477f},{0.23233f,-0.284312f,-0.171621f},{0.219347f,-0.283901f,-0.176425f}, -{0.209707f,-0.283611f,-0.180534f},{0.193611f,-0.283329f,-0.185049f},{0.174293f,-0.282936f,-0.190077f}, -{0.15821f,-0.282486f,-0.196109f},{0.148584f,-0.282312f,-0.198836f},{0.135748f,-0.282036f,-0.202727f}, -{0.116353f,-0.281586f,-0.208797f},{0.0971448f,-0.28147f,-0.211228f},{0.0778142f,-0.281316f,-0.214578f}, -{0.0584965f,-0.281078f,-0.218199f},{0.0391981f,-0.28075f,-0.222964f},{0.0231729f,-0.28039f,-0.228591f}, -{0.00698689f,-0.280062f,-0.232835f},{-0.0123823f,-0.280383f,-0.230764f},{-0.0317321f,-0.281168f,-0.222803f}, -{-0.315324f,-0.0533874f,-0.0960741f},{-0.238606f,-0.294839f,-0.0495289f},{-0.24714f,-0.29882f,-0.0383653f}, -{-0.261332f,-0.29655f,-0.0361339f},{-0.268985f,-0.302711f,-0.0272724f},{-0.281782f,-0.302974f,-0.0227774f}, -{-0.302392f,-0.29992f,-0.0184303f},{-0.331465f,-0.053979f,-0.086994f},{-0.298386f,-0.24034f,0.26075f}, -{-0.42761f,0.12824f,-0.012797f},{-0.335369f,-0.242693f,0.242372f},{-0.341195f,-0.0541976f,-0.0824604f}, -{-0.353973f,-0.0546413f,-0.0768078f},{-0.368892f,-0.0567249f,-0.0698305f},{-0.127761f,-0.288569f,-0.0824411f}, -{-0.147072f,-0.28855f,-0.0815279f},{-0.166352f,-0.288389f,-0.0835857f},{-0.187238f,-0.28664f,-0.0815858f}, -{-0.204878f,-0.284955f,-0.0752902f},{-0.225694f,-0.288589f,-0.0600302f},{-0.281904f,-0.293039f,-0.0341789f}, -{-0.294656f,-0.293315f,-0.0295875f},{-0.377612f,-0.054069f,-0.0618244f},{-0.1754f,0.296756f,-0.0446545f}, -{-0.2782f,-0.265471f,0.245973f},{-0.362107f,-0.229041f,0.234423f},{0.26858f,-0.260242f,-0.148568f}, -{0.257635f,-0.267091f,-0.157378f},{0.248175f,-0.26648f,-0.165757f},{0.232266f,-0.265863f,-0.174573f}, -{0.219417f,-0.270159f,-0.178419f},{0.211533f,-0.264313f,-0.183132f},{0.193624f,-0.264789f,-0.189801f}, -{0.174178f,-0.264686f,-0.191132f},{0.159162f,-0.265895f,-0.195531f},{0.150596f,-0.262506f,-0.200804f}, -{0.135581f,-0.263824f,-0.203575f},{0.116302f,-0.263651f,-0.206964f},{0.0969904f,-0.263316f,-0.21207f}, -{0.0841355f,-0.267606f,-0.215331f},{0.0764059f,-0.261831f,-0.219999f},{0.0584065f,-0.262641f,-0.222584f}, -{0.0391338f,-0.262339f,-0.227279f},{0.0230957f,-0.261953f,-0.233394f},{0.00694188f,-0.266332f,-0.234957f}, -{-0.0124466f,-0.26421f,-0.234661f},{-0.0317964f,-0.262358f,-0.231047f},{-0.0467992f,-0.261567f,-0.222887f}, -{-0.117704f,0.383499f,-0.0835278f},{-0.0364072f,-0.48212f,0.341198f},{-0.127806f,-0.279161f,-0.0867046f}, -{-0.147137f,-0.279078f,-0.08565f},{-0.16639f,-0.278904f,-0.0886274f},{-0.18246f,-0.279303f,-0.0873605f}, -{-0.220678f,-0.280769f,-0.0675541f},{-0.243526f,-0.282145f,-0.0568277f},{-0.262773f,-0.282698f,-0.0507636f}, -{-0.279988f,-0.276287f,-0.056249f},{-0.285325f,-0.283521f,-0.0440564f},{-0.302797f,-0.281296f,-0.0386161f}, -{-0.321954f,-0.282673f,-0.0228095f},{-0.220665f,0.229311f,0.0031639f},{-0.0906949f,0.286428f,-0.0364425f}, -{0.0101379f,0.436443f,-0.16184f},{0.27719f,-0.263914f,-0.140484f},{0.006884f,-0.257233f,-0.236211f}, -{-0.0124208f,-0.257323f,-0.235844f},{-0.354661f,0.0166168f,0.323713f},{-0.127883f,-0.264937f,-0.0931095f}, -{-0.14724f,-0.264782f,-0.0925758f},{-0.16648f,-0.264699f,-0.0958426f},{-0.185689f,-0.26522f,-0.0914376f}, -{-0.206235f,-0.267007f,-0.0815793f},{-0.224247f,-0.266416f,-0.0773737f},{-0.243558f,-0.266422f,-0.0763512f}, -{-0.262837f,-0.266577f,-0.0745442f},{-0.282033f,-0.272332f,-0.0624996f},{-0.297942f,-0.27293f,-0.0529115f}, -{-0.317356f,-0.274866f,-0.034732f},{-0.347812f,-0.0224109f,-0.0663258f},{0.257731f,-0.244269f,-0.159005f}, -{0.248124f,-0.243896f,-0.163995f},{0.23287f,-0.24587f,-0.172798f},{0.211456f,-0.24796f,-0.183132f}, -{0.193405f,-0.246474f,-0.191087f},{0.177335f,-0.246134f,-0.196154f},{0.167618f,-0.245818f,-0.200322f}, -{0.154744f,-0.245413f,-0.205807f},{0.135478f,-0.245117f,-0.210707f},{0.117485f,-0.245902f,-0.213594f}, -{0.100193f,-0.249503f,-0.215736f},{0.0953442f,-0.242487f,-0.218488f},{0.0776277f,-0.244552f,-0.221131f}, -{0.0583486f,-0.244204f,-0.226707f},{0.0403234f,-0.244847f,-0.231767f},{0.0229349f,-0.24351f,-0.236661f}, -{0.00681327f,-0.243394f,-0.23886f},{-0.0125044f,-0.24351f,-0.238738f},{-0.0306132f,-0.242847f,-0.237137f}, -{-0.0383171f,-0.248609f,-0.233414f},{-0.0510755f,-0.244616f,-0.22661f},{-0.334828f,0.188579f,-0.0405839f}, -{-0.333163f,0.273882f,-0.295952f},{-0.198428f,-0.260988f,-0.0868846f},{-0.282091f,-0.26185f,-0.0785055f}, -{-0.301376f,-0.258152f,-0.0702807f},{-0.307382f,-0.262924f,-0.060416f},{-0.320366f,-0.258976f,-0.0545963f}, -{-0.326694f,-0.26495f,-0.039465f},{-0.33634f,-0.260789f,-0.0343526f},{-0.300212f,-0.249072f,0.252564f}, -{-0.336835f,-0.251272f,0.232552f},{0.283467f,-0.240983f,-0.142163f},{0.270657f,-0.240346f,-0.15069f}, -{0.219115f,-0.242822f,-0.178837f},{0.109749f,-0.240217f,-0.217208f},{0.0324845f,-0.239047f,-0.234745f}, -{-0.0638275f,-0.240713f,-0.219105f},{-0.129581f,-0.248333f,-0.100813f},{-0.146031f,-0.246899f,-0.100344f}, -{-0.166544f,-0.250494f,-0.102704f},{-0.166577f,-0.24351f,-0.105045f},{-0.185843f,-0.246526f,-0.0976367f}, -{-0.205058f,-0.247098f,-0.0892833f},{-0.224453f,-0.246918f,-0.0900935f},{-0.243732f,-0.246777f,-0.0927944f}, -{-0.262985f,-0.246995f,-0.0935661f},{-0.280991f,-0.246468f,-0.091071f},{-0.288643f,-0.252551f,-0.0838687f}, -{-0.301395f,-0.248088f,-0.0803832f},{-0.314218f,-0.253966f,-0.0657406f},{-0.332758f,-0.254088f,-0.051889f}, -{-0.349246f,-0.256423f,-0.031851f},{-0.264111f,-0.0108871f,-0.103058f},{-0.459564f,0.0280763f,0.295232f}, -{-0.222761f,0.242751f,-0.005331f},{0.231121f,-0.22425f,-0.16921f},{0.216517f,-0.223093f,-0.175872f}, -{0.208395f,-0.230565f,-0.181145f},{0.193405f,-0.228655f,-0.186785f},{0.177297f,-0.228102f,-0.194849f}, -{0.167721f,-0.227542f,-0.20317f},{0.154751f,-0.227092f,-0.208739f},{0.13542f,-0.226784f,-0.213588f}, -{0.122597f,-0.231227f,-0.215755f},{0.114803f,-0.225594f,-0.21816f},{0.0968425f,-0.226391f,-0.221073f}, -{0.0775763f,-0.226166f,-0.225266f},{0.0582778f,-0.225826f,-0.230468f},{0.0402527f,-0.226436f,-0.234481f}, -{0.0247612f,-0.224443f,-0.237208f},{0.0067361f,-0.225215f,-0.239786f},{-0.0125752f,-0.225253f,-0.240468f}, -{-0.0319829f,-0.225453f,-0.239336f},{-0.0523938f,-0.227125f,-0.230205f},{-0.067075f,-0.227041f,-0.220314f}, -{-0.302804f,0.325057f,-0.357101f},{-0.12481f,-0.24104f,-0.105932f},{-0.15376f,-0.241272f,-0.103604f}, -{-0.298251f,-0.24297f,-0.0873862f},{-0.320552f,-0.244069f,-0.0723128f},{-0.339349f,-0.244757f,-0.0569306f}, -{-0.0142214f,0.343577f,-0.0948908f},{-0.207077f,0.240359f,-0.00654639f},{0.291029f,-0.222366f,-0.13541f}, -{0.283357f,-0.22733f,-0.142124f},{0.270483f,-0.222147f,-0.150703f},{0.2555f,-0.220122f,-0.157976f}, -{0.247018f,-0.222893f,-0.161422f},{-0.0447735f,-0.22124f,-0.235742f},{-0.128083f,-0.227144f,-0.1088f}, -{-0.147394f,-0.22735f,-0.105675f},{-0.166647f,-0.227285f,-0.108067f},{-0.181682f,-0.22616f,-0.104948f}, -{-0.190016f,-0.228919f,-0.101026f},{-0.203559f,-0.230404f,-0.0983441f},{-0.224517f,-0.232796f,-0.0976946f}, -{-0.243815f,-0.232603f,-0.101527f},{-0.263101f,-0.232841f,-0.102376f},{-0.283988f,-0.23079f,-0.0994694f}, -{-0.300379f,-0.22971f,-0.096685f},{-0.314482f,-0.226816f,-0.0928073f},{-0.3207f,-0.234185f,-0.0835986f}, -{-0.333562f,-0.230108f,-0.0782547f},{-0.336687f,-0.235201f,-0.0708466f},{-0.352545f,-0.236166f,-0.0560239f}, -{-0.28748f,-0.479747f,0.292415f},{0.207797f,-0.204083f,-0.181563f},{0.194273f,-0.208585f,-0.187209f}, -{0.177258f,-0.20991f,-0.195582f},{0.167413f,-0.209408f,-0.202411f},{0.15468f,-0.208964f,-0.208553f}, -{0.13533f,-0.208726f,-0.212643f},{0.122462f,-0.208488f,-0.216462f},{0.112855f,-0.208366f,-0.218623f}, -{0.0967975f,-0.208167f,-0.222334f},{0.0774541f,-0.207652f,-0.229793f},{0.0581364f,-0.207505f,-0.232642f}, -{0.0420469f,-0.207472f,-0.233742f},{0.0324394f,-0.207427f,-0.234951f},{0.0228063f,-0.207376f,-0.236571f}, -{0.00668465f,-0.207363f,-0.237787f},{-0.0126459f,-0.207228f,-0.239786f},{-0.0320472f,-0.207337f,-0.239484f}, -{-0.0447799f,-0.212193f,-0.235697f},{-0.0525289f,-0.207177f,-0.230996f},{-0.208485f,-0.223137f,-0.103862f}, -{-0.224588f,-0.222951f,-0.106312f},{-0.243835f,-0.222919f,-0.108556f},{-0.263159f,-0.223176f,-0.108627f}, -{-0.279229f,-0.223478f,-0.104273f},{-0.333671f,-0.220372f,-0.0866596f},{-0.351207f,-0.220282f,-0.0727115f}, -{-0.358821f,-0.226726f,-0.0594643f},{-0.370667f,-0.222218f,-0.0515289f},{-0.386113f,0.0409569f,-0.0281148f}, -{-0.239307f,0.243812f,-0.00250151f},{0.254394f,-0.203492f,-0.157403f},{0.244806f,-0.203196f,-0.161686f}, -{0.231938f,-0.202772f,-0.167885f},{0.216929f,-0.203704f,-0.176142f},{-0.0388702f,0.396682f,-0.120768f}, -{-0.128173f,-0.208501f,-0.113861f},{-0.147458f,-0.208707f,-0.111475f},{-0.166737f,-0.208662f,-0.112884f}, -{-0.186017f,-0.208906f,-0.110865f},{-0.205341f,-0.208977f,-0.110035f},{-0.224639f,-0.208881f,-0.112807f}, -{-0.243918f,-0.208829f,-0.115173f},{-0.263242f,-0.209112f,-0.11361f},{-0.282496f,-0.209588f,-0.108691f}, -{-0.298579f,-0.209871f,-0.105495f},{-0.315884f,-0.211241f,-0.100067f},{-0.332989f,-0.203653f,-0.0944986f}, -{-0.0356677f,-0.0449182f,-0.141745f},{-0.0517443f,-0.0449503f,-0.141706f},{0.192402f,-0.186624f,-0.187769f}, -{0.177104f,-0.187293f,-0.194682f},{0.167528f,-0.186959f,-0.199293f},{0.154654f,-0.190991f,-0.206353f}, -{0.13533f,-0.190798f,-0.21009f},{0.120314f,-0.192013f,-0.215009f},{0.111633f,-0.188714f,-0.219125f}, -{0.0967203f,-0.189936f,-0.224141f},{0.0773898f,-0.189557f,-0.229999f},{0.0580528f,-0.189344f,-0.233574f}, -{0.0430629f,-0.190888f,-0.233973f},{0.0259123f,-0.189068f,-0.239131f},{0.00660105f,-0.188926f,-0.2416f}, -{-0.0127488f,-0.189068f,-0.24086f},{-0.0320601f,-0.189235f,-0.239555f},{-0.0513328f,-0.18984f,-0.232706f}, -{-0.308193f,-0.205389f,-0.104312f},{-0.348738f,-0.200778f,-0.0857979f},{-0.36502f,-0.2078f,-0.0682293f}, -{0.254374f,-0.185415f,-0.155905f},{0.244761f,-0.185081f,-0.160876f},{0.231841f,-0.184618f,-0.167589f}, -{0.215688f,-0.184026f,-0.176174f},{0.206183f,-0.183673f,-0.180978f},{0.0386965f,-0.184701f,-0.235838f}, -{-0.131459f,-0.194405f,-0.119462f},{-0.147542f,-0.189962f,-0.118614f},{-0.166834f,-0.190007f,-0.118607f}, -{-0.186126f,-0.190116f,-0.117642f},{-0.20381f,-0.192386f,-0.119224f},{-0.224703f,-0.19465f,-0.120864f}, -{-0.242741f,-0.188926f,-0.125308f},{-0.250503f,-0.19483f,-0.12208f},{-0.264966f,-0.192753f,-0.119224f}, -{-0.28265f,-0.190926f,-0.114067f},{-0.298695f,-0.191241f,-0.110492f},{-0.314829f,-0.188631f,-0.106144f}, -{-0.321189f,-0.196579f,-0.102087f},{-0.384666f,-0.200495f,-0.0488087f},{0.154513f,-0.168696f,-0.202257f}, -{0.135208f,-0.168265f,-0.208701f},{0.122231f,-0.167988f,-0.213401f},{0.112617f,-0.172059f,-0.219884f}, -{0.0965724f,-0.171564f,-0.227272f},{0.0772612f,-0.171287f,-0.232134f},{0.057982f,-0.171236f,-0.233568f}, -{0.0258287f,-0.170895f,-0.239851f},{0.0064853f,-0.170785f,-0.242179f},{-0.0128388f,-0.170985f,-0.240468f}, -{-0.0308383f,-0.172142f,-0.238134f},{-0.0514292f,-0.171821f,-0.231722f},{-0.231925f,-0.0466544f,-0.121996f}, -{-0.000286191f,0.396785f,-0.137282f},{-0.208659f,-0.185293f,-0.123424f},{-0.224742f,-0.185152f,-0.125771f}, -{-0.260162f,-0.185505f,-0.123867f},{-0.335362f,-0.183981f,-0.0998939f},{-0.353162f,-0.183698f,-0.0911675f}, -{-0.298759f,0.345281f,-0.371531f},{0.308964f,-0.170007f,-0.116054f},{-0.302694f,-0.0482235f,-0.103032f}, -{0.244555f,-0.171448f,-0.161004f},{0.215681f,-0.16593f,-0.175338f},{0.206035f,-0.165615f,-0.180052f}, -{0.193129f,-0.165281f,-0.185447f},{0.173856f,-0.164792f,-0.192727f},{-0.0385808f,-0.166979f,-0.235182f}, -{-0.128449f,-0.170522f,-0.133179f},{-0.147651f,-0.17112f,-0.126915f},{-0.166924f,-0.171371f,-0.124819f}, -{-0.186222f,-0.171326f,-0.12552f},{-0.205527f,-0.171268f,-0.127623f},{-0.224806f,-0.171326f,-0.128613f}, -{-0.244111f,-0.171416f,-0.128092f},{-0.263435f,-0.171737f,-0.125076f},{-0.281441f,-0.173306f,-0.117405f}, -{-0.296418f,-0.167056f,-0.113283f},{-0.314115f,-0.167384f,-0.10999f},{-0.327723f,-0.178129f,-0.104582f}, -{-0.365856f,-0.179563f,-0.0851162f},{-0.311562f,0.346207f,-0.370239f},{-0.112906f,-0.0277612f,-0.121623f}, -{0.115839f,-0.147288f,-0.212437f},{0.109389f,-0.158542f,-0.219015f},{0.0956914f,-0.150407f,-0.222301f}, -{0.0771711f,-0.149031f,-0.226379f},{0.0586958f,-0.150002f,-0.229555f},{0.00640814f,-0.152928f,-0.239028f}, -{-0.0116234f,-0.154008f,-0.237459f},{-0.0257387f,-0.157808f,-0.236037f},{-0.032999f,-0.148002f,-0.231105f}, -{-0.051455f,-0.149603f,-0.226173f},{-0.315093f,-0.235465f,0.25749f},{-0.327755f,-0.164342f,-0.105354f}, -{-0.337484f,-0.164696f,-0.101244f},{-0.353445f,-0.165262f,-0.0944921f},{-0.368332f,-0.164336f,-0.0870583f}, -{0.193065f,-0.146979f,-0.1862f},{0.173721f,-0.146606f,-0.192502f},{0.154513f,-0.146034f,-0.200945f}, -{0.135137f,-0.145764f,-0.205717f},{-0.0193917f,-0.148838f,-0.233806f},{-0.123883f,-0.149892f,-0.142754f}, -{-0.132726f,-0.153764f,-0.133989f},{-0.147741f,-0.152612f,-0.129636f},{-0.167014f,-0.152793f,-0.128234f}, -{-0.186312f,-0.152735f,-0.130169f},{-0.00889684f,0.422186f,-0.143655f},{0.102977f,-0.140529f,-0.216012f}, -{-0.318225f,-0.223105f,0.263252f},{-0.366892f,-0.00498377f,-0.0479984f},{-0.110251f,-0.491759f,-0.181525f}, -{-0.0913894f,-0.491913f,-0.170451f},{-0.131369f,-0.491315f,-0.169191f},{-0.111292f,-0.49145f,-0.169943f}, -{-0.0513714f,-0.491663f,-0.151969f},{-0.0331983f,-0.491624f,-0.149641f},{-0.0130961f,-0.49174f,-0.150439f}, -{0.0435452f,-0.489901f,-0.13197f},{0.0612102f,-0.489663f,-0.131745f},{0.0793768f,-0.489631f,-0.129423f}, -{0.0996656f,-0.489405f,-0.130517f},{0.155735f,-0.487618f,-0.114164f},{0.174171f,-0.486608f,-0.112215f}, -{0.189656f,-0.484576f,-0.112292f},{-0.165329f,-0.488055f,-0.165667f},{-0.125909f,-0.491836f,-0.151371f}, -{-0.108263f,-0.491585f,-0.151146f},{-0.0900904f,-0.49154f,-0.148818f},{-0.0699945f,-0.491643f,-0.149596f}, -{-0.0160992f,-0.490897f,-0.133668f},{0.00396448f,-0.490171f,-0.130407f},{0.0226391f,-0.4901f,-0.132845f}, -{0.0807787f,-0.488531f,-0.11381f},{0.0982894f,-0.488306f,-0.112389f},{0.114906f,-0.488319f,-0.11154f}, -{0.135118f,-0.488261f,-0.112492f},{0.191971f,-0.48628f,-0.09446f},{0.202884f,-0.484119f,-0.103309f}, -{0.20808f,-0.483258f,-0.0937976f},{-0.147793f,-0.491798f,-0.149712f},{-0.0728047f,-0.490479f,-0.133153f}, -{-0.0527861f,-0.48983f,-0.129809f},{-0.0355262f,-0.490274f,-0.129012f},{0.0236487f,-0.487901f,-0.116549f}, -{0.0419633f,-0.487168f,-0.112414f},{0.0601042f,-0.48718f,-0.110041f},{0.117163f,-0.485644f,-0.097193f}, -{0.135915f,-0.486377f,-0.095849f},{0.15513f,-0.487213f,-0.0912961f},{0.17367f,-0.487496f,-0.0935918f}, -{-0.449989f,0.00813478f,0.248461f},{-0.145728f,-0.491373f,-0.133513f},{-0.128584f,-0.491174f,-0.130298f}, -{-0.10991f,-0.490229f,-0.128678f},{-0.0921225f,-0.489714f,-0.128671f},{-0.031835f,-0.483238f,-0.116736f}, -{-0.0167037f,-0.484808f,-0.116517f},{0.00189381f,-0.484351f,-0.113276f},{0.0818527f,-0.485258f,-0.101489f}, -{0.0984116f,-0.484917f,-0.0985306f},{0.173901f,-0.486576f,-0.0760618f},{0.192023f,-0.486705f,-0.0736632f}, -{-0.168641f,-0.49165f,-0.132992f},{-0.0911964f,-0.483785f,-0.118948f},{-0.0730427f,-0.48464f,-0.120575f}, -{-0.0523617f,-0.482775f,-0.118221f},{0.00335356f,-0.475322f,-0.106074f},{0.0212051f,-0.480087f,-0.106177f}, -{0.0343301f,-0.480049f,-0.103611f},{0.041751f,-0.470757f,-0.0971737f},{0.0607922f,-0.471419f,-0.0942992f}, -{0.0806115f,-0.471117f,-0.0906723f},{0.100894f,-0.474075f,-0.0899521f},{0.119067f,-0.47585f,-0.0877528f}, -{0.133176f,-0.479046f,-0.0850133f},{0.139909f,-0.470962f,-0.0775409f},{0.157799f,-0.481946f,-0.0774637f}, -{0.196035f,-0.486415f,-0.0577216f},{0.211578f,-0.484203f,-0.0575994f},{0.224408f,-0.482055f,-0.0584868f}, -{-0.165348f,-0.491412f,-0.114614f},{-0.14686f,-0.490775f,-0.112742f},{-0.129395f,-0.488351f,-0.109109f}, -{-0.111466f,-0.484775f,-0.113057f},{-0.0891579f,-0.471522f,-0.108466f},{-0.0720395f,-0.471091f,-0.110614f}, -{-0.0527539f,-0.471252f,-0.110929f},{-0.032253f,-0.469728f,-0.108279f},{-0.013842f,-0.471046f,-0.106427f}, -{0.0209929f,-0.468191f,-0.099135f},{0.121511f,-0.465696f,-0.0803254f},{0.155632f,-0.472004f,-0.0701456f}, -{0.167721f,-0.478049f,-0.0589434f},{0.177007f,-0.484441f,-0.0562425f},{-0.184801f,-0.487926f,-0.112749f}, -{-0.104829f,-0.478531f,-0.108537f},{-0.00903832f,-0.46511f,-0.10192f},{0.004241f,-0.464802f,-0.099553f}, -{0.100585f,-0.462332f,-0.0827369f},{0.157169f,-0.467252f,-0.0572972f},{0.176551f,-0.484949f,-0.0377415f}, -{0.193264f,-0.486377f,-0.036121f},{0.212665f,-0.484074f,-0.0356001f},{0.224858f,-0.482512f,-0.0334201f}, -{-0.352043f,-0.278075f,0.16793f},{-0.18556f,-0.490968f,-0.0940098f},{-0.167451f,-0.491032f,-0.0915404f}, -{-0.14724f,-0.489013f,-0.0923507f},{-0.131041f,-0.483663f,-0.0930645f},{-0.112103f,-0.469548f,-0.0943121f}, -{-0.0604193f,-0.461059f,-0.103823f},{-0.0504261f,-0.459426f,-0.0961384f},{-0.0323109f,-0.459471f,-0.0937076f}, -{-0.0139642f,-0.459091f,-0.0916176f},{0.00604159f,-0.459297f,-0.0922414f},{0.0226713f,-0.45886f,-0.0893476f}, -{0.0390823f,-0.45877f,-0.0861644f},{0.0606829f,-0.457098f,-0.0773866f},{0.0806051f,-0.456603f,-0.0738947f}, -{0.0981608f,-0.456506f,-0.0734896f},{0.118192f,-0.457844f,-0.0712967f},{0.133902f,-0.459059f,-0.0670525f}, -{0.137812f,-0.458506f,-0.0571235f},{0.166589f,-0.477091f,-0.0439407f},{0.230665f,-0.482583f,-0.0170991f}, -{-0.196646f,-0.486422f,-0.0956625f},{-0.14614f,-0.484782f,-0.0751744f},{-0.126166f,-0.477297f,-0.0899778f}, -{-0.098611f,-0.46286f,-0.097791f},{-0.0876403f,-0.459458f,-0.0915533f},{-0.071255f,-0.458699f,-0.0931738f}, -{0.00337286f,-0.457902f,-0.0760361f},{0.0219189f,-0.457149f,-0.0742355f},{0.042169f,-0.456937f,-0.0752066f}, -{0.0984052f,-0.455722f,-0.0560882f},{0.116044f,-0.455445f,-0.0558374f},{0.151233f,-0.46104f,-0.049709f}, -{0.157226f,-0.469014f,-0.0381724f},{0.172171f,-0.485952f,-0.0186167f},{0.193097f,-0.486377f,-0.0180573f}, -{0.209939f,-0.485496f,-0.0155172f},{-0.185348f,-0.491637f,-0.0737532f},{-0.164024f,-0.490582f,-0.0734317f}, -{-0.127047f,-0.469368f,-0.0775602f},{-0.101569f,-0.460133f,-0.088936f},{-0.0714929f,-0.458892f,-0.0750972f}, -{-0.0540208f,-0.458911f,-0.0745764f},{-0.0364265f,-0.458705f,-0.0742484f},{-0.015469f,-0.458365f,-0.0733738f}, -{0.0257065f,-0.457432f,-0.0580045f},{0.0419826f,-0.456969f,-0.057175f},{0.0585351f,-0.456648f,-0.0541783f}, -{0.0773255f,-0.456313f,-0.0567248f},{0.136783f,-0.457207f,-0.0380245f},{0.147703f,-0.459304f,-0.0399601f}, -{0.149902f,-0.475174f,-0.0189254f},{0.157439f,-0.483457f,-0.0158194f},{0.174904f,-0.487335f,0.000244383f}, -{0.192376f,-0.487361f,0.000745975f},{0.210267f,-0.48664f,0.000649515f},{0.232549f,-0.483856f,-0.000456558f}, -{0.245937f,-0.48329f,0.00167842f},{-0.18529f,-0.491405f,-0.0561847f},{-0.167104f,-0.490087f,-0.0567055f}, -{-0.151047f,-0.484608f,-0.0584933f},{-0.109993f,-0.460133f,-0.0715025f},{-0.0922768f,-0.458937f,-0.0762226f}, -{-0.0308768f,-0.459117f,-0.0565898f},{-0.0139642f,-0.458551f,-0.0561204f},{0.00377799f,-0.457844f,-0.0550079f}, -{0.0625928f,-0.456969f,-0.0380502f},{0.0804443f,-0.456288f,-0.0380952f},{0.0988939f,-0.455683f,-0.0361532f}, -{0.119369f,-0.455046f,-0.037465f},{0.141034f,-0.465233f,-0.0178001f},{0.153747f,-0.486036f,0.00079742f}, -{0.213f,-0.485727f,0.0189962f},{0.229558f,-0.485804f,0.0199737f},{0.248606f,-0.484119f,0.0210347f}, -{0.26858f,-0.47558f,0.0111829f},{0.288714f,-0.472416f,0.0155494f},{0.306231f,-0.470776f,0.0226167f}, -{0.310443f,-0.463844f,0.00981964f},{-0.224781f,-0.491733f,-0.0549307f},{-0.206305f,-0.491907f,-0.0569756f}, -{-0.135613f,-0.470229f,-0.0626025f},{-0.124019f,-0.461033f,-0.068718f},{-0.0896531f,-0.45994f,-0.0568727f}, -{-0.0721617f,-0.459902f,-0.0563904f},{-0.0514485f,-0.459979f,-0.0551493f},{0.0043246f,-0.458435f,-0.0382045f}, -{0.0226648f,-0.458024f,-0.0361017f},{0.0414231f,-0.457709f,-0.0386097f},{0.0994469f,-0.456223f,-0.0193434f}, -{0.11672f,-0.456378f,-0.0175493f},{0.130005f,-0.457342f,-0.0212147f},{0.132829f,-0.472731f,0.00142119f}, -{0.141529f,-0.484267f,0.00572974f},{0.156886f,-0.488074f,0.0182824f},{0.173599f,-0.487438f,0.0210476f}, -{0.192595f,-0.487026f,0.0232919f},{0.270638f,-0.483528f,0.0369313f},{0.284952f,-0.479406f,0.0300312f}, -{0.310193f,-0.475811f,0.0396836f},{0.339658f,-0.462377f,0.0256391f},{-0.203045f,-0.491862f,-0.0386418f}, -{-0.184647f,-0.491309f,-0.0366355f},{-0.169342f,-0.490061f,-0.0335102f},{-0.155252f,-0.486203f,-0.0400759f}, -{-0.139999f,-0.470178f,-0.0516832f},{-0.127748f,-0.461014f,-0.0536188f},{-0.108225f,-0.459914f,-0.054667f}, -{-0.0706569f,-0.460564f,-0.0393814f},{-0.0535706f,-0.460442f,-0.0360696f},{-0.0367223f,-0.459979f,-0.0354779f}, -{-0.0162921f,-0.459374f,-0.0367126f},{0.0429086f,-0.457979f,-0.0213112f},{0.0609852f,-0.457612f,-0.0168162f}, -{0.0772612f,-0.45713f,-0.0159802f},{0.118276f,-0.459194f,-0.00186487f},{0.136436f,-0.486428f,0.0216328f}, -{0.199257f,-0.484287f,0.0293238f},{0.217154f,-0.481476f,0.0303463f},{0.232845f,-0.483676f,0.0385004f}, -{0.250696f,-0.486023f,0.0412141f},{0.289036f,-0.481714f,0.0449761f},{0.299518f,-0.480499f,0.0459921f}, -{0.327009f,-0.471303f,0.0436513f},{0.343368f,-0.465252f,0.0412077f},{-0.337967f,-0.286254f,0.172303f}, -{-0.260143f,-0.492505f,-0.0377673f},{-0.242118f,-0.492666f,-0.0351628f},{-0.221855f,-0.492312f,-0.0361146f}, -{-0.164705f,-0.489463f,-0.0183659f},{-0.14695f,-0.474859f,-0.036957f},{-0.1267f,-0.460628f,-0.0399087f}, -{-0.110257f,-0.460275f,-0.0357287f},{-0.0942703f,-0.460185f,-0.0367512f},{-0.0310762f,-0.460262f,-0.0180123f}, -{-0.0133469f,-0.459773f,-0.0178515f},{0.00447894f,-0.459111f,-0.0178386f},{0.0255651f,-0.45848f,-0.0171698f}, -{0.0810745f,-0.457406f,0.0002058f},{0.097865f,-0.457046f,0.000855296f},{0.120855f,-0.463786f,0.00681652f}, -{0.118437f,-0.470152f,0.0181152f},{0.12425f,-0.481592f,0.0237549f},{0.1367f,-0.487566f,0.0388476f}, -{0.154005f,-0.486242f,0.0387576f},{0.176743f,-0.48138f,0.0340954f},{0.194634f,-0.478551f,0.0351179f}, -{0.212723f,-0.475374f,0.0358574f},{0.22687f,-0.479457f,0.0424488f},{0.249918f,-0.484319f,0.0566349f}, -{0.26966f,-0.485065f,0.056159f},{0.286888f,-0.483457f,0.0581461f},{0.304309f,-0.481502f,0.0598823f}, -{0.315511f,-0.478956f,0.0598052f},{0.327999f,-0.474049f,0.0578567f},{0.344597f,-0.467297f,0.0551172f}, -{0.358268f,-0.462313f,0.0590335f},{0.366667f,-0.458294f,0.0572715f},{-0.402948f,-0.00846919f,0.222533f}, -{-0.262921f,-0.299225f,0.207421f},{-0.278419f,-0.492003f,-0.036031f},{-0.241172f,-0.49273f,-0.0190412f}, -{-0.22352f,-0.492139f,-0.0177743f},{-0.206788f,-0.491856f,-0.0170091f},{-0.186383f,-0.491251f,-0.0181473f}, -{-0.131356f,-0.46212f,-0.0335487f},{-0.0887399f,-0.460731f,-0.0191055f},{-0.0707727f,-0.460982f,-0.0164432f}, -{-0.0521559f,-0.460898f,-0.0187068f},{0.003823f,-0.460146f,0.000823143f},{0.0216231f,-0.459522f,0.000874589f}, -{0.0395389f,-0.458718f,0.000784559f},{0.0607344f,-0.45787f,0.00129258f},{0.101151f,-0.45832f,0.0177872f}, -{0.111183f,-0.461329f,0.014604f},{0.111813f,-0.474814f,0.0349442f},{0.118945f,-0.484544f,0.0412399f}, -{0.168789f,-0.475779f,0.0393492f},{0.234195f,-0.47585f,0.0525964f},{0.269107f,-0.48583f,0.0746986f}, -{0.288071f,-0.484242f,0.0758882f},{0.30537f,-0.482087f,0.079811f},{0.32416f,-0.47803f,0.0775281f}, -{0.344796f,-0.469792f,0.0765442f},{-0.388422f,-0.255927f,0.150561f},{-0.297801f,-0.492595f,-0.0188868f}, -{-0.28047f,-0.492601f,-0.0171313f},{-0.264644f,-0.492762f,-0.0178772f},{-0.200666f,-0.491412f,-0.000302223f}, -{-0.184525f,-0.491f,-0.00152405f},{-0.166377f,-0.490505f,0.00285523f},{-0.148854f,-0.486319f,-0.00328605f}, -{-0.125253f,-0.46084f,-0.0216392f},{-0.10872f,-0.460551f,-0.0185653f},{-0.0523552f,-0.46113f,-0.000713785f}, -{-0.0344008f,-0.460982f,0.00396774f},{-0.0170895f,-0.46048f,-0.000128595f},{0.045095f,-0.459136f,0.0183596f}, -{0.0618983f,-0.458763f,0.0190219f},{0.0790875f,-0.458423f,0.0222051f},{0.105955f,-0.462815f,0.0268223f}, -{0.118353f,-0.485785f,0.0573294f},{0.132205f,-0.488158f,0.0591107f},{0.148146f,-0.481541f,0.052352f}, -{0.158841f,-0.473869f,0.0475483f},{0.242536f,-0.476377f,0.0667246f},{0.251789f,-0.47801f,0.0780554f}, -{0.256014f,-0.481702f,0.0742999f},{0.361348f,-0.462094f,0.0778367f},{0.371265f,-0.4565f,0.0741841f}, -{0.383393f,-0.450474f,0.0784477f},{0.397643f,-0.443439f,0.0674384f},{-0.411135f,-0.00341467f,0.245548f}, -{-0.258638f,-0.492601f,-0.00105461f},{-0.240375f,-0.492293f,0.00120898f},{-0.222729f,-0.491901f,0.00151122f}, -{-0.147889f,-0.490621f,0.0184046f},{-0.120012f,-0.461149f,-0.00846916f},{-0.107961f,-0.461091f,-0.00315744f}, -{-0.0910678f,-0.460898f,0.00417352f},{-0.0740459f,-0.460847f,0.000559486f},{-0.0140221f,-0.46077f,0.0184882f}, -{0.00419598f,-0.460551f,0.0208032f},{0.0244911f,-0.460107f,0.0198257f},{0.080708f,-0.458995f,0.0389763f}, -{0.0930806f,-0.459606f,0.0371435f},{0.102206f,-0.467586f,0.0423202f},{0.0986688f,-0.470789f,0.0581653f}, -{0.13623f,-0.488184f,0.0748786f},{0.267995f,-0.483624f,0.0962734f},{0.286071f,-0.484467f,0.0948265f}, -{0.30382f,-0.481882f,0.0960741f},{0.314881f,-0.479592f,0.0962284f},{0.329105f,-0.474776f,0.0986657f}, -{0.344635f,-0.468905f,0.0984599f},{0.356056f,-0.463818f,0.0903444f},{0.364062f,-0.459651f,0.0960548f}, -{-0.314405f,-0.492216f,0.000662377f},{-0.297273f,-0.492743f,0.00171057f},{-0.279666f,-0.492441f,0.00209641f}, -{-0.222736f,-0.492036f,0.0190669f},{-0.205077f,-0.491598f,0.0193434f},{-0.187361f,-0.491077f,0.0195557f}, -{-0.166808f,-0.491367f,0.0210669f},{-0.133896f,-0.490949f,0.0273496f},{-0.105106f,-0.461857f,0.00686153f}, -{-0.07121f,-0.461323f,0.0179158f},{-0.0534227f,-0.461078f,0.0195557f},{-0.0327031f,-0.461072f,0.0208225f}, -{0.00517987f,-0.46059f,0.0368284f},{0.0227034f,-0.46023f,0.0383075f},{0.0410372f,-0.459786f,0.040436f}, -{0.0597762f,-0.459394f,0.0380245f},{0.107241f,-0.482544f,0.0744349f},{0.116154f,-0.486184f,0.0766213f}, -{0.25449f,-0.475644f,0.0960805f},{0.288759f,-0.482737f,0.110228f},{0.303235f,-0.480936f,0.106858f}, -{0.308109f,-0.477997f,0.113964f},{0.324732f,-0.473451f,0.110299f},{0.381599f,-0.451188f,0.0953989f}, -{0.396293f,-0.44423f,0.0976946f},{0.405579f,-0.439664f,0.0950002f},{-0.338539f,-0.48983f,0.000366566f}, -{-0.279531f,-0.492312f,0.0194142f},{-0.261969f,-0.492048f,0.0198386f},{-0.244446f,-0.491875f,0.0203273f}, -{-0.181894f,-0.491965f,0.0371692f},{-0.165181f,-0.491675f,0.0379602f},{-0.147992f,-0.491328f,0.0411305f}, -{-0.128456f,-0.491045f,0.0401788f},{-0.118411f,-0.490608f,0.0418379f},{-0.0931128f,-0.461921f,0.0210219f}, -{-0.0829137f,-0.461213f,0.0224623f},{-0.070091f,-0.461676f,0.0254783f},{-0.0473393f,-0.461297f,0.0336259f}, -{-0.0361178f,-0.461374f,0.0379216f},{-0.0264976f,-0.461721f,0.0401852f},{-0.0166458f,-0.460975f,0.0395614f}, -{0.0614803f,-0.459503f,0.0548536f},{0.0783222f,-0.459792f,0.0585255f},{0.096894f,-0.472789f,0.07911f}, -{0.118077f,-0.486344f,0.0929231f},{0.135517f,-0.48875f,0.0974695f},{0.250921f,-0.475547f,0.11089f}, -{0.268162f,-0.483329f,0.113617f},{0.345143f,-0.465252f,0.1168f},{0.354924f,-0.461966f,0.1119f}, -{0.365136f,-0.457162f,0.115501f},{0.3823f,-0.449715f,0.11208f},{-0.298662f,-0.297714f,0.189081f}, -{-0.377451f,-0.269091f,0.135025f},{-0.335613f,-0.491315f,0.0186875f},{-0.318752f,-0.49237f,0.0201859f}, -{-0.301428f,-0.492531f,0.0209575f},{-0.239938f,-0.491727f,0.0356066f},{-0.223681f,-0.491913f,0.0390856f}, -{-0.204672f,-0.492016f,0.0401338f},{-0.147626f,-0.489032f,0.0596766f},{-0.128346f,-0.490955f,0.0575802f}, -{-0.113202f,-0.490486f,0.0582875f},{-0.0844828f,-0.462133f,0.0346163f},{-0.0740201f,-0.4623f,0.0407897f}, -{-0.0580978f,-0.461741f,0.0396258f},{-0.0177004f,-0.461664f,0.0535996f},{-0.00942416f,-0.461098f,0.056712f}, -{0.00554642f,-0.460982f,0.0576895f},{0.0231343f,-0.46068f,0.0580753f},{0.0440918f,-0.46023f,0.0589949f}, -{0.0782129f,-0.46032f,0.0737854f},{0.0864827f,-0.462474f,0.0754703f},{0.105678f,-0.48147f,0.0965178f}, -{0.150828f,-0.487341f,0.112922f},{0.255172f,-0.481136f,0.12071f},{0.268432f,-0.482853f,0.130806f}, -{0.284476f,-0.48138f,0.126877f},{0.290823f,-0.47839f,0.133282f},{0.307112f,-0.474589f,0.132375f}, -{0.326578f,-0.469232f,0.129153f},{0.340249f,-0.464892f,0.129179f},{0.393482f,-0.443285f,0.114183f}, -{0.403733f,-0.438372f,0.117604f},{-0.293917f,-0.294312f,0.19991f},{-0.24359f,-0.287939f,0.232102f}, -{-0.352487f,-0.486274f,0.0193949f},{-0.296714f,-0.49201f,0.0359088f},{-0.280348f,-0.491984f,0.039227f}, -{-0.261236f,-0.491907f,0.0401466f},{-0.205444f,-0.488518f,0.0571493f},{-0.186203f,-0.487148f,0.0540176f}, -{-0.166435f,-0.486878f,0.0577859f},{-0.108617f,-0.490447f,0.0739076f},{-0.0683805f,-0.462699f,0.0558889f}, -{-0.0517765f,-0.462223f,0.0588341f},{-0.0363622f,-0.461889f,0.055831f},{-0.0263046f,-0.461445f,0.0574837f}, -{0.0231086f,-0.460795f,0.075676f},{0.04069f,-0.460532f,0.0761005f},{0.0583614f,-0.460101f,0.0763898f}, -{0.0958972f,-0.471734f,0.0962542f},{0.117408f,-0.484872f,0.114479f},{0.135992f,-0.487939f,0.114344f}, -{0.24377f,-0.476043f,0.125482f},{0.252632f,-0.483894f,0.134382f},{0.348654f,-0.459426f,0.137687f}, -{0.363053f,-0.45412f,0.134652f},{0.381997f,-0.44605f,0.132388f},{0.401579f,-0.43623f,0.133063f}, -{-0.352249f,-0.485689f,0.0385068f},{-0.336179f,-0.490563f,0.0381017f},{-0.317935f,-0.491489f,0.0414971f}, -{-0.260194f,-0.491901f,0.0559918f},{-0.242291f,-0.492235f,0.0587827f},{-0.223681f,-0.491283f,0.0605511f}, -{-0.142507f,-0.487026f,0.0685895f},{-0.129999f,-0.486968f,0.0777146f},{-0.0948298f,-0.48956f,0.0805505f}, -{-0.0349732f,-0.462262f,0.0750973f},{-0.0164529f,-0.461857f,0.0784991f},{-0.0175332f,-0.461394f,0.0708723f}, -{0.00209959f,-0.461381f,0.0748401f},{0.0640912f,-0.460448f,0.0936112f},{0.0788045f,-0.460641f,0.0956111f}, -{0.0865277f,-0.462455f,0.0929745f},{0.0987974f,-0.471065f,0.114922f},{0.136751f,-0.486602f,0.130787f}, -{0.154899f,-0.486119f,0.135205f},{0.170982f,-0.483753f,0.135179f},{0.230079f,-0.475168f,0.13361f}, -{0.233385f,-0.481219f,0.139745f},{0.23325f,-0.484184f,0.150188f},{0.249886f,-0.482955f,0.150516f}, -{0.263995f,-0.481033f,0.151674f},{0.273769f,-0.477727f,0.152632f},{0.289132f,-0.47401f,0.149275f}, -{0.308122f,-0.468699f,0.15069f},{0.326147f,-0.464795f,0.146735f},{0.343587f,-0.456024f,0.155088f}, -{0.416781f,-0.428198f,0.134568f},{0.426806f,-0.422732f,0.130735f},{-0.373091f,-0.224449f,0.226289f}, -{-0.315472f,-0.490749f,0.0568856f},{-0.298354f,-0.49129f,0.058011f},{-0.281107f,-0.491585f,0.0589306f}, -{-0.194756f,-0.478872f,0.0621974f},{-0.184139f,-0.477367f,0.0630012f},{-0.170737f,-0.476776f,0.0651941f}, -{-0.161541f,-0.477914f,0.0680943f},{-0.146069f,-0.477573f,0.0755796f},{-0.109678f,-0.489811f,0.0959969f}, -{-0.0912672f,-0.489155f,0.0983313f},{-0.0687599f,-0.463483f,0.0739848f},{-0.0555513f,-0.463246f,0.076467f}, -{-0.00233756f,-0.461567f,0.0857722f},{0.00869102f,-0.461381f,0.093669f},{0.0229478f,-0.461175f,0.0934825f}, -{0.0410951f,-0.460885f,0.0969101f},{0.0883026f,-0.463213f,0.105714f},{0.11344f,-0.475991f,0.135925f}, -{0.122109f,-0.482808f,0.134105f},{0.178042f,-0.484891f,0.15222f},{0.193663f,-0.485393f,0.151783f}, -{0.210858f,-0.485039f,0.154966f},{0.331362f,-0.461181f,0.153352f},{0.363818f,-0.448603f,0.153333f}, -{0.38291f,-0.440153f,0.150812f},{0.400138f,-0.430475f,0.153699f},{-0.428459f,0.0276519f,0.314106f}, -{-0.412016f,-0.00104821f,0.266345f},{-0.337407f,-0.489116f,0.0595544f},{-0.278824f,-0.491193f,0.0745893f}, -{-0.260316f,-0.491592f,0.0776052f},{-0.244568f,-0.491978f,0.0792708f},{-0.222562f,-0.486126f,0.0746729f}, -{-0.204357f,-0.476557f,0.0697534f},{-0.133214f,-0.478042f,0.0855921f},{-0.126983f,-0.477309f,0.0939198f}, -{-0.120919f,-0.481534f,0.0970387f},{-0.0656217f,-0.463863f,0.0924022f},{-0.0524196f,-0.463619f,0.094878f}, -{-0.033687f,-0.46241f,0.0964406f},{-0.0134626f,-0.462062f,0.0955982f},{-0.000260458f,-0.461818f,0.0980676f}, -{0.0259766f,-0.461683f,0.103296f},{0.0439118f,-0.460802f,0.111971f},{0.0603614f,-0.460583f,0.115135f}, -{0.0776984f,-0.460763f,0.115906f},{0.100746f,-0.465863f,0.131996f},{0.138301f,-0.483026f,0.15004f}, -{0.154397f,-0.484685f,0.154805f},{0.213385f,-0.484042f,0.170323f},{0.23134f,-0.483071f,0.170194f}, -{0.247146f,-0.481367f,0.169937f},{0.256587f,-0.478673f,0.17139f},{0.269403f,-0.473072f,0.168972f}, -{0.286984f,-0.466371f,0.170329f},{0.305608f,-0.464628f,0.162876f},{0.324809f,-0.454744f,0.171068f}, -{0.41134f,-0.426051f,0.149371f},{0.422993f,-0.418765f,0.150793f},{-0.31908f,-0.48965f,0.0752645f}, -{-0.301376f,-0.490338f,0.0783705f},{-0.240169f,-0.491553f,0.0943635f},{-0.229887f,-0.491746f,0.0897528f}, -{-0.111742f,-0.488872f,0.114209f},{-0.0909585f,-0.488711f,0.115405f},{-0.0327417f,-0.46257f,0.112479f}, -{-0.0152182f,-0.462204f,0.113977f},{0.00272336f,-0.461792f,0.11417f},{0.00360437f,-0.461529f,0.117983f}, -{0.0219253f,-0.461175f,0.113656f},{0.0347416f,-0.461631f,0.116684f},{0.0799299f,-0.460345f,0.131706f}, -{0.119517f,-0.469618f,0.152793f},{0.131034f,-0.475798f,0.156812f},{0.159869f,-0.482943f,0.169107f}, -{0.17403f,-0.484325f,0.171294f},{0.191412f,-0.484415f,0.172001f},{0.306006f,-0.458043f,0.174535f}, -{0.343889f,-0.447998f,0.173319f},{0.361008f,-0.444462f,0.167795f},{0.383148f,-0.432192f,0.169126f}, -{-0.221604f,-0.246654f,0.267053f},{-0.212086f,-0.27158f,0.254243f},{-0.347523f,-0.483804f,0.0699656f}, -{-0.335864f,-0.485766f,0.0786727f},{-0.295048f,-0.489753f,0.0946272f},{-0.2782f,-0.490775f,0.0961513f}, -{-0.259956f,-0.491187f,0.09455f},{-0.121491f,-0.476673f,0.109926f},{-0.119041f,-0.484312f,0.117276f}, -{-0.109614f,-0.488743f,0.130144f},{-0.0914151f,-0.486479f,0.131835f},{-0.0691071f,-0.469805f,0.118343f}, -{-0.0545481f,-0.463676f,0.117726f},{0.0204205f,-0.461355f,0.129018f},{0.0282659f,-0.461664f,0.132832f}, -{0.0416546f,-0.461066f,0.135025f},{0.0579113f,-0.460545f,0.135931f},{0.0933378f,-0.46014f,0.138928f}, -{0.107672f,-0.463901f,0.145211f},{0.138217f,-0.469721f,0.169634f},{0.154571f,-0.477014f,0.175306f}, -{0.19381f,-0.483689f,0.187557f},{0.21271f,-0.48338f,0.189968f},{0.231385f,-0.481907f,0.193621f}, -{0.242246f,-0.481103f,0.188142f},{0.25141f,-0.474898f,0.192212f},{0.269094f,-0.46702f,0.185602f}, -{0.293344f,-0.459561f,0.179094f},{0.362461f,-0.439735f,0.175557f},{0.396074f,-0.425543f,0.169737f}, -{0.399997f,-0.420784f,0.174039f},{-0.430259f,0.00304813f,0.26468f},{-0.316598f,-0.265516f,0.229362f}, -{-0.327922f,-0.484139f,0.0914633f},{-0.316308f,-0.486891f,0.0962863f},{-0.259879f,-0.491309f,0.111868f}, -{-0.243944f,-0.492023f,0.115803f},{-0.121466f,-0.482885f,0.132896f},{-0.0500402f,-0.463522f,0.133031f}, -{-0.0322401f,-0.462815f,0.133121f},{-0.0136877f,-0.461934f,0.134967f},{0.00335356f,-0.4614f,0.13332f}, -{0.0129867f,-0.461741f,0.135603f},{0.0622906f,-0.460062f,0.151121f},{0.080663f,-0.459496f,0.153217f}, -{0.0981094f,-0.459451f,0.153834f},{0.111459f,-0.460969f,0.155018f},{0.171084f,-0.474621f,0.19274f}, -{0.175554f,-0.481579f,0.186605f},{0.286907f,-0.455587f,0.193036f},{0.306296f,-0.449124f,0.1871f}, -{0.32598f,-0.444892f,0.184393f},{0.344127f,-0.435838f,0.190219f},{0.362062f,-0.430269f,0.190386f}, -{0.375483f,-0.42753f,0.184849f},{-0.33396f,0.239008f,-0.169165f},{-0.281917f,-0.48992f,0.114646f}, -{-0.242105f,-0.492582f,0.133816f},{-0.124565f,-0.478551f,0.13415f},{-0.109177f,-0.488544f,0.15204f}, -{-0.092579f,-0.485328f,0.150625f},{-0.0680782f,-0.46468f,0.133256f},{-0.00444683f,-0.461831f,0.143732f}, -{0.0050577f,-0.461207f,0.152079f},{0.0233336f,-0.460853f,0.154329f},{0.0421433f,-0.460275f,0.151847f}, -{0.0987396f,-0.45839f,0.170458f},{0.117716f,-0.458667f,0.170856f},{0.155477f,-0.467522f,0.186187f}, -{0.194383f,-0.483161f,0.209299f},{0.211906f,-0.482981f,0.209807f},{0.230086f,-0.48156f,0.209357f}, -{0.24867f,-0.473457f,0.211678f},{0.260477f,-0.467548f,0.20301f},{0.310321f,-0.438082f,0.194566f}, -{0.386248f,-0.417376f,0.189582f},{-0.335459f,0.246854f,-0.208836f},{-0.402743f,-0.236642f,0.149744f}, -{-0.313723f,-0.482608f,0.110054f},{-0.279338f,-0.489071f,0.129816f},{-0.261487f,-0.490685f,0.133816f}, -{-0.121517f,-0.483174f,0.150477f},{-0.069718f,-0.465033f,0.149481f},{-0.0525546f,-0.463104f,0.153577f}, -{-0.0356162f,-0.462377f,0.154079f},{-0.0186843f,-0.462043f,0.152625f},{-0.00848528f,-0.461329f,0.154066f}, -{0.0423491f,-0.460011f,0.169075f},{0.0605543f,-0.459387f,0.173403f},{0.0767017f,-0.458905f,0.172213f}, -{0.1307f,-0.457689f,0.179287f},{0.136205f,-0.457239f,0.186984f},{0.151439f,-0.458705f,0.193138f}, -{0.173747f,-0.470255f,0.209022f},{0.184351f,-0.479573f,0.209839f},{0.211758f,-0.483374f,0.227562f}, -{0.2268f,-0.481708f,0.226256f},{0.23707f,-0.47875f,0.219896f},{0.37212f,-0.421279f,0.196154f}, -{-0.323961f,-0.233658f,0.25414f},{-0.285865f,-0.251638f,0.255098f},{-0.468824f,0.0225716f,0.22699f}, -{-0.299254f,-0.277387f,0.224662f},{-0.241147f,-0.490351f,0.150297f},{-0.230549f,-0.492048f,0.152844f}, -{-0.127626f,-0.480448f,0.158349f},{-0.123774f,-0.487624f,0.171255f},{-0.108836f,-0.486975f,0.174946f}, -{-0.0972541f,-0.48475f,0.168445f},{-0.0860262f,-0.472049f,0.170927f},{-0.0317193f,-0.462127f,0.16739f}, -{-0.0195074f,-0.461664f,0.163686f},{-0.0138999f,-0.461001f,0.171197f},{0.00345646f,-0.460332f,0.174149f}, -{0.020472f,-0.460217f,0.170593f},{0.0814025f,-0.458352f,0.187203f},{0.0982058f,-0.457516f,0.189885f}, -{0.116713f,-0.456294f,0.193749f},{0.163426f,-0.461734f,0.201215f},{0.172673f,-0.473039f,0.224829f}, -{0.190962f,-0.483579f,0.226391f},{0.3207f,-0.423974f,0.199479f},{-0.350211f,-0.23589f,0.23906f}, -{-0.372802f,-0.0054532f,0.268416f},{-0.354828f,-0.243812f,0.226546f},{-0.445172f,0.00870071f,0.23097f}, -{-0.465107f,0.026012f,0.20773f},{-0.383052f,-0.00770392f,0.261021f},{-0.278547f,-0.488486f,0.151063f}, -{-0.261725f,-0.489521f,0.152651f},{-0.138005f,-0.479644f,0.167017f},{-0.131626f,-0.47994f,0.168599f}, -{-0.0711907f,-0.463959f,0.171358f},{-0.0532813f,-0.462229f,0.17348f},{-0.0302338f,-0.461464f,0.172908f}, -{0.0242275f,-0.459458f,0.188058f},{0.0425677f,-0.458963f,0.190219f},{0.0601042f,-0.458538f,0.191704f}, -{0.137774f,-0.454886f,0.20726f},{0.15459f,-0.455985f,0.208778f},{0.166075f,-0.460931f,0.212662f}, -{0.177631f,-0.48212f,0.233947f},{0.193913f,-0.484312f,0.24506f},{0.212652f,-0.483058f,0.246622f}, -{0.225128f,-0.480923f,0.248449f},{0.233648f,-0.477187f,0.246847f},{-0.355857f,-0.28183f,0.153378f}, -{-0.389238f,-0.260448f,0.134658f},{-0.29737f,-0.260757f,0.243446f},{-0.366872f,-0.275046f,0.145224f}, -{-0.296643f,-0.483894f,0.154587f},{-0.259275f,-0.488955f,0.167995f},{-0.24215f,-0.488672f,0.171326f}, -{-0.226247f,-0.489778f,0.173358f},{-0.173753f,-0.489907f,0.179936f},{-0.164159f,-0.489193f,0.188155f}, -{-0.146957f,-0.487881f,0.188341f},{-0.128861f,-0.487406f,0.192856f},{-0.109312f,-0.485245f,0.189383f}, -{-0.0912736f,-0.46994f,0.193383f},{-0.0498216f,-0.461586f,0.186348f},{-0.0412624f,-0.461799f,0.182515f}, -{-0.0314492f,-0.460648f,0.190425f},{-0.0145751f,-0.460024f,0.191029f},{0.00553356f,-0.459869f,0.190386f}, -{0.0617761f,-0.457394f,0.206656f},{0.0800842f,-0.456963f,0.208874f},{0.0986302f,-0.456082f,0.210733f}, -{0.119144f,-0.455124f,0.209453f},{0.156075f,-0.45668f,0.222276f},{0.1574f,-0.484126f,0.250918f}, -{0.175335f,-0.48446f,0.247175f},{-0.319626f,-0.20782f,0.27165f},{-0.329877f,-0.29554f,0.165345f}, -{-0.318694f,-0.29873f,0.170175f},{-0.451796f,0.0128677f,0.223247f},{-0.303878f,-0.310151f,0.0028488f}, -{-0.280785f,-0.321527f,0.0187711f},{-0.278489f,-0.302846f,0.191081f},{-0.360262f,-0.250693f,0.212096f}, -{-0.298862f,-0.485206f,0.169969f},{-0.280046f,-0.487785f,0.172785f},{-0.223237f,-0.487393f,0.190052f}, -{-0.205553f,-0.488795f,0.189325f},{-0.185952f,-0.488698f,0.193376f},{-0.113517f,-0.484608f,0.203151f}, -{-0.0732742f,-0.462783f,0.191261f},{-0.0518279f,-0.461342f,0.191479f},{0.00290986f,-0.458802f,0.206257f}, -{0.0227742f,-0.458345f,0.209923f},{0.0404006f,-0.457934f,0.210283f},{0.116302f,-0.454487f,0.225697f}, -{0.13398f,-0.453992f,0.225973f},{0.142211f,-0.48338f,0.250995f},{0.15612f,-0.484962f,0.26394f}, -{0.17347f,-0.484872f,0.265689f},{0.192113f,-0.483811f,0.267413f},{0.207804f,-0.482261f,0.267342f}, -{0.217199f,-0.479657f,0.268879f},{-0.414048f,-0.00264297f,0.20955f},{-0.455635f,0.0113823f,0.240758f}, -{-0.401682f,-0.00607055f,0.25549f},{-0.316006f,-0.307752f,0.0176329f},{-0.299061f,-0.317032f,0.0229575f}, -{-0.281904f,-0.324832f,0.0377994f},{-0.261352f,-0.487695f,0.187943f},{-0.241513f,-0.487174f,0.191672f}, -{-0.165979f,-0.486139f,0.206688f},{-0.146667f,-0.486634f,0.211189f},{-0.128224f,-0.486563f,0.209337f}, -{-0.106476f,-0.478358f,0.212508f},{-0.0748819f,-0.461889f,0.204566f},{-0.0675123f,-0.461014f,0.207228f}, -{-0.052889f,-0.460262f,0.208797f},{-0.0343944f,-0.459464f,0.210733f},{-0.0158484f,-0.45931f,0.208643f}, -{0.0431722f,-0.456564f,0.225253f},{0.0604064f,-0.456101f,0.228379f},{0.0771647f,-0.45569f,0.22915f}, -{0.0974213f,-0.455252f,0.228295f},{0.117942f,-0.484197f,0.266962f},{0.133774f,-0.484261f,0.266236f}, -{0.319678f,-0.462101f,0.0100833f},{-0.443185f,0.00970388f,0.279348f},{-0.382152f,-0.251735f,0.178387f}, -{-0.313729f,-0.311791f,0.0269573f},{-0.312694f,-0.315971f,0.0396258f},{-0.29856f,-0.32015f,0.0378252f}, -{-0.282194f,-0.328124f,0.0543841f},{-0.275146f,-0.331256f,0.0615222f},{-0.298875f,-0.486126f,0.189126f}, -{-0.282123f,-0.487528f,0.192798f},{-0.220871f,-0.486287f,0.207678f},{-0.202588f,-0.485798f,0.20998f}, -{-0.184055f,-0.485541f,0.208038f},{-0.129433f,-0.485984f,0.226739f},{-0.117099f,-0.484383f,0.226829f}, -{-0.0914215f,-0.464364f,0.209132f},{-0.0150767f,-0.458095f,0.225035f},{0.0032764f,-0.457169f,0.22915f}, -{0.0200283f,-0.456757f,0.229909f},{0.0820456f,-0.4543f,0.243561f},{0.100437f,-0.453754f,0.239143f}, -{0.101254f,-0.48284f,0.26522f},{0.139619f,-0.48448f,0.283238f},{0.155567f,-0.484357f,0.282377f}, -{0.174236f,-0.482827f,0.286017f},{0.19356f,-0.481251f,0.28282f},{0.213694f,-0.473342f,0.284544f}, -{-0.242465f,-0.257683f,0.258429f},{-0.335754f,-0.305109f,0.0369313f},{-0.32342f,-0.309578f,0.0344619f}, -{-0.300225f,-0.323256f,0.0579403f},{-0.311357f,-0.484068f,0.191132f},{-0.277576f,-0.487013f,0.207569f}, -{-0.25948f,-0.486852f,0.210135f},{-0.241854f,-0.486299f,0.210591f},{-0.185361f,-0.485168f,0.225523f}, -{-0.167522f,-0.485534f,0.228469f},{-0.149304f,-0.485862f,0.22697f},{-0.100997f,-0.468261f,0.221974f}, -{-0.0878911f,-0.461992f,0.219286f},{-0.0706183f,-0.459451f,0.225189f},{-0.0522459f,-0.4585f,0.229279f}, -{-0.0360921f,-0.45814f,0.230366f},{0.0267998f,-0.455291f,0.245587f},{0.0428314f,-0.45495f,0.244558f}, -{0.0601749f,-0.454275f,0.24751f},{0.0805086f,-0.483103f,0.272724f},{0.100457f,-0.484537f,0.283888f}, -{0.11845f,-0.48464f,0.286525f},{0.194846f,-0.476898f,0.290769f},{-0.349381f,-0.00533103f,0.254024f}, -{-0.417945f,0.0292209f,0.315366f},{-0.35014f,-0.296383f,0.0380181f},{-0.328983f,-0.311906f,0.0467638f}, -{-0.319491f,-0.316652f,0.0564419f},{-0.299132f,-0.326459f,0.075496f},{-0.28065f,-0.331513f,0.0751037f}, -{-0.259783f,-0.338375f,0.0941963f},{-0.314077f,-0.483554f,0.206939f},{-0.300154f,-0.486422f,0.211247f}, -{-0.241365f,-0.485901f,0.227195f},{-0.223919f,-0.485676f,0.227915f},{-0.206376f,-0.48529f,0.228481f}, -{-0.145735f,-0.485734f,0.244552f},{-0.127813f,-0.485907f,0.247388f},{-0.113614f,-0.485888f,0.249619f}, -{-0.0850616f,-0.460905f,0.230385f},{-0.0312048f,-0.45677f,0.244764f},{-0.0144465f,-0.456352f,0.245529f}, -{0.00379085f,-0.455651f,0.249831f},{0.0451786f,-0.482885f,0.284441f},{0.0596797f,-0.483939f,0.285316f}, -{0.0820391f,-0.484435f,0.285759f},{0.135118f,-0.482891f,0.295347f},{0.152448f,-0.480988f,0.297219f}, -{0.155619f,-0.473052f,0.30219f},{0.175303f,-0.470782f,0.298473f},{-0.256394f,-0.259394f,0.256828f}, -{-0.341291f,-0.307823f,0.0568599f},{-0.331067f,-0.314022f,0.0603389f},{-0.315787f,-0.320806f,0.0768979f}, -{-0.290624f,-0.329906f,0.0832063f},{-0.278303f,-0.333411f,0.0946529f},{-0.297794f,-0.486184f,0.226649f}, -{-0.280695f,-0.486621f,0.22787f},{-0.263139f,-0.486177f,0.228424f},{-0.201752f,-0.485181f,0.243426f}, -{-0.185348f,-0.484968f,0.246744f},{-0.16666f,-0.485489f,0.248352f},{-0.109061f,-0.485309f,0.264403f}, -{-0.0923604f,-0.485817f,0.270088f},{-0.0695573f,-0.45857f,0.245883f},{-0.0523038f,-0.456828f,0.247941f}, -{0.0218867f,-0.454416f,0.258217f},{0.0355583f,-0.453278f,0.26003f},{0.0248191f,-0.483174f,0.288042f}, -{0.0613839f,-0.48466f,0.301817f},{0.0791196f,-0.483997f,0.302061f},{0.0968168f,-0.483444f,0.302344f}, -{0.118443f,-0.481592f,0.302299f},{0.136578f,-0.474036f,0.304775f},{-0.285788f,-0.286988f,0.217832f}, -{-0.361201f,-0.288962f,0.044198f},{-0.353516f,-0.299328f,0.0592907f},{-0.334938f,-0.313469f,0.075631f}, -{-0.300444f,-0.327224f,0.0950195f},{-0.289094f,-0.33123f,0.0962799f},{-0.26431f,-0.335848f,0.111283f}, -{-0.312752f,-0.483721f,0.229716f},{-0.258432f,-0.485978f,0.243246f},{-0.242124f,-0.485926f,0.24668f}, -{-0.223096f,-0.4852f,0.249008f},{-0.165155f,-0.484962f,0.263406f},{-0.147092f,-0.48484f,0.26603f}, -{-0.129935f,-0.485161f,0.267162f},{-0.0487541f,-0.456423f,0.25695f},{-0.0353011f,-0.455644f,0.259033f}, -{-0.0153146f,-0.454911f,0.262506f},{0.00496123f,-0.453651f,0.265573f},{0.00542424f,-0.483746f,0.291965f}, -{0.0242018f,-0.484139f,0.303103f},{0.0405871f,-0.484306f,0.304479f},{0.101897f,-0.480113f,0.309109f}, -{-0.335484f,0.250577f,-0.225986f},{-0.362898f,-0.290209f,0.0564741f},{-0.354339f,-0.30028f,0.0768464f}, -{-0.334616f,-0.314601f,0.0951159f},{-0.31888f,-0.321205f,0.0966464f},{-0.298135f,-0.325674f,0.114292f}, -{-0.278232f,-0.331443f,0.114922f},{-0.298148f,-0.485489f,0.24551f},{-0.279885f,-0.486229f,0.248931f}, -{-0.220935f,-0.485341f,0.264673f},{-0.203469f,-0.485058f,0.265387f},{-0.185444f,-0.485007f,0.268075f}, -{-0.126944f,-0.483637f,0.281663f},{-0.108611f,-0.48428f,0.285001f},{-0.0926562f,-0.484164f,0.286441f}, -{-0.0740266f,-0.484402f,0.286891f},{-0.0540337f,-0.483515f,0.290383f},{-0.0409344f,-0.48338f,0.293058f}, -{-0.0318029f,-0.483586f,0.301965f},{-0.0139385f,-0.483849f,0.304878f},{0.00431173f,-0.484074f,0.303334f}, -{0.0427028f,-0.482505f,0.318678f},{0.0602649f,-0.482962f,0.314331f},{0.0708948f,-0.481316f,0.315218f}, -{0.0968618f,-0.47529f,0.315025f},{-0.306276f,-0.2129f,0.274448f},{-0.368274f,-0.235009f,0.223163f}, -{-0.343388f,-0.30862f,0.0938362f},{-0.316758f,-0.31979f,0.114929f},{-0.283467f,-0.329102f,0.11871f}, -{-0.263911f,-0.331243f,0.130414f},{-0.311948f,-0.482968f,0.245992f},{-0.279628f,-0.485631f,0.266242f}, -{-0.260149f,-0.485907f,0.265136f},{-0.242015f,-0.48565f,0.267689f},{-0.183419f,-0.483496f,0.282338f}, -{-0.167593f,-0.48246f,0.280197f},{-0.148552f,-0.481676f,0.279997f},{-0.0880133f,-0.48347f,0.301084f}, -{-0.0700074f,-0.483457f,0.30381f},{-0.0527539f,-0.483599f,0.304813f},{0.00475545f,-0.483721f,0.320067f}, -{0.0216552f,-0.482628f,0.322813f},{-0.315678f,-0.293425f,0.183177f},{-0.3545f,-0.298074f,0.0959712f}, -{-0.331002f,-0.314266f,0.112832f},{-0.299164f,-0.320819f,0.132941f},{-0.279917f,-0.325578f,0.134388f}, -{-0.309144f,-0.482165f,0.257034f},{-0.299048f,-0.483946f,0.266159f},{-0.240542f,-0.485373f,0.28266f}, -{-0.223237f,-0.485193f,0.284589f},{-0.204627f,-0.483972f,0.28646f},{-0.123247f,-0.481599f,0.296454f}, -{-0.107987f,-0.482968f,0.305257f},{-0.0522073f,-0.483193f,0.321269f},{-0.0351532f,-0.483669f,0.322601f}, -{-0.0178998f,-0.483727f,0.323604f},{0.0305231f,-0.480197f,0.328266f},{-0.328674f,-0.273869f,0.208707f}, -{-0.40064f,-0.25104f,0.0488023f},{-0.362519f,-0.289849f,0.0907431f},{-0.341458f,-0.307572f,0.116331f}, -{-0.455841f,0.0126491f,0.268384f},{-0.279165f,-0.484795f,0.283148f},{-0.261506f,-0.485431f,0.286383f}, -{-0.184827f,-0.479534f,0.292415f},{-0.117035f,-0.480132f,0.307701f},{-0.0909135f,-0.482885f,0.320941f}, -{-0.0729848f,-0.482994f,0.32379f},{-0.0158548f,-0.482525f,0.33678f},{0.00325711f,-0.481226f,0.334362f}, -{-0.38266f,-0.270782f,0.0813672f},{-0.332115f,-0.310569f,0.126498f},{-0.307389f,-0.476396f,0.27412f}, -{-0.294328f,-0.482017f,0.281894f},{-0.222954f,-0.482865f,0.298061f},{-0.101678f,-0.480898f,0.322433f}, -{-0.186711f,0.248082f,-0.0135751f},{-0.337054f,0.254307f,-0.24396f},{-0.202891f,0.23162f,0.00283594f}, -{-0.286515f,0.364336f,-0.372927f},{-0.335414f,0.260551f,-0.265149f},{-0.052098f,0.307945f,-0.0569499f}, -{-0.164152f,0.26057f,-0.024578f},{-0.305337f,0.251098f,-0.166741f},{-0.313472f,0.285663f,-0.283026f}, -{-0.302617f,0.215832f,-0.0542812f},{-0.316019f,0.243555f,-0.169171f},{-0.300804f,0.227684f,-0.0737082f}, -{-0.181181f,0.274711f,-0.031671f},{-0.0531462f,0.322594f,-0.0754188f},{-0.312958f,0.259509f,-0.210025f}, -{-0.302566f,0.23205f,-0.0907302f},{0.0233979f,0.356484f,-0.115662f},{-0.316771f,0.22252f,-0.0919199f}, -{0.00642742f,0.340221f,-0.0927558f},{-0.319633f,0.270544f,-0.262069f},{-0.31789f,0.215247f,-0.0716247f}, -{-0.182493f,0.241632f,-0.00751742f},{-0.145638f,0.259972f,-0.0193563f},{-0.318405f,0.226957f,-0.111032f}, -{-0.165168f,0.271027f,-0.0328992f},{-0.109562f,0.2732f,-0.0165396f},{-0.107003f,0.281837f,-0.0365711f}, -{-0.323716f,0.274055f,-0.296479f},{-0.16659f,0.243259f,0.0006045f},{-0.319781f,0.265651f,-0.243709f}, -{-0.148924f,0.270326f,-0.0333044f},{-0.0362722f,0.324607f,-0.0756438f},{-0.311234f,0.220604f,-0.0803125f}, -{-0.3227f,0.271239f,-0.284229f},{-0.323588f,0.256815f,-0.22843f},{-0.220781f,0.206829f,0.0185396f}, -{-0.167914f,0.251284f,-0.0151699f},{-0.0329861f,0.310312f,-0.0527443f},{-0.127337f,0.273367f,-0.0322948f}, -{-0.317382f,0.284158f,-0.302556f},{-0.127871f,0.280666f,-0.0416578f},{-0.187341f,0.234301f,0.00378125f}, -{0.0259895f,0.366509f,-0.128723f},{0.0123822f,0.333057f,-0.0819716f},{-0.313787f,0.265008f,-0.224777f}, -{-0.309061f,0.301977f,-0.319835f},{-0.303871f,0.269368f,-0.2069f},{-0.0717501f,0.30253f,-0.055368f}, -{-0.333034f,0.229555f,-0.136619f},{-0.316327f,0.232745f,-0.128478f},{-0.338886f,0.200733f,-0.0441529f}, -{0.00223463f,0.350227f,-0.103682f},{0.025295f,0.350658f,-0.108054f},{-0.0903219f,0.299785f,-0.0571364f}, -{-0.209681f,0.219363f,0.0212341f},{-0.337054f,0.234758f,-0.152272f},{-0.301788f,0.250449f,-0.149892f}, -{-0.313421f,0.313733f,-0.349333f},{-0.353355f,0.231812f,-0.127121f},{-0.0154754f,0.325109f,-0.0739269f}, -{-0.312546f,0.202521f,-0.0423137f},{-0.109736f,0.29165f,-0.0513167f},{-0.0731263f,0.292106f,-0.0378766f}, -{-0.305575f,0.235472f,-0.111611f},{-0.311228f,0.241394f,-0.150471f},{-0.305884f,0.31271f,-0.343847f}, -{-0.336295f,0.224366f,-0.114556f},{-0.0516286f,0.299514f,-0.0367383f},{-0.343401f,0.237722f,-0.161197f}, -{-0.0322787f,0.314794f,-0.0613163f},{-0.321163f,0.251079f,-0.204977f},{-0.309453f,0.279605f,-0.247323f}, -{-0.316295f,0.249214f,-0.188206f},{-0.0175589f,0.332697f,-0.0845503f},{-0.305434f,0.309495f,-0.323842f}, -{-0.21671f,0.219761f,0.014752f},{-0.306656f,0.273541f,-0.222578f},{-0.334147f,0.213974f,-0.0735667f}, -{-0.173252f,0.237356f,0.018829f},{-0.202177f,0.223048f,0.0189447f},{-0.311614f,0.284152f,-0.265889f}, -{-0.332655f,0.221189f,-0.0998553f},{-0.0605351f,0.294479f,-0.0306485f},{-0.305781f,0.256326f,-0.181872f}, -{-0.0967461f,0.291045f,-0.0472396f} - -// normals -8127 -{-0.832532f,-0.483226f,0.270894f},{-0.606785f,-0.758191f,0.23866f},{-0.859166f,-0.504979f,0.0826439f}, -{-0.240595f,0.95358f,-0.181105f},{-0.265911f,0.923509f,-0.276446f},{-0.24535f,0.952364f,-0.181124f}, -{-0.25194f,0.962547f,-0.100147f},{-0.246923f,0.963593f,-0.102551f},{-0.246718f,0.967484f,-0.0557298f}, -{-0.256239f,0.966543f,-0.0116836f},{-0.268399f,0.963145f,0.0176902f},{-0.202139f,0.974793f,-0.094442f}, -{-0.233286f,0.967463f,-0.0979436f},{-0.222973f,0.972356f,-0.0693283f},{-0.216571f,0.976026f,-0.0216751f}, -{-0.248769f,0.966837f,-0.0577895f},{-0.251386f,0.966483f,-0.0521194f},{-0.221256f,0.940455f,-0.258053f}, -{-0.203433f,0.958112f,-0.201585f},{-0.185273f,0.9538f,-0.236513f},{-0.202063f,0.969567f,-0.138239f}, -{-0.277194f,0.958376f,0.0684025f},{-0.323528f,0.932333f,0.16151f},{-0.301745f,0.944805f,0.127648f}, -{-0.263034f,0.964572f,0.0203178f},{-0.298731f,0.932268f,0.204049f},{-0.339448f,0.915328f,0.21668f}, -{-0.256592f,0.921503f,0.291534f},{-0.336811f,0.892243f,0.300767f},{-0.288256f,0.886991f,0.36077f}, -{-0.129143f,0.959514f,-0.25031f},{-0.104011f,0.980522f,-0.166606f},{-0.0715617f,0.949967f,-0.304043f}, -{-0.193212f,0.979873f,0.0501861f},{-0.264442f,0.963268f,0.0467423f},{-0.202161f,0.973002f,0.111346f}, -{0.780632f,0.608123f,0.144219f},{0.893498f,0.412557f,0.177367f},{0.918654f,0.348847f,0.185421f}, -{-0.235108f,0.898248f,0.371314f},{-0.0326766f,0.912646f,0.407443f},{-0.281134f,0.890492f,0.357753f}, -{-0.717587f,-0.696125f,-0.0218705f},{-0.848457f,-0.528571f,-0.0270921f},{-0.865329f,-0.500314f,-0.029859f}, -{-0.121792f,0.898055f,0.422685f},{0.101699f,0.854369f,0.509619f},{-0.140896f,0.896477f,0.420093f}, -{-0.808979f,-0.581233f,0.0878659f},{-0.770083f,-0.637941f,0.00173141f},{-0.756549f,-0.652533f,0.0428222f}, -{0.0971026f,0.799445f,0.592839f},{-0.145356f,0.83366f,0.532806f},{-0.00267177f,0.775686f,0.631113f}, -{-4.50738e-05f,-0.710945f,-0.703248f},{-0.0235271f,-0.794254f,-0.60713f},{0.259285f,-0.884284f,-0.388348f}, -{-0.945709f,0.157642f,0.284225f},{-0.904527f,0.212372f,0.36977f},{-0.885759f,0.334308f,0.321977f}, -{-0.263036f,0.950565f,0.16504f},{-0.323719f,0.90817f,0.265394f},{-0.28809f,0.926484f,0.242139f}, -{-0.95459f,0.0441123f,-0.29464f},{-0.969511f,-0.169456f,-0.177012f},{-0.954454f,-0.223864f,-0.197238f}, -{0.611328f,0.777271f,0.148758f},{0.684309f,0.653679f,0.323149f},{0.915668f,0.320355f,0.242746f}, -{0.819723f,0.357047f,0.447853f},{0.422096f,0.860388f,0.285599f},{0.187582f,0.923427f,0.334806f}, -{0.432844f,0.790824f,0.432717f},{0.0680594f,-0.941994f,0.328655f},{-0.290907f,-0.832029f,0.472335f}, -{0.146264f,-0.741517f,0.654797f},{-0.735765f,-0.280452f,0.616439f},{-0.722188f,-0.547927f,0.422161f}, -{-0.768976f,-0.134488f,0.624971f},{-0.453323f,0.851967f,-0.262013f},{-0.381382f,0.908381f,-0.171438f}, -{-0.417129f,0.849952f,-0.321845f},{0.254919f,0.880365f,0.399968f},{-0.190589f,0.854832f,0.482637f}, -{-0.210229f,0.889628f,0.405419f},{0.708171f,0.617f,0.343227f},{0.614328f,0.678828f,0.402236f}, -{0.720949f,0.588198f,0.36641f},{-0.346537f,0.869928f,0.350909f},{-0.60894f,0.719521f,0.333889f}, -{-0.33076f,0.856751f,0.395696f},{0.0127889f,0.924737f,0.380393f},{-0.142866f,0.666357f,0.731818f}, -{-0.034274f,0.677512f,0.734712f},{-0.0935795f,0.661009f,0.74452f},{-0.509054f,0.763082f,0.398208f}, -{0.224064f,-0.899254f,-0.375683f},{-0.272324f,-0.820453f,-0.50269f},{0.575326f,-0.786607f,-0.224161f}, -{-0.0317741f,0.983694f,0.177022f},{-0.208638f,0.977128f,-0.0411155f},{-0.0326322f,0.9994f,-0.0116285f}, -{-0.959056f,-0.281756f,0.0287399f},{-0.968295f,-0.230842f,0.0954859f},{-0.932971f,-0.284521f,-0.220485f}, -{-0.936459f,-0.146232f,-0.318844f},{-0.385196f,0.795521f,0.467728f},{-0.571132f,0.811969f,-0.120481f}, -{-0.285455f,0.884252f,0.369613f},{0.770701f,0.508164f,0.384433f},{0.653749f,0.544785f,0.525187f}, -{0.911702f,0.212638f,0.351546f},{-0.149382f,0.141765f,-0.978564f},{-0.215627f,0.158924f,-0.963456f}, -{-0.172656f,0.332476f,-0.927173f},{-0.11137f,0.20172f,-0.973091f},{-0.120247f,0.218757f,-0.968342f}, -{-0.116053f,0.208667f,-0.971077f},{-0.110441f,0.873446f,0.474232f},{-0.120825f,0.884438f,0.450746f}, -{-0.869758f,0.377088f,0.318317f},{-0.925243f,0.175597f,0.33629f},{-0.919523f,0.0685275f,0.387016f}, -{-0.482565f,0.874002f,0.0570216f},{-0.328802f,0.876258f,0.352222f},{-0.120162f,0.895601f,0.428322f}, -{0.118699f,0.915735f,0.38385f},{-0.89304f,0.449975f,0.00125259f},{-0.956562f,0.289896f,0.0308044f}, -{-0.950694f,0.305572f,-0.0529737f},{-0.202962f,0.974794f,-0.0926428f},{-0.149628f,0.983888f,-0.0978547f}, -{-0.14631f,0.98241f,-0.116032f},{0.694537f,0.621044f,0.363211f},{0.620447f,0.729884f,0.286908f}, -{0.765911f,0.603359f,0.22212f},{0.852062f,0.457413f,0.254488f},{0.752783f,0.532628f,0.386814f}, -{-0.239568f,0.74193f,0.626216f},{-0.075257f,0.613884f,0.785801f},{0.123843f,0.376122f,0.918257f}, -{-0.474381f,0.23936f,-0.847154f},{-0.455168f,-0.811384f,-0.366713f},{-0.213933f,-0.514973f,-0.830082f}, -{-0.254102f,0.948463f,-0.189341f},{-0.367517f,0.829036f,0.421461f},{-0.361859f,0.854456f,0.372778f}, -{-0.322071f,0.851882f,0.412998f},{-0.13554f,0.98971f,-0.045867f},{-0.160853f,0.986362f,-0.0348832f}, -{-0.131247f,0.991314f,0.00835482f},{-0.542619f,0.828757f,0.136845f},{-0.343869f,0.809416f,0.476025f}, -{-0.462981f,0.852059f,0.244222f},{-0.263369f,0.901217f,0.344157f},{-0.338921f,0.884725f,0.319992f}, -{-0.511586f,0.803891f,0.303379f},{0.874238f,0.377572f,0.305199f},{0.829018f,0.495984f,0.25832f}, -{0.792623f,0.48816f,0.365306f},{0.195735f,0.962956f,0.18548f},{0.116284f,0.964873f,0.235578f}, -{0.190608f,0.956302f,0.221709f},{-0.25398f,0.966403f,-0.0394976f},{-0.378434f,0.83816f,0.39278f}, -{0.662297f,0.72069f,0.204862f},{0.530429f,0.822517f,0.205209f},{0.684042f,0.704221f,0.190155f}, -{-0.0569504f,0.997668f,-0.0376106f},{0.0157645f,0.999316f,-0.0334653f},{0.0157935f,0.995784f,-0.0903618f}, -{-0.422862f,-0.852884f,-0.306229f},{-0.12403f,-0.948113f,-0.292743f},{-0.622856f,-0.765261f,-0.162564f}, -{-0.901512f,-0.161439f,0.401515f},{-0.83239f,-0.442392f,0.333789f},{-0.279616f,0.315223f,-0.90689f}, -{-0.187629f,0.239955f,-0.952479f},{-0.201018f,0.207097f,-0.957446f},{-0.351005f,0.870672f,0.344566f}, -{-0.356193f,0.83271f,0.423934f},{-0.930524f,0.364666f,-0.0338037f},{-0.934408f,0.34659f,-0.0822029f}, -{-0.581141f,-0.79047f,-0.193474f},{-0.401732f,-0.866777f,-0.295481f},{0.219798f,0.943023f,0.249793f}, -{0.441648f,0.744463f,0.500721f},{-0.170662f,0.962922f,-0.208942f},{-0.140103f,0.977176f,-0.15968f}, -{-0.174618f,0.973903f,-0.14499f},{-0.816847f,-0.468775f,-0.336171f},{-0.897091f,0.0904234f,-0.432495f}, -{-0.65512f,-0.498546f,-0.567689f},{-0.207628f,0.956946f,0.202842f},{-0.168441f,0.72412f,0.668788f}, -{-0.0670168f,0.91956f,0.387192f},{0.311933f,0.593536f,0.741898f},{0.17352f,0.787655f,0.591177f}, -{0.180038f,0.58603f,0.790035f},{-0.861929f,-0.365565f,0.351341f},{-0.914147f,-0.309319f,0.262025f}, -{-0.791212f,-0.558632f,0.248825f},{-0.053992f,0.998524f,0.00585528f},{0.654485f,0.747701f,0.112219f}, -{0.34414f,0.92576f,0.15664f},{-0.219221f,0.914674f,0.339579f},{-0.258173f,0.858933f,0.442246f}, -{-0.143065f,0.905573f,0.399337f},{0.84601f,0.500754f,0.183061f},{0.317856f,0.577094f,0.752283f}, -{0.161512f,0.786348f,0.596297f},{0.21221f,0.640586f,0.737981f},{-0.166751f,0.982628f,-0.0814596f}, -{-0.188703f,0.980337f,-0.0577052f},{-0.17194f,0.985102f,-0.00323838f},{-0.234144f,0.969227f,0.0759959f}, -{-0.208683f,0.971131f,0.115569f},{-0.17246f,0.983756f,0.0498251f},{-0.837886f,-0.545703f,0.0124777f}, -{-0.881945f,-0.46478f,0.0784393f},{-0.936872f,-0.341756f,-0.073981f},{-0.152191f,0.98821f,0.0167007f}, -{0.529805f,0.839465f,0.12085f},{0.35177f,0.933835f,0.0648909f},{0.645035f,0.758214f,0.0950878f}, -{0.897254f,0.430807f,0.0966417f},{0.82479f,0.54689f,0.143639f},{0.833868f,0.533647f,0.141017f}, -{0.398204f,0.869206f,-0.293111f},{0.368214f,0.912358f,-0.178942f},{0.460623f,0.862636f,-0.209012f}, -{0.757324f,0.632608f,0.162072f},{-0.196495f,0.847757f,0.492644f},{-0.281075f,0.806466f,0.520201f}, -{-0.178493f,0.831846f,0.525522f},{-0.965141f,0.251922f,-0.070975f},{-0.968395f,0.204029f,-0.143468f}, -{-0.98048f,0.122575f,-0.153733f},{-0.181622f,0.862125f,0.473026f},{-0.24619f,0.905469f,0.345711f}, -{-0.228317f,0.86714f,0.44265f},{-0.366278f,0.419914f,-0.830369f},{-0.283198f,0.181294f,-0.94177f}, -{-0.125999f,0.144635f,-0.98143f},{-0.139033f,0.985514f,-0.0971168f},{-0.689549f,0.612864f,0.385901f}, -{-0.466431f,0.7979f,0.381836f},{-0.429588f,0.835885f,0.341687f},{0.92412f,0.353599f,-0.144809f}, -{0.860566f,0.471663f,-0.192248f},{0.897956f,0.425678f,-0.111685f},{0.207155f,0.859726f,0.466859f}, -{0.500149f,-0.865185f,-0.036124f},{0.196539f,-0.87016f,-0.451878f},{0.407742f,-0.874513f,-0.262628f}, -{-0.165294f,0.961411f,0.219924f},{-0.174258f,0.925978f,0.334962f},{0.0209707f,0.954479f,-0.297539f}, -{-0.0411579f,0.958112f,-0.28342f},{-0.0430633f,0.986192f,-0.15991f},{-0.138388f,0.984372f,0.108905f}, -{-0.0864297f,0.979549f,0.181694f},{0.355448f,-0.675269f,-0.646272f},{0.982785f,-0.167672f,0.0775822f}, -{0.964467f,-0.220328f,0.145802f},{-0.106177f,0.990299f,-0.0896399f},{0.585177f,0.809954f,0.0392717f}, -{0.351387f,0.916776f,0.189866f},{0.28604f,0.941601f,-0.177678f},{-0.330406f,0.875489f,0.352634f}, -{0.421234f,0.845704f,0.327638f},{-0.000578385f,0.935843f,0.352418f},{0.797729f,0.521056f,0.303528f}, -{0.851595f,0.355876f,0.384888f},{0.833935f,0.461972f,0.301884f},{-0.281361f,0.950692f,0.130465f}, -{0.494345f,0.869264f,0.0014269f},{0.323062f,0.915374f,0.240255f},{0.236605f,0.903551f,0.357229f}, -{0.326762f,0.897894f,0.29498f},{-0.797988f,-0.554353f,0.236451f},{-0.715613f,-0.675862f,0.176376f}, -{-0.604376f,-0.751052f,0.265801f},{-0.986977f,-0.121592f,-0.105315f},{-0.980444f,-0.196796f,-0.000786544f}, -{-0.991928f,-0.0157392f,-0.12582f},{-0.164281f,0.191446f,-0.967657f},{-0.0978269f,0.992432f,0.074216f}, -{-0.0896928f,0.987081f,0.132768f},{-0.0518716f,0.987449f,0.149177f},{-0.0994765f,0.995001f,0.00874661f}, -{-0.0983143f,0.994234f,-0.0428241f},{-0.151126f,0.986293f,0.0662396f},{-0.105553f,0.987126f,0.120173f}, -{0.969847f,-0.00525719f,-0.243657f},{0.986459f,0.017394f,-0.163085f},{0.977914f,0.0433675f,-0.204458f}, -{0.785811f,0.528888f,0.32059f},{0.773372f,0.522143f,0.35953f},{0.866441f,0.410223f,0.2846f}, -{-0.51235f,0.858582f,0.0183004f},{0.220746f,0.613517f,0.7582f},{0.359838f,0.596592f,0.717353f}, -{0.263219f,0.954822f,-0.137951f},{0.236716f,0.968405f,-0.0784723f},{0.0393797f,0.987006f,-0.155785f}, -{-0.100373f,0.924854f,0.366837f},{-0.0789204f,0.886723f,0.455514f},{-0.0325974f,0.953865f,0.298462f}, -{-0.0996998f,0.958219f,0.268097f},{-0.124818f,0.990033f,0.0652242f},{0.858404f,0.470083f,0.20534f}, -{-0.351088f,0.90292f,0.247937f},{-0.266096f,0.623714f,0.734965f},{0.0546192f,0.518634f,0.85325f}, -{-0.00627665f,0.528708f,0.848781f},{0.0310592f,0.974423f,0.222564f},{0.225176f,0.961336f,0.158522f}, -{0.238458f,0.899672f,0.365688f},{0.112761f,0.816349f,0.566444f},{0.0456267f,0.831381f,0.553826f}, -{0.0552438f,0.806235f,0.589011f},{0.00507421f,0.703522f,0.710656f},{0.0903773f,0.728552f,0.679002f}, -{-0.417529f,0.874211f,0.247839f},{-0.503292f,0.783758f,0.363895f},{-0.760404f,-0.626818f,-0.169957f}, -{0.528696f,0.762456f,0.373016f},{-0.0576661f,0.99596f,0.0688321f},{-0.0702293f,0.979726f,0.187628f}, -{-0.050923f,0.994669f,-0.0896719f},{0.550602f,-0.79647f,0.249946f},{0.435275f,-0.856718f,0.276713f}, -{0.503614f,-0.851182f,0.147859f},{0.924068f,0.378481f,-0.0533867f},{0.91027f,0.413033f,-0.0285087f}, -{0.909985f,0.413706f,0.027824f},{0.151382f,0.614505f,0.774252f},{0.121735f,0.71707f,0.686288f}, -{-0.0654101f,0.661894f,0.746738f},{0.449607f,0.836161f,-0.314146f},{0.410327f,0.856681f,0.312616f}, -{-0.296897f,0.85146f,0.432283f},{0.657107f,-0.725019f,0.206298f},{0.302314f,-0.951098f,0.0633903f}, -{0.376669f,-0.920947f,0.0998864f},{0.358164f,0.823977f,0.439068f},{0.708367f,0.624326f,0.329293f}, -{0.265183f,0.860485f,0.435022f},{0.264323f,0.827217f,0.495829f},{-0.208083f,0.974072f,-0.088802f}, -{-0.0406154f,0.999099f,-0.0123014f},{-0.21748f,0.975297f,-0.0387011f},{0.811224f,0.532897f,0.240699f}, -{0.325329f,0.935848f,0.135462f},{0.298507f,0.933061f,0.200724f},{0.370731f,0.911821f,0.176466f}, -{0.177805f,0.850282f,0.495384f},{0.0782578f,0.861702f,0.501344f},{-0.862905f,-0.0410319f,0.503697f}, -{-0.780384f,-0.483438f,0.396596f},{-0.920067f,-0.0587012f,0.387339f},{0.120623f,0.907232f,0.402964f}, -{0.0912084f,0.872958f,0.479193f},{-0.223768f,0.248002f,-0.942562f},{-0.006037f,0.829609f,0.558313f}, -{-0.086073f,0.83628f,0.541505f},{-0.0751572f,0.794053f,0.603184f},{-0.1793f,0.932707f,0.312905f}, -{-0.35696f,0.931368f,0.0716437f},{0.723383f,0.662743f,0.193622f},{0.748428f,0.357617f,0.558539f}, -{0.382063f,0.804684f,0.454436f},{0.41987f,0.797587f,0.433088f},{0.60187f,0.723171f,0.338786f}, -{0.465439f,0.84667f,0.257909f},{0.604528f,0.760774f,0.236153f},{-0.14065f,0.878178f,0.457187f}, -{-0.156203f,0.926759f,0.341641f},{0.30724f,0.899647f,0.310225f},{0.983246f,0.063408f,-0.1709f}, -{0.96155f,0.0864831f,-0.260656f},{0.979863f,0.0529409f,-0.192523f},{0.0766483f,-0.724763f,-0.684722f}, -{0.0795982f,-0.728566f,-0.680335f},{0.240247f,-0.855735f,-0.458256f},{-0.168843f,0.172447f,-0.97044f}, -{-0.0397846f,0.99753f,-0.0578866f},{-0.187576f,0.976181f,-0.109024f},{-0.315613f,0.922592f,0.221838f}, -{-0.344408f,0.911946f,0.223021f},{-0.0535464f,0.762474f,0.6448f},{-0.150055f,0.814483f,0.560447f}, -{-0.11104f,0.754474f,0.646868f},{-0.838926f,0.210014f,-0.502093f},{-0.83238f,0.28807f,-0.473454f}, -{-0.797072f,0.470878f,-0.378087f},{-0.86169f,0.262894f,-0.434025f},{-0.815344f,0.425554f,-0.392578f}, -{0.57735f,0.57735f,0.57735f},{0.421857f,0.686834f,0.591857f},{-0.249799f,0.940143f,0.231799f}, -{-0.296301f,0.880261f,0.370604f},{0.0118961f,0.905903f,0.423318f},{0.0313234f,0.355953f,0.933979f}, -{0.0352841f,0.306272f,0.95129f},{-0.0893656f,0.270821f,0.958473f},{-0.713881f,0.490776f,-0.499512f}, -{-0.410273f,0.869831f,-0.273989f},{-0.894055f,0.352175f,-0.276838f},{-0.817393f,0.308118f,-0.486757f}, -{-0.875796f,0.121223f,-0.467212f},{0.669572f,-0.707121f,-0.227273f},{0.818913f,-0.535545f,-0.206332f}, -{0.84874f,-0.466955f,-0.248178f},{0.00732999f,0.884841f,0.465835f},{0.756543f,0.624106f,0.19528f}, -{0.00141355f,0.916707f,0.399559f},{0.0128935f,0.936489f,0.35046f},{0.555117f,-0.0206778f,-0.831515f}, -{0.733425f,-0.110287f,-0.670765f},{-0.336867f,0.804122f,0.489804f},{-0.547861f,0.721964f,-0.42263f}, -{-0.517719f,0.852632f,0.0706092f},{-0.659477f,0.748223f,0.0724769f},{0.00701106f,0.622457f,0.782623f}, -{-0.00356288f,0.708901f,0.705299f},{-0.0351258f,0.774387f,0.631736f},{-0.385602f,0.794284f,-0.469494f}, -{-0.409104f,0.75301f,-0.515373f},{-0.343588f,0.739178f,-0.579278f},{0.44348f,0.409973f,0.797024f}, -{0.172274f,0.553567f,0.814791f},{0.444401f,0.516545f,0.731907f},{-0.899018f,0.315509f,-0.303678f}, -{-0.0287092f,0.99401f,-0.105451f},{0.0238513f,0.996213f,-0.0836077f},{0.0498361f,0.992292f,-0.113461f}, -{-0.243806f,0.954737f,0.170399f},{0.935547f,0.345553f,-0.0731101f},{0.866464f,0.488525f,-0.10288f}, -{0.887404f,0.427894f,-0.171524f},{0.919118f,0.358308f,0.163822f},{-0.939902f,-0.308644f,0.146026f}, -{-0.985943f,-0.128784f,0.106447f},{-0.968025f,-0.242516f,0.0641434f},{-0.319472f,-0.322908f,0.890881f}, -{-0.212183f,-0.00597968f,0.977212f},{-0.460175f,-0.0230708f,0.887528f},{-0.311636f,0.272517f,0.910284f}, -{0.148652f,-0.861322f,-0.485827f},{0.249015f,-0.75173f,-0.61065f},{0.283906f,-0.838223f,-0.465596f}, -{-0.0533076f,-0.660568f,-0.748871f},{0.102555f,-0.808587f,-0.579369f},{0.78009f,0.447597f,0.437169f}, -{0.659098f,0.426598f,0.619358f},{0.700411f,0.468918f,0.538089f},{0.981422f,-0.0277144f,-0.189847f}, -{0.990634f,0.0115244f,-0.136058f},{0.969545f,-0.000610817f,-0.244911f},{-0.999433f,0.0331006f,-0.00624168f}, -{-0.969336f,0.0523667f,-0.240095f},{-0.985831f,-0.0135757f,-0.167188f},{-0.11484f,-0.497945f,-0.859571f}, -{0.145066f,-0.756207f,-0.638049f},{-0.992501f,0.0955116f,-0.0762813f},{0.0307977f,0.813263f,0.581081f}, -{-0.252137f,0.914982f,0.315017f},{0.0936196f,0.978662f,0.182908f},{0.0174373f,0.996305f,-0.0841026f}, -{0.0180337f,0.991815f,-0.126402f},{0.044532f,-0.527634f,-0.848304f},{0.0660403f,-0.585473f,-0.807998f}, -{0.100115f,-0.56197f,-0.821077f},{-0.359698f,0.0989121f,-0.927811f},{-0.43688f,0.0954944f,-0.894437f}, -{-0.37905f,0.204351f,-0.902531f},{0.000580824f,0.0870738f,-0.996202f},{0.128226f,0.0453576f,-0.990707f}, -{0.0914407f,-0.0043354f,-0.995801f},{-0.651647f,0.621586f,-0.434727f},{-0.803714f,0.589137f,-0.0834296f}, -{-0.559601f,0.820384f,0.117543f},{0.759113f,0.438907f,0.480737f},{0.573133f,0.785088f,0.234854f}, -{0.738396f,0.63573f,0.224987f},{-0.340618f,-0.160374f,0.926423f},{-0.0783287f,-0.180108f,0.980523f}, -{-0.46722f,-0.379277f,0.798658f},{-0.083493f,-0.271426f,0.958831f},{0.0491597f,-0.0662771f,0.996589f}, -{0.0134786f,0.189284f,0.98183f},{0.00493481f,0.319204f,0.947673f},{-0.0212024f,0.401033f,0.915818f}, -{-0.385416f,0.416591f,0.823351f},{-0.0488352f,0.466255f,0.883301f},{-0.290291f,0.499278f,0.816365f}, -{-0.128063f,0.542822f,0.830026f},{-0.129216f,0.549796f,0.825244f},{-0.32094f,0.562335f,0.762087f}, -{-0.267665f,0.633191f,0.72624f},{-0.033667f,0.973168f,0.227618f},{0.0168639f,0.985589f,0.168313f}, -{-0.566884f,0.712608f,0.413319f},{0.108542f,0.994073f,0.0061294f},{0.125559f,0.990888f,-0.0487381f}, -{0.0163092f,0.994743f,0.101096f},{-0.807412f,-0.589942f,-0.00735334f},{-0.838698f,-0.540232f,0.0688061f}, -{-0.881405f,-0.469341f,0.0533315f},{0.783992f,-0.593224f,-0.182874f},{0.992591f,-0.109235f,-0.0532095f}, -{0.818459f,-0.442588f,-0.366388f},{-0.974179f,-0.225775f,0.000958332f},{-0.958019f,-0.275422f,-0.0796435f}, -{0.707968f,-0.265502f,0.654438f},{0.636608f,-0.281028f,0.71816f},{0.661075f,-0.188496f,0.726257f}, -{0.0874356f,-0.56697f,-0.819085f},{0.0433353f,-0.476473f,-0.87812f},{0.11842f,-0.528335f,-0.840737f}, -{0.129623f,0.104684f,-0.986022f},{-0.998419f,-0.0542573f,-0.0146808f},{-0.688453f,0.673068f,-0.270208f}, -{0.0156894f,0.999522f,0.0266441f},{-0.868316f,-0.494385f,0.0401279f},{-0.18112f,0.613563f,0.768594f}, -{-0.15902f,0.663238f,0.73132f},{-0.271218f,0.702918f,0.657531f},{-0.257402f,0.951051f,-0.171013f}, -{0.981363f,0.0833966f,-0.173124f},{0.99075f,0.0716342f,-0.115248f},{0.973192f,0.181782f,-0.140896f}, -{0.945709f,0.233387f,-0.226198f},{0.914622f,0.287571f,-0.2842f},{0.942306f,0.247063f,-0.225875f}, -{-0.938596f,-0.343675f,-0.030422f},{-0.261763f,0.960149f,-0.097945f},{0.948742f,0.313295f,0.0416476f}, -{-0.95564f,-0.294067f,0.0166649f},{-0.957934f,-0.285956f,0.0243055f},{-0.972972f,-0.208945f,-0.0983253f}, -{-0.979352f,-0.200837f,-0.0230909f},{-0.991689f,-0.0808817f,-0.100057f},{-0.945654f,-0.320158f,-0.0568986f}, -{0.690643f,-0.557553f,-0.460594f},{-0.432122f,-0.506947f,-0.745839f},{0.275703f,-0.688974f,-0.6703f}, -{0.0354541f,0.98518f,-0.167817f},{-0.32858f,-0.451626f,0.829499f},{-0.404259f,-0.441563f,0.800997f}, -{-0.36329f,-0.46504f,0.807315f},{-0.505347f,-0.18888f,-0.841991f},{-0.461011f,-0.138001f,-0.876598f}, -{-0.492927f,-0.276201f,-0.825068f},{0.846028f,0.49353f,0.201657f},{-0.417774f,-0.370217f,0.829701f}, -{-0.372866f,-0.459566f,0.806083f},{-0.301297f,-0.340957f,0.890487f},{0.0386461f,0.5845f,0.810473f}, -{-0.117987f,0.798897f,0.589782f},{-0.252652f,0.769314f,0.586791f},{-0.0898694f,0.716685f,0.691582f}, -{0.984322f,0.159456f,0.0753966f},{0.981936f,0.164752f,0.0930547f},{0.991128f,0.103448f,0.0834458f}, -{0.288081f,0.922413f,0.257223f},{0.196528f,0.928668f,0.314568f},{-0.276998f,0.950331f,0.141926f}, -{-0.947481f,0.302294f,-0.104397f},{-0.880527f,0.290802f,-0.374307f},{-0.982123f,0.082863f,-0.16902f}, -{0.0308069f,0.690279f,0.722888f},{-0.136452f,0.749634f,0.647634f},{-0.0115687f,0.611309f,0.791308f}, -{0.235361f,0.812168f,0.533844f},{0.42321f,0.747665f,0.511752f},{-0.00294655f,0.777584f,0.628772f}, -{-0.0585491f,0.0909536f,-0.994133f},{0.139261f,0.0860385f,-0.986511f},{0.0998423f,0.12309f,-0.98736f}, -{0.103544f,0.953622f,-0.282637f},{0.124829f,0.977293f,-0.171217f},{0.194063f,0.963728f,-0.183217f}, -{-0.464984f,0.339376f,-0.817688f},{-0.437427f,0.436841f,-0.78602f},{-0.428677f,0.450404f,-0.783181f}, -{-0.197968f,0.136253f,-0.970692f},{-0.334069f,0.160007f,-0.928868f},{-0.237943f,0.127333f,-0.962896f}, -{-0.520129f,0.00462802f,-0.854075f},{-0.455464f,0.0948686f,-0.885185f},{-0.332832f,0.0880139f,-0.93887f}, -{-0.481026f,-0.475911f,-0.73629f},{-0.438014f,-0.337269f,-0.833302f},{-0.347452f,-0.547715f,-0.761108f}, -{-0.461713f,-0.302499f,-0.833856f},{-0.29253f,-0.428292f,0.854981f},{-0.254224f,-0.27951f,0.925875f}, -{-0.528736f,-0.202208f,0.824349f},{-0.27128f,-0.0983893f,0.957458f},{-0.119153f,0.0275033f,0.992495f}, -{-0.263646f,0.0184969f,0.964442f},{-0.203003f,-0.0257421f,0.97884f},{0.0881956f,0.0331346f,0.995552f}, -{0.289706f,0.260591f,0.920958f},{0.238046f,0.369706f,0.898138f},{0.186732f,0.437215f,0.879758f}, -{0.160958f,0.506869f,0.846863f},{0.14827f,0.502056f,0.85203f},{-0.00055618f,0.615531f,0.788112f}, -{-0.00716591f,0.635817f,0.771807f},{0.956568f,0.250869f,-0.148464f},{-0.0660797f,0.638031f,-0.76717f}, -{-0.0601667f,0.665157f,-0.744276f},{-0.140985f,0.719068f,-0.680488f},{0.783289f,-0.583404f,-0.214702f}, -{0.948733f,-0.302305f,-0.092287f},{0.965091f,-0.248812f,-0.0818032f},{-0.276455f,0.810676f,0.516117f}, -{-0.396968f,0.850953f,0.343942f},{-0.229114f,0.779813f,0.582579f},{0.119628f,0.98719f,-0.105573f}, -{0.212732f,0.971432f,-0.105193f},{-0.380376f,0.529341f,-0.758362f},{0.0247164f,-0.999286f,-0.0285692f}, -{0.0221136f,-0.999343f,-0.0287203f},{0.0171425f,-0.999755f,-0.01398f},{0.0309597f,-0.415753f,-0.908951f}, -{0.00724507f,-0.383477f,-0.923522f},{0.0188414f,-0.424607f,-0.905182f},{0.210939f,0.157303f,0.964759f}, -{-0.0297303f,0.747411f,0.663697f},{0.933011f,0.289119f,-0.214245f},{0.925733f,0.281444f,-0.252602f}, -{0.903201f,0.364361f,-0.226868f},{0.861819f,-0.100476f,0.497165f},{0.91382f,0.0166522f,0.405778f}, -{0.85081f,0.0456878f,0.523484f},{-0.922116f,0.28202f,-0.264888f},{-0.924562f,0.232143f,-0.302149f}, -{-0.916155f,0.231573f,-0.327161f},{0.801727f,0.22916f,-0.552014f},{0.806146f,0.340978f,-0.483593f}, -{0.844248f,0.252886f,-0.472539f},{-0.900107f,0.432791f,-0.0499879f},{-0.929252f,0.170879f,-0.327554f}, -{-0.889537f,0.200244f,-0.410641f},{-0.909881f,0.119352f,-0.397331f},{0.319048f,-0.927929f,0.19276f}, -{-0.0570574f,-0.998339f,0.00799306f},{-0.837236f,0.0170867f,-0.546575f},{-0.766305f,-0.107681f,-0.633389f}, -{-0.831586f,0.0795901f,-0.549664f},{0.377541f,0.316521f,0.870217f},{0.332509f,0.499481f,0.799972f}, -{0.460076f,0.517386f,0.721555f},{0.79541f,-0.566159f,-0.216304f},{0.911327f,-0.362557f,-0.195027f}, -{-0.74796f,-0.0695523f,-0.660089f},{-0.662762f,-0.235216f,-0.710929f},{-0.539195f,-0.222657f,-0.812214f}, -{0.0218027f,-0.433793f,0.900749f},{-0.00311731f,-0.163603f,0.986521f},{-0.0173914f,0.0456827f,0.998805f}, -{0.0400381f,0.178126f,0.983193f},{0.283483f,0.312944f,0.906479f},{0.134246f,-0.174071f,0.975539f}, -{0.212289f,-0.161507f,0.963768f},{0.229441f,-0.18882f,0.954832f},{0.412163f,0.305418f,0.858395f}, -{0.328776f,0.398539f,0.856197f},{0.424166f,0.363353f,0.829492f},{0.265865f,0.453263f,0.850804f}, -{0.18611f,0.546428f,0.816566f},{0.143454f,0.625752f,0.766718f},{0.120938f,0.656564f,0.744512f}, -{0.932122f,0.322601f,-0.16455f},{0.804729f,0.514737f,-0.29573f},{0.834634f,0.525578f,-0.164783f}, -{-0.988431f,0.0168326f,-0.150736f},{-0.992003f,-0.00163991f,-0.126204f},{-0.967043f,-0.0141034f,-0.254221f}, -{-0.00142562f,-0.579066f,-0.815279f},{-0.125423f,-0.384951f,-0.914375f},{-0.103741f,-0.44905f,-0.887464f}, -{-0.553529f,0.736759f,0.388319f},{-0.678903f,0.627379f,0.381427f},{-0.0588021f,0.897443f,0.437193f}, -{-0.943585f,-0.29927f,-0.141721f},{-0.965152f,-0.168369f,-0.200336f},{0.581388f,-0.170418f,-0.795579f}, -{0.894217f,0.330236f,-0.302192f},{0.891125f,-0.205523f,-0.404545f},{0.210297f,0.767182f,0.605977f}, -{0.00638082f,0.857806f,0.513935f},{0.470693f,0.834009f,0.287883f},{0.370541f,0.871789f,0.320441f}, -{0.440424f,0.862366f,0.249702f},{-0.873822f,-0.484636f,0.0395298f},{-0.891498f,-0.450702f,0.0458181f}, -{-0.87457f,-0.484822f,-0.00871369f},{0.197942f,0.935148f,-0.293798f},{0.197289f,-0.730094f,-0.654248f}, -{0.22188f,-0.765928f,-0.603426f},{0.238886f,-0.773997f,-0.586398f},{-0.683216f,-0.224521f,-0.694842f}, -{-0.127828f,0.30359f,-0.944189f},{-0.0162157f,0.431431f,-0.902f},{-0.193427f,0.498023f,-0.845316f}, -{-0.280182f,-0.707712f,-0.64857f},{-0.079535f,-0.668278f,-0.739648f},{-0.392839f,-0.472588f,-0.788884f}, -{0.176156f,0.338308f,0.924401f},{-0.581431f,0.267686f,-0.768298f},{-0.594621f,0.186383f,-0.782104f}, -{-0.642564f,0.383097f,-0.663587f},{0.0191206f,-0.600232f,0.799598f},{0.100352f,-0.466051f,0.879049f}, -{0.187243f,-0.175769f,0.96646f},{0.209566f,-0.253734f,0.944299f},{0.111776f,-0.225572f,0.967793f}, -{-0.420204f,-0.794529f,-0.438352f},{-0.0541604f,-0.944389f,-0.324339f},{-0.958418f,0.269381f,0.0941702f}, -{-0.924451f,0.370113f,0.0916944f},{-0.950281f,0.306645f,-0.0541689f},{0.980787f,-0.180823f,0.0732094f}, -{0.981284f,-0.17298f,0.0846207f},{-0.0940962f,0.884837f,0.4563f},{-0.534859f,0.744233f,0.400053f}, -{0.718215f,0.189478f,-0.669526f},{0.713162f,0.106936f,-0.692795f},{0.801152f,-0.0516452f,-0.596229f}, -{0.560765f,-0.485962f,-0.67036f},{0.647819f,-0.462094f,-0.60564f},{0.552192f,-0.596363f,-0.582611f}, -{0.461443f,-0.823847f,-0.329161f},{0.839854f,0.511735f,0.181034f},{0.824616f,0.534256f,0.185955f}, -{-0.439976f,0.866796f,0.234702f},{-0.118575f,0.752426f,0.647916f},{0.149029f,0.629448f,0.762618f}, -{0.037462f,0.830588f,0.555625f},{-0.327739f,0.0394449f,0.943944f},{-0.516321f,0.0528115f,0.854765f}, -{-0.414224f,-0.0682792f,0.90761f},{0.288967f,0.0433499f,-0.956357f},{0.275983f,-0.147043f,-0.949848f}, -{0.598083f,-0.304596f,-0.741294f},{0.293406f,-0.917829f,-0.267401f},{0.601447f,-0.775694f,-0.191208f}, -{0.0463522f,0.74153f,0.669317f},{-0.704225f,-0.683019f,-0.193784f},{-0.708969f,-0.696362f,-0.111547f}, -{-0.680494f,-0.689726f,-0.247398f},{-0.443656f,0.340732f,0.828898f},{-0.338882f,0.238957f,0.909977f}, -{-0.467223f,0.237607f,0.851614f},{-0.443441f,-0.0478543f,-0.895025f},{-0.542019f,0.148455f,-0.827149f}, -{-0.496647f,0.0266507f,-0.867543f},{0.452023f,0.320446f,0.83246f},{0.187312f,-0.289498f,0.938672f}, -{0.817561f,0.484433f,-0.311319f},{0.119843f,0.692326f,0.711563f},{-0.5423f,0.839989f,-0.0181133f}, -{-0.589584f,0.802126f,-0.0947837f},{0.272709f,0.847446f,0.455483f},{-0.999451f,0.0035897f,0.0329507f}, -{0.0652443f,0.925068f,0.374155f},{-0.417802f,0.0621403f,0.906411f},{-0.299806f,0.0578951f,0.952242f}, -{-0.230259f,-0.156221f,0.960508f},{-0.482247f,-0.62297f,0.615911f},{-0.72808f,-0.351511f,0.588506f}, -{-0.223557f,0.145718f,0.963737f},{-0.284359f,0.277931f,0.917548f},{-0.394802f,0.167585f,0.903353f}, -{-0.36651f,-0.490079f,-0.790881f},{0.958509f,-0.237533f,-0.157604f},{-0.340748f,-0.792406f,0.505947f}, -{-0.800663f,-0.422511f,0.424763f},{-0.793826f,-0.330462f,0.510524f},{-0.345477f,0.371662f,0.861692f}, -{-0.35377f,0.384884f,0.852474f},{-0.235416f,0.24056f,0.941653f},{-0.00349561f,-0.229967f,0.973192f}, -{-0.452241f,0.131272f,-0.882182f},{0.213681f,-0.17502f,0.961097f},{0.385113f,-0.504767f,0.772592f}, -{0.241816f,0.0985017f,0.96531f},{0.245202f,0.25789f,0.934542f},{0.141131f,0.377939f,0.91501f}, -{0.123254f,0.47787f,0.869741f},{-0.0193965f,0.480999f,0.876507f},{0.220321f,0.498587f,0.838373f}, -{0.158681f,0.595297f,0.787681f},{0.214315f,0.598022f,0.772294f},{0.103356f,-0.545978f,0.8314f}, -{0.198197f,-0.0823329f,0.976698f},{0.65635f,-0.1957f,-0.728633f},{0.628686f,-0.318384f,-0.709497f}, -{0.490731f,-0.0500569f,-0.869872f},{0.996762f,0.0511583f,-0.0620418f},{0.308099f,0.64451f,0.699773f}, -{0.424921f,0.473751f,0.771364f},{0.435549f,0.496107f,0.751116f},{-0.0848771f,-0.255893f,-0.962972f}, -{0.354992f,0.509584f,0.783776f},{0.394104f,0.427023f,0.813839f},{0.585515f,-0.690378f,-0.424912f}, -{0.527878f,-0.549372f,-0.647716f},{0.884681f,-0.463029f,-0.0542522f},{0.022149f,-0.999754f,0.000742555f}, -{-0.0122399f,-0.999713f,0.0206051f},{0.040471f,-0.998944f,0.0217503f},{-0.170834f,0.582988f,-0.794317f}, -{-0.178266f,0.547618f,-0.817518f},{-0.212052f,0.610169f,-0.763366f},{0.825517f,0.493208f,-0.274349f}, -{0.801331f,0.529124f,-0.279101f},{0.818077f,0.552458f,-0.159812f},{0.467831f,-0.658629f,-0.589357f}, -{0.435167f,-0.759272f,-0.483876f},{0.236562f,-0.797224f,-0.555402f},{-0.644491f,0.666855f,0.374081f}, -{-0.00960394f,0.452187f,0.891871f},{-0.177981f,0.559222f,0.809687f},{-0.199909f,0.532918f,0.822213f}, -{0.337658f,0.462369f,0.819879f},{0.229458f,0.26022f,0.937888f},{0.416462f,0.423903f,0.804279f}, -{0.76476f,0.595295f,0.246506f},{-0.929246f,0.137717f,-0.342835f},{-0.875507f,-0.151751f,-0.458759f}, -{-0.894451f,0.21627f,-0.391389f},{0.310225f,0.947793f,0.0738153f},{0.231035f,0.95555f,0.183157f}, -{-0.296947f,0.852665f,0.429865f},{-0.985861f,0.0887629f,-0.142124f},{0.0185413f,0.943008f,0.332254f}, -{0.057313f,0.886239f,0.459669f},{-0.679383f,-0.0801837f,-0.729389f},{0.113925f,-0.311895f,-0.943262f}, -{-0.139823f,0.0525498f,0.988781f},{-0.218846f,0.661597f,0.717214f},{-0.148582f,-0.206342f,-0.967133f}, -{0.7509f,-0.182971f,-0.634563f},{0.420695f,-0.203165f,0.88416f},{-0.420831f,-0.473534f,-0.773736f}, -{-0.229455f,-0.26095f,-0.937686f},{-0.246277f,-0.0434649f,-0.968224f},{0.13588f,0.282837f,0.949495f}, -{0.176315f,0.366131f,0.913707f},{0.116814f,0.371617f,0.921008f},{-0.00480627f,0.35768f,0.933832f}, -{0.0834085f,0.119904f,0.989276f},{0.161637f,-0.054116f,0.985365f},{0.00341052f,0.0398947f,0.999198f}, -{-0.0800531f,-0.726618f,0.682362f},{0.0654456f,-0.609214f,0.790301f},{-0.0633954f,-0.615952f,0.785229f}, -{-0.0539942f,-0.764143f,0.642783f},{0.00401556f,-0.756327f,0.654181f},{0.0838838f,-0.339017f,0.937033f}, -{0.0587523f,-0.4979f,0.865242f},{0.148705f,0.00212254f,0.988879f},{0.182487f,0.0571239f,0.981547f}, -{0.53245f,-0.726799f,-0.43389f},{0.571984f,-0.776758f,-0.263593f},{0.490454f,-0.797822f,-0.350621f}, -{0.914028f,0.298546f,-0.274632f},{0.908921f,0.0880075f,-0.407576f},{0.96965f,0.0520819f,-0.238887f}, -{-0.0686965f,0.325763f,-0.942952f},{-0.109446f,0.392498f,-0.913218f},{-0.132643f,0.414957f,-0.900121f}, -{0.465453f,-0.78761f,-0.403763f},{0.43965f,-0.708592f,-0.551911f},{0.469105f,-0.777133f,-0.419529f}, -{0.453067f,-0.76698f,-0.454393f},{0.454134f,-0.76286f,-0.460225f},{0.876326f,-0.436944f,-0.202812f}, -{0.900929f,-0.413532f,-0.131602f},{0.921355f,-0.355754f,-0.156663f},{-0.0920299f,0.658693f,0.746762f}, -{-0.155912f,0.746973f,0.646315f},{-0.28089f,0.68316f,0.674087f},{-0.0731005f,0.675791f,0.733459f}, -{-0.128286f,0.631681f,0.76454f},{0.210613f,0.314174f,0.925709f},{-0.449802f,0.403711f,-0.796678f}, -{-0.396683f,0.413545f,-0.819526f},{-0.273958f,0.956358f,0.101619f},{0.11902f,0.990924f,0.0624892f}, -{0.108584f,0.967612f,0.227895f},{0.0300621f,0.972509f,0.230917f},{-0.32827f,0.355206f,0.875253f}, -{0.278549f,0.478117f,0.832955f},{0.288245f,0.594488f,0.750666f},{0.0643547f,0.0265242f,0.997575f}, -{0.207224f,-0.0685004f,0.975892f},{0.0639272f,0.178665f,0.981831f},{-0.0313133f,-0.861465f,-0.506851f}, -{0.132764f,-0.817868f,-0.55988f},{0.122697f,-0.893873f,-0.431204f},{0.988041f,0.149777f,-0.036627f}, -{0.970806f,0.237743f,-0.0318535f},{0.982795f,0.17944f,0.0437546f},{0.252469f,0.598346f,0.760422f}, -{0.26065f,0.585606f,0.767547f},{0.264146f,0.574259f,0.774889f},{0.906751f,-0.385086f,-0.171788f}, -{0.684151f,-0.723747f,0.0901569f},{0.773584f,-0.525695f,0.353853f},{0.990162f,-0.133992f,0.0403111f}, -{-0.989415f,0.0943284f,0.110271f},{-0.493016f,-0.774648f,-0.39605f},{0.19466f,0.662258f,0.723548f}, -{0.559884f,0.373378f,0.739675f},{0.320414f,0.527874f,0.786564f},{0.974845f,-0.221106f,0.0280791f}, -{0.987799f,-0.15154f,0.0359129f},{0.948007f,-0.317943f,-0.0139217f},{0.807472f,-0.295769f,-0.510401f}, -{0.831477f,-0.257606f,-0.492224f},{0.830739f,-0.29772f,-0.470357f},{0.629038f,-0.619501f,-0.469605f}, -{0.731654f,-0.44459f,-0.516742f},{0.663327f,-0.609815f,-0.43373f},{-0.888495f,-0.373328f,0.266838f}, -{-0.853903f,-0.411981f,0.317996f},{-0.871296f,-0.349591f,0.344428f},{0.173781f,0.830788f,-0.528764f}, -{0.214551f,0.837516f,-0.502528f},{0.326037f,0.775801f,-0.540215f},{-0.109706f,-0.228527f,0.967336f}, -{-0.147056f,-0.079098f,0.98596f},{-0.19074f,0.0999919f,0.976535f},{0.678873f,-0.52574f,-0.512571f}, -{0.362062f,-0.744174f,-0.561351f},{-0.991329f,0.122094f,0.0485786f},{-0.974345f,0.217247f,-0.0587819f}, -{-0.287749f,0.942918f,0.167646f},{-0.360444f,0.226196f,0.90494f},{-0.212829f,0.253452f,0.943645f}, -{-0.1543f,0.180708f,0.971358f},{-0.240401f,0.248335f,0.938369f},{-0.281255f,0.382109f,0.880277f}, -{-0.291117f,0.434942f,0.852101f},{-0.241476f,0.380203f,0.892824f},{-0.138281f,0.282514f,0.949244f}, -{-0.118735f,0.0590326f,0.99117f},{0.794851f,-0.419047f,-0.438875f},{0.232186f,0.0291142f,0.972236f}, -{0.121233f,-0.0318358f,0.992113f},{0.199799f,0.0839047f,0.976238f},{0.346783f,-0.915641f,-0.203328f}, -{0.193206f,-0.847024f,-0.495199f},{0.289267f,-0.947851f,-0.133803f},{0.348006f,0.499509f,0.793336f}, -{0.208545f,0.31167f,0.927023f},{0.176429f,0.45395f,0.873386f},{0.131126f,-0.651578f,0.747162f}, -{0.477843f,0.446816f,0.756321f},{0.344739f,0.568001f,0.747349f},{0.900389f,-0.107033f,-0.421715f}, -{0.929053f,-0.117313f,-0.350853f},{0.924176f,-0.147349f,-0.352402f},{-0.0313202f,0.13272f,0.990659f}, -{-0.119674f,0.169113f,0.978304f},{0.0505059f,-0.0361727f,0.998068f},{0.178549f,0.161106f,0.970652f}, -{0.30095f,0.0349999f,0.952997f},{0.886396f,0.461951f,0.030055f},{0.869061f,0.492341f,-0.0483173f}, -{0.857969f,0.51363f,0.0086094f},{0.914986f,-0.377543f,-0.142346f},{0.93273f,-0.351435f,-0.0806737f}, -{0.927026f,-0.374765f,-0.0131579f},{0.946514f,-0.00024888f,-0.322663f},{-0.276014f,0.950969f,-0.139548f}, -{-0.264043f,0.963609f,-0.0416947f},{-0.23099f,0.971773f,0.0479709f},{-0.156866f,0.9795f,0.126387f}, -{-0.314375f,0.932833f,0.176042f},{-0.0245953f,0.890615f,0.454092f},{-0.448809f,-0.0923177f,0.888846f}, -{-0.502441f,-0.0916905f,0.859736f},{0.276028f,0.933338f,-0.229541f},{0.314576f,0.894929f,-0.316455f}, -{0.285181f,0.94836f,-0.13887f},{0.110223f,0.0102139f,0.993854f},{0.211547f,0.0628589f,0.975344f}, -{0.321092f,-0.0486882f,0.945795f},{-0.0376397f,0.660927f,0.749506f},{-0.00832555f,-0.522454f,0.852627f}, -{-0.132767f,-0.384428f,0.913558f},{0.223466f,0.216042f,0.950468f},{0.238549f,0.376728f,0.895081f}, -{0.238472f,0.243627f,0.940094f},{0.302267f,0.125011f,0.94499f},{0.248175f,0.366485f,0.896715f}, -{0.168671f,0.349832f,0.921503f},{0.199354f,0.22033f,0.954836f},{0.273515f,0.176255f,0.945581f}, -{0.191339f,0.153628f,0.969427f},{-0.0112707f,0.119995f,0.99271f},{0.0725509f,0.159063f,0.984599f}, -{-0.00629055f,0.274279f,0.96163f},{0.277965f,0.117253f,0.953408f},{0.110563f,-0.343456f,0.932638f}, -{0.216365f,-0.123f,0.968534f},{0.900057f,0.245717f,0.359889f},{0.863173f,0.257873f,0.43409f}, -{0.881976f,0.160588f,0.443091f},{0.370564f,-0.353545f,0.858888f},{0.336535f,-0.0878704f,0.937562f}, -{0.256114f,-0.421237f,0.870037f},{0.905595f,0.0066398f,-0.424091f},{0.932738f,0.00768876f,-0.360474f}, -{0.937288f,0.0876965f,-0.337345f},{-0.0369066f,-0.945463f,0.323632f},{-0.118818f,-0.685618f,0.718199f}, -{-0.0967924f,-0.804577f,0.585907f},{0.916949f,0.263347f,-0.299756f},{0.898078f,0.264743f,-0.351236f}, -{-0.75019f,0.547434f,0.370853f},{-0.604395f,0.689198f,0.399641f},{-0.672897f,0.729871f,0.120408f}, -{-0.245761f,-0.73762f,-0.628903f},{-0.470701f,-0.346268f,-0.811504f},{0.0348372f,-0.579103f,-0.81451f}, -{-0.230634f,-0.210479f,0.950003f},{-0.274659f,-0.0711949f,0.958902f},{-0.350123f,-0.292919f,0.889726f}, -{-0.320295f,0.106153f,0.941352f},{-0.450114f,0.11922f,0.884977f},{0.136917f,0.164934f,0.976755f}, -{0.20114f,-0.423575f,0.883248f},{0.269589f,0.227421f,0.935736f},{0.256735f,0.173565f,0.950769f}, -{0.297017f,0.215377f,0.930266f},{0.300127f,-0.148128f,0.942328f},{-0.16051f,-0.429314f,-0.888778f}, -{-0.0358626f,-0.295419f,-0.954694f},{-0.0163357f,-0.445626f,-0.89507f},{0.458862f,-0.882519f,-0.10298f}, -{0.414609f,-0.88476f,-0.212836f},{0.489972f,-0.830752f,-0.264156f},{-0.079701f,-0.146064f,0.986059f}, -{-0.0857675f,-0.0777074f,0.99328f},{0.00161508f,-0.337113f,0.941463f},{0.280664f,-0.42611f,0.860034f}, -{-0.643998f,-0.577076f,-0.502246f},{-0.0959296f,-0.748871f,-0.655736f},{0.986673f,0.113871f,0.116232f}, -{0.948721f,0.230491f,0.21634f},{0.944986f,0.307393f,0.111848f},{0.960212f,-0.067786f,-0.27092f}, -{0.960641f,-0.049122f,-0.273417f},{0.967143f,-0.0398146f,-0.251094f},{0.91918f,0.127727f,-0.37255f}, -{0.949064f,0.123437f,-0.289897f},{0.568969f,0.205887f,0.796169f},{0.844097f,0.53266f,-0.0614229f}, -{0.137129f,0.880111f,0.454534f},{0.246395f,0.858197f,0.450319f},{-0.269803f,0.959994f,0.0749557f}, -{0.234905f,0.788011f,0.569085f},{-0.389489f,0.854769f,0.343027f},{-0.959211f,0.275599f,0.0629244f}, -{-0.953233f,0.301814f,0.0159892f},{-0.949614f,0.309566f,0.0490065f},{0.403744f,0.911277f,-0.0810251f}, -{0.923159f,0.364994f,0.120653f},{-0.62943f,-0.776664f,0.0247036f},{-0.652388f,-0.757587f,-0.0212481f}, -{-0.44652f,-0.894258f,-0.030358f},{-0.0901651f,-0.339501f,0.936274f},{-0.0379441f,-0.271751f,0.961619f}, -{-0.332831f,-0.401591f,0.853199f},{-0.0344199f,-0.209496f,0.977203f},{-0.126661f,-0.114418f,0.985325f}, -{-0.148426f,0.0111855f,0.98886f},{-0.295706f,0.235843f,0.925708f},{-0.369193f,0.300019f,0.879594f}, -{-0.309604f,0.364565f,0.878201f},{-0.187306f,0.220824f,0.957159f},{-0.158949f,0.314932f,0.93571f}, -{-0.161938f,0.456189f,0.875024f},{-0.148022f,0.444858f,0.883284f},{0.739283f,-0.653128f,-0.163966f}, -{0.86335f,-0.487178f,-0.131467f},{0.933787f,0.353346f,-0.0564575f},{-0.0460242f,-0.614627f,-0.787474f}, -{-0.113948f,-0.561688f,-0.819465f},{0.0168824f,-0.095401f,0.995296f},{-0.274895f,-0.200561f,0.940323f}, -{0.0946811f,0.635809f,0.766018f},{0.231209f,-0.764021f,0.60234f},{0.142163f,-0.126555f,0.98172f}, -{0.25344f,0.386675f,0.886708f},{0.250599f,0.501617f,0.827998f},{0.195129f,0.482999f,0.853602f}, -{0.0557201f,0.685491f,0.725946f},{-0.0774665f,0.667998f,0.74012f},{-0.0840826f,0.594974f,0.799335f}, -{0.01558f,0.551834f,0.833808f},{0.00736914f,0.617291f,0.786701f},{-0.0983184f,0.553799f,0.826825f}, -{0.18891f,0.283061f,-0.940314f},{0.178401f,0.241742f,-0.9538f},{0.100226f,0.273544f,-0.956623f}, -{0.769923f,-0.243603f,0.58981f},{0.77465f,-0.286361f,0.563839f},{0.69038f,-0.0458631f,0.721991f}, -{-0.327666f,0.777839f,0.536285f},{-0.342358f,0.791542f,0.506214f},{-0.327755f,0.859105f,0.393083f}, -{0.883778f,0.438968f,0.162f},{0.877874f,0.383199f,0.287219f},{0.0517423f,0.993679f,-0.0996198f}, -{0.13168f,0.990813f,-0.0308326f},{-0.229953f,-0.378124f,0.896741f},{0.140701f,0.329084f,0.93376f}, -{0.173597f,0.234941f,0.956382f},{0.286773f,-0.404816f,0.868266f},{0.409235f,-0.270151f,0.871519f}, -{-0.379485f,-0.523586f,-0.76279f},{-0.483885f,-0.460032f,-0.744464f},{-0.429615f,-0.568608f,-0.70151f}, -{0.165898f,0.0505138f,0.984848f},{0.185924f,0.175633f,0.96674f},{0.14884f,0.141895f,0.978628f}, -{0.0918044f,0.142985f,0.985458f},{0.0755089f,0.581447f,0.810073f},{0.333992f,-0.909345f,-0.248074f}, -{0.442823f,-0.869149f,-0.220199f},{0.669263f,-0.711774f,-0.213223f},{0.329347f,-0.663973f,0.671319f}, -{0.307978f,-0.627619f,0.715013f},{0.2937f,-0.525645f,0.798397f},{0.459327f,-0.888265f,0.00217148f}, -{0.553339f,-0.766244f,0.32663f},{0.416483f,-0.890913f,-0.18115f},{0.448413f,-0.472512f,0.758722f}, -{0.463214f,-0.583903f,0.666701f},{0.0228558f,0.153535f,0.987879f},{0.108558f,0.236491f,0.96555f}, -{0.728112f,-0.605165f,-0.321914f},{0.858305f,-0.313243f,-0.406437f},{0.599198f,0.0898905f,0.795539f}, -{0.819297f,0.491738f,0.294864f},{0.243573f,-0.893407f,-0.377487f},{0.196902f,-0.829986f,-0.521874f}, -{0.788151f,-0.606299f,0.105922f},{-0.0230661f,0.00367931f,-0.999727f},{0.0283941f,0.0276503f,-0.999214f}, -{0.0669312f,0.0129073f,-0.997674f},{-0.334345f,-0.481378f,0.81024f},{-0.309593f,-0.428943f,0.848622f}, -{-0.302578f,-0.400369f,0.864958f},{-0.254114f,0.379369f,0.889666f},{0.498502f,0.24239f,0.832312f}, -{0.615686f,0.102185f,0.781338f},{0.553289f,0.0582414f,0.830951f},{-0.00204334f,-0.480179f,0.877168f}, -{-0.0856082f,-0.206093f,0.97478f},{0.327397f,-0.357655f,0.874582f},{0.215444f,-0.466779f,0.85773f}, -{0.162921f,-0.132008f,0.977768f},{0.0647925f,0.233047f,0.970305f},{0.111038f,0.205046f,0.972433f}, -{0.0158613f,-0.0419174f,0.998995f},{0.341844f,-0.269747f,0.900211f},{0.116874f,-0.149929f,0.981765f}, -{0.191889f,-0.0992769f,0.976382f},{0.0101111f,0.773999f,0.633107f},{-0.0530789f,0.700445f,0.71173f}, -{0.511712f,-0.845175f,-0.154368f},{0.850173f,-0.499442f,-0.166622f},{0.846485f,-0.503522f,-0.172997f}, -{0.82965f,-0.522815f,-0.195821f},{0.023405f,-0.999625f,-0.0142142f},{0.0242401f,-0.999656f,-0.00998008f}, -{-0.000303005f,-0.999841f,-0.017843f},{-0.933294f,0.332437f,0.135822f},{-0.881595f,0.351294f,0.31525f}, -{-0.928424f,0.283676f,0.239911f},{-0.772711f,0.476617f,-0.41923f},{-0.402891f,0.911185f,-0.0861461f}, -{-0.76101f,0.648736f,0.0022703f},{-0.525614f,0.828955f,-0.191216f},{-0.187238f,0.982224f,-0.0133145f}, -{-0.147426f,0.988429f,-0.0356911f},{-0.248234f,-0.244597f,-0.937311f},{-0.198606f,-0.362544f,-0.910559f}, -{0.3608f,-0.683461f,-0.63459f},{0.0953136f,0.0853679f,-0.99178f},{0.51823f,-0.849414f,-0.0996677f}, -{0.814328f,-0.553142f,-0.175794f},{0.748936f,-0.635619f,-0.187304f},{-0.191851f,-0.439151f,0.87769f}, -{-0.228831f,-0.274946f,0.933831f},{-0.144682f,-0.240387f,0.959834f},{0.0186087f,-0.229308f,0.973176f}, -{0.0844466f,-0.272325f,0.958493f},{0.048156f,-0.214678f,0.975497f},{0.0185073f,-0.0533244f,0.998406f}, -{-0.0645704f,0.122728f,0.990338f},{-0.0960451f,0.353497f,0.930492f},{-0.123316f,0.466299f,0.87599f}, -{-0.101722f,0.334442f,0.93691f},{-0.130158f,0.278541f,0.951564f},{-0.134554f,0.476146f,0.869011f}, -{-0.0530084f,0.525905f,0.84889f},{-0.164811f,0.321452f,0.932473f},{0.0823322f,0.227239f,0.970353f}, -{-0.0657198f,0.130476f,0.989271f},{-0.0768859f,-0.720243f,0.689448f},{0.239307f,0.762061f,0.601661f}, -{0.112851f,0.567339f,0.815715f},{0.141879f,0.648949f,0.747486f},{0.203347f,0.494481f,0.845067f}, -{-0.0796564f,-0.697736f,0.711913f},{-0.0953443f,-0.671122f,0.73519f},{-0.964209f,-0.241382f,0.109707f}, -{-0.972866f,-0.118573f,0.198676f},{-0.962037f,-0.177494f,0.207316f},{0.376109f,0.345327f,0.859821f}, -{0.260354f,0.334831f,0.905596f},{0.413984f,0.0796125f,0.906796f},{0.206149f,0.427033f,0.880423f}, -{0.255093f,0.478282f,0.840342f},{0.186982f,0.425432f,0.885463f},{0.188722f,0.418679f,0.888308f}, -{0.932563f,-0.313456f,-0.179087f},{0.00751608f,-0.992196f,0.124464f},{0.61083f,0.754516f,0.239982f}, -{0.210359f,0.975986f,0.0565786f},{0.237949f,0.971085f,-0.0193416f},{-0.992479f,-0.119535f,-0.0264097f}, -{-0.991905f,0.122125f,-0.0347969f},{-0.994124f,0.0788717f,-0.0741417f},{0.317099f,0.917356f,0.240638f}, -{-0.9839f,0.176112f,-0.0304254f},{-0.229285f,0.931458f,-0.282516f},{-0.249293f,0.95181f,-0.178636f}, -{-0.380595f,-0.0953641f,-0.919811f},{-0.356386f,-0.185595f,-0.91572f},{-0.532308f,0.33788f,-0.7762f}, -{-0.623105f,0.373117f,-0.687404f},{-0.591311f,0.340755f,-0.730915f},{-0.0939356f,0.50456f,-0.858251f}, -{-0.0584824f,0.31504f,-0.947275f},{-0.0717267f,0.392258f,-0.917055f},{-0.409762f,-0.0557136f,-0.91049f}, -{-0.432608f,0.0796261f,-0.898059f},{-0.290013f,-0.0614834f,-0.955046f},{-0.253383f,-0.515742f,0.818418f}, -{-0.147352f,0.43482f,0.88838f},{0.948899f,-0.0521516f,-0.311241f},{0.175427f,0.203394f,-0.963253f}, -{0.284098f,-0.0864908f,0.954886f},{0.156203f,-0.102557f,0.982386f},{-0.0343121f,-0.670962f,0.740697f}, -{0.282425f,0.113884f,0.952505f},{0.252265f,-0.0799734f,0.964348f},{0.608191f,-0.555626f,-0.566907f}, -{-0.281625f,0.0199879f,-0.959316f},{-0.321533f,0.14723f,-0.935382f},{0.00403764f,-0.409977f,0.912087f}, -{0.296786f,0.412455f,0.861278f},{0.314424f,0.491877f,0.811908f},{0.15597f,-0.148834f,0.976484f}, -{-0.265697f,-0.575302f,0.773585f},{-0.0127738f,-0.679576f,0.733494f},{-0.326234f,-0.480712f,0.813933f}, -{-0.872833f,-0.464274f,-0.150372f},{-0.994023f,0.0946819f,-0.0543493f},{-0.550761f,-0.834547f,0.0139191f}, -{0.0263528f,0.37496f,0.926666f},{0.216957f,0.471372f,0.854832f},{0.778666f,0.0794795f,0.622385f}, -{0.595223f,-0.107183f,0.79638f},{0.0160022f,0.466013f,0.884633f},{-0.217392f,0.653551f,0.72499f}, -{-0.331892f,-0.59942f,-0.728384f},{-0.200273f,-0.752239f,-0.627716f},{0.510712f,-0.829747f,-0.225151f}, -{0.546848f,-0.823202f,-0.15263f},{0.255635f,-0.202235f,0.945384f},{0.233842f,-0.286493f,0.929107f}, -{0.308997f,0.326208f,0.893369f},{0.539946f,0.154095f,0.827474f},{0.536519f,0.226703f,0.812867f}, -{-0.013535f,0.996342f,0.0843795f},{-0.430286f,-0.0933455f,-0.897853f},{-0.293771f,-0.0785507f,-0.952643f}, -{-0.316683f,-0.174593f,-0.932325f},{-0.616447f,0.263836f,-0.741878f},{-0.584456f,0.323832f,-0.744006f}, -{-0.533083f,0.332606f,-0.777943f},{-0.470009f,0.0371177f,-0.881881f},{-0.313697f,-0.230665f,-0.92108f}, -{-0.095108f,-0.430469f,0.89758f},{-0.205516f,-0.31961f,0.924993f},{-0.271736f,-0.129682f,0.953594f}, -{-0.16233f,-0.128129f,0.978382f},{-0.103393f,-0.147975f,0.983572f},{0.0371042f,-0.0618592f,0.997395f}, -{0.0800676f,0.0692281f,0.994383f},{0.0655334f,0.326109f,0.943058f},{0.0500331f,0.458989f,0.887032f}, -{-0.012976f,0.250275f,0.968088f},{-0.00278086f,0.254525f,0.967062f},{-0.00602506f,0.403435f,0.914989f}, -{-0.0166253f,0.507921f,0.861243f},{-0.066194f,0.569683f,0.819194f},{0.00612044f,0.50687f,0.862001f}, -{0.087804f,0.358904f,0.929235f},{0.135736f,0.0527765f,0.989338f},{0.219893f,0.0168975f,0.975378f}, -{0.155385f,0.67077f,0.725205f},{0.0911761f,0.307906f,0.947038f},{0.380764f,-0.112959f,0.917747f}, -{0.484482f,-0.25873f,0.835665f},{0.173278f,-0.0255334f,0.984542f},{-0.119044f,0.0165311f,0.992751f}, -{-0.0621672f,-0.226799f,0.971955f},{0.168582f,-0.017391f,0.985534f},{0.192135f,-0.114706f,0.974642f}, -{0.0907603f,0.0712779f,0.993319f},{0.900404f,0.273238f,-0.338546f},{0.867039f,0.330615f,-0.372743f}, -{0.817124f,0.438432f,-0.374281f},{0.272694f,0.0257412f,0.961756f},{-0.264704f,0.876336f,0.402451f}, -{-0.374633f,0.788444f,0.487858f},{-0.239863f,-0.388392f,-0.889729f},{0.322604f,-0.898675f,-0.297171f}, -{0.110378f,0.0512505f,-0.992567f},{0.195878f,0.100581f,-0.975456f},{-0.299195f,0.368799f,-0.88004f}, -{-0.281542f,0.416945f,-0.864229f},{-0.334622f,0.516404f,-0.788261f},{-0.388498f,-0.387132f,-0.836181f}, -{-0.413425f,-0.223328f,-0.882726f},{-0.528806f,-0.229046f,-0.817253f},{-0.567126f,0.252032f,-0.784123f}, -{-0.0622147f,-0.575088f,0.815722f},{-0.262476f,-0.0975698f,0.959993f},{-0.27464f,-0.0410216f,0.960672f}, -{0.863329f,0.259147f,-0.43302f},{0.79449f,0.262755f,-0.547491f},{0.948858f,-0.049514f,-0.311796f}, -{-0.00933192f,0.0898895f,0.995908f},{-0.0154903f,0.0603768f,0.998055f},{0.233006f,0.519745f,0.821933f}, -{0.252677f,0.61801f,0.744458f},{-0.995603f,0.0694375f,-0.062876f},{-0.984647f,0.104033f,-0.140169f}, -{0.834566f,0.388194f,-0.390903f},{0.776226f,0.519924f,-0.356584f},{0.231295f,-0.0027237f,0.97288f}, -{0.123915f,0.171485f,0.977363f},{-0.278264f,0.885621f,0.371812f},{-0.208952f,0.742162f,0.636816f}, -{0.328508f,0.831803f,0.447423f},{-0.790702f,0.415924f,-0.449218f},{-0.592127f,0.348571f,-0.726556f}, -{-0.830674f,0.424403f,-0.360365f},{-0.62552f,0.184799f,-0.758006f},{-0.707192f,0.19258f,-0.680289f}, -{-0.613638f,0.127083f,-0.779293f},{-0.11711f,0.556457f,-0.822582f},{-0.179243f,-0.348841f,0.919881f}, -{0.214004f,0.377502f,0.900941f},{0.205075f,0.336747f,0.918992f},{0.174838f,0.422701f,0.889244f}, -{0.995333f,0.0317781f,-0.0911228f},{0.190036f,0.479935f,0.856475f},{0.231393f,0.433377f,0.871f}, -{0.0713411f,0.536196f,0.841073f},{0.461727f,-0.531031f,0.710503f},{0.642623f,-0.481829f,0.595716f}, -{0.0459413f,-0.172653f,-0.983911f},{-0.0211f,-0.331505f,-0.943218f},{-0.40236f,-0.188535f,-0.895858f}, -{-0.0220802f,0.497801f,0.86701f},{-0.261378f,0.528952f,0.807398f},{-0.310862f,0.246872f,0.917834f}, -{0.0737522f,0.294186f,0.952898f},{-0.0285864f,0.741674f,0.670151f},{0.130811f,0.779388f,0.612734f}, -{-0.329985f,0.70659f,0.625971f},{-0.150434f,0.157564f,-0.975983f},{-0.491554f,0.143916f,-0.858873f}, -{-0.549467f,0.207409f,-0.809362f},{0.0243846f,-0.998918f,-0.0395968f},{0.0154174f,-0.997923f,-0.0625502f}, -{-9.56649e-05f,-0.999511f,-0.031265f},{-0.0736797f,-0.847043f,0.526393f},{0.264565f,-0.526851f,0.807734f}, -{0.0778558f,-0.911717f,0.403374f},{-0.0722179f,-0.489121f,0.869221f},{-0.0497511f,-0.601297f,0.797475f}, -{0.0221068f,-0.414748f,0.909668f},{-0.024475f,-0.345695f,0.938028f},{-0.00234594f,-0.214816f,0.976652f}, -{-0.13038f,-0.0390172f,0.990696f},{-0.113822f,-0.00113113f,0.9935f},{0.00753531f,0.0784319f,0.996891f}, -{0.162659f,0.186062f,0.96898f},{0.197465f,0.373061f,0.90655f},{0.0726495f,0.270119f,0.960082f}, -{-0.00348439f,0.248771f,0.968556f},{0.132326f,0.32448f,0.936591f},{0.125685f,0.424566f,0.896631f}, -{0.153659f,0.430838f,0.889251f},{0.0608871f,0.531499f,0.844868f},{0.0273649f,0.554899f,0.831467f}, -{0.23097f,0.2435f,0.941998f},{0.391681f,-0.408344f,0.824525f},{-0.0899755f,-0.418629f,0.903689f}, -{-0.028856f,-0.230136f,0.972731f},{0.192937f,0.450434f,0.871714f},{0.304815f,0.404069f,0.862448f}, -{0.121643f,0.294766f,0.947795f},{0.0704177f,0.301208f,0.950955f},{-0.0185777f,0.496515f,0.867829f}, -{0.30631f,-0.12352f,0.943884f},{0.0381325f,-0.0587734f,0.997543f},{0.168162f,0.216513f,0.961688f}, -{0.17938f,0.201108f,0.963005f},{0.752987f,-0.233579f,-0.615184f},{0.752213f,-0.142831f,-0.643253f}, -{0.770254f,-0.2229f,-0.597515f},{-0.0432317f,0.381112f,0.923518f},{0.626181f,-0.779599f,0.0110793f}, -{0.621676f,-0.776663f,0.101553f},{0.521547f,-0.846536f,0.106608f},{0.344659f,-0.897823f,-0.274087f}, -{0.170478f,0.931913f,0.320119f},{0.0544409f,0.956743f,0.285794f},{-0.285666f,0.883754f,0.370641f}, -{-0.486945f,0.656165f,0.576482f},{-0.475298f,0.151973f,-0.8666f},{-0.169494f,-0.477562f,-0.862094f}, -{-0.0223069f,-0.554443f,-0.831923f},{0.19763f,0.0676612f,-0.977939f},{0.12502f,0.240439f,-0.96258f}, -{0.096951f,0.348996f,-0.932096f},{0.106352f,0.388327f,0.915364f},{0.186485f,0.465086f,0.865401f}, -{0.085202f,0.629671f,0.772176f},{-0.640431f,-0.404267f,-0.653006f},{-0.780979f,-0.316721f,-0.538294f}, -{-0.865468f,-0.312483f,-0.39156f},{0.0972787f,-0.197405f,0.975483f},{-0.0786699f,0.434336f,0.897309f}, -{-0.076951f,0.450712f,0.889346f},{-0.0668306f,0.439939f,0.895537f},{0.156395f,0.469386f,0.869033f}, -{0.394926f,-0.0689772f,0.91612f},{0.144095f,0.697262f,0.702184f},{0.268524f,0.659339f,0.702259f}, -{0.137937f,0.582651f,0.800932f},{-0.150031f,0.52089f,0.840336f},{-0.157645f,0.567902f,0.807858f}, -{-0.0967734f,0.630328f,0.770274f},{0.622746f,0.181545f,0.761071f},{0.239313f,0.574192f,0.782964f}, -{0.108848f,0.65576f,0.747082f},{0.711315f,0.172817f,0.681297f},{0.874118f,0.338625f,-0.348211f}, -{0.849983f,0.440713f,-0.288621f},{0.82446f,0.469055f,0.316627f},{0.839611f,0.504318f,0.201784f}, -{0.839027f,0.51583f,0.173072f},{-0.0827286f,0.994895f,-0.0577841f},{-0.0780838f,0.996946f,-0.00112269f}, -{-0.0196054f,0.999522f,-0.0238855f},{0.331187f,0.80367f,0.494399f},{0.464725f,0.734652f,0.494285f}, -{-0.657859f,0.081471f,0.748722f},{-0.601514f,-0.443733f,0.66429f},{-0.284661f,-0.303841f,0.909202f}, -{-0.573281f,0.338316f,-0.746251f},{-0.481339f,0.161541f,-0.861521f},{-0.512204f,0.100924f,-0.852913f}, -{-0.362885f,0.109735f,-0.92535f},{-0.104948f,0.555117f,0.825125f},{0.165705f,0.470171f,0.86688f}, -{0.168167f,0.431262f,0.886416f},{0.162941f,-0.206219f,0.964844f},{-0.0583317f,-0.297053f,0.953078f}, -{0.354429f,-0.0278913f,0.934667f},{0.251351f,0.451336f,0.856223f},{0.280874f,0.479454f,0.831405f}, -{-0.140207f,0.763332f,0.630608f},{0.0888948f,0.824089f,0.559442f},{0.236753f,0.565998f,0.78968f}, -{0.276147f,0.490722f,0.826399f},{0.165164f,0.456367f,0.874328f},{0.884691f,0.122447f,0.44981f}, -{0.470696f,0.578142f,0.666482f},{0.885033f,-0.390748f,0.253046f},{0.629966f,-0.274177f,-0.726615f}, -{0.647971f,-0.158293f,-0.745035f},{0.611495f,-0.0616235f,-0.788845f},{0.639939f,-0.751124f,-0.162144f}, -{0.673719f,-0.105217f,-0.731459f},{0.639491f,-0.601652f,0.478608f},{0.513526f,-0.849419f,0.121567f}, -{0.610413f,-0.647956f,0.455575f},{0.334601f,0.299348f,0.893551f},{0.0441093f,0.711599f,0.7012f}, -{0.181251f,0.742361f,0.645018f},{0.00122868f,0.846108f,0.53301f},{-0.281939f,0.868014f,0.408732f}, -{-0.471426f,0.186922f,-0.861869f},{-0.580898f,0.240434f,-0.777656f},{-0.583811f,0.05227f,-0.810205f}, -{0.0320676f,-0.999039f,-0.0298842f},{0.018545f,-0.99914f,-0.0370961f},{0.0146236f,-0.99989f,-0.0025338f}, -{-0.0617785f,-0.382466f,0.921902f},{-0.00404173f,-0.25056f,0.968093f},{0.122372f,-0.278325f,0.95266f}, -{0.0523822f,-0.161823f,0.985429f},{-0.0111141f,-0.0130864f,0.999853f},{0.0363037f,0.192458f,0.980633f}, -{-0.0404656f,0.143099f,0.988881f},{0.0160188f,0.175992f,0.984261f},{-0.210937f,0.0895094f,0.973393f}, -{-0.109152f,0.311871f,0.943834f},{0.0474923f,0.41157f,0.91014f},{0.0645066f,0.39909f,0.91464f}, -{-0.00659182f,0.496609f,0.867949f},{-0.0486732f,0.553081f,0.831704f},{0.0117206f,0.595074f,0.803586f}, -{0.0765092f,0.587289f,0.805753f},{0.347041f,0.370975f,0.861359f},{0.0452194f,0.614496f,0.787623f}, -{0.00440938f,0.620018f,0.784575f},{0.0859346f,0.688023f,0.720583f},{0.0447807f,0.383445f,0.922477f}, -{0.195784f,0.612478f,0.765859f},{0.145692f,0.695086f,0.704009f},{-0.00125758f,0.736867f,0.676037f}, -{0.24172f,0.519188f,0.819766f},{0.285311f,0.497986f,0.818906f},{0.460259f,-0.715681f,-0.525322f}, -{0.983586f,0.0216339f,0.179138f},{0.943684f,0.208261f,0.257076f},{0.981252f,0.0914436f,0.169655f}, -{0.14865f,0.0434738f,0.987934f},{-0.0207364f,0.626854f,0.778861f},{0.0720591f,0.436571f,0.89678f}, -{0.139963f,0.204553f,0.968797f},{-0.995807f,-0.0625395f,0.066763f},{-0.212539f,0.290927f,-0.932839f}, -{-0.418814f,0.226659f,-0.87933f},{0.0559445f,-0.155077f,0.986317f},{-0.202485f,-0.659883f,-0.723571f}, -{0.271867f,0.425229f,0.863289f},{0.235252f,0.505083f,0.83039f},{-0.14351f,0.68616f,0.713155f}, -{-0.393631f,0.778218f,0.489317f},{-0.220183f,0.743723f,0.631186f},{0.00776272f,0.335611f,0.941969f}, -{0.91128f,0.340794f,-0.231146f},{0.876158f,0.161572f,0.454138f},{0.824709f,0.261035f,0.501712f}, -{-0.512031f,0.218737f,0.83065f},{0.299492f,0.57243f,0.763301f},{0.443001f,0.393616f,0.805491f}, -{-0.350699f,0.860797f,0.368836f},{-0.485456f,0.0648393f,-0.871853f},{-0.570127f,0.246992f,-0.78355f}, -{-0.483251f,-0.0510707f,-0.873991f},{-0.510278f,-0.349902f,-0.785611f},{-0.500311f,-0.348015f,-0.792827f}, -{0.121175f,0.0514562f,-0.991297f},{-0.881409f,-0.279087f,-0.381089f},{-0.51307f,-0.43176f,-0.741851f}, -{-0.655812f,-0.39313f,-0.644484f},{-0.156642f,0.119218f,0.980434f},{-0.0217293f,0.0257904f,0.999431f}, -{-0.637142f,0.394017f,0.66242f},{0.108426f,0.88485f,0.453084f},{0.426378f,-0.185955f,0.885225f}, -{-0.0933708f,0.463751f,0.881032f},{-0.0882345f,0.196905f,0.976444f},{0.0172453f,0.226536f,0.97385f}, -{-0.0643816f,0.38211f,0.921871f},{-0.0728973f,0.463505f,0.88309f},{0.99305f,0.0973475f,0.0661499f}, -{0.993768f,0.090838f,0.0645981f},{0.99306f,0.0946657f,0.0697913f},{0.477953f,0.386349f,0.788857f}, -{0.0407022f,0.683789f,0.728544f},{0.0318931f,0.748566f,0.662293f},{0.181964f,-0.732915f,-0.655534f}, -{0.243709f,0.468222f,0.849337f},{0.153119f,0.654531f,0.740367f},{0.0758308f,0.737048f,0.671573f}, -{-0.17887f,0.637327f,0.749546f},{-0.296601f,0.712073f,0.63638f},{-0.541293f,0.466978f,0.699238f}, -{-0.566555f,0.696726f,0.439987f},{-0.134021f,0.932858f,0.334385f},{0.0218045f,-0.997464f,0.0677578f}, -{0.0271397f,-0.997929f,0.0583154f},{0.0252167f,-0.998572f,0.0471037f},{-0.621606f,-0.278433f,0.732176f}, -{-0.570494f,-0.50975f,0.643965f},{-0.681334f,-0.207411f,0.701972f},{-0.559511f,-0.36605f,-0.74361f}, -{0.493383f,0.0945182f,-0.864661f},{0.584445f,-0.0956861f,-0.805772f},{0.611821f,0.0811993f,-0.786817f}, -{0.0579123f,-0.316769f,0.946733f},{-0.0781528f,-0.569633f,0.818175f},{-0.956457f,0.0398561f,0.289139f}, -{-0.992877f,0.118206f,-0.0149156f},{-0.767728f,-0.639771f,0.0358726f},{0.183182f,-0.187221f,0.965087f}, -{0.158643f,-0.200877f,0.966685f},{0.0660394f,-0.240335f,0.968441f},{0.129513f,-0.216463f,0.967662f}, -{0.17963f,0.059801f,0.981915f},{0.216525f,0.230871f,0.948586f},{0.13377f,-0.00599154f,0.990994f}, -{0.13257f,0.0957259f,0.98654f},{0.147001f,0.309975f,0.939311f},{-0.0514512f,0.392173f,0.918452f}, -{-0.0894499f,0.442738f,0.892178f},{-0.184403f,0.382964f,0.905171f},{-0.0898477f,0.43927f,0.893851f}, -{-0.0528206f,0.613729f,0.787748f},{0.0169646f,0.649408f,0.760251f},{0.0341286f,0.644321f,0.763993f}, -{0.163776f,0.613155f,0.772799f},{-0.346824f,0.758038f,0.552352f},{-0.000173428f,0.166072f,0.986114f}, -{0.94866f,-0.152144f,-0.277302f},{0.980893f,-0.150273f,-0.12356f},{0.938342f,-0.31065f,-0.151691f}, -{0.0818533f,-0.546118f,0.833699f},{0.994091f,0.0830656f,0.0698837f},{0.993339f,0.0874817f,0.0749937f}, -{-0.227107f,0.963144f,-0.144138f},{-0.10378f,-0.515128f,0.850807f},{0.315257f,0.0500735f,0.947684f}, -{0.264788f,0.243961f,0.932936f},{0.296313f,0.265407f,0.917473f},{0.328641f,0.479454f,0.813707f}, -{0.229493f,0.231328f,0.945421f},{0.336808f,0.301467f,0.892008f},{0.232176f,0.498203f,0.835397f}, -{0.962198f,0.269438f,0.0397187f},{0.953436f,0.295835f,-0.0586683f},{0.942935f,0.331643f,0.0297584f}, -{0.198719f,0.341757f,0.918538f},{0.44266f,0.233925f,0.865639f},{-0.302218f,-0.92107f,0.245547f}, -{-0.468439f,-0.879868f,0.079976f},{-0.273014f,-0.949768f,-0.152985f},{0.279096f,0.87342f,0.399053f}, -{0.109999f,0.983735f,0.142007f},{0.33597f,0.0460234f,0.940748f},{-0.0755804f,0.557677f,0.82661f}, -{0.469378f,0.32101f,0.822579f},{-0.417018f,0.693837f,0.587099f},{-0.996744f,-0.0371724f,0.071545f}, -{0.202101f,0.433878f,0.878012f},{0.129701f,0.607736f,0.783476f},{0.0245816f,0.617155f,0.786458f}, -{-0.161749f,0.406649f,0.899152f},{-0.370242f,0.314838f,0.873956f},{0.32194f,0.854132f,0.408429f}, -{0.229067f,0.971816f,-0.0556929f},{-0.215353f,-0.504048f,0.836397f},{-0.165197f,-0.256448f,0.952336f}, -{-0.0296231f,-0.105381f,0.993991f},{0.0989861f,-0.0810697f,0.991781f},{0.323746f,-0.196872f,0.925435f}, -{0.343294f,-0.202076f,0.917232f},{0.380756f,0.0343652f,0.924037f},{0.377954f,0.253315f,0.890496f}, -{0.352625f,0.162393f,0.921566f},{0.235176f,0.0282973f,0.971541f},{0.278209f,0.0768769f,0.957439f}, -{0.18879f,0.230847f,0.954499f},{0.100841f,0.209443f,0.972607f},{-0.0516694f,0.294141f,0.954364f}, -{-0.0359873f,0.460162f,0.887105f},{0.0150075f,0.491099f,0.870974f},{0.0174386f,0.594376f,0.803998f}, -{0.0599003f,0.645757f,0.76119f},{0.0237448f,0.664496f,0.746914f},{-0.0117554f,0.643774f,0.765126f}, -{-0.00783735f,0.687184f,0.726442f},{-0.0677373f,0.701206f,0.709734f},{0.14681f,0.639021f,0.755049f}, -{0.161852f,-0.766316f,-0.621742f},{0.313848f,0.615783f,0.722711f},{0.357795f,-0.814972f,-0.455855f}, -{0.577611f,-0.687363f,-0.440337f},{0.0259876f,-0.995169f,0.0946733f},{0.030387f,-0.997499f,0.063819f}, -{0.0198724f,-0.996136f,0.0855424f},{0.368854f,0.251844f,0.894719f},{0.22752f,0.354024f,0.907139f}, -{0.0791086f,0.471746f,0.878178f},{0.827758f,0.36769f,-0.423817f},{0.845807f,0.387535f,-0.366644f}, -{0.240204f,0.227618f,0.943659f},{-0.370066f,0.155968f,0.915819f},{0.022549f,-0.996353f,0.0822977f}, -{0.0262031f,-0.996683f,0.0770459f},{0.416581f,-0.150609f,0.896536f},{0.835817f,-0.534199f,-0.126657f}, -{0.903079f,-0.405958f,-0.140167f},{0.222092f,-0.177756f,0.958686f},{0.0364991f,-0.0694043f,0.996921f}, -{0.0238959f,-0.354001f,0.93494f},{0.230632f,0.323804f,0.917583f},{0.144523f,-0.435178f,0.888669f}, -{-0.1093f,-0.210785f,0.971403f},{0.821085f,0.318833f,-0.47346f},{-0.754431f,0.566074f,-0.332255f}, -{-0.757881f,0.423543f,-0.496214f},{-0.82559f,0.142302f,-0.546032f},{-0.847383f,-0.192788f,-0.494747f}, -{-0.914762f,-0.15749f,-0.372033f},{0.276055f,0.263812f,0.924228f},{-0.0770771f,-0.957563f,-0.277728f}, -{0.139261f,-0.967934f,-0.209068f},{0.321303f,-0.905573f,-0.276951f},{0.431478f,0.0505868f,0.900704f}, -{0.249985f,0.200263f,0.947313f},{0.304387f,0.278311f,0.910984f},{-0.0499762f,-0.111835f,0.992469f}, -{0.246997f,0.369415f,0.895838f},{0.101263f,0.450865f,0.886829f},{0.0237676f,0.496742f,0.867573f}, -{-0.0263901f,0.301213f,0.953192f},{-0.141989f,0.111937f,0.983519f},{-0.179951f,-0.0840402f,0.980079f}, -{-0.385978f,-0.0345515f,0.921861f},{-0.371599f,-0.166121f,0.91341f},{-0.125026f,-0.19002f,0.973787f}, -{-0.373366f,-0.377655f,0.847333f},{-0.2744f,-0.324717f,0.905132f},{-0.0187571f,-0.159511f,0.987018f}, -{-0.0551324f,-0.088822f,0.994521f},{-0.0779111f,0.0233012f,0.996688f},{-0.05431f,0.00554412f,0.998509f}, -{0.0110976f,-0.11894f,0.992839f},{0.116006f,0.0256008f,0.992919f},{-0.00714221f,0.0399637f,0.999176f}, -{0.0629546f,0.0515646f,0.996683f},{0.104175f,0.0657995f,0.99238f},{0.123421f,0.142901f,0.982011f}, -{0.199415f,0.236513f,0.950944f},{0.161276f,0.334805f,0.928383f},{0.278101f,0.368124f,0.887211f}, -{0.249535f,0.469344f,0.847023f},{0.138731f,0.593551f,0.792749f},{0.0456122f,0.613564f,0.788327f}, -{0.00602844f,0.598335f,0.801223f},{-0.0404027f,0.653058f,0.756229f},{-0.113609f,0.70629f,0.698747f}, -{-0.149797f,0.759453f,0.633082f},{-0.0969605f,0.157836f,0.982693f},{0.30952f,0.343163f,0.886812f}, -{0.250895f,0.239551f,0.937905f},{0.364302f,0.214746f,0.906183f},{0.677437f,-0.618769f,-0.39775f}, -{0.403265f,0.340129f,0.849523f},{0.361741f,-0.604613f,-0.709638f},{0.520482f,-0.635742f,-0.570027f}, -{-0.220053f,-0.110282f,0.969234f},{0.664744f,0.0727426f,-0.743522f},{0.69493f,-0.197012f,-0.691562f}, -{0.711349f,0.0990558f,-0.695824f},{0.791779f,-0.192596f,-0.579648f},{0.83793f,0.467497f,-0.281638f}, -{0.803215f,0.569194f,-0.175682f},{0.265927f,-0.221511f,-0.938198f},{0.672927f,-0.206138f,-0.710405f}, -{0.543858f,0.126279f,-0.829622f},{0.543691f,-0.808459f,0.225377f},{0.576513f,-0.710938f,0.402741f}, -{-0.956165f,0.283562f,0.0730865f},{-0.822554f,0.542533f,0.170477f},{-0.703695f,0.6879f,0.177784f}, -{-0.602137f,0.489269f,-0.630909f},{-0.532431f,0.695438f,-0.48258f},{-0.390972f,0.546069f,-0.740911f}, -{-0.255914f,-0.161228f,0.95316f},{-0.384142f,-0.179441f,0.905669f},{0.243979f,0.262092f,0.933693f}, -{0.99634f,-0.0342846f,0.0783019f},{0.709472f,-0.120123f,-0.694421f},{-0.0644449f,0.0727868f,0.995263f}, -{0.775684f,0.125389f,-0.618541f},{-0.107575f,-0.100668f,0.989087f},{0.0138886f,0.527502f,0.84944f}, -{-0.772811f,0.296101f,-0.561326f},{-0.742911f,0.337742f,-0.577939f},{-0.795858f,0.46664f,-0.385819f}, -{0.475773f,0.8358f,-0.274004f},{0.0905323f,0.351765f,0.9317f},{0.141134f,0.3954f,0.907601f}, -{0.181249f,0.353132f,0.917849f},{0.0710616f,0.250557f,0.96549f},{0.0950218f,0.0252217f,0.995156f}, -{0.093489f,-0.137843f,0.986032f},{0.0487989f,-0.207587f,0.976999f},{-0.183824f,-0.148739f,0.97164f}, -{-0.0301569f,-0.227055f,0.973415f},{-0.292098f,-0.143991f,0.945487f},{-0.075602f,-0.179751f,0.980803f}, -{-0.0417652f,-0.0777302f,0.996099f},{0.00792155f,-0.0523368f,0.998598f},{0.0587392f,-0.104993f,0.992737f}, -{0.118203f,-0.133507f,0.983974f},{0.0643076f,-0.145089f,0.987327f},{-0.146965f,-0.0484049f,0.987957f}, -{-0.147134f,-0.0615316f,0.987201f},{-0.108244f,0.067494f,0.991831f},{-0.113617f,0.0485507f,0.992338f}, -{-0.238631f,0.0427924f,0.970167f},{-0.16731f,0.157442f,0.973252f},{-0.0554322f,0.247821f,0.967219f}, -{0.0215249f,0.307941f,0.951162f},{0.089122f,0.370946f,0.924368f},{0.173814f,0.436493f,0.882758f}, -{0.334641f,0.366563f,0.868129f},{0.201333f,0.420597f,0.884626f},{0.107478f,0.499501f,0.859621f}, -{0.0882418f,0.554137f,0.827735f},{0.077174f,0.58413f,0.807983f},{0.0904184f,0.624511f,0.775765f}, -{0.1935f,0.237683f,0.951874f},{0.305689f,0.296056f,0.904934f},{0.327435f,0.184844f,0.926617f}, -{0.269561f,-0.927616f,-0.258583f},{0.193659f,-0.895755f,-0.400149f},{0.394681f,0.163975f,0.904068f}, -{0.258788f,0.468532f,0.844693f},{-0.0718795f,0.684182f,0.72576f},{0.683177f,-0.701106f,-0.204252f}, -{-0.516514f,0.796576f,-0.314133f},{-0.720986f,-0.629455f,-0.289768f},{-0.779838f,-0.545293f,-0.307421f}, -{-0.89702f,-0.302861f,-0.321916f},{-0.483131f,0.87171f,0.081887f},{-0.489306f,0.870408f,-0.0544948f}, -{-0.717503f,0.692303f,0.0768497f},{0.957277f,-0.28916f,0.00262905f},{0.988026f,-0.0837556f,0.129575f}, -{0.24601f,0.323063f,0.913843f},{0.604944f,-0.0749556f,0.792732f},{-0.155861f,0.510953f,0.84536f}, -{0.149976f,0.587202f,0.795425f},{0.0187902f,-0.999677f,-0.0171062f},{0.025801f,-0.999018f,-0.036023f}, -{-0.00739064f,-0.99961f,-0.0269177f},{0.678978f,-0.0969692f,0.727727f},{0.269299f,0.415525f,0.868802f}, -{-0.549574f,0.640399f,-0.536524f},{-0.634002f,0.560561f,-0.532741f},{0.629036f,0.600896f,0.49319f}, -{0.7046f,0.544216f,0.455376f},{0.806775f,0.433922f,0.401032f},{-0.349169f,0.43309f,0.830972f}, -{-0.249238f,0.533495f,0.808247f},{0.223309f,0.158713f,0.96174f},{0.283775f,-0.0974038f,0.953931f}, -{0.297757f,-0.225284f,0.927679f},{0.293836f,-0.261361f,0.91943f},{0.182718f,-0.192612f,0.964113f}, -{0.147264f,-0.0935166f,0.984666f},{0.147869f,-0.0805794f,0.985719f},{0.122862f,-0.0441671f,0.991441f}, -{0.153585f,-0.0603901f,0.986288f},{0.248531f,-0.180208f,0.951713f},{0.192206f,-0.16612f,0.967192f}, -{0.160758f,-0.0170921f,0.986846f},{0.124724f,0.00386966f,0.992184f},{-0.152929f,-0.176901f,0.972275f}, -{-0.334302f,-0.0505609f,0.941109f},{-0.325042f,0.204004f,0.923434f},{-0.273952f,0.324963f,0.905179f}, -{-0.183982f,0.404077f,0.896031f},{-0.12399f,0.480282f,0.868306f},{-0.132311f,0.480545f,0.866931f}, -{-0.0539982f,0.44909f,0.891853f},{0.0186793f,0.528253f,0.848882f},{0.0540516f,0.603218f,0.795742f}, -{0.0574721f,0.58057f,0.812179f},{0.0488323f,0.540287f,0.840063f},{0.107447f,0.574946f,0.811106f}, -{0.836185f,-0.500978f,-0.223194f},{0.706114f,-0.222507f,-0.672231f},{0.73513f,-0.156479f,-0.659619f}, -{0.994869f,-0.0398721f,0.0929814f},{0.990704f,-0.0215186f,0.134325f},{0.601227f,0.0332051f,0.798388f}, -{-0.612229f,0.501538f,-0.611258f},{-0.604453f,0.336919f,-0.721888f},{-0.644079f,0.465962f,-0.606664f}, -{0.389418f,-0.206132f,0.897699f},{-0.210594f,-0.0239807f,0.977279f},{0.823588f,0.444795f,-0.351937f}, -{0.523614f,-0.851564f,-0.0258188f},{0.333779f,-0.101378f,0.937184f},{-0.239351f,0.170456f,0.955853f}, -{-0.191253f,0.418555f,0.887826f},{0.993128f,0.0770358f,-0.0881045f},{0.995817f,0.0332385f,-0.0851114f}, -{0.266118f,-0.0563829f,0.96229f},{-0.0899401f,0.57571f,0.812692f},{0.941752f,-0.336122f,0.0111489f}, -{0.956098f,-0.268499f,0.117412f},{0.972634f,0.227543f,0.0469783f},{0.0213099f,0.745877f,0.665743f}, -{-0.855257f,-0.0444835f,-0.516291f},{-0.204136f,0.966554f,0.155248f},{-0.942272f,0.216219f,0.25568f}, -{-0.980849f,0.182453f,0.0681602f},{-0.936853f,0.329239f,0.117934f},{-0.944458f,0.300396f,0.133269f}, -{0.405896f,0.789675f,0.460067f},{-0.883435f,0.0948705f,-0.458849f},{-0.229111f,-0.238176f,0.943812f}, -{-0.527854f,-0.219852f,0.820387f},{-0.493896f,-0.293839f,0.818368f},{-0.00712655f,-0.57856f,-0.815609f}, -{-0.147518f,0.530632f,0.834666f},{0.0992787f,0.378513f,0.920256f},{0.343353f,-0.0633624f,0.937067f}, -{0.371543f,-0.190139f,0.908737f},{0.393868f,-0.207759f,0.895379f},{0.457386f,-0.212961f,0.863392f}, -{0.399808f,-0.170027f,0.900691f},{0.310284f,-0.131588f,0.941493f},{0.326734f,-0.070236f,0.942503f}, -{0.21877f,-0.0742296f,0.972949f},{0.146588f,-0.114926f,0.982499f},{0.141094f,-0.138347f,0.980282f}, -{0.23755f,-0.115062f,0.964537f},{-0.0402561f,-0.269229f,0.962234f},{-0.0749331f,-0.492771f,0.866927f}, -{-0.0734197f,-0.180458f,0.980839f},{-0.00426604f,-0.0404009f,0.999174f},{-0.139124f,0.0871926f,0.986429f}, -{-0.215771f,0.244843f,0.945249f},{-0.234529f,0.347527f,0.907866f},{-0.224147f,0.450837f,0.864005f}, -{-0.2128f,0.484206f,0.848682f},{-0.219569f,0.479628f,0.849557f},{-0.187117f,0.496056f,0.847889f}, -{-0.188186f,0.459699f,0.867907f},{-0.112351f,0.57933f,0.807313f},{-0.106516f,0.620372f,0.777041f}, -{-0.0679673f,0.612159f,0.787808f},{-0.0326748f,0.580432f,0.813653f},{0.708862f,-0.680962f,-0.183865f}, -{0.847722f,-0.484375f,-0.216214f},{0.712572f,-0.688967f,-0.132536f},{0.645906f,-0.7559f,-0.10687f}, -{0.856818f,-0.487012f,-0.169355f},{0.26561f,0.427572f,0.86408f},{0.141693f,-0.00470907f,0.989899f}, -{0.142388f,-0.0233211f,0.989536f},{0.685045f,-0.0214021f,0.728186f},{-0.0585203f,0.657791f,0.750924f}, -{0.318829f,0.468303f,0.824039f},{-0.90048f,0.294898f,-0.319642f},{0.420585f,-0.898045f,-0.12893f}, -{0.0573068f,-0.998341f,0.0055865f},{0.367788f,-0.911475f,-0.184246f},{0.372103f,-0.184797f,0.909609f}, -{0.397361f,-0.124209f,0.909217f},{0.370408f,-0.452713f,0.811078f},{0.339769f,-0.0340991f,0.939891f}, -{0.375499f,0.00669293f,0.926799f},{0.331121f,0.0276573f,0.943183f},{0.189051f,0.235624f,0.953279f}, -{0.234955f,-0.852191f,-0.467511f},{0.207225f,0.610604f,0.764343f},{0.0281201f,0.611182f,0.79099f}, -{0.592523f,0.330052f,-0.734834f},{0.299147f,-0.110764f,0.947757f},{0.289337f,-0.160901f,0.943607f}, -{-0.184455f,0.301245f,0.935536f},{-0.114346f,0.596484f,0.794438f},{0.892855f,0.450094f,-0.0149891f}, -{0.914416f,0.403767f,0.0285614f},{0.995914f,0.0792773f,0.0432455f},{0.995102f,0.0918383f,0.0365886f}, -{0.0882295f,0.392913f,0.915333f},{0.01841f,0.690734f,0.722874f},{-0.998624f,0.0360211f,-0.0381155f}, -{-0.484736f,-0.873671f,0.0415806f},{-0.28694f,-0.957947f,-0.00188694f},{-0.116894f,-0.567173f,-0.815261f}, -{-0.125439f,-0.579902f,-0.804971f},{-0.241306f,-0.463478f,-0.852619f},{-0.0328103f,-0.946855f,-0.319981f}, -{0.139347f,-0.115985f,0.983428f},{0.116236f,0.0964643f,0.988526f},{0.254626f,-0.170183f,0.951947f}, -{0.391114f,-0.158803f,0.906538f},{0.396983f,-0.203492f,0.894984f},{0.234799f,-0.252738f,0.938612f}, -{0.165006f,-0.21172f,0.9633f},{0.0594331f,-0.20056f,0.977877f},{-0.0990798f,-0.253082f,0.962358f}, -{-0.226912f,-0.176631f,0.957764f},{-0.600585f,-0.199035f,0.774392f},{-0.44706f,-0.174961f,0.877226f}, -{-0.582458f,-0.189821f,0.790386f},{-0.258913f,0.0474452f,0.964735f},{-0.175723f,-0.096949f,0.979654f}, -{-0.0275966f,-0.125996f,0.991647f},{-0.0882985f,0.00297313f,0.99609f},{0.00613423f,0.264642f,0.964327f}, -{-0.0170057f,0.424457f,0.905289f},{-0.110029f,0.389298f,0.914516f},{-0.173889f,0.480406f,0.859635f}, -{-0.174587f,0.499081f,0.848786f},{-0.169377f,0.539228f,0.824951f},{-0.13077f,0.599198f,0.789849f}, -{-0.104141f,0.592033f,0.799156f},{-0.100737f,0.612211f,0.784251f},{0.46098f,-0.118947f,0.879403f}, -{0.507723f,-0.148427f,0.848638f},{0.460838f,-0.157004f,0.873486f},{0.0273984f,0.521382f,0.852883f}, -{-0.0558594f,0.574362f,0.816694f},{-0.230996f,-0.451956f,-0.861612f},{-0.603773f,-0.456419f,-0.653559f}, -{0.0498736f,0.479708f,0.87601f},{0.592333f,0.0544071f,0.803854f},{0.982772f,0.101441f,0.154494f}, -{0.979766f,0.0918827f,0.177808f},{0.690902f,-0.676617f,-0.254645f},{0.680962f,-0.684141f,-0.261232f}, -{0.514943f,-0.723689f,-0.459465f},{0.279941f,0.804335f,-0.524097f},{0.470227f,0.806527f,-0.35833f}, -{0.602172f,0.587103f,-0.541017f},{0.219912f,-0.190058f,0.956827f},{-0.707877f,-0.246572f,0.6619f}, -{0.223647f,-0.190582f,0.955856f},{0.66088f,-0.466033f,0.58826f},{0.78418f,-0.57566f,0.231685f}, -{-0.0963573f,0.66013f,0.744945f},{0.529264f,0.395781f,0.750491f},{-0.0938949f,0.51176f,0.853982f}, -{0.0167492f,0.0845491f,0.996279f},{-0.29642f,0.739859f,0.60394f},{0.770559f,-0.27077f,0.576994f}, -{0.395407f,0.551992f,-0.734138f},{0.426667f,0.671553f,-0.605781f},{-0.678447f,-0.734224f,-0.0250153f}, -{-0.670977f,-0.740986f,-0.0270176f},{0.719373f,0.597154f,0.354838f},{-0.0260727f,-0.794933f,-0.606137f}, -{-0.488692f,-0.0546212f,-0.870745f},{-0.85862f,-0.0460396f,0.510541f},{-0.833654f,-0.028232f,0.551565f}, -{-0.711846f,-0.0760288f,0.698209f},{-0.794342f,0.00412712f,0.607457f},{0.916589f,-0.296311f,-0.268448f}, -{-0.756481f,-0.335536f,0.561384f},{-0.448513f,0.655173f,0.607935f},{-0.491382f,0.649039f,0.580769f}, -{-0.359336f,0.545212f,0.757378f},{-0.454763f,0.408567f,0.791368f},{-0.360103f,0.534543f,0.764585f}, -{-0.419343f,0.270591f,0.866563f},{-0.308274f,-0.158676f,0.937971f},{-0.537672f,-0.0421306f,0.842101f}, -{-0.173191f,-0.228231f,0.958079f},{-0.435517f,-0.276149f,0.856777f},{-0.530407f,-0.286438f,0.797886f}, -{-0.554514f,-0.329894f,0.763992f},{0.785711f,0.574001f,0.230609f},{0.741859f,0.498856f,0.448093f}, -{0.303562f,0.946105f,-0.112852f},{0.307248f,0.93655f,-0.168738f},{0.395085f,-0.646918f,0.652231f}, -{0.259732f,-0.848029f,-0.461938f},{0.238077f,0.968948f,0.0667771f},{0.222715f,0.964406f,0.142547f}, -{0.332458f,0.941366f,0.0574574f},{0.331289f,0.943105f,-0.0283073f},{-0.673966f,0.432063f,0.599243f}, -{-0.361289f,0.120792f,0.924597f},{0.081858f,0.397394f,0.91399f},{-0.0442536f,0.141609f,0.988933f}, -{-0.224349f,0.314769f,0.922273f},{-0.186689f,0.451686f,0.872426f},{-0.208966f,0.483781f,0.849876f}, -{-0.23828f,0.528725f,0.814661f},{-0.226058f,0.597649f,0.769229f},{-0.20108f,0.616536f,0.761216f}, -{-0.186587f,0.626264f,0.756954f},{-0.485704f,0.733153f,-0.476002f},{-0.584897f,0.708289f,-0.395249f}, -{0.91989f,0.0667137f,-0.386461f},{0.955529f,0.0549196f,-0.289737f},{0.911446f,-0.138902f,-0.387263f}, -{0.167664f,-0.966341f,-0.195126f},{0.479603f,-0.758439f,-0.441306f},{0.196735f,0.71953f,0.666013f}, -{0.178837f,0.211949f,0.960778f},{-0.365789f,0.882121f,0.29675f},{0.108296f,-0.661035f,-0.742499f}, -{0.231028f,-0.767635f,-0.597799f},{0.528096f,-0.802825f,-0.276744f},{0.812965f,-0.521272f,-0.259545f}, -{-0.707441f,-0.161392f,0.688099f},{-0.818057f,-0.262473f,0.511752f},{-0.83981f,-0.276777f,0.467027f}, -{-0.78566f,-0.272051f,0.555632f},{0.232743f,0.972491f,0.00962511f},{0.319045f,0.947739f,-0.000587843f}, -{0.355517f,0.91667f,-0.182547f},{0.0257376f,0.844356f,0.535164f},{-0.344861f,0.925942f,0.153956f}, -{-0.322892f,0.577177f,0.750071f},{0.979764f,0.15852f,-0.122203f},{-0.157063f,0.691591f,-0.705006f}, -{-0.217615f,0.649092f,-0.728919f},{-0.115872f,0.61574f,-0.779383f},{-0.156937f,-0.472687f,0.867143f}, -{0.375524f,0.469339f,0.799189f},{0.963422f,-0.262459f,-0.0541521f},{0.543008f,-0.133496f,0.829048f}, -{-0.0294388f,0.115412f,0.992881f},{-0.315051f,0.544746f,0.777171f},{-0.201034f,0.829596f,0.520919f}, -{-0.347545f,0.838266f,0.420146f},{-0.744658f,-0.0792734f,0.662722f},{0.539302f,-0.77313f,0.333802f}, -{0.503749f,-0.7688f,0.393933f},{-0.809059f,-0.0753806f,0.582874f},{-0.776578f,-0.217583f,0.591257f}, -{0.192285f,0.832061f,0.520289f},{0.0294664f,0.792039f,0.60976f},{0.0936467f,0.940049f,0.32793f}, -{0.0481948f,0.903587f,0.425685f},{0.62816f,0.554507f,0.545836f},{0.946447f,-0.0202053f,0.322227f}, -{0.123842f,0.398537f,0.908753f},{0.0566087f,-0.712531f,-0.699353f},{0.00541469f,-0.696924f,-0.717125f}, -{-0.827308f,0.442382f,-0.346208f},{0.945003f,0.288744f,-0.153608f},{-0.164464f,0.501697f,-0.849265f}, -{-0.212151f,0.449517f,-0.867713f},{-0.217853f,0.603f,-0.767418f},{0.777729f,-0.537961f,-0.32517f}, -{-0.350058f,0.556344f,0.753619f},{-0.438878f,0.486298f,0.75558f},{-0.340488f,0.390308f,0.855411f}, -{-0.249393f,0.667711f,0.701402f},{-0.169594f,0.899467f,0.402737f},{-0.40296f,0.798587f,0.447082f}, -{-0.260137f,0.904443f,0.3381f},{0.297284f,0.951307f,0.0814693f},{0.747864f,0.242122f,-0.618124f}, -{0.693854f,0.21889f,-0.686042f},{0.706679f,0.147446f,-0.692f},{0.0362161f,0.811871f,0.582713f}, -{-0.402915f,0.903071f,0.148733f},{-0.611856f,0.758072f,-0.225742f},{-0.60932f,0.783829f,-0.119753f}, -{0.566185f,0.76417f,0.308997f},{-0.331398f,0.274975f,0.902532f},{-0.286723f,-0.182686f,0.940434f}, -{-0.34717f,0.076168f,0.934704f},{-0.172591f,0.212991f,0.96169f},{-0.1893f,0.383452f,0.903953f}, -{-0.231082f,0.432922f,0.871309f},{-0.25959f,0.479614f,0.838202f},{-0.318628f,0.575777f,0.752966f}, -{-0.322619f,0.603173f,0.729451f},{-0.358251f,0.602617f,0.713098f},{-0.390833f,0.610403f,0.688954f}, -{0.388946f,-0.442439f,0.808065f},{0.477906f,0.397443f,0.783355f},{0.661378f,0.162789f,0.732174f}, -{-0.0720481f,0.806311f,0.587088f},{-0.565128f,0.822945f,0.0582318f},{-0.390616f,0.822168f,0.414076f}, -{-0.573525f,0.52527f,0.628618f},{-0.82288f,-0.00567614f,0.568186f},{-0.714775f,0.20468f,0.668733f}, -{0.19947f,0.979005f,0.0419626f},{0.340742f,0.93565f,0.0919395f},{-0.777639f,-0.623126f,-0.0836173f}, -{-0.828711f,-0.559582f,0.0103613f},{-0.771514f,-0.606945f,-0.190748f},{-0.685167f,-0.680435f,-0.259914f}, -{-0.953719f,0.300617f,0.00699773f},{-0.873393f,0.41651f,-0.252396f},{-0.829566f,0.377382f,-0.411587f}, -{0.500125f,0.797272f,0.337983f},{-0.502071f,0.526381f,0.686184f},{-0.419821f,0.617315f,0.665336f}, -{-0.961307f,0.160805f,-0.223676f},{0.989366f,0.0418744f,-0.139286f},{0.958475f,0.210319f,-0.192591f}, -{0.00907638f,0.395259f,0.918525f},{-0.121054f,0.339914f,0.932633f},{-0.0711068f,0.590537f,0.803872f}, -{-0.0363095f,0.710202f,0.703061f},{0.0153851f,0.853133f,0.521466f},{-0.112796f,0.818173f,0.5638f}, -{-0.16988f,0.971006f,-0.168189f},{-0.0077306f,0.996263f,-0.0860288f},{0.243035f,0.943361f,0.22584f}, -{-0.0621356f,0.340509f,0.938186f},{-0.0491563f,0.366334f,0.929184f},{-0.176118f,0.454378f,0.873226f}, -{-0.189273f,0.46869f,0.862847f},{-0.259481f,0.511469f,0.819188f},{-0.449379f,0.578745f,0.680524f}, -{0.0913338f,0.894366f,0.437912f},{0.42565f,-0.422144f,0.800385f},{0.59795f,-0.23884f,0.765122f}, -{0.45527f,-0.177488f,0.872483f},{0.386973f,-0.921255f,-0.0392579f},{0.250819f,-0.869655f,-0.425193f}, -{0.306345f,-0.905818f,-0.292655f},{-0.99852f,-0.0334156f,-0.0429045f},{-0.964216f,0.258421f,0.0592056f}, -{-0.987625f,0.154451f,-0.027243f},{-0.997861f,0.0519454f,-0.0396961f},{-0.83911f,0.481331f,0.253406f}, -{-0.926526f,-0.254974f,-0.276656f},{-0.692555f,0.643989f,0.325032f},{0.99397f,-0.107486f,0.0217039f}, -{-0.218578f,0.93918f,0.264886f},{-0.304393f,0.911539f,0.276481f},{-0.277804f,0.90877f,0.311387f}, -{-0.30602f,0.562103f,0.768369f},{-0.325307f,0.591888f,0.737457f},{-0.367669f,0.600766f,0.709859f}, -{-0.426539f,0.593136f,0.682828f},{-0.357713f,0.671509f,0.648935f},{-0.343895f,0.711826f,0.612406f}, -{0.540354f,0.319822f,0.778288f},{0.319022f,0.317524f,0.892974f},{0.0164285f,-0.758999f,-0.650885f}, -{0.810879f,0.41449f,-0.413125f},{0.402384f,-0.808354f,-0.429711f},{-0.692319f,0.269885f,0.66922f}, -{-0.802128f,-0.0286058f,0.596466f},{0.0118075f,0.999179f,-0.0387475f},{0.039404f,0.998234f,-0.0444579f}, -{-0.255023f,0.966562f,-0.0268538f},{0.181189f,0.943149f,0.278642f},{0.135556f,0.913165f,0.384388f}, -{0.407739f,0.656533f,0.634597f},{0.297586f,0.648132f,0.700976f},{0.384275f,0.922206f,-0.0432202f}, -{-0.0859526f,-0.656785f,-0.749163f},{0.599155f,-0.0773312f,-0.79689f},{0.324199f,0.527672f,0.785148f}, -{-0.932281f,-0.0620485f,-0.356374f},{-0.977376f,0.113279f,-0.178615f},{-0.93158f,0.134419f,-0.337773f}, -{0.140383f,-0.767237f,-0.625812f},{0.213569f,-0.832839f,-0.510654f},{0.532393f,-0.808362f,-0.251216f}, -{0.246787f,0.464288f,0.850607f},{0.193003f,0.739826f,0.644521f},{0.104031f,0.856008f,0.506387f}, -{-0.184839f,0.440609f,0.878464f},{-0.619346f,0.0773028f,0.781304f},{-0.779055f,-0.108587f,0.61748f}, -{-0.72702f,-0.208468f,0.654204f},{-0.693424f,-0.173667f,0.699288f},{-0.0203507f,0.99796f,-0.060504f}, -{-0.116628f,0.989023f,0.0907244f},{-0.138448f,0.974696f,0.175497f},{-0.118911f,0.974713f,0.189194f}, -{0.782602f,0.568475f,0.253714f},{-0.660721f,-0.733755f,-0.158278f},{0.956928f,0.238728f,0.165221f}, -{0.549901f,0.697434f,0.45956f},{0.499327f,0.758075f,0.419517f},{0.607054f,0.674272f,0.420528f}, -{0.512313f,-0.831211f,-0.215926f},{0.697816f,-0.69249f,-0.183061f},{0.0784108f,0.317364f,0.945057f}, -{-0.013652f,0.281661f,0.959417f},{-0.103051f,0.383828f,0.917636f},{-0.184355f,0.471683f,0.862281f}, -{-0.197612f,0.535434f,0.821133f},{-0.240097f,0.582367f,0.776661f},{-0.260232f,0.584369f,0.76863f}, -{-0.342142f,0.66669f,0.662165f},{-0.919643f,0.348874f,-0.180397f},{-0.951161f,0.258725f,-0.168385f}, -{0.196828f,-0.0334996f,0.979865f},{0.93696f,-0.10587f,-0.333013f},{0.898716f,0.0143765f,-0.438296f}, -{0.934906f,-0.162736f,-0.315386f},{-0.0443143f,-0.514988f,-0.856051f},{-0.576905f,-0.302724f,0.758643f}, -{0.999693f,-0.0144882f,0.020096f},{-0.902492f,-0.418109f,-0.103404f},{-0.91035f,-0.370171f,-0.185029f}, -{-0.972665f,0.169551f,-0.158669f},{-0.537973f,0.299744f,0.787869f},{-0.317389f,0.276084f,0.907217f}, -{-0.43221f,0.364523f,0.824814f},{0.530498f,0.182756f,-0.827751f},{0.497767f,0.331848f,-0.801315f}, -{0.59232f,0.276457f,-0.756789f},{0.903917f,-0.0343129f,-0.426329f},{-0.129496f,-0.412196f,-0.901845f}, -{-0.997442f,-0.0199234f,-0.0686405f},{-0.116131f,0.99273f,0.0316319f},{-0.148505f,0.984841f,0.0896363f}, -{-0.107525f,0.991118f,0.0782455f},{0.872192f,0.459426f,0.167954f},{-0.302342f,0.32664f,0.895486f}, -{-0.394453f,0.402819f,0.82592f},{0.988901f,-0.142468f,0.042162f},{-0.28951f,0.597491f,0.747789f}, -{0.886142f,-0.0227338f,-0.462855f},{0.372933f,-0.92439f,-0.080149f},{0.324752f,0.473531f,0.818721f}, -{0.0181762f,0.577834f,0.815952f},{-0.446479f,-0.0219026f,0.894526f},{-0.41044f,-0.340059f,0.846108f}, -{-0.497253f,-0.366512f,0.786389f},{-0.188972f,0.87435f,-0.446992f},{-0.27229f,-0.212348f,0.938492f}, -{-0.260154f,-0.26183f,0.92939f},{-0.424896f,-0.295882f,0.855522f},{-0.201163f,-0.282722f,0.937871f}, -{-0.349685f,-0.362444f,0.863918f},{-0.258599f,-0.400252f,0.879162f},{-0.0663588f,-0.124558f,0.989991f}, -{-0.277381f,-0.292648f,0.915105f},{-0.0129428f,0.051201f,0.998604f},{-0.21943f,0.0640172f,0.973526f}, -{-0.0834486f,0.148989f,0.985311f},{-0.176729f,0.302573f,0.936598f},{-0.303486f,0.374783f,0.876033f}, -{-0.22937f,0.520291f,0.822609f},{-0.399844f,0.536487f,0.743173f},{-0.190027f,0.270728f,0.943714f}, -{-0.0885366f,0.238847f,0.967013f},{-0.208084f,0.301494f,0.930485f},{-0.218262f,0.436112f,0.873022f}, -{-0.209885f,0.518052f,0.829199f},{-0.251104f,0.521023f,0.815771f},{-0.27394f,0.616177f,0.738432f}, -{-0.267678f,0.649952f,0.711275f},{-0.271756f,0.870571f,0.410189f},{-0.248053f,0.886882f,0.389757f}, -{-0.341894f,0.876298f,0.339426f},{0.913529f,-0.0778003f,-0.399265f},{-0.220965f,0.27626f,-0.935337f}, -{0.324672f,0.945114f,-0.0366963f},{-0.549577f,0.390051f,0.7388f},{-0.0404058f,0.453485f,0.890348f}, -{-0.265051f,0.34101f,0.90192f},{0.671957f,0.182503f,-0.717751f},{0.625907f,0.322451f,-0.710116f}, -{0.561647f,-0.442315f,0.699221f},{0.329729f,0.556732f,0.762449f},{0.915737f,0.214104f,-0.339978f}, -{-0.366646f,-0.323675f,0.872241f},{-0.474031f,-0.323003f,0.819124f},{-0.462516f,-0.19931f,0.863918f}, -{-0.60706f,-0.19681f,0.769899f},{-0.413657f,-0.149255f,0.898115f},{-0.551041f,-0.226188f,0.803239f}, -{-0.256732f,-0.2343f,0.937653f},{-0.432891f,0.81967f,0.375162f},{-0.82982f,0.47565f,0.291813f}, -{0.935737f,-0.0667342f,-0.346327f},{0.410462f,-0.898124f,-0.157782f},{0.381093f,0.353227f,0.854399f}, -{0.314514f,0.455215f,0.832983f},{-0.107452f,-0.0516191f,0.992869f},{-0.436083f,-0.386618f,0.812624f}, -{-0.326328f,-0.290193f,0.89961f},{-0.358768f,-0.351906f,0.86455f},{-0.491272f,-0.274142f,0.826739f}, -{-0.249382f,-0.0817001f,0.964953f},{-0.333758f,-0.24729f,0.909644f},{-0.364851f,-0.0687879f,0.928522f}, -{-0.168992f,-0.211946f,0.962559f},{-0.199238f,-0.291946f,0.935453f},{-0.2244f,-0.252274f,0.941277f}, -{-0.152452f,-0.164372f,0.974546f},{-0.112379f,-0.0502458f,0.992394f},{-0.0843327f,0.0708477f,0.993916f}, -{-0.0420862f,0.0883098f,0.995204f},{-0.116689f,0.21632f,0.969324f},{-0.217116f,0.527381f,0.821419f}, -{-0.175943f,0.699574f,0.692561f},{-0.29065f,0.677972f,0.675186f},{-0.207183f,0.94949f,-0.235676f}, -{0.576123f,-0.814343f,-0.0701916f},{-0.330163f,0.771793f,0.543441f},{-0.39642f,0.831665f,0.388823f}, -{-0.396915f,0.639425f,0.658478f},{-0.183854f,0.352624f,0.917526f},{-0.170048f,0.255627f,0.951703f}, -{-0.0999526f,0.132185f,0.986173f},{-0.204507f,0.401786f,0.892605f},{-0.225599f,0.496702f,0.838089f}, -{-0.23613f,0.499564f,0.833474f},{-0.272788f,0.477579f,0.835168f},{-0.255052f,0.575954f,0.776676f}, -{-0.288071f,0.716377f,0.635468f},{0.939666f,0.00962893f,-0.341958f},{0.811251f,-0.550205f,-0.197856f}, -{0.84832f,-0.501184f,-0.170784f},{0.906024f,-0.41817f,-0.0652293f},{0.806224f,0.109341f,0.581419f}, -{0.807168f,0.301015f,0.507808f},{0.391369f,0.919183f,-0.0439765f},{0.259863f,0.0750233f,0.962727f}, -{0.332689f,0.161066f,0.92918f},{0.378018f,0.180702f,0.907992f},{-0.325281f,-0.413715f,0.850313f}, -{0.227168f,-0.359984f,-0.904879f},{0.43349f,-0.686914f,-0.583297f},{0.741767f,0.00615409f,0.670629f}, -{0.519002f,0.52435f,0.67505f},{-0.97891f,0.0906991f,-0.183055f},{0.394563f,0.9161f,0.0712859f}, -{0.389378f,0.920614f,0.0292228f},{0.319017f,0.528083f,0.786992f},{-0.307802f,-0.340839f,0.888306f}, -{-0.126457f,0.361748f,0.92366f},{-0.16985f,0.756014f,0.632134f},{-0.185053f,0.754408f,0.629781f}, -{0.0966245f,-0.689971f,-0.717359f},{0.492416f,-0.869194f,-0.0450272f},{0.996683f,0.0751418f,-0.0312672f}, -{-0.234427f,0.685005f,0.689792f},{0.867339f,0.0838635f,-0.490602f},{0.925486f,0.164947f,-0.34098f}, -{-0.204274f,0.789897f,0.578217f},{0.337036f,-0.144287f,0.93037f},{0.872065f,-0.43883f,-0.216636f}, -{0.723614f,-0.646477f,-0.241765f},{0.303861f,0.202101f,0.931033f},{0.236392f,0.303918f,0.922904f}, -{-0.03706f,-0.379717f,0.92436f},{-0.24061f,-0.442195f,0.864043f},{-0.320437f,-0.327133f,0.88899f}, -{-0.315056f,-0.394821f,0.86305f},{-0.394311f,-0.306347f,0.866412f},{-0.291312f,-0.0705552f,0.954023f}, -{-0.304152f,-0.0144173f,0.952514f},{-0.286319f,-0.243813f,0.926594f},{-0.315406f,-0.311765f,0.896282f}, -{-0.305999f,-0.289459f,0.906961f},{-0.243082f,-0.160769f,0.95659f},{-0.139866f,-0.103768f,0.984718f}, -{-0.0984367f,0.00461992f,0.995133f},{0.000226813f,0.128423f,0.991719f},{-0.0322293f,0.139832f,0.989651f}, -{-0.0463018f,0.159905f,0.986046f},{-0.0349219f,0.332265f,0.942539f},{-0.0872712f,0.549626f,0.83084f}, -{-0.143092f,0.695318f,0.704314f},{0.844038f,0.41268f,0.342484f},{-0.0784911f,0.135579f,0.987653f}, -{-0.151022f,0.495322f,0.855482f},{0.864087f,-0.487038f,-0.127076f},{-0.118199f,0.191062f,0.974435f}, -{-0.128221f,0.381595f,0.915393f},{-0.16414f,0.47926f,0.862188f},{-0.180967f,0.512564f,0.839363f}, -{-0.147203f,0.567275f,0.810266f},{-0.151267f,0.653834f,0.741363f},{-0.188561f,0.726022f,0.661315f}, -{0.824964f,-0.480821f,-0.297061f},{0.905172f,0.260718f,-0.335692f},{-0.751042f,0.593217f,0.289876f}, -{-0.32475f,-0.35033f,-0.878525f},{-0.481899f,-0.260127f,-0.836724f},{-0.624517f,-0.221113f,-0.749058f}, -{-0.103103f,0.445253f,0.889449f},{-0.309203f,-0.277461f,-0.90962f},{-0.294538f,-0.402181f,-0.86689f}, -{0.864967f,0.288401f,-0.410679f},{0.897178f,0.275958f,-0.344845f},{0.767788f,-0.232109f,0.597183f}, -{0.760242f,-0.495563f,0.420059f},{0.808193f,-0.49461f,0.319663f},{0.733594f,0.286807f,-0.616102f}, -{0.640647f,0.238282f,-0.729927f},{-0.281333f,-0.352565f,0.892496f},{-0.232012f,0.873399f,0.428187f}, -{-0.248022f,0.814072f,0.52514f},{0.837728f,-0.0939249f,-0.53795f},{0.870655f,-0.279119f,-0.405033f}, -{-0.881121f,-0.0520004f,-0.470024f},{-0.0155312f,-0.466044f,0.884625f},{-0.129013f,-0.669994f,0.73107f}, -{-0.197947f,-0.475871f,0.85695f},{-0.244171f,-0.34963f,0.90451f},{-0.140039f,-0.330352f,0.933411f}, -{-0.057988f,-0.337569f,0.939513f},{-0.122666f,-0.113582f,0.985927f},{-0.205128f,-0.00877181f,0.978696f}, -{-0.337272f,-0.0746786f,0.938441f},{-0.306237f,-0.258884f,0.916078f},{-0.278592f,-0.259471f,0.924695f}, -{-0.261924f,-0.250819f,0.931926f},{-0.209337f,-0.0287817f,0.97742f},{-0.0601506f,0.0672967f,0.995918f}, -{0.0611062f,0.0532419f,0.99671f},{0.0713627f,0.103608f,0.992055f},{-0.0695355f,0.803765f,0.59087f}, -{-0.644098f,0.273464f,-0.714392f},{0.0732606f,0.601907f,0.795199f},{-0.2022f,0.892853f,0.402403f}, -{-0.116181f,0.690582f,0.713862f},{0.839387f,0.072094f,-0.538733f},{0.906994f,0.157665f,-0.390518f}, -{0.880792f,0.258935f,-0.396433f},{0.849277f,0.279145f,-0.448115f},{0.88698f,-0.0393897f,-0.460125f}, -{-0.256429f,-0.366661f,0.894318f},{0.384314f,-0.129266f,0.914108f},{-0.91019f,-0.38715f,-0.147201f}, -{-0.873766f,-0.460888f,-0.15529f},{0.0533412f,-0.987276f,0.1498f},{-0.0332455f,-0.999425f,-0.00667568f}, -{-0.0177683f,-0.998598f,-0.0498695f},{0.743946f,-0.315207f,-0.589228f},{-0.0300893f,0.428489f,0.903046f}, -{-0.141131f,-0.616613f,0.774513f},{-0.143887f,-0.543126f,0.827231f},{0.151877f,-0.0435705f,0.987439f}, -{0.135903f,0.0967646f,0.985985f},{0.181863f,-0.0316108f,0.982816f},{0.817395f,0.471839f,-0.330504f}, -{0.834915f,0.44021f,-0.330353f},{-0.439625f,0.363522f,-0.821329f},{-0.23135f,-0.491517f,-0.839576f}, -{0.881996f,0.263243f,0.390879f},{0.804092f,0.450491f,-0.387936f},{0.379275f,-0.920389f,-0.0950521f}, -{0.657543f,-0.0898175f,0.748044f},{0.60158f,0.0546622f,0.79694f},{0.424673f,-0.380215f,0.821638f}, -{0.480442f,-0.295344f,0.825801f},{0.296132f,0.463751f,0.835009f},{0.271331f,0.0872357f,0.958525f}, -{0.272219f,-0.172097f,0.94672f},{0.653222f,-0.218414f,0.72498f},{0.637907f,-0.0586593f,0.767876f}, -{0.432417f,-0.0287288f,0.901216f},{0.375382f,0.133798f,0.917162f},{0.668195f,0.332693f,0.665456f}, -{0.751623f,0.310123f,0.58214f},{0.70471f,0.352257f,0.615873f},{0.354198f,-0.110598f,0.928607f}, -{0.316442f,-0.111138f,0.942079f},{0.500513f,0.429239f,0.751825f},{0.485563f,0.505267f,0.713396f}, -{0.467589f,0.389971f,0.793274f},{0.269565f,0.432078f,0.860606f},{0.526376f,-0.206247f,0.824858f}, -{0.547881f,-0.180711f,0.816804f},{0.516456f,-0.177985f,0.837613f},{0.265807f,0.621366f,0.737056f}, -{0.396606f,0.461164f,0.793745f},{0.268517f,0.679316f,0.682956f},{0.608431f,-0.475134f,0.635657f}, -{0.581453f,0.335069f,0.741378f},{0.565053f,-0.011672f,0.824972f},{0.542132f,-0.254652f,0.800778f}, -{0.480758f,-0.379163f,0.790637f},{0.456013f,-0.393873f,0.79807f},{0.879688f,-0.114436f,0.461577f}, -{0.858958f,-0.0758828f,0.506393f},{0.85334f,-0.175889f,0.49079f},{0.864541f,0.245988f,0.438246f}, -{0.459771f,0.488017f,0.741923f},{0.648193f,0.136459f,0.749149f},{0.745059f,-0.146613f,0.650686f}, -{0.320391f,0.613417f,0.721851f},{0.381497f,0.502289f,0.775993f},{0.276193f,0.651878f,0.706238f}, -{0.787947f,-0.266373f,0.555144f},{0.738517f,-0.18476f,0.648426f},{-0.10106f,-0.198674f,-0.974841f}, -{-0.213871f,-0.405287f,-0.88882f},{0.120389f,-0.573452f,-0.810345f},{0.549648f,0.115702f,0.827345f}, -{0.656562f,-0.0125393f,0.754168f},{0.523616f,0.221222f,0.822732f},{0.5305f,-0.207482f,0.821901f}, -{0.503594f,-0.178747f,0.845247f},{0.464655f,-0.297417f,0.834049f},{0.436071f,-0.269518f,0.858605f}, -{0.552355f,-0.130993f,0.823253f},{0.71381f,-0.196261f,0.672277f},{0.255606f,0.690306f,0.676863f}, -{0.210124f,0.77675f,0.593723f},{0.853942f,-0.0356107f,0.519148f},{0.456866f,-0.524287f,0.718607f}, -{0.497688f,-0.585216f,0.640179f},{-0.239292f,-0.426292f,-0.872361f},{-0.133658f,-0.421392f,-0.896975f}, -{-0.0754212f,-0.532674f,-0.842953f},{0.6607f,-0.607619f,0.440766f},{0.628709f,-0.577003f,0.521336f}, -{0.641454f,-0.668221f,0.376852f},{0.666737f,-0.498983f,0.553603f},{0.800721f,0.0591873f,0.596106f}, -{0.748422f,0.000704595f,0.663222f},{0.790442f,-0.196599f,0.58013f},{0.7523f,-0.31572f,0.578244f}, -{0.770543f,-0.115037f,0.626921f},{0.657429f,-0.378401f,0.651613f},{0.558381f,-0.300341f,0.773309f}, -{0.605352f,-0.483657f,0.632159f},{0.508999f,-0.563832f,0.650394f},{0.547093f,-0.479533f,0.686103f}, -{0.647568f,0.075846f,0.758224f},{0.657391f,0.209588f,0.723816f},{0.778641f,0.458995f,0.427835f}, -{0.796311f,-0.124677f,0.591899f},{0.287351f,0.191424f,0.938502f},{0.732084f,0.104478f,0.673154f}, -{0.576522f,0.362983f,0.732029f},{0.465965f,0.367877f,0.804701f},{0.730207f,0.0875507f,0.677594f}, -{-0.399503f,0.326363f,-0.85667f},{-0.354372f,0.129678f,-0.926069f},{-0.448822f,0.605935f,-0.656811f}, -{-0.617025f,0.688594f,-0.380944f},{0.572087f,-0.696272f,0.4335f},{0.5902f,-0.307268f,0.746492f}, -{0.512315f,-0.27866f,0.812331f},{0.615482f,-0.524555f,0.588238f},{0.493002f,-0.409266f,0.767757f}, -{0.542152f,-0.375549f,0.751687f},{0.531583f,-0.39377f,0.74991f},{0.465902f,0.343074f,0.81562f}, -{0.556731f,-0.769617f,0.312633f},{0.254734f,-0.853269f,-0.455018f},{0.844112f,0.373341f,0.384825f}, -{0.798595f,0.33797f,0.498018f},{0.975491f,0.218904f,-0.0223324f},{0.411182f,-0.19688f,0.890038f}, -{0.55109f,-0.118472f,0.825993f},{0.555506f,-0.31389f,0.769991f},{0.483713f,-0.52489f,0.700365f}, -{0.476981f,-0.179667f,0.860354f},{-0.447194f,0.0450272f,-0.893303f},{0.323563f,-0.182347f,0.92847f}, -{0.11422f,0.271978f,-0.955501f},{-0.0334828f,0.360681f,-0.932088f},{0.0801935f,0.352312f,-0.93244f}, -{-0.165139f,-0.53863f,-0.8262f},{0.820463f,0.471607f,-0.323152f},{0.817037f,0.503878f,-0.280281f}, -{0.565589f,-0.744425f,-0.354882f},{0.593147f,-0.757668f,-0.272244f},{0.698756f,-0.639595f,-0.320402f}, -{0.416088f,-0.0895367f,0.904905f},{0.492055f,0.0671786f,0.867968f},{0.529662f,0.0245061f,0.847854f}, -{-0.290736f,-0.569161f,0.769109f},{0.343488f,-0.0248503f,0.938828f},{0.351263f,-0.283942f,0.892183f}, -{-0.100958f,0.304861f,-0.947031f},{-0.147563f,0.426841f,-0.892206f},{0.160646f,0.724895f,0.669865f}, -{0.739509f,-0.237147f,0.629991f},{0.755263f,-0.262598f,0.600517f},{0.720221f,-0.175747f,0.671115f}, -{-0.244267f,-0.453948f,-0.856893f},{-0.0660144f,-0.604178f,-0.79411f},{0.573614f,-0.482652f,0.661827f}, -{0.560916f,-0.327772f,0.760223f},{0.380138f,0.160625f,0.910876f},{0.851176f,0.264634f,-0.453287f}, -{0.34345f,-0.0915945f,0.934694f},{0.260014f,0.0541945f,0.964083f},{0.313326f,0.212754f,0.925507f}, -{0.396535f,0.543902f,-0.739548f},{0.444644f,0.49191f,-0.748543f},{0.503687f,0.52311f,-0.687499f}, -{-0.305173f,-0.397453f,-0.86539f},{0.660256f,0.283758f,0.695373f},{0.781524f,0.0706021f,0.619867f}, -{0.793597f,0.216873f,0.568481f},{0.733662f,0.193507f,0.65138f},{0.323353f,0.369017f,0.871361f}, -{0.582228f,-0.340961f,0.738076f},{0.549202f,0.284132f,0.785905f},{0.290724f,0.169076f,0.94175f}, -{0.53424f,-0.844963f,0.0250082f},{0.912901f,-0.035308f,0.406652f},{0.825201f,0.0115751f,0.56472f}, -{0.94043f,0.103742f,0.323773f},{-0.358271f,0.346487f,-0.866942f},{-0.277017f,0.312182f,-0.908738f}, -{-0.322405f,0.20153f,-0.9249f},{-0.981484f,-0.040964f,-0.187113f},{-0.846049f,-0.367576f,-0.386119f}, -{-0.723049f,-0.665594f,-0.184891f},{-0.681233f,0.638163f,0.358706f},{-0.887797f,0.251246f,0.385606f}, -{-0.945932f,0.286633f,0.151838f},{0.485297f,0.0684109f,0.871669f},{0.514312f,0.461732f,0.722694f}, -{0.622169f,0.403788f,0.670717f},{0.681605f,0.244739f,0.689578f},{0.498462f,-0.119438f,0.858644f}, -{0.606269f,-0.213205f,0.766148f},{0.768382f,0.484224f,-0.41847f},{0.815839f,0.442994f,-0.371703f}, -{-0.373507f,-0.270642f,-0.887269f},{-0.246314f,-0.0015448f,-0.969189f},{-0.431788f,-0.307208f,-0.848046f}, -{-0.347352f,-0.0362057f,-0.937036f},{0.0188641f,-0.999595f,-0.0213147f},{-0.00396728f,-0.999933f,-0.010845f}, -{0.0160447f,-0.999596f,-0.0234478f},{0.564655f,-0.441574f,0.697264f},{0.69031f,-0.153769f,0.706985f}, -{0.653448f,0.150736f,0.741812f},{0.651377f,0.314426f,0.690539f},{0.627538f,0.228138f,0.744412f}, -{0.477152f,0.341111f,0.809919f},{-0.983667f,-0.0636223f,0.168378f},{0.743203f,-0.429802f,0.512757f}, -{0.674133f,-0.406715f,0.616545f},{0.710554f,-0.395237f,0.582151f},{0.80919f,0.278181f,0.51752f}, -{0.826218f,0.290013f,0.482966f},{0.781084f,0.319842f,0.536291f},{0.374297f,-0.414591f,0.829468f}, -{0.292665f,-0.215483f,0.931619f},{0.147606f,0.803867f,0.576204f},{0.218746f,0.781826f,0.583866f}, -{0.512944f,-0.418974f,0.749233f},{0.567309f,-0.478639f,0.670123f},{0.577802f,-0.447301f,0.682691f}, -{0.685652f,-0.52024f,0.509148f},{0.448118f,-0.740268f,0.501192f},{0.684582f,0.410588f,0.6023f}, -{0.617891f,0.399018f,0.677492f},{0.632734f,0.295336f,0.715839f},{0.870482f,0.162018f,0.46477f}, -{0.840489f,0.186369f,0.508768f},{0.770366f,-0.159666f,0.617287f},{0.489274f,-0.00781279f,0.872095f}, -{0.522915f,-0.119012f,0.844036f},{0.525504f,-0.253163f,0.812253f},{0.584816f,-0.690932f,0.424975f}, -{0.765617f,0.283534f,0.577442f},{0.680954f,0.47874f,0.554174f},{0.75469f,0.139645f,0.641047f}, -{0.756042f,0.181321f,0.628906f},{0.706788f,-0.577248f,0.408944f},{0.270976f,0.449686f,0.85109f}, -{0.670575f,0.280147f,0.686911f},{0.731219f,0.377028f,0.56848f},{0.777606f,0.343926f,0.52635f}, -{0.764272f,0.413505f,0.494875f},{0.984362f,0.00908258f,0.175924f},{0.994702f,0.0701487f,0.0751525f}, -{0.988355f,0.0821244f,0.128101f},{0.819972f,-0.180455f,0.543215f},{0.786792f,0.106034f,0.608043f}, -{0.738693f,0.417579f,0.529113f},{0.813713f,0.199231f,0.546057f},{0.790175f,-0.192608f,0.58183f}, -{0.784095f,-0.245785f,0.569899f},{0.974171f,0.0716883f,0.214129f},{0.769246f,-0.371558f,0.519813f}, -{0.996425f,0.0802f,0.0265568f},{0.995753f,0.0774648f,0.0497599f},{0.994732f,0.0839796f,0.058788f}, -{0.0684754f,0.794747f,0.603066f},{0.890577f,-0.0326624f,0.453658f},{0.88509f,0.0273287f,0.464616f}, -{0.8882f,-0.0223627f,0.458912f},{0.673587f,-0.673846f,0.303664f},{0.443082f,-0.835915f,0.32392f}, -{0.601954f,-0.695112f,0.393027f},{0.529223f,-0.697322f,0.483389f},{0.520604f,-0.78592f,0.333618f}, -{0.854102f,0.0823997f,0.513536f},{0.871333f,-0.199525f,0.448296f},{0.789235f,0.160319f,0.592795f}, -{0.760528f,0.173113f,0.625803f},{0.567484f,0.383543f,0.7286f},{0.155292f,0.0116503f,0.9878f}, -{0.198612f,0.0248425f,0.979763f},{0.530868f,-0.169252f,0.830381f},{0.492979f,-0.111174f,0.862909f}, -{0.57538f,-0.112175f,0.810157f},{0.729484f,-0.0330009f,0.683201f},{0.788689f,-0.0150649f,0.614608f}, -{0.777266f,0.0200755f,0.628852f},{0.775266f,-0.284338f,0.564016f},{0.723422f,-0.280706f,0.630766f}, -{0.813826f,0.330595f,0.477906f},{0.780357f,0.334197f,0.528541f},{0.749978f,-0.563062f,0.347123f}, -{0.828104f,-0.38699f,0.405564f},{0.817079f,0.255468f,0.516834f},{0.768042f,0.385863f,0.511098f}, -{0.859619f,0.103461f,0.500351f},{0.774398f,0.172551f,0.608714f},{0.772662f,-0.40118f,0.491984f}, -{0.701697f,-0.127203f,0.701028f},{0.540935f,-0.797161f,0.268184f},{0.888043f,-0.0861904f,0.45161f}, -{0.710171f,0.329627f,0.622096f},{0.869048f,0.194343f,0.454958f},{0.175361f,0.624014f,0.761482f}, -{0.637965f,0.41983f,0.645556f},{0.652155f,0.403813f,0.641583f},{0.62877f,0.443097f,0.638994f}, -{-0.971605f,0.236558f,-0.00496129f},{0.59756f,0.462793f,0.654786f},{0.580389f,0.451229f,0.677895f}, -{0.626065f,0.431011f,0.649825f},{0.476493f,0.537168f,0.695992f},{0.620057f,0.465976f,0.631186f}, -{0.571138f,0.569021f,0.591622f},{0.683396f,-0.0668563f,0.72698f},{0.793913f,-0.0870938f,0.601762f}, -{0.815752f,-0.501744f,0.287753f},{0.606837f,-0.736726f,0.298302f},{0.896606f,-0.245435f,0.368592f}, -{0.896765f,0.0226329f,0.441927f},{0.844094f,0.216265f,0.490648f},{0.777054f,0.398813f,0.486966f}, -{0.785435f,0.364075f,0.500541f},{0.839493f,0.275943f,0.468089f},{0.243468f,-0.824286f,-0.511152f}, -{0.346621f,-0.880084f,-0.32451f},{0.536899f,0.0021648f,0.843644f},{0.585054f,0.0566912f,0.809011f}, -{0.650729f,-0.0826509f,0.754798f},{0.375913f,0.296442f,0.877959f},{0.110642f,-0.716504f,-0.688752f}, -{-0.193341f,-0.395496f,-0.897888f},{0.628335f,0.415744f,0.657534f},{0.827336f,0.279735f,0.487097f}, -{0.612704f,0.444252f,0.653631f},{0.48401f,0.4591f,0.744958f},{0.643482f,0.399456f,0.652967f}, -{0.57849f,0.362153f,0.730886f},{0.603739f,0.353751f,0.714395f},{0.669212f,0.391928f,0.631307f}, -{0.637042f,0.3499f,0.686839f},{0.801865f,0.000502496f,0.597504f},{0.832038f,0.0306209f,0.553873f}, -{0.811466f,-0.055155f,0.581791f},{0.470295f,-0.121854f,0.874056f},{0.767111f,-0.500143f,0.401744f}, -{0.739372f,0.426622f,0.520886f},{0.411713f,-0.155696f,0.897915f},{0.455116f,-0.227652f,0.860839f}, -{0.381047f,-0.107122f,0.918329f},{0.693332f,0.310097f,0.650485f},{0.730533f,0.151737f,0.665805f}, -{0.776021f,0.246385f,0.580591f},{0.697968f,-0.373382f,0.611086f},{0.866595f,-0.263565f,0.42373f}, -{0.811826f,0.486604f,0.322731f},{0.761744f,0.331298f,0.556766f},{-0.298661f,0.350782f,-0.887555f}, -{0.915881f,0.147323f,0.373441f},{0.92463f,0.311156f,0.21964f},{0.368686f,-0.785445f,0.497139f}, -{0.531938f,-0.737281f,0.416483f},{0.38531f,-0.870855f,0.305203f},{0.671745f,-0.645467f,0.363499f}, -{0.716224f,0.342647f,0.60796f},{0.769271f,0.376456f,0.51624f},{0.821107f,0.176575f,0.542775f}, -{0.849541f,0.0720743f,0.522576f},{0.828452f,0.10049f,0.550971f},{0.77968f,0.163857f,0.604359f}, -{0.566189f,0.00160388f,0.824274f},{0.476003f,0.0827108f,0.875546f},{0.554853f,-0.0521107f,0.830315f}, -{0.589359f,-0.181224f,0.787282f},{0.662155f,-0.284197f,0.693385f},{0.61982f,-0.514361f,0.592668f}, -{0.581998f,0.163587f,0.796566f},{0.513561f,0.322466f,0.795154f},{0.562209f,0.321646f,0.761882f}, -{0.535793f,0.38685f,0.750515f},{0.526098f,0.419382f,0.739824f},{0.490478f,0.469349f,0.734264f}, -{0.64664f,0.294523f,-0.703643f},{0.624458f,-0.561986f,0.542424f},{0.803143f,-0.258757f,0.536663f}, -{0.84475f,-0.0441311f,0.533338f},{0.792842f,0.173526f,0.584201f},{0.702839f,0.333032f,0.628576f}, -{0.863811f,0.113649f,0.490831f},{0.843999f,0.0339543f,0.535269f},{0.725844f,0.0529413f,0.685819f}, -{-0.73513f,-0.674473f,0.0683321f},{0.504364f,-0.490432f,0.710699f},{0.37711f,-0.530281f,0.759335f}, -{0.583048f,-0.597629f,0.550359f},{0.0436126f,-0.966946f,-0.251225f},{0.537038f,0.494685f,0.683284f}, -{0.546936f,0.0266999f,0.836748f},{0.724826f,-0.463617f,0.509594f},{0.693024f,-0.379127f,0.613173f}, -{0.709473f,-0.552913f,0.436962f},{0.514175f,0.22697f,0.827109f},{0.557267f,0.12334f,0.821122f}, -{0.482026f,0.308139f,0.820184f},{0.513391f,0.555068f,0.654469f},{0.453179f,0.569752f,0.685574f}, -{0.406531f,-0.413933f,0.814489f},{0.811775f,0.578688f,-0.0783687f},{0.973187f,0.225135f,-0.0471338f}, -{0.434216f,0.566594f,0.700305f},{0.538412f,-0.036777f,0.841879f},{0.491574f,0.0444878f,0.869698f}, -{0.415802f,0.190611f,0.889256f},{0.617904f,-0.566391f,0.54534f},{0.699226f,-0.174741f,0.693216f}, -{0.746495f,-0.220216f,0.627894f},{0.648682f,0.147411f,0.746647f},{0.568483f,0.442257f,0.693711f}, -{0.57011f,0.139636f,0.809615f},{0.948333f,-0.29193f,-0.124263f},{0.476851f,0.0790041f,0.875427f}, -{0.895368f,0.438086f,0.0799757f},{0.861625f,0.504983f,0.0509301f},{0.905583f,0.412128f,0.100346f}, -{0.385951f,0.474715f,0.791004f},{0.500776f,0.315259f,0.806124f},{0.78597f,0.498529f,-0.365678f}, -{-0.039175f,-0.970836f,-0.236521f},{0.279225f,0.728435f,0.625633f},{0.355854f,0.545909f,0.758519f}, -{0.614204f,-0.411429f,0.673409f},{0.4737f,-0.4708f,0.744281f},{0.577135f,-0.434087f,0.691725f}, -{-0.49125f,0.856358f,-0.159137f},{0.183845f,0.927353f,0.32591f},{0.430745f,0.871104f,0.235873f}, -{0.533354f,0.00972195f,0.845836f},{0.523564f,0.106788f,0.845268f},{0.533085f,-0.134271f,0.835339f}, -{0.616118f,-0.527777f,0.584679f},{0.57025f,-0.527772f,0.629501f},{0.394466f,0.440697f,0.806339f}, -{0.426039f,0.454103f,0.782484f},{0.545621f,-0.597095f,-0.588026f},{0.686729f,-0.529675f,-0.497844f}, -{0.509716f,-0.260083f,0.820089f},{0.623851f,-0.377081f,0.684558f},{0.629402f,0.220525f,0.745132f}, -{0.529436f,0.339631f,0.777399f},{0.623309f,0.420085f,0.659556f},{0.80518f,0.0871658f,0.58659f}, -{0.780352f,-0.0962468f,0.617889f},{0.523776f,-0.321197f,0.788981f},{0.515573f,-0.306043f,0.800326f}, -{0.544485f,-0.219115f,0.809645f},{0.625398f,-0.231908f,0.745048f},{0.706314f,-0.255021f,0.660368f}, -{0.673997f,-0.0995925f,0.73199f},{0.175291f,0.557259f,0.811625f},{-0.316229f,0.390378f,-0.864641f}, -{0.602475f,-0.105106f,0.791187f},{0.511986f,-0.0480917f,0.857646f},{0.549755f,0.286096f,0.784805f}, -{0.401885f,0.448359f,0.798412f},{0.647712f,0.0793625f,0.75774f},{0.693393f,-0.138186f,0.707185f}, -{0.501942f,-0.419292f,0.756471f},{0.417585f,0.557046f,0.71786f},{0.48062f,0.607109f,0.63279f}, -{0.634624f,-0.714085f,-0.295524f},{0.301532f,0.609365f,0.733316f},{0.653937f,-0.26285f,0.70942f}, -{0.622959f,-0.417671f,0.661418f},{-0.27087f,-0.335809f,-0.902143f},{0.431305f,-0.544847f,0.719109f}, -{0.438527f,0.4447f,0.780984f},{0.475877f,0.4592f,0.750118f},{0.614748f,-0.108916f,0.781167f}, -{0.648812f,-0.709042f,-0.276231f},{0.807503f,-0.288409f,0.514548f},{0.329362f,0.199389f,0.922911f}, -{-0.288854f,-0.228841f,0.929621f},{0.032487f,-0.0237096f,0.999191f},{0.379595f,-0.203006f,0.902605f}, -{0.525301f,0.348523f,0.776267f},{0.353571f,0.251066f,0.901084f},{0.747355f,0.353664f,0.562478f}, -{-0.555693f,-0.784513f,-0.275219f},{0.411451f,0.499707f,0.762234f},{0.247906f,0.683824f,0.686241f}, -{0.432255f,0.553228f,0.712106f},{0.0447714f,0.929401f,0.366345f},{0.359402f,-0.545287f,0.757293f}, -{0.518952f,-0.151605f,0.841252f},{0.491923f,0.130876f,0.860746f},{0.414154f,0.50786f,0.755351f}, -{0.678972f,-0.1642f,0.715566f},{0.711066f,0.00492155f,0.703108f},{0.503994f,0.317354f,0.803291f}, -{0.588691f,0.195381f,0.784391f},{0.526698f,0.331299f,0.782834f},{0.716063f,0.386632f,0.58118f}, -{0.483935f,0.46453f,0.741632f},{0.495087f,0.569512f,0.656159f},{0.380152f,0.463059f,0.800663f}, -{0.30855f,0.620777f,0.720717f},{0.5734f,-0.641764f,-0.509266f},{0.380204f,0.394298f,0.836644f}, -{0.809792f,0.158265f,0.564969f},{0.555507f,0.484609f,0.675697f},{-0.740533f,-0.671531f,0.025636f}, -{-0.723145f,-0.674855f,0.147076f},{0.615847f,0.522535f,0.589652f},{0.512179f,-0.340231f,0.788616f}, -{0.536573f,-0.109383f,0.836735f},{0.529299f,0.12282f,0.839499f},{0.540318f,0.326725f,0.77544f}, -{0.538417f,0.44289f,0.716907f},{0.687982f,0.0622659f,0.723052f},{0.732887f,-0.246965f,0.633944f}, -{-0.477133f,0.364336f,-0.799752f},{-0.458535f,0.357291f,-0.813689f},{-0.45039f,0.349904f,-0.821411f}, -{0.2928f,0.188137f,0.937482f},{0.18232f,-0.391871f,0.901774f},{0.00676346f,-0.547607f,0.836708f}, -{0.916547f,-0.0457656f,-0.397299f},{0.762617f,-0.476852f,0.437066f},{0.815111f,-0.371701f,0.444335f}, -{0.786397f,-0.282666f,0.549254f},{-0.575086f,-0.0839676f,0.813773f},{0.712856f,0.388338f,0.583978f}, -{0.899224f,-0.35067f,-0.261584f},{0.774318f,-0.202262f,0.599601f},{0.702776f,-0.0325274f,0.710668f}, -{0.733857f,-0.17232f,0.657084f},{0.659872f,-0.0417907f,0.750215f},{0.307708f,-0.261296f,0.914899f}, -{0.208132f,-0.0752668f,0.975201f},{0.35429f,-0.556443f,0.751565f},{0.428666f,0.437099f,0.79069f}, -{0.509459f,0.418039f,0.752127f},{0.455826f,0.346165f,0.819996f},{0.673234f,-0.0798483f,0.735105f}, -{0.836109f,0.296137f,0.461763f},{0.781771f,0.338466f,0.523713f},{-0.206937f,-0.731467f,0.649718f}, -{0.182463f,0.804027f,0.565904f},{0.495997f,0.491771f,0.715645f},{0.697516f,-0.155143f,0.699573f}, -{0.640765f,-0.107144f,0.760224f},{0.667024f,-0.208429f,0.715288f},{0.69754f,-0.266859f,0.665f}, -{0.549992f,-0.105262f,0.82851f},{0.525844f,0.0216014f,0.850307f},{0.627803f,-0.145946f,0.764567f}, -{0.575798f,-0.110136f,0.81014f},{-0.97179f,0.206791f,0.113409f},{0.189983f,0.501541f,0.844016f}, -{0.5093f,0.462767f,0.725576f},{0.818183f,-0.189226f,0.542928f},{0.837951f,-0.0837523f,0.539281f}, -{0.494371f,-0.37279f,-0.785254f},{-0.46232f,-0.0898225f,0.882152f},{0.371185f,0.394377f,0.840648f}, -{0.473626f,-0.168205f,0.864514f},{-0.461698f,0.245268f,0.852454f},{0.529431f,-0.618975f,0.580148f}, -{0.431288f,-0.596394f,0.676983f},{0.518712f,-0.358702f,0.776061f},{0.359538f,0.526882f,0.770148f}, -{0.620336f,0.0945776f,0.778613f},{0.558303f,-0.222333f,0.799291f},{0.462001f,-0.280565f,0.841331f}, -{0.228678f,0.745663f,0.625854f},{0.581988f,-0.357027f,0.730631f},{0.671159f,-0.124645f,0.73076f}, -{0.657414f,0.107867f,0.745769f},{0.635504f,0.331112f,0.697495f},{0.527313f,0.468268f,0.708989f}, -{0.786941f,-0.0742031f,0.61255f},{0.78316f,0.0971358f,0.614187f},{0.679903f,-0.0312478f,-0.732636f}, -{0.722731f,-0.119831f,-0.680662f},{-0.304819f,0.292514f,-0.906378f},{-0.701588f,-0.688721f,0.182861f}, -{0.292159f,-0.372893f,0.880678f},{0.35086f,0.338823f,0.872981f},{0.49325f,-0.543568f,0.679145f}, -{0.482678f,-0.713783f,0.50748f},{-0.0412281f,-0.625784f,-0.778906f},{0.347424f,0.53187f,0.772276f}, -{0.363542f,0.452761f,0.814153f},{0.683475f,0.00488942f,0.729957f},{0.622766f,0.0726325f,0.779029f}, -{0.501262f,-0.479754f,0.72012f},{0.25502f,0.730842f,0.633115f},{0.337312f,0.626247f,0.702876f}, -{0.893756f,-0.323824f,-0.310383f},{0.661542f,-0.288546f,0.692173f},{0.615062f,-0.137833f,0.776338f}, -{0.679829f,-0.16072f,0.715543f},{0.715517f,0.135139f,0.6854f},{0.673723f,0.259116f,0.692067f}, -{0.607929f,0.357916f,0.708744f},{0.564176f,0.484896f,0.668268f},{0.605081f,0.132927f,0.784989f}, -{0.702442f,-0.0913318f,0.705856f},{0.524211f,-0.518737f,-0.675363f},{0.215163f,-0.85976f,0.46316f}, -{0.0578387f,0.325075f,-0.943918f},{-0.0515991f,0.412961f,-0.909286f},{-0.108005f,0.514926f,-0.850403f}, -{0.54637f,-0.00381208f,0.837535f},{0.614893f,-0.293542f,0.731942f},{0.541219f,-0.245194f,0.80434f}, -{0.398648f,0.234369f,0.886652f},{0.358081f,-0.189674f,0.914222f},{0.335383f,0.0542744f,0.940517f}, -{0.460648f,-0.309278f,0.831956f},{0.423308f,0.144847f,0.894332f},{0.435355f,0.202096f,0.877282f}, -{0.603528f,0.44959f,0.6585f},{0.679775f,-0.0385942f,0.732405f},{0.653824f,0.107886f,0.748916f}, -{0.759406f,0.0271836f,0.650049f},{0.574702f,0.413968f,0.705938f},{0.360767f,0.550165f,0.753104f}, -{-0.887326f,0.448617f,-0.106749f},{-0.933431f,0.327008f,-0.147555f},{0.5428f,-0.207117f,0.813923f}, -{0.494759f,-0.106389f,0.862493f},{-0.395446f,-0.207517f,-0.89474f},{-0.355182f,-0.249591f,-0.900861f}, -{0.495157f,-0.00965679f,0.86875f},{0.643235f,0.350247f,0.680864f},{0.570022f,0.501044f,0.651176f}, -{0.617122f,0.271777f,0.738443f},{0.862234f,0.144092f,0.485582f},{0.977463f,0.0865015f,0.192573f}, -{0.967945f,0.0949319f,0.232529f},{-0.304308f,0.397193f,-0.865814f},{0.270602f,-0.246793f,0.93052f}, -{0.577148f,0.34371f,0.740786f},{0.400594f,0.586566f,0.703893f},{0.302236f,0.559956f,0.771429f}, -{0.521137f,0.302706f,0.797988f},{0.502864f,0.414301f,0.758605f},{0.594349f,-0.0767115f,0.80054f}, -{0.573793f,-0.176939f,0.799659f},{0.62133f,0.0448709f,0.782264f},{0.581222f,0.0850307f,0.80929f}, -{0.682527f,-0.0396461f,0.729784f},{0.636348f,0.03267f,0.77071f},{0.388821f,-0.0387993f,0.920496f}, -{0.542248f,-0.00517707f,0.840202f},{0.581726f,-0.0418682f,0.812306f},{0.655859f,-0.313951f,0.686501f}, -{0.727557f,-0.0868233f,0.680531f},{0.744094f,0.140968f,0.653033f},{0.662563f,0.288153f,0.69136f}, -{0.497747f,-0.511148f,0.700696f},{-0.687492f,0.198204f,-0.69862f},{-0.565646f,0.0336114f,-0.823963f}, -{-0.63122f,0.176192f,-0.755326f},{0.715262f,0.396856f,0.575244f},{0.713432f,0.39338f,0.579885f}, -{-0.923237f,0.361203f,-0.131016f},{-0.998356f,0.0419347f,0.0390748f},{-0.996558f,0.0211225f,-0.0801658f}, -{0.440074f,0.261607f,0.859009f},{0.507926f,0.00577762f,0.861381f},{0.598678f,-0.238457f,0.764672f}, -{0.595584f,0.0324451f,0.802637f},{0.681167f,-0.213054f,0.700442f},{0.760255f,-0.0271448f,0.649057f}, -{0.769925f,0.103971f,0.629607f},{0.716696f,0.189305f,0.6712f},{0.664742f,0.357915f,0.655755f}, -{0.796516f,0.168019f,0.580802f},{0.807462f,0.0110927f,0.589815f},{0.846207f,0.128317f,0.517174f}, -{0.632386f,0.0778414f,-0.770732f},{0.698958f,0.0421958f,-0.713917f},{0.745128f,-0.0767328f,-0.662492f}, -{0.3335f,-0.145014f,0.93153f},{0.865745f,0.491554f,0.0941269f},{0.707032f,0.416355f,0.571625f}, -{0.80999f,0.565921f,0.153785f},{0.877285f,0.466554f,0.112687f},{0.908767f,0.406955f,0.0923594f}, -{0.668257f,-0.432233f,0.605481f},{0.672297f,-0.440256f,0.595141f},{0.590598f,0.120871f,0.797862f}, -{0.454966f,0.559227f,0.693016f},{0.549444f,0.578269f,0.603089f},{0.535451f,-0.533401f,0.654809f}, -{0.778287f,-0.614793f,-0.127668f},{0.770378f,-0.637588f,7.24516e-05f},{0.518565f,-0.0232879f,0.854721f}, -{0.49947f,0.00200443f,0.866329f},{0.475824f,0.117396f,0.871671f},{0.478578f,0.335545f,0.811401f}, -{0.552119f,0.216155f,0.805259f},{0.746915f,-0.129145f,0.652258f},{0.72802f,0.199855f,0.655778f}, -{0.753832f,-0.195787f,0.62722f},{0.656384f,0.422092f,0.625299f},{0.636566f,0.465569f,0.614841f}, -{0.914171f,0.107873f,0.390712f},{0.829913f,0.220967f,0.512268f},{0.932403f,0.11802f,0.341608f}, -{-0.25645f,-0.502436f,-0.825706f},{-0.941174f,0.222725f,-0.254137f},{0.623564f,-0.563809f,0.54156f}, -{0.439151f,0.502801f,0.744539f},{0.784586f,-0.297617f,0.54392f},{0.114849f,-0.45399f,-0.883574f}, -{0.694739f,-0.719229f,0.00687289f},{0.901992f,0.424732f,0.0775473f},{0.0386906f,-0.76215f,-0.646243f}, -{0.534589f,0.215435f,0.817192f},{0.418646f,0.233704f,0.877564f},{0.491832f,0.162436f,0.855404f}, -{-0.578384f,0.497412f,-0.646571f},{-0.83752f,0.114356f,-0.534306f},{-0.751325f,-0.0297917f,-0.659259f}, -{0.729163f,0.361824f,0.580865f},{0.759f,0.303823f,0.575857f},{0.22265f,-0.950099f,-0.218494f}, -{0.749635f,-0.441831f,0.49278f},{0.62442f,0.407023f,0.666657f},{0.480825f,0.343945f,0.806542f}, -{0.484674f,0.377617f,0.788984f},{-0.359597f,-0.178119f,-0.915949f},{-0.132927f,-0.480289f,-0.866979f}, -{0.618301f,0.114174f,0.777605f},{0.650738f,-0.0654459f,0.756476f},{0.818155f,-0.134811f,0.558971f}, -{0.751298f,0.243416f,0.613433f},{0.760882f,0.478202f,0.438613f},{0.766475f,0.346567f,0.540747f}, -{0.548821f,-0.33437f,0.766154f},{0.914253f,0.110328f,0.389832f},{-0.908437f,0.392483f,0.143871f}, -{-0.916873f,0.398846f,-0.0162913f},{0.577586f,0.157636f,0.800965f},{0.956451f,-9.39214e-05f,0.291893f}, -{0.513721f,0.405479f,0.756093f},{0.459552f,0.406286f,0.789775f},{0.63472f,0.110533f,0.764796f}, -{0.638935f,0.168088f,0.750672f},{0.851403f,-0.491367f,-0.183499f},{0.743817f,0.0571238f,0.665938f}, -{0.624312f,0.0274681f,0.780692f},{0.56851f,-0.179512f,0.802852f},{0.899508f,0.0827162f,0.429003f}, -{0.841008f,0.0246865f,0.540459f},{0.817259f,0.0591081f,0.573232f},{0.827772f,0.18779f,0.528704f}, -{0.498712f,-0.488039f,0.716313f},{0.697539f,-0.186868f,0.691751f},{0.583311f,-0.151649f,0.797967f}, -{0.773136f,0.0139612f,0.634087f},{0.794927f,-0.0103512f,0.606617f},{0.565734f,0.479916f,0.670542f}, -{-0.864742f,0.103488f,0.491439f},{0.828208f,-0.00768752f,0.560368f},{0.561537f,-0.286341f,0.776328f}, -{0.508557f,0.150787f,0.847722f},{0.545509f,0.274793f,0.791776f},{0.594812f,-0.0292075f,0.803334f}, -{0.603583f,0.135798f,0.78565f},{0.442723f,0.0788834f,0.893182f},{0.554001f,0.29244f,0.779463f}, -{0.600309f,-0.0313817f,0.799152f},{0.399517f,-0.0519389f,0.915253f},{0.452671f,0.0560515f,0.889914f}, -{0.591323f,0.26021f,0.7633f},{0.608531f,0.316253f,0.727787f},{0.652664f,0.0892208f,0.752376f}, -{0.608645f,0.00582163f,0.793422f},{0.534761f,0.021969f,0.844718f},{0.552932f,0.0923861f,0.828089f}, -{0.615998f,0.155852f,0.772177f},{0.708251f,0.0938871f,0.69969f},{0.448258f,-0.39374f,0.802517f}, -{0.955745f,0.0600352f,0.288004f},{0.48462f,-0.528963f,0.696665f},{0.786507f,0.367476f,0.496355f}, -{0.946708f,0.312889f,0.0764525f},{0.970324f,0.231022f,0.0714221f},{0.622192f,-0.479217f,0.619054f}, -{0.528436f,0.369101f,0.764539f},{0.780853f,0.00919292f,0.624647f},{0.387582f,-0.131106f,0.912465f}, -{0.50548f,-0.154984f,0.848805f},{0.877049f,0.473586f,0.0806271f},{0.829991f,0.555528f,0.0500242f}, -{0.0380677f,-0.422558f,-0.905536f},{-0.0386355f,-0.416857f,-0.908151f},{0.101346f,-0.34475f,-0.933208f}, -{-0.65478f,0.227072f,-0.720903f},{0.554038f,0.392875f,0.733956f},{0.234576f,0.762263f,0.603265f}, -{0.25995f,0.711212f,0.653149f},{0.498703f,-0.320812f,0.805217f},{0.524817f,-0.317889f,0.789629f}, -{0.775137f,-0.392992f,0.494691f},{0.58636f,-0.0781912f,0.806268f},{0.840356f,0.34648f,0.416837f}, -{0.876942f,0.455574f,0.153053f},{0.908257f,0.364583f,0.2053f},{0.875224f,-0.483566f,-0.0121026f}, -{0.917423f,-0.388275f,0.0870448f},{0.562132f,0.160272f,0.811369f},{0.170127f,-0.327533f,0.929397f}, -{0.768738f,-0.0521177f,0.637436f},{0.761336f,-0.026129f,0.647831f},{0.886198f,-0.0253639f,0.462612f}, -{0.884802f,-0.0240317f,0.465348f},{0.875003f,-0.0269654f,0.483366f},{0.888156f,-0.303303f,-0.345232f}, -{0.720994f,0.41486f,0.55503f},{0.73089f,0.493643f,0.471292f},{0.799211f,0.510579f,0.317129f}, -{0.766819f,0.495596f,0.407889f},{0.716985f,0.389142f,0.578361f},{0.66729f,-0.114149f,0.735998f}, -{0.654942f,-0.233812f,0.718598f},{0.821195f,-0.308784f,0.479887f},{0.775726f,-0.3568f,0.520521f}, -{0.717386f,-0.30496f,0.626383f},{0.208891f,-0.812635f,-0.544049f},{0.859058f,0.105923f,0.500799f}, -{0.881403f,0.14631f,0.449135f},{0.841431f,0.0925177f,0.532386f},{0.565092f,0.0003129f,0.825028f}, -{0.54228f,-0.0389849f,0.839293f},{-0.372746f,0.134499f,-0.918134f},{0.72628f,0.0503029f,-0.685556f}, -{0.787154f,-0.0814957f,-0.611349f},{0.769883f,-0.297935f,-0.564371f},{0.744067f,0.141766f,0.652891f}, -{0.574057f,0.0905282f,0.813795f},{0.761955f,0.157928f,0.62808f},{0.887165f,0.0459843f,0.459156f}, -{0.885574f,0.209166f,0.414738f},{0.72059f,0.381289f,0.579111f},{0.90903f,0.274057f,0.313939f}, -{0.450923f,-0.195169f,0.870964f},{0.739011f,0.117632f,0.663344f},{0.571164f,-0.541364f,0.617007f}, -{0.889148f,0.0404144f,0.455832f},{-0.407865f,0.585904f,-0.700259f},{0.680773f,-0.427493f,0.594809f}, -{0.715782f,-0.442783f,0.54f},{0.568523f,-0.363063f,0.738219f},{0.309482f,-0.182632f,0.933202f}, -{-0.919947f,0.0886574f,-0.381888f},{0.861114f,-0.0447529f,0.506438f},{0.821222f,-0.0124579f,0.570473f}, -{0.81439f,-0.0385379f,0.579037f},{0.192437f,0.0496368f,0.980053f},{0.478856f,0.612574f,0.628848f}, -{-0.511654f,0.318298f,-0.798058f},{-0.601647f,0.281855f,-0.747381f},{0.251524f,0.118615f,-0.960555f}, -{0.225671f,0.123337f,-0.966365f},{0.912175f,-0.0206556f,0.409281f},{0.902009f,-0.018796f,0.431308f}, -{0.93251f,3.12715e-05f,0.361143f},{0.660423f,0.0123608f,0.750792f},{0.841922f,0.338374f,0.420321f}, -{0.48217f,-0.30124f,0.822658f},{0.213331f,-0.966013f,-0.145976f},{0.982792f,0.184059f,-0.0155821f}, -{0.882267f,0.470176f,-0.0232345f},{0.897305f,0.413593f,0.154221f},{-0.452893f,0.251605f,-0.855326f}, -{-0.42283f,0.351254f,-0.835366f},{0.831731f,0.186743f,0.522829f},{0.885981f,0.159897f,0.435283f}, -{0.528091f,-0.0916303f,0.84423f},{-0.5275f,0.392926f,-0.753229f},{-0.414898f,0.226583f,-0.881203f}, -{-0.449899f,0.203977f,-0.869473f},{0.792407f,0.309002f,0.525936f},{0.702105f,-0.174158f,0.690447f}, -{0.601373f,-0.0740094f,0.795533f},{0.550285f,0.795586f,0.253436f},{0.234523f,0.778306f,0.582442f}, -{0.324053f,0.512421f,0.795245f},{0.574058f,-0.409459f,0.709084f},{0.248926f,-0.872222f,-0.421028f}, -{0.291238f,0.681894f,0.67097f},{-0.206327f,0.155371f,-0.966069f},{-0.179661f,0.246138f,-0.952438f}, -{-0.129275f,0.294127f,-0.946983f},{-0.236405f,0.381324f,-0.893703f},{0.686435f,0.401971f,0.605992f}, -{-0.408368f,0.355119f,-0.840908f},{0.820717f,-0.249024f,0.514208f},{0.729541f,-0.276127f,0.625719f}, -{0.981621f,0.137155f,0.132695f},{0.883296f,0.312291f,-0.349661f},{0.873408f,0.450495f,-0.184969f}, -{0.498945f,0.610413f,0.615183f},{0.778182f,0.38333f,0.497485f},{0.283819f,0.610949f,0.739046f}, -{0.883323f,0.255649f,0.392918f},{0.799895f,0.0390677f,0.598868f},{0.810366f,0.0758698f,0.580991f}, -{0.852675f,-0.235047f,0.466582f},{0.888261f,-0.0854651f,0.451318f},{0.87399f,-0.0845339f,0.478535f}, -{0.0351843f,-0.998869f,-0.0319747f},{0.0305101f,-0.99916f,-0.0273486f},{0.537026f,0.273246f,0.798085f}, -{0.0538744f,-0.983474f,-0.172848f},{-0.316547f,-0.843145f,-0.434632f},{0.468404f,0.603343f,0.645426f}, -{-0.178733f,-0.51791f,-0.836555f},{0.591741f,-0.474756f,-0.651498f},{0.12968f,-0.977424f,-0.166811f}, -{0.421402f,-0.892298f,-0.161939f},{-0.737569f,0.5865f,0.33468f},{-0.849297f,0.462132f,0.255202f}, -{-0.394842f,-0.918423f,0.0244794f},{-0.463997f,0.132699f,-0.875841f},{-0.322235f,0.0572273f,-0.944928f}, -{-0.373209f,0.0745975f,-0.924743f},{0.486459f,-0.162385f,0.85848f},{-0.482457f,-0.842529f,-0.239541f}, -{0.499279f,-0.259573f,0.826645f},{0.411235f,0.323673f,0.852128f},{0.554669f,-0.34206f,0.75851f}, -{0.473195f,-0.178033f,0.862781f},{0.849404f,0.518863f,0.096404f},{0.876804f,0.461771f,0.134098f}, -{0.758995f,-0.279535f,0.588036f},{0.425511f,-0.715773f,-0.553723f},{0.340117f,-0.913034f,-0.225142f}, -{0.720202f,0.392223f,0.57225f},{-0.887605f,0.375631f,-0.266567f},{-0.870968f,-0.10751f,-0.479434f}, -{-0.880827f,0.148713f,-0.449475f},{0.625715f,-0.186516f,0.757425f},{0.49642f,-0.788635f,0.362796f}, -{0.450044f,-0.869811f,0.202213f},{0.769115f,-0.312414f,0.557547f},{0.727369f,-0.115659f,0.676429f}, -{0.0593964f,-0.478543f,0.876053f},{0.164209f,0.0300051f,0.985969f},{-0.0644165f,0.0478143f,0.996777f}, -{0.152902f,0.149191f,0.976915f},{0.483827f,-0.665811f,0.567986f},{0.896442f,-0.0319358f,0.442009f}, -{0.914686f,-0.0438937f,0.401775f},{-0.451712f,-0.831749f,-0.322723f},{-0.297702f,-0.794045f,-0.529968f}, -{0.888428f,0.139476f,0.437312f},{0.175709f,-0.322229f,0.930212f},{0.514633f,-0.835931f,0.190714f}, -{0.92474f,0.379415f,0.0300102f},{0.918099f,0.386049f,0.0897775f},{0.814101f,-0.545264f,-0.199817f}, -{0.912396f,0.0460901f,0.406706f},{-0.777079f,-0.577772f,-0.249656f},{-0.669531f,-0.626988f,-0.398264f}, -{0.0198351f,-0.999244f,0.0334435f},{0.0138369f,-0.999067f,0.0408985f},{0.0159619f,-0.999343f,0.0325355f}, -{0.886832f,-0.0337723f,0.460856f},{-0.90871f,0.244633f,-0.338232f},{-0.0909099f,0.558564f,-0.824464f}, -{0.60105f,0.682827f,-0.415314f},{-0.790674f,-0.288535f,-0.539984f},{0.0880274f,-0.995293f,0.0405437f}, -{0.00338008f,-0.520431f,0.853897f},{0.712797f,0.446657f,0.540757f},{0.813274f,-0.529637f,0.240976f}, -{0.908879f,-0.35302f,0.222074f},{0.718433f,-0.162821f,0.676272f},{0.181672f,0.904069f,-0.386852f}, -{-0.417861f,0.905006f,0.0797298f},{-0.713732f,0.577259f,0.396685f},{-0.076924f,-0.696852f,-0.713078f}, -{-0.181321f,-0.570804f,-0.800816f},{-0.191037f,-0.442903f,-0.875981f},{-0.0504743f,-0.580727f,-0.812532f}, -{-0.926669f,-0.356093f,-0.120341f},{-0.892653f,-0.449437f,-0.0343083f},{-0.986856f,-0.133881f,-0.0905015f}, -{0.587545f,-0.717401f,0.374334f},{0.998502f,0.0530506f,-0.0133723f},{0.949732f,0.30454f,0.0725536f}, -{0.998781f,0.0489191f,-0.00662695f},{0.996435f,0.0816746f,0.0211487f},{0.68741f,0.0823538f,0.721585f}, -{0.584366f,0.244026f,0.77393f},{0.269489f,0.147477f,0.951644f},{0.519998f,-0.60239f,0.605581f}, -{0.567408f,-0.484303f,0.665957f},{-0.676466f,-0.181577f,-0.713739f},{-0.802923f,-0.132063f,-0.58127f}, -{-0.582632f,-0.207995f,-0.78567f},{0.746876f,-0.118077f,0.654396f},{0.975213f,-0.209994f,-0.0697239f}, -{0.60946f,0.229956f,0.758735f},{0.764709f,-0.00540347f,0.644353f},{0.680325f,-0.379919f,0.626754f}, -{0.736298f,-0.112824f,0.667185f},{0.616818f,-0.00552029f,0.787086f},{0.895137f,-0.311959f,-0.318451f}, -{-0.709982f,-0.133843f,-0.691384f},{-0.577864f,-0.187655f,-0.794266f},{0.83979f,-0.15125f,0.521417f}, -{0.596297f,0.0624722f,0.800329f},{0.0105197f,-0.998823f,0.0473539f},{0.0265853f,-0.99901f,0.0356652f}, -{0.0124122f,-0.998977f,0.0434877f},{-0.678991f,0.664674f,-0.311736f},{0.33402f,0.150594f,0.930458f}, -{-0.432098f,0.335744f,0.836999f},{0.692931f,-0.0653427f,0.718037f},{0.266962f,0.858519f,0.437808f}, -{0.875412f,-0.110105f,0.47067f},{0.931732f,-0.0463402f,0.360177f},{0.917928f,0.390128f,0.0721717f}, -{0.926793f,-0.0150992f,0.375268f},{0.742293f,0.37572f,0.554829f},{0.722769f,-0.643509f,0.251992f}, -{0.921411f,-0.112764f,0.371869f},{-0.552981f,0.11925f,-0.824616f},{0.0969255f,0.700357f,0.707181f}, -{0.815723f,-0.0576197f,0.575566f},{-0.959286f,0.0233389f,-0.281471f},{0.938652f,0.278602f,0.203255f}, -{0.291122f,-0.576791f,0.763256f},{0.224105f,-0.751766f,0.620181f},{0.262298f,-0.881578f,0.392453f}, -{-0.558518f,-0.125543f,-0.819937f},{-0.419377f,-0.0666438f,-0.905363f},{-0.510491f,-0.319457f,-0.798339f}, -{0.341107f,-0.0284138f,0.939595f},{0.858203f,-0.0563061f,0.510212f},{0.880166f,0.164233f,0.44535f}, -{0.689148f,0.496612f,0.527686f},{0.771216f,-0.14831f,0.619056f},{0.771271f,0.507287f,-0.384448f}, -{0.834734f,0.227488f,-0.501467f},{0.85188f,-0.0369246f,0.522434f},{0.386071f,0.227234f,-0.894044f}, -{0.325297f,0.269005f,-0.906542f},{0.378206f,0.379987f,-0.844139f},{0.662992f,-0.227769f,0.713136f}, -{0.594588f,-0.0322742f,0.803382f},{0.804086f,-0.0198517f,0.594182f},{0.736753f,0.0181734f,0.675918f}, -{0.326986f,0.196476f,0.924379f},{0.299563f,0.339299f,0.891705f},{0.884397f,0.126928f,0.449145f}, -{0.415895f,0.703623f,0.576147f},{0.270987f,0.684654f,0.676621f},{0.886993f,0.123335f,0.445007f}, -{0.618728f,-0.106254f,0.778386f},{0.00880166f,-0.999707f,-0.0225414f},{0.0201949f,-0.999687f,-0.0147667f}, -{0.0280835f,-0.999382f,-0.0211496f},{0.310203f,-0.397361f,0.863642f},{-0.0407621f,0.187927f,-0.981337f}, -{0.494633f,-0.865635f,-0.0775528f},{0.590065f,0.0157559f,0.807202f},{0.756401f,-0.214401f,0.617972f}, -{0.70386f,-0.501947f,0.502623f},{0.513046f,0.0939776f,0.853201f},{0.561868f,-0.598621f,0.570926f}, -{-0.882151f,-0.304941f,0.358916f},{-0.922118f,-0.257219f,0.289027f},{-0.869252f,-0.420449f,0.260043f}, -{-0.0299809f,-0.993548f,0.109381f},{-0.00991282f,-0.999769f,0.0190808f},{0.227082f,-0.483709f,0.845257f}, -{0.318876f,-0.00218194f,0.947794f},{-0.721335f,-0.58379f,0.372645f},{-0.844342f,-0.429109f,0.320862f}, -{-0.793675f,-0.561927f,0.233064f},{-0.446212f,0.0339292f,-0.894284f},{-0.542424f,0.173159f,-0.822066f}, -{-0.523215f,0.18899f,-0.83098f},{0.852689f,0.312839f,0.418393f},{0.326618f,0.746278f,-0.579991f}, -{0.43824f,0.765982f,-0.470337f},{0.394471f,0.836057f,-0.381316f},{0.947904f,0.0496112f,0.31467f}, -{-0.69292f,-0.718449f,0.0607708f},{-0.83053f,-0.546689f,-0.106539f},{-0.968231f,0.0429053f,0.246349f}, -{-0.823249f,0.447806f,0.3489f},{0.0290057f,-0.99844f,0.0477127f},{0.135844f,0.356041f,-0.924544f}, -{0.157125f,0.356013f,-0.921177f},{0.702615f,-0.705316f,0.094134f},{-0.207965f,0.00367548f,-0.978129f}, -{-0.553098f,0.275765f,-0.786152f},{-0.646691f,0.197265f,-0.736802f},{-0.67218f,0.236112f,-0.70173f}, -{0.730094f,-0.00643599f,0.683316f},{0.942911f,-0.321198f,0.0880354f},{0.837478f,0.339639f,0.428107f}, -{0.522261f,0.307107f,0.795569f},{0.57665f,-0.609907f,0.543588f},{0.59619f,-0.248945f,0.763272f}, -{0.663708f,-0.395918f,0.634619f},{0.363764f,0.0543848f,0.929902f},{-0.624526f,-0.732207f,0.271734f}, -{-0.62029f,-0.71074f,0.331798f},{0.911724f,0.135763f,0.387721f},{0.181805f,0.489394f,0.852901f}, -{0.336708f,-0.102173f,0.93605f},{0.354085f,0.0237752f,0.934911f},{0.57874f,0.741724f,-0.338977f}, -{0.545642f,0.698697f,-0.462706f},{0.566298f,0.757711f,-0.324314f},{-0.314115f,0.947718f,0.0562388f}, -{0.581017f,-0.458852f,0.672216f},{-0.334189f,0.465636f,-0.819452f},{-0.312672f,0.554287f,-0.771364f}, -{0.581397f,-0.348002f,0.73544f},{-0.0906116f,0.499157f,0.861761f},{0.0294859f,-0.0565748f,-0.997963f}, -{-0.0298575f,0.0125533f,-0.999475f},{-0.0240975f,-0.0732973f,-0.997019f},{-0.367049f,0.148835f,-0.918217f}, -{-0.0153553f,0.739279f,-0.673224f},{0.3737f,0.71988f,-0.584911f},{0.291589f,0.00169327f,0.956542f}, -{-0.405861f,0.384739f,-0.829007f},{-0.444386f,0.455033f,-0.771664f},{-0.701359f,0.404044f,-0.587234f}, -{0.606879f,-0.193662f,0.770839f},{0.561341f,-0.104168f,0.821003f},{0.39326f,0.358897f,0.846486f}, -{0.328906f,-0.335092f,0.882912f},{-0.0572828f,0.247977f,-0.967071f},{0.880482f,-0.0150773f,0.47384f}, -{-0.358699f,0.160404f,-0.919568f},{0.36513f,0.322964f,0.873141f},{0.871962f,0.0410214f,0.487851f}, -{0.288687f,0.0169397f,0.957274f},{0.551894f,-0.577205f,0.601871f},{0.360338f,-0.865636f,-0.347608f}, -{0.293413f,-0.897843f,-0.328309f},{0.399519f,0.467113f,0.78879f},{0.696026f,-0.0722678f,0.714371f}, -{-0.0496104f,-0.0161746f,-0.998638f},{0.017165f,-0.0241149f,-0.999562f},{0.221142f,-0.382684f,0.897023f}, -{-0.175494f,0.594691f,-0.784566f},{0.0255035f,0.0935805f,-0.995285f},{-0.0210553f,0.317065f,-0.94817f}, -{0.509115f,0.633526f,0.58262f},{0.490691f,-0.311449f,0.81377f},{0.33886f,0.225938f,0.913305f}, -{0.465134f,-0.14352f,-0.873529f},{0.365383f,-0.100181f,-0.925451f},{-0.633866f,0.676616f,0.374707f}, -{-0.287038f,0.322961f,-0.901834f},{-0.720707f,-0.115035f,-0.683629f},{-0.499874f,-0.0901865f,-0.86139f}, -{-0.257732f,0.840352f,-0.476846f},{0.509487f,-0.632754f,0.583134f},{0.287168f,-0.31054f,0.906145f}, -{0.299274f,0.0483362f,0.952942f},{-0.100852f,0.454565f,-0.884986f},{0.67887f,0.428883f,-0.595982f}, -{0.497894f,-0.411631f,0.763323f},{0.244059f,0.609261f,0.754478f},{0.782364f,-0.223263f,0.581429f}, -{-0.310859f,0.769689f,0.557625f},{-0.370555f,0.816573f,0.442603f},{0.396677f,0.000531581f,0.917958f}, -{-0.0780473f,0.136668f,-0.987538f},{-0.193533f,0.894149f,0.403785f},{-0.469226f,0.810899f,0.349672f}, -{-0.599307f,0.720881f,0.348083f},{0.597735f,0.798804f,-0.0680163f},{-0.390329f,0.730714f,-0.56009f}, -{0.959444f,0.0389925f,0.27919f},{0.0866216f,-0.0782957f,-0.99316f},{0.0659964f,-0.0736851f,-0.995095f}, -{0.2912f,0.0574939f,0.954933f},{0.88907f,0.321536f,0.325836f},{-0.0155458f,0.906453f,0.42202f}, -{0.666373f,-0.500383f,-0.552778f},{0.8608f,0.346833f,0.372466f},{0.843227f,0.25116f,0.475275f}, -{-0.453813f,-0.0143082f,-0.890982f},{-0.24794f,-0.307459f,-0.918692f},{0.257164f,0.0550692f,0.964797f}, -{-0.366218f,-0.429376f,0.825543f},{-0.4966f,-0.309925f,0.810762f},{0.127606f,-0.14502f,-0.981166f}, -{-0.762129f,-0.60679f,0.225756f},{0.0143175f,-0.999788f,-0.0147732f},{0.0109175f,-0.99987f,-0.0118935f}, -{0.00619323f,-0.999932f,-0.00986292f},{-0.142064f,-0.566734f,-0.811561f},{-0.982566f,-0.0233312f,-0.184445f}, -{-0.982201f,0.185549f,-0.0292062f},{-0.52164f,0.791731f,-0.31789f},{-0.644517f,0.597376f,-0.477221f}, -{-0.696846f,0.483527f,-0.529723f},{-0.883865f,0.259645f,0.389059f},{-0.89337f,0.245748f,0.376163f}, -{0.092153f,-0.238835f,-0.966678f},{-0.898211f,0.397905f,-0.186783f},{0.997552f,-0.0618775f,-0.032576f}, -{0.993174f,-0.107765f,-0.0446236f},{-0.940601f,0.262619f,-0.215175f},{-0.897251f,0.333562f,-0.289268f}, -{0.439447f,-0.896273f,0.0598437f},{0.400452f,-0.910927f,0.0992435f},{0.427674f,-0.902604f,0.0490067f}, -{0.0360786f,-0.997277f,0.0643199f},{0.0645358f,-0.994324f,0.0845833f},{0.224178f,-0.969841f,0.0956641f}, -{-0.980638f,-0.00736646f,-0.195689f},{-0.572463f,-0.725649f,-0.381733f},{-0.618061f,-0.659854f,-0.42731f}, -{-0.362638f,-0.894922f,-0.260017f},{0.00462647f,-0.999587f,-0.0283808f},{-0.00164635f,-0.999876f,-0.015652f}, -{-0.00983998f,-0.999952f,0.000305002f},{0.973157f,-0.183172f,-0.139335f},{0.996745f,-0.0737784f,-0.0324859f}, -{0.986885f,-0.111135f,-0.11708f},{0.997794f,0.0325288f,-0.0578666f},{0.995577f,0.0928073f,0.0145992f}, -{-0.83468f,-0.496603f,0.238109f},{0.96726f,0.253285f,0.0159274f},{0.961391f,0.272285f,0.0398579f}, -{-0.359224f,0.378528f,-0.853039f},{-0.492686f,0.422685f,-0.760656f},{-0.0326768f,0.862869f,-0.504371f}, -{-0.0986429f,0.811704f,-0.575678f},{-0.0482041f,0.821139f,-0.56869f},{0.695949f,-0.682593f,-0.222985f}, -{-0.231695f,0.317407f,-0.919549f},{-0.339532f,0.320155f,-0.884431f},{-0.395214f,0.859704f,0.323596f}, -{0.3429f,0.415894f,-0.84229f},{0.385219f,0.263828f,-0.884308f},{0.378023f,0.302815f,-0.874873f}, -{-0.960881f,0.24907f,0.121132f},{-0.971621f,0.226807f,0.0671622f},{-0.37359f,0.599063f,-0.708204f}, -{-0.377794f,0.819743f,-0.430457f},{-0.609038f,0.677555f,-0.412301f},{0.385864f,-0.911894f,0.139852f}, -{0.0697907f,-0.995996f,0.0558698f},{0.845772f,0.507229f,0.165494f},{0.777954f,0.593335f,0.206739f}, -{0.920531f,0.362211f,0.146376f},{0.912664f,0.389791f,0.122911f},{0.984758f,0.16318f,0.0601944f}, -{0.997034f,0.0679387f,0.0361566f},{0.994588f,-0.101538f,-0.0220202f},{-0.666404f,0.563915f,-0.487755f}, -{-0.714725f,0.362688f,-0.598018f},{0.83658f,-0.340717f,-0.429007f},{0.863925f,-0.450595f,-0.224937f}, -{-0.799294f,0.529921f,0.283395f},{-0.967002f,0.195641f,0.163192f},{-0.339817f,0.914487f,-0.219634f}, -{-0.545492f,0.8063f,-0.228733f},{0.672512f,-0.114677f,-0.731148f},{-0.762563f,-0.532268f,-0.367679f}, -{-0.876042f,-0.304687f,-0.373786f},{-0.844516f,-0.278079f,-0.457673f},{-0.929772f,-0.312106f,-0.195229f}, -{-0.536093f,0.714569f,-0.449439f},{-0.33016f,0.913565f,-0.237471f},{-0.379477f,0.861928f,-0.336271f}, -{0.971925f,-0.229338f,-0.052599f},{-0.861158f,0.00599323f,-0.508301f},{-0.900303f,0.0329582f,-0.434013f}, -{-0.885967f,-0.0618478f,-0.459606f},{-0.536935f,-0.162785f,-0.827769f},{0.100273f,-0.323968f,-0.940739f}, -{-0.118235f,-0.477087f,-0.870867f},{0.74417f,-0.572401f,-0.344338f},{-0.875321f,-0.0583348f,-0.480011f}, -{0.940173f,0.151028f,-0.305393f},{0.962733f,-0.240052f,0.124578f},{0.76268f,-0.354927f,-0.54069f}, -{-0.999025f,0.00702945f,0.043579f},{-0.982233f,-0.171173f,0.0769339f},{-0.942957f,0.159886f,-0.292009f}, -{-0.478959f,0.775714f,-0.410934f},{0.982423f,-0.186548f,-0.00665627f},{0.990741f,-0.132479f,0.0296812f}, -{0.931631f,-0.354107f,-0.0816785f},{0.791666f,-0.0679739f,-0.607161f},{0.754519f,-0.0879699f,-0.650356f}, -{0.793904f,-0.0796276f,-0.602807f},{-0.677332f,0.731321f,-0.0799375f},{-0.656232f,0.708389f,-0.259893f}, -{-0.838214f,0.504165f,-0.207881f},{0.204869f,-0.840839f,0.501018f},{0.153821f,-0.480468f,0.863417f}, -{0.0704106f,-0.942853f,0.325686f},{0.956408f,-0.228265f,-0.18215f},{0.986183f,-0.0936427f,-0.136652f}, -{0.995545f,0.0406436f,-0.085079f},{-0.839642f,0.486502f,-0.24149f},{0.769548f,-0.526779f,-0.36097f}, -{-0.910351f,-0.333461f,-0.245081f},{-0.757463f,-0.364873f,-0.541404f},{-0.744719f,0.390985f,-0.540855f}, -{-0.863937f,-0.467813f,-0.186452f},{-0.743624f,0.127538f,-0.656321f},{-0.138916f,-0.41781f,-0.897851f}, -{0.95161f,-0.305239f,-0.035608f},{-0.0063863f,-0.628727f,-0.7776f},{-0.952006f,0.144361f,-0.269899f}, -{0.651594f,-0.183612f,-0.736011f},{0.674141f,-0.29853f,-0.675584f},{0.741378f,-0.230745f,-0.630171f}, -{-0.15322f,0.899928f,-0.408231f},{-0.207807f,0.846397f,-0.490335f},{-0.0451371f,0.827896f,-0.559063f}, -{-0.899822f,-0.311671f,-0.305256f},{-0.786522f,0.47361f,0.396329f},{-0.850935f,0.406667f,0.332463f}, -{-0.885878f,0.335753f,0.32014f},{0.686391f,-0.683815f,-0.247517f},{-0.67231f,-0.656937f,-0.341221f}, -{0.0f,0.0f,1.0f},{-0.937959f,-0.346653f,-0.00801302f},{-0.98739f,0.133802f,0.0846035f}, -{-0.0273161f,-0.138734f,-0.989953f},{0.0374685f,-0.224627f,-0.973724f},{0.705075f,-0.356919f,-0.612763f}, -{0.73297f,-0.423725f,-0.532176f},{0.77507f,-0.397151f,-0.491464f},{0.835103f,-0.224489f,-0.502203f}, -{0.813602f,-0.520484f,-0.25913f},{0.622879f,-0.584838f,-0.519602f},{0.698437f,-0.544724f,-0.464178f}, -{0.742741f,-0.582086f,-0.330926f},{0.598783f,-0.742132f,-0.301162f},{-0.949238f,0.306132f,0.0723165f}, -{-0.87596f,0.150958f,0.458154f},{0.986936f,0.159859f,0.0200684f},{0.956088f,0.286087f,0.0636382f}, -{0.984588f,0.121724f,0.125577f},{0.728274f,-0.0628471f,-0.682398f},{0.665955f,-0.0317118f,-0.745318f}, -{0.728609f,-0.14214f,-0.670019f},{-0.980512f,-0.0184633f,-0.195589f},{0.653931f,-0.666453f,0.358071f}, -{0.795056f,-0.276985f,-0.539598f},{0.829892f,-0.0953654f,-0.549713f},{0.861028f,-0.224006f,-0.456565f}, -{0.714815f,-0.275027f,-0.642962f},{-0.99155f,0.0806621f,0.101594f},{-0.127067f,0.871035f,-0.474503f}, -{0.593073f,-0.762618f,-0.258221f},{0.741611f,-0.633575f,-0.220445f},{0.879746f,-0.306992f,-0.363048f}, -{0.964765f,-0.0275073f,0.261671f},{-0.493436f,0.858968f,0.136728f},{-0.485737f,0.873949f,-0.0165395f}, -{-0.348249f,0.195388f,-0.916813f},{-0.865865f,0.42357f,0.266207f},{-0.991741f,0.0369164f,0.122831f}, -{-0.95484f,0.230839f,0.187067f},{0.413983f,-0.524267f,-0.744151f},{0.429364f,-0.694634f,-0.577174f}, -{0.190692f,-0.890844f,-0.412351f},{0.930414f,0.288332f,0.226261f},{0.997636f,-0.0670532f,0.0150621f}, -{0.995219f,0.0057273f,0.0975008f},{0.876074f,0.45196f,0.168009f},{0.878814f,-0.41968f,-0.227055f}, -{-0.230254f,-0.803082f,0.549584f},{-0.452718f,-0.646761f,0.613796f},{0.685239f,0.594863f,-0.420221f}, -{0.712106f,0.108611f,-0.69362f},{0.80921f,0.100493f,-0.578862f},{0.69558f,-0.243057f,-0.676086f}, -{0.749341f,-0.229107f,-0.621287f},{-0.46364f,-0.34574f,-0.815783f},{-0.829148f,-0.522963f,0.197543f}, -{-0.780415f,-0.576732f,0.241522f},{-0.919049f,-0.349159f,0.182857f},{-0.918924f,0.166482f,-0.35758f}, -{-0.949718f,0.0941859f,-0.298605f},{-0.970658f,0.0626362f,-0.232164f},{0.826395f,0.189191f,-0.530357f}, -{0.909795f,0.130265f,-0.394086f},{0.909374f,-0.00413196f,-0.41596f},{0.895746f,0.0197669f,-0.444126f}, -{0.690116f,-0.378259f,-0.616977f},{-0.895177f,-0.362898f,0.258771f},{0.446098f,-0.890696f,0.0875017f}, -{0.391035f,-0.914116f,0.107161f},{0.459105f,-0.882593f,0.101258f},{-0.633135f,-0.51279f,0.579816f}, -{-0.649023f,-0.452888f,0.611279f},{-0.59273f,-0.407957f,0.694437f},{0.904743f,-0.242724f,0.350034f}, -{0.828868f,-0.426799f,-0.361691f},{0.792659f,-0.553534f,-0.255525f},{-0.943462f,-0.127474f,-0.30599f}, -{-0.912574f,-0.0911195f,-0.39863f},{0.74525f,0.196846f,-0.637067f},{0.789092f,0.275901f,-0.548828f}, -{0.0114303f,-0.999602f,-0.0257713f},{0.814482f,-0.153989f,-0.55938f},{0.883559f,-0.106128f,-0.456136f}, -{0.0991691f,-0.75282f,-0.650713f},{0.1192f,-0.891997f,-0.436042f},{0.0416995f,-0.990848f,-0.128381f}, -{-0.868636f,0.464477f,0.172431f},{0.648167f,0.0160177f,-0.761329f},{0.685066f,0.331524f,-0.648673f}, -{0.713803f,-0.585761f,-0.383887f},{0.548529f,-0.764757f,-0.338028f},{-0.941654f,-0.0652673f,-0.330193f}, -{-0.947257f,-0.0320283f,-0.318871f},{-0.736538f,-0.154852f,-0.658432f},{0.841077f,-0.0220143f,-0.540467f}, -{0.839122f,0.304265f,-0.450884f},{0.671902f,-0.415255f,-0.613279f},{0.743045f,-0.290646f,-0.602834f}, -{0.791078f,-0.213203f,-0.573359f},{-0.414459f,0.780265f,0.468414f},{-0.333447f,0.81949f,0.466099f}, -{-0.350316f,0.897013f,0.269529f},{-0.445173f,0.203844f,-0.871934f},{-0.554085f,0.282607f,-0.783022f}, -{-0.371315f,0.14061f,-0.917799f},{-0.525501f,-0.42254f,-0.73845f},{-0.193952f,-0.922888f,-0.332656f}, -{-0.644837f,0.638904f,0.419509f},{-0.577435f,0.74013f,0.344638f},{0.642653f,-0.725827f,-0.245299f}, -{-0.534687f,0.832182f,-0.146915f},{-0.451134f,0.798492f,-0.398608f},{0.0169719f,-0.999804f,-0.0101645f}, -{0.036643f,-0.999184f,-0.016996f},{-0.947189f,0.122828f,0.296219f},{-0.986756f,0.0836779f,0.138966f}, -{-0.716169f,0.350797f,-0.60336f},{-0.200614f,-0.294627f,-0.934318f},{-0.321563f,-0.17239f,-0.931063f}, -{-0.956011f,0.291732f,-0.0305733f},{-0.684357f,0.683399f,-0.254208f},{0.60638f,-0.0863361f,-0.790474f}, -{0.625317f,0.0625792f,-0.777858f},{-0.9141f,0.225904f,-0.336733f},{0.74609f,-0.49078f,-0.449982f}, -{0.754326f,-0.426754f,-0.498872f},{0.721635f,-0.498468f,-0.480389f},{-0.696162f,-0.506157f,-0.509081f}, -{-0.677645f,-0.550992f,-0.487038f},{-0.924725f,0.272964f,-0.265283f},{0.747567f,-0.162517f,-0.643997f}, -{0.733726f,-0.26049f,-0.627528f},{-0.841458f,-0.3679f,0.395725f},{-0.780482f,-0.625175f,0.00217309f}, -{-0.467462f,0.83911f,-0.278161f},{-0.768839f,0.627927f,-0.120804f},{0.100807f,-0.994218f,-0.0369808f}, -{0.0348387f,-0.995477f,-0.0883868f},{-0.391848f,0.873182f,-0.28984f},{0.032085f,0.683438f,-0.729303f}, -{0.0152515f,0.645162f,-0.763893f},{-0.0140963f,0.692749f,-0.721041f},{0.798704f,-0.184977f,-0.572586f}, -{-0.523094f,0.852059f,-0.0191815f},{-0.954618f,-0.0164208f,-0.29738f},{-0.975711f,0.0897672f,-0.199826f}, -{-0.965971f,0.18126f,-0.184511f},{-0.950108f,0.0759588f,-0.30253f},{0.992414f,0.121164f,0.0208189f}, -{0.611404f,0.221804f,-0.759598f},{0.990116f,-0.0971424f,-0.101157f},{-0.7541f,-0.0822748f,-0.651585f}, -{-0.894907f,-0.409213f,-0.178004f},{-0.977252f,-0.183154f,-0.106927f},{-0.137259f,0.411548f,-0.900993f}, -{-0.0444384f,0.517873f,-0.854303f},{-0.230663f,0.547608f,-0.804313f},{0.980831f,0.19448f,0.0121421f}, -{-0.147885f,0.685989f,-0.712425f},{-0.107152f,0.598248f,-0.794114f},{-0.638269f,0.716773f,-0.280801f}, -{-0.851021f,0.359455f,0.382826f},{-0.82939f,0.350349f,0.435165f},{-0.194385f,-0.436604f,-0.878403f}, -{-0.704735f,-0.236526f,-0.668882f},{-0.894576f,0.111168f,0.43287f},{0.723662f,-0.0895417f,-0.684321f}, -{-0.26078f,0.930097f,-0.258678f},{-0.666087f,0.17054f,-0.726116f},{-0.589705f,-0.152056f,-0.793175f}, -{0.0588107f,0.66234f,-0.746892f},{0.0464484f,0.641371f,-0.765824f},{0.732878f,0.108509f,-0.671651f}, -{0.769934f,0.058901f,-0.6354f},{0.704258f,0.155158f,-0.692782f},{-0.905845f,0.0736368f,-0.417159f}, -{-0.886491f,-0.0258386f,-0.462024f},{-0.850694f,0.0210112f,-0.525241f},{0.767409f,-0.243228f,-0.593231f}, -{0.827619f,-0.193028f,-0.527055f},{0.779302f,-0.23095f,-0.582538f},{-0.884043f,-0.4635f,-0.0602925f}, -{-0.959193f,-0.26739f,-0.0919339f},{-0.85836f,-0.41451f,0.302322f},{0.765939f,-0.614183f,-0.190045f}, -{0.755147f,-0.00353785f,-0.655546f},{0.768294f,-0.249242f,-0.589579f},{0.76295f,0.0228429f,-0.646054f}, -{0.772987f,-0.200477f,-0.601914f},{0.839712f,0.218607f,-0.497086f},{0.000715683f,-0.980848f,0.194775f}, -{-0.635974f,-0.730907f,0.247612f},{-0.639593f,-0.35236f,-0.683201f},{-0.684919f,-0.396537f,-0.611264f}, -{-0.618439f,-0.339162f,-0.708874f},{0.127168f,-0.681979f,-0.720231f},{0.0782779f,-0.738573f,-0.669614f}, -{0.0113648f,-0.991394f,-0.130418f},{0.289444f,0.140849f,-0.946775f},{0.335955f,0.19986f,-0.92043f}, -{0.193556f,0.347962f,-0.91731f},{-0.974989f,0.117221f,-0.188825f},{0.219525f,0.217545f,-0.951043f}, -{-0.897894f,-0.341032f,0.27836f},{-0.897788f,-0.411493f,0.157002f},{-0.839134f,-0.369163f,0.399466f}, -{-0.895872f,-0.175299f,0.408268f},{0.843528f,-0.381703f,-0.37784f},{-0.832408f,0.491697f,-0.2556f}, -{0.518818f,0.0828733f,-0.850858f},{0.506607f,0.0628409f,-0.859884f},{0.54957f,0.240652f,-0.800037f}, -{-0.638102f,0.465486f,-0.61331f},{-0.513594f,0.704289f,-0.4901f},{-0.472045f,0.46126f,-0.751274f}, -{-0.952576f,-0.11264f,0.282687f},{0.99936f,0.00995633f,0.0343486f},{0.963471f,0.196356f,0.182123f}, -{0.984349f,0.0784931f,0.157783f},{0.279703f,0.283064f,-0.91741f},{0.181413f,0.312065f,-0.93258f}, -{0.236822f,0.427557f,-0.872416f},{-0.105609f,0.685177f,-0.72068f},{-0.976885f,-0.0286416f,0.211839f}, -{0.725157f,-0.00896551f,-0.688525f},{0.724382f,0.0375398f,-0.688376f},{0.766879f,-0.221373f,-0.602404f}, -{0.747531f,-0.347926f,-0.565814f},{0.105336f,-0.993702f,-0.0382186f},{0.399919f,-0.874604f,-0.274102f}, -{-0.642518f,0.276432f,-0.714673f},{-0.671372f,0.263996f,-0.692507f},{0.675291f,-0.602507f,-0.425403f}, -{0.218857f,-0.971126f,0.0949512f},{0.628034f,-0.747951f,0.21481f},{0.46298f,-0.856397f,0.228545f}, -{0.808891f,-0.569684f,-0.14545f},{0.653049f,-0.392291f,-0.647792f},{-0.0164474f,-0.999166f,0.0373811f}, -{-0.00770074f,-0.99916f,0.0402574f},{0.000142267f,-0.9996f,0.0282806f},{-0.141438f,0.915478f,-0.37669f}, -{-0.0262741f,0.8654f,-0.500392f},{-0.108226f,0.86563f,-0.488847f},{-0.189009f,0.743456f,-0.641521f}, -{-0.398889f,0.836374f,-0.375986f},{-0.934459f,0.0509862f,-0.352402f},{0.793651f,-0.04301f,-0.606851f}, -{0.713646f,0.148586f,-0.684567f},{-0.789885f,-0.580768f,0.196952f},{-0.807347f,-0.562697f,0.177657f}, -{-0.802356f,-0.546869f,0.239081f},{-0.118066f,-0.971948f,0.203415f},{-0.427385f,0.756545f,0.494956f}, -{0.73633f,0.308414f,-0.602245f},{0.859609f,0.0481623f,-0.508678f},{0.0357142f,-0.425029f,-0.904475f}, -{-0.216403f,-0.407845f,-0.887036f},{0.591956f,-0.749826f,-0.29555f},{0.579828f,-0.624834f,-0.52286f}, -{0.745975f,-0.250335f,-0.617133f},{0.770701f,-0.326509f,-0.547185f},{-0.889108f,-0.0981269f,-0.447054f}, -{-0.454529f,-0.0502772f,-0.889312f},{-0.637814f,-0.765383f,-0.0859141f},{-0.790282f,-0.609604f,0.0619454f}, -{0.786256f,0.100661f,-0.609646f},{0.970064f,0.194078f,0.145976f},{0.945551f,0.300532f,0.124952f}, -{-0.963703f,0.07142f,0.257248f},{0.0192169f,-0.978854f,-0.203654f},{0.893996f,-0.0181557f,-0.447706f}, -{-0.96542f,0.108981f,0.236827f},{-0.696219f,-0.631337f,-0.341603f},{-0.612492f,-0.74952f,-0.251142f}, -{-0.29042f,-0.876351f,-0.384273f},{0.639278f,-0.729907f,0.241988f},{0.69726f,-0.654375f,0.29261f}, -{-0.978716f,0.13926f,0.150735f},{0.000183522f,-0.998022f,0.0628701f},{-0.921737f,0.0503909f,-0.384528f}, -{-0.800558f,-0.493875f,-0.339402f},{-0.497304f,0.332329f,-0.801403f},{0.615217f,-0.432449f,0.659163f}, -{0.797934f,-0.505531f,-0.328238f},{0.865963f,-0.084911f,-0.492847f},{-0.305809f,-0.410663f,-0.858974f}, -{0.248637f,-0.581692f,-0.774476f},{-0.0103987f,-0.99808f,0.0610528f},{-0.951984f,0.221019f,0.21184f}, -{0.977876f,-0.181766f,-0.103535f},{-0.921649f,0.36585f,0.129297f},{0.699153f,-0.675216f,-0.23509f}, -{0.755519f,-0.604696f,-0.25206f},{0.638633f,-0.518986f,-0.568157f},{0.71167f,-0.542609f,-0.446207f}, -{0.484392f,-0.401776f,-0.777136f},{0.703104f,-0.546784f,-0.454612f},{-0.858558f,0.0931788f,-0.504178f}, -{-0.921669f,0.165028f,-0.351129f},{-0.806021f,-0.148181f,-0.573037f},{-0.710689f,-0.664555f,-0.230841f}, -{-0.840258f,-0.120608f,0.528602f},{0.887732f,-0.18165f,-0.423007f},{0.904292f,-0.119169f,-0.409946f}, -{0.867545f,-0.118966f,-0.482921f},{0.99829f,0.0581998f,-0.00551678f},{-0.914838f,0.361162f,0.180649f}, -{-0.912489f,0.395871f,0.103196f},{0.531903f,0.275915f,-0.800593f},{0.515947f,0.267172f,-0.813891f}, -{0.519825f,0.372712f,-0.768679f},{0.762899f,-0.17899f,-0.621246f},{0.702701f,-0.150915f,-0.695296f}, -{-0.294184f,0.897705f,-0.327998f},{0.147592f,0.958411f,-0.244265f},{0.177148f,0.966717f,-0.1846f}, -{0.176799f,0.971614f,-0.15719f},{-0.465063f,0.0616191f,0.883131f},{-0.418584f,-0.261446f,0.869731f}, -{0.583074f,-0.793946f,0.172264f},{0.731105f,-0.0128284f,-0.682144f},{0.676149f,-0.462984f,-0.573121f}, -{0.723236f,-0.330051f,-0.606626f},{0.704461f,0.394819f,-0.58979f},{0.843936f,-0.107503f,-0.525562f}, -{-0.96141f,-0.00372427f,-0.275096f},{-0.894378f,0.323282f,-0.309154f},{0.956972f,0.136056f,0.256306f}, -{-0.933431f,-0.350667f,-0.0757507f},{-0.130992f,0.607162f,-0.783706f},{-0.154968f,0.416175f,-0.895982f}, -{-0.260322f,0.567362f,-0.781238f},{-0.0362481f,0.607833f,-0.793237f},{-0.141952f,0.705861f,-0.693981f}, -{-0.121685f,0.645941f,-0.753627f},{-0.297167f,0.482335f,-0.824042f},{0.740034f,0.428893f,-0.518074f}, -{0.657119f,0.4288f,-0.619939f},{0.507662f,-0.441258f,-0.73998f},{-0.898184f,-0.155866f,-0.411062f}, -{-0.731846f,-0.184488f,-0.656023f},{-0.585754f,-0.776209f,-0.23322f},{-0.977273f,0.0661205f,-0.201412f}, -{-0.869666f,0.468964f,0.154123f},{-0.874285f,0.47548f,0.0976949f},{-0.765902f,0.148325f,0.625615f}, -{-0.899666f,0.406081f,0.160309f},{-0.935898f,0.330841f,0.120995f},{-0.974013f,0.125771f,0.188361f}, -{-0.976974f,0.0530194f,0.206668f},{0.923756f,0.129146f,0.360549f},{0.0350245f,-0.887122f,0.460203f}, -{0.67463f,-0.30715f,-0.671218f},{-0.504845f,-0.486101f,0.713328f},{-0.516171f,-0.350276f,0.781584f}, -{0.31792f,-0.3715f,-0.872305f},{0.511809f,-0.490299f,-0.705449f},{-0.978509f,0.204314f,-0.0278446f}, -{0.147245f,0.551976f,-0.820756f},{0.130809f,0.437729f,-0.88954f},{0.00867079f,0.703226f,-0.710913f}, -{0.425153f,-0.903936f,0.0463115f},{0.403859f,-0.905871f,0.127655f},{-0.770367f,-0.617828f,-0.157556f}, -{0.714366f,0.00755797f,-0.699732f},{0.887058f,-0.253175f,-0.386045f},{0.904446f,-0.229688f,-0.359473f}, -{0.889749f,-0.237271f,-0.389934f},{-0.0191102f,-0.999817f,-0.00115212f},{0.0066128f,-0.999505f,0.0307467f}, -{0.00427601f,-0.998407f,-0.0562644f},{0.709271f,-0.160033f,-0.686531f},{0.74534f,-0.288142f,-0.601201f}, -{0.608205f,-0.355153f,-0.709896f},{0.125865f,0.782562f,-0.609717f},{-0.0739411f,0.799269f,-0.596407f}, -{0.0508085f,0.72803f,-0.68366f},{-0.814112f,-0.561646f,-0.147568f},{0.972331f,0.159512f,0.170672f}, -{0.861139f,-0.229934f,-0.453399f},{0.894211f,-0.209492f,-0.395601f},{-0.220335f,-0.862894f,0.454827f}, -{-0.215799f,-0.863267f,0.456291f},{0.819689f,0.0614222f,-0.569506f},{0.857209f,0.0364918f,-0.513673f}, -{-0.95851f,-0.25396f,0.129474f},{0.847391f,-0.263974f,-0.460701f},{0.410327f,-0.908244f,0.0820033f}, -{0.250237f,-0.965597f,0.0707417f},{0.529549f,-0.264119f,-0.806113f},{0.541477f,0.764778f,-0.349167f}, -{-0.0183646f,0.673017f,-0.739399f},{-0.00922519f,0.686325f,-0.727236f},{-0.969929f,-0.182964f,0.160506f}, -{-0.0327101f,-0.996404f,-0.0781646f},{0.542598f,0.111129f,-0.832609f},{-0.054401f,0.718347f,-0.693555f}, -{0.960249f,-0.258809f,-0.104594f},{0.868777f,-0.0882508f,-0.487276f},{0.0262056f,-0.999314f,-0.0261689f}, -{-0.742036f,-0.634751f,0.215576f},{-0.790094f,-0.603961f,-0.104797f},{0.684195f,0.0425916f,-0.728054f}, -{0.909851f,-0.135259f,-0.39227f},{0.846745f,0.00228132f,-0.531994f},{-0.982988f,-0.164733f,0.0812222f}, -{0.995198f,-0.0892049f,-0.0402945f},{0.986315f,0.147268f,0.0741227f},{0.566721f,0.31205f,-0.76253f}, -{0.401851f,0.226639f,-0.887215f},{0.0372775f,-0.264135f,-0.963765f},{-0.976716f,0.0122543f,0.214188f}, -{-0.313664f,0.917903f,-0.243042f},{-0.352028f,0.889474f,-0.291398f},{0.108126f,-0.83625f,-0.537583f}, -{0.171862f,-0.95061f,-0.258466f},{0.86963f,-0.270204f,-0.4132f},{-0.903531f,0.323979f,0.28048f}, -{-0.683437f,0.620562f,0.384468f},{-0.691721f,-0.7163f,-0.0918445f},{-0.736096f,0.554191f,0.388633f}, -{-0.645063f,0.68258f,0.34348f},{-0.614513f,-0.77154f,0.164621f},{0.669319f,-0.537608f,-0.512825f}, -{0.327855f,-0.918252f,0.222092f},{0.298594f,-0.934062f,0.19588f},{0.354796f,-0.918097f,0.176686f}, -{-0.506672f,0.834157f,0.217865f},{0.0345878f,-0.999201f,-0.020016f},{0.931099f,0.276016f,-0.238473f}, -{-0.020536f,-0.30336f,-0.952655f},{-0.469175f,-0.414153f,-0.779969f},{0.118301f,-0.895303f,-0.429462f}, -{0.099007f,-0.97542f,-0.196861f},{0.0272237f,-0.999335f,-0.0242418f},{-0.674057f,0.449826f,-0.585921f}, -{0.703665f,0.384147f,-0.597735f},{0.33071f,0.351781f,-0.875718f},{0.0978065f,0.508281f,-0.855619f}, -{0.546689f,-0.0132231f,-0.837231f},{0.896842f,-0.151815f,-0.415484f},{-0.960075f,0.245652f,0.133831f}, -{-0.98563f,0.084896f,0.146033f},{-0.899805f,0.257965f,0.351859f},{0.827633f,-0.396764f,-0.39699f}, -{-0.883847f,0.292303f,0.365202f},{-0.965708f,0.175981f,0.190889f},{-0.272344f,-0.945067f,-0.180768f}, -{0.0209144f,-0.999074f,0.0376027f},{0.032975f,-0.998556f,-0.0424153f},{0.0318291f,-0.998875f,-0.0351631f}, -{0.0352428f,-0.998819f,-0.0334404f},{0.0388307f,-0.998288f,0.0437481f},{-0.647332f,-0.523114f,-0.554359f}, -{-0.355664f,-0.613777f,-0.704826f},{0.959933f,-0.275879f,-0.0491777f},{0.992104f,-0.125231f,0.00679531f}, -{-0.0944883f,0.823707f,0.559088f},{-0.999729f,-0.0207259f,-0.0106073f},{0.563333f,0.0340497f,-0.825528f}, -{0.998869f,0.0105482f,0.0463714f},{-0.470932f,0.711152f,0.522003f},{0.278589f,0.329839f,-0.901994f}, -{-0.886327f,0.432631f,-0.165089f},{-0.926808f,0.375345f,-0.0119485f},{0.204039f,-0.372273f,-0.905418f}, -{-0.992881f,0.0451062f,0.110243f},{-0.59668f,0.742712f,0.303894f},{-0.791167f,0.0261632f,-0.61104f}, -{0.438938f,-0.894537f,-0.0844837f},{-0.00869637f,-0.999954f,0.00417063f},{-0.0213252f,-0.999674f,0.0140172f}, -{-0.153982f,0.624937f,-0.765339f},{0.794822f,-0.532167f,-0.291645f},{0.811671f,-0.521067f,-0.263968f}, -{-0.517259f,-0.574715f,-0.63415f},{-0.93562f,0.340752f,-0.0922097f},{0.236175f,-0.960352f,-0.148136f}, -{0.553704f,-0.827051f,-0.096947f},{0.870867f,0.381557f,0.309847f},{0.853989f,0.341659f,0.392392f}, -{-0.154021f,-0.650535f,-0.743694f},{0.0262376f,-0.999048f,0.0348535f},{0.0225118f,-0.999678f,0.0117443f}, -{-0.124984f,-0.435542f,-0.891449f},{-0.37736f,-0.556838f,-0.739954f},{0.872701f,0.335303f,0.354917f}, -{0.853307f,0.326584f,0.40646f},{0.93813f,0.199247f,0.283218f},{0.0217241f,-0.999386f,-0.0274869f}, -{-0.597863f,-0.38968f,-0.700507f},{0.959073f,0.10872f,0.261455f},{-0.18484f,-0.257829f,-0.948345f}, -{0.154603f,-0.413225f,-0.897409f},{0.717788f,-0.687313f,0.111275f},{0.847382f,-0.520852f,0.103229f}, -{0.924113f,0.287993f,0.251147f},{0.911501f,0.262502f,0.316637f},{0.76148f,-0.482196f,-0.433169f}, -{0.940386f,0.129455f,0.314508f},{0.863147f,0.448876f,0.231275f},{0.761826f,-0.641831f,0.0876031f}, -{0.906001f,0.324256f,0.272067f},{0.0985965f,-0.902022f,-0.420279f},{-0.88257f,0.38391f,0.271447f}, -{-0.968928f,0.130172f,0.21032f},{-0.102488f,-0.994179f,-0.0332447f},{-0.0442014f,-0.992883f,-0.110588f}, -{0.962835f,0.199899f,0.181627f},{0.221024f,0.37711f,-0.899409f},{0.217884f,0.261235f,-0.940363f}, -{0.204653f,0.371797f,-0.905474f},{-0.385283f,0.722821f,0.573662f},{0.800531f,-0.19496f,-0.566693f}, -{0.975873f,0.0781187f,0.203887f},{0.976396f,0.098517f,0.192213f},{0.964255f,0.132192f,0.229645f}, -{0.95341f,0.0958946f,0.286032f},{0.946655f,0.14687f,0.286835f},{0.940817f,0.252628f,0.225928f}, -{0.905792f,0.35846f,0.225938f},{0.90519f,0.368597f,0.211583f},{0.916708f,0.349413f,0.193796f}, -{0.904462f,0.381361f,0.191082f},{0.824432f,0.565116f,0.0309246f},{0.82786f,0.560907f,-0.00562512f}, -{-0.96563f,-0.0745097f,0.249011f},{-0.351993f,-0.922569f,0.15801f},{-0.05336f,-0.995682f,0.075956f}, -{-0.360501f,-0.839956f,0.405602f},{0.864828f,0.398074f,0.305956f},{0.795907f,0.528246f,0.295782f}, -{0.956112f,0.21274f,0.201471f},{0.974732f,0.0578164f,0.215767f},{0.962779f,0.0784324f,0.258661f}, -{0.234707f,-0.73487f,0.636301f},{-0.210907f,-0.231875f,-0.949606f},{0.971296f,0.156885f,0.178808f}, -{0.951489f,0.120919f,0.282925f},{0.0275537f,-0.999051f,-0.0337455f},{-0.318759f,-0.932821f,-0.168041f}, -{0.816302f,0.491849f,0.302878f},{0.778816f,0.567945f,0.266241f},{0.617103f,-0.751326f,0.233866f}, -{0.986863f,-0.0263569f,0.159393f},{0.914441f,0.385846f,0.122154f},{0.939377f,0.3255f,0.107795f}, -{-0.269202f,-0.242719f,-0.931997f},{-0.62682f,0.758358f,0.178856f},{-0.842996f,0.537838f,-0.00937066f}, -{-0.624626f,0.757251f,-0.190825f},{-0.0746514f,-0.561558f,-0.824063f},{0.974361f,0.14028f,0.175902f}, -{0.721718f,0.541276f,-0.431444f},{0.691845f,-0.678714f,0.246368f},{0.940354f,-0.258607f,0.221034f}, -{0.961877f,-0.119882f,0.245806f},{0.63723f,-0.429472f,-0.639915f},{0.989181f,0.0945617f,0.11216f}, -{0.990752f,0.0975521f,0.094307f},{0.985711f,0.123981f,0.114028f},{0.977333f,0.166331f,0.130976f}, -{0.956945f,0.25428f,0.139992f},{0.923567f,0.353306f,0.148994f},{0.91272f,0.377482f,0.156363f}, -{0.916948f,0.362123f,0.167552f},{0.911395f,0.387113f,0.139649f},{0.835581f,0.53732f,0.114417f}, -{0.968796f,0.231741f,0.0879191f},{-0.704802f,0.0615895f,0.706725f},{-0.765553f,-0.532367f,0.361267f}, -{-0.755914f,-0.172051f,0.631659f},{0.863069f,0.405931f,0.300552f},{0.838471f,0.491299f,0.235781f}, -{0.902746f,0.311662f,0.296507f},{0.972589f,0.0739923f,0.220444f},{0.61259f,-0.265774f,-0.744377f}, -{0.968436f,0.216794f,0.123015f},{0.976937f,-0.152909f,0.14904f},{-0.171894f,0.773899f,-0.609535f}, -{-0.279005f,0.84322f,-0.459496f},{0.0318361f,-0.999257f,-0.0217057f},{-0.686432f,-0.418899f,0.59442f}, -{0.940718f,-0.314328f,0.127464f},{0.127985f,-0.970691f,-0.203416f},{-0.140049f,0.795548f,0.589483f}, -{0.890566f,0.394901f,0.225712f},{-0.17875f,0.0676498f,-0.981566f},{-0.130389f,0.136394f,-0.982036f}, -{-0.693075f,-0.719421f,-0.045614f},{-0.854093f,-0.520116f,0.00228063f},{-0.697985f,-0.682744f,0.216051f}, -{0.958009f,0.268102f,0.101683f},{0.910047f,0.341379f,0.235107f},{-0.130869f,0.189174f,-0.973184f}, -{-0.136388f,0.204777f,-0.96926f},{-0.360244f,0.91344f,-0.189348f},{0.00927586f,0.997961f,-0.0631495f}, -{-0.269327f,0.956986f,-0.107895f},{0.0065507f,0.999964f,-0.00535563f},{-0.0516087f,0.998536f,0.0162233f}, -{-0.00549771f,0.998424f,0.0558435f},{-0.966082f,-0.223912f,0.128644f},{-0.959726f,-0.273362f,0.0647994f}, -{0.195186f,0.974535f,0.110378f},{0.102488f,0.979166f,0.175299f},{0.647374f,0.671496f,0.360554f}, -{-0.3164f,0.947491f,0.0463864f},{0.0622768f,0.854897f,0.515046f},{0.0187868f,0.827973f,0.560453f}, -{0.793441f,0.573205f,0.204667f},{0.570489f,0.666316f,0.480172f},{0.0149417f,0.788806f,0.614461f}, -{0.551521f,0.679451f,0.483912f},{-0.33077f,0.874133f,0.355644f},{-0.381363f,0.807787f,0.449491f}, -{-0.0394864f,0.843368f,0.535884f},{-0.875505f,-0.465724f,0.128814f},{-0.186669f,0.821205f,0.539237f}, -{-0.40397f,0.803553f,0.437162f},{0.0275706f,0.940562f,0.3385f},{0.0127497f,0.923202f,0.384103f}, -{0.0978516f,0.88668f,0.451912f},{-0.978017f,0.136329f,0.157789f},{0.63961f,0.752729f,0.155875f}, -{0.574715f,0.728057f,0.373678f},{0.296871f,0.73371f,0.611177f},{0.583868f,0.792562f,-0.175909f}, -{0.613508f,0.789373f,-0.0223071f},{0.30635f,0.812628f,0.495768f},{0.7584f,0.598623f,0.257838f}, -{0.751662f,0.579045f,0.315772f},{0.626681f,0.697524f,0.347462f},{0.327733f,0.893655f,0.306548f}, -{0.0817467f,0.949563f,0.302734f},{0.609838f,0.702151f,0.367535f},{-0.141646f,0.863148f,0.484677f}, -{-0.248361f,0.827147f,0.504127f},{0.251704f,0.958776f,0.131885f},{-0.00860057f,0.843532f,0.53701f}, -{0.610942f,0.685026f,0.39685f},{0.563461f,0.706036f,0.428981f},{0.290591f,0.953423f,-0.0808732f}, -{-0.0416996f,0.942389f,0.331909f},{-0.242277f,-0.954806f,0.172186f},{-0.508478f,-0.833053f,0.217884f}, -{-0.706606f,-0.680659f,-0.193422f},{-0.780268f,-0.571677f,-0.253706f},{0.203519f,0.955669f,-0.212783f}, -{-0.409056f,0.847362f,0.338602f},{-0.10077f,0.935414f,0.338889f},{-0.143977f,0.951576f,0.271611f}, -{-0.167925f,0.867559f,0.468127f},{0.117004f,0.992992f,-0.0166474f},{-0.0198098f,0.997063f,0.0739749f}, -{-0.0233485f,0.980743f,0.193904f},{-0.0633045f,0.881613f,0.467708f},{-0.0576471f,0.742484f,0.667378f}, -{-0.38597f,0.7806f,0.491621f},{-0.424397f,0.710223f,0.561668f},{-0.329934f,0.7797f,0.532176f}, -{-0.66792f,0.709634f,0.224284f},{-0.451594f,0.832424f,0.321144f},{-0.0026761f,0.997846f,-0.0655392f}, -{0.0393049f,0.947095f,0.318538f},{-0.0874497f,0.213337f,-0.973057f},{-0.14254f,0.226346f,-0.963561f}, -{-0.079948f,0.963489f,0.255531f},{0.00520031f,0.979625f,-0.200767f},{0.160151f,0.97548f,0.150967f}, -{-0.30432f,0.934853f,-0.182866f},{-0.382215f,0.88348f,-0.270877f},{-0.0554854f,0.991601f,-0.116832f}, -{0.238752f,0.970688f,0.0276203f},{0.658975f,0.641087f,0.393396f},{-0.166042f,0.978496f,0.122378f}, -{0.0307127f,0.987931f,0.151817f},{-0.343655f,0.938408f,-0.0359483f},{0.334978f,0.937134f,-0.0978196f}, -{0.843998f,0.536343f,-0.00166254f},{0.0366952f,0.998946f,-0.0275677f},{-0.406013f,0.896936f,0.175099f}, -{-0.523428f,0.7564f,-0.392279f},{-0.719595f,0.569109f,-0.397866f},{0.0774109f,0.330299f,-0.940697f}, -{-0.926674f,0.36204f,0.101006f},{0.573185f,0.791566f,0.211852f},{0.759727f,0.648451f,-0.0482235f}, -{0.912176f,0.39349f,0.114457f},{-0.973178f,-0.227499f,0.0341798f},{0.27077f,0.673918f,0.6874f}, -{0.737332f,0.667635f,-0.102979f},{0.79274f,0.608946f,0.0273588f},{0.606984f,0.722816f,0.330314f}, -{0.898969f,0.435381f,0.0479348f},{0.596787f,0.704856f,-0.383437f},{-0.940796f,-0.0582889f,0.333923f}, -{0.00474336f,-0.999893f,-0.0138285f},{-0.00631413f,-0.999977f,0.00228954f},{0.0132945f,-0.999842f,0.0117666f}, -{0.725395f,0.687263f,0.0383686f},{-0.623881f,-0.449673f,-0.639192f},{-0.710202f,-0.337333f,-0.617915f}, -{-0.564536f,-0.513949f,-0.645876f},{0.205114f,0.939815f,-0.273268f},{0.306274f,0.933228f,-0.187833f}, -{0.293334f,0.918292f,-0.265886f},{-0.730003f,0.627909f,0.269862f},{0.0412235f,0.990147f,-0.133823f}, -{-0.0506354f,0.990554f,-0.127428f},{-0.797838f,0.144275f,0.585354f},{-0.814328f,-0.00914634f,0.580333f}, -{-0.875474f,-0.0288966f,0.482401f},{-0.87953f,0.267082f,0.393819f},{0.193281f,0.980464f,-0.0365016f}, -{0.241335f,0.970224f,0.0205498f},{0.2625f,0.963919f,-0.0442113f},{-0.0568875f,0.994164f,-0.0916615f}, -{-0.00599234f,0.955773f,0.294044f},{-0.632698f,0.175517f,-0.754246f},{-0.709847f,0.319233f,-0.627859f}, -{-0.644735f,0.295137f,-0.705132f},{0.0790042f,0.929158f,0.361142f},{0.76758f,0.541513f,0.342907f}, -{0.804976f,0.457231f,0.378091f},{0.147986f,0.988531f,0.0301111f},{0.696325f,0.673718f,0.247458f}, -{0.711674f,0.542561f,0.446261f},{0.242014f,0.964107f,-0.109214f},{0.161173f,0.924593f,0.345182f}, -{-0.999615f,-0.0214551f,0.0176068f},{-0.892926f,0.154387f,0.422904f},{-0.837955f,-0.521028f,0.162363f}, -{-0.839437f,-0.532918f,0.106511f},{0.0638424f,0.997652f,-0.0248022f},{-0.715259f,-0.673496f,0.186566f}, -{-0.61264f,-0.789564f,0.0355033f},{0.31859f,0.837066f,0.444771f},{0.316983f,0.920076f,-0.230177f}, -{0.428733f,0.866239f,-0.25655f},{0.271337f,0.960436f,-0.0627656f},{0.324601f,0.944442f,0.051613f}, -{-0.581084f,0.522689f,0.623809f},{-0.440341f,0.699445f,0.562918f},{-0.287863f,-0.196649f,-0.937264f}, -{-0.330953f,-0.324711f,-0.886021f},{0.339123f,0.808747f,0.480546f},{-0.021721f,0.882003f,0.470743f}, -{0.127878f,0.991291f,0.0314696f},{0.098346f,0.992921f,0.0665993f},{0.0284123f,-0.997479f,0.0650288f}, -{0.020356f,-0.99678f,0.0775616f},{0.0240698f,-0.997295f,0.069456f},{0.278418f,0.949947f,-0.141718f}, -{0.604354f,0.51753f,0.605738f},{0.185444f,0.978943f,-0.0853253f},{-0.902527f,-0.429563f,0.0303291f}, -{0.180423f,0.975577f,0.125284f},{0.291481f,0.956568f,-0.00407742f},{0.349613f,0.890753f,-0.290396f}, -{0.356001f,0.892578f,-0.27671f},{-0.772158f,0.517877f,0.368206f},{-0.833386f,-0.170946f,0.525591f}, -{-0.467427f,0.879952f,-0.0848387f},{0.745154f,0.610309f,-0.268828f},{-0.860918f,-0.0426011f,-0.506957f}, -{-0.425821f,0.844817f,-0.323977f},{-0.138972f,0.83396f,0.534038f},{0.641568f,0.757832f,0.118662f}, -{0.82573f,0.549377f,0.127887f},{0.436349f,0.851679f,0.290243f},{0.149454f,0.967097f,0.205881f}, -{0.123489f,0.962764f,0.240489f},{0.0777148f,0.948839f,0.306049f},{0.259818f,0.964051f,0.0556885f}, -{0.671152f,0.613816f,0.415674f},{0.737405f,0.584125f,0.339162f},{0.0787638f,0.972075f,0.221056f}, -{0.0226107f,0.965058f,0.261059f},{-0.318905f,0.888959f,-0.328713f},{-0.387093f,0.91673f,0.0988183f}, -{0.338681f,0.924639f,0.174179f},{-0.0464892f,0.917725f,0.394486f},{0.34519f,0.784268f,0.515527f}, -{0.0981635f,0.845149f,0.525441f},{0.32706f,0.938825f,-0.107887f},{0.334149f,0.940787f,-0.057133f}, -{0.360584f,0.904615f,-0.227268f},{0.370049f,0.916384f,-0.152656f},{0.219202f,0.949682f,-0.223729f}, -{0.0417123f,0.962056f,0.269644f},{0.0445164f,0.999004f,0.0029002f},{0.0311419f,0.99584f,0.0856323f}, -{-0.0105715f,0.904381f,0.426594f},{0.250169f,0.889893f,0.381453f},{-0.479884f,0.734289f,0.480136f}, -{0.0616234f,0.91504f,0.398629f},{-0.873565f,-0.484911f,0.0417901f},{0.193391f,0.97755f,0.0836386f}, -{-0.24517f,-0.897212f,-0.367291f},{-0.738477f,0.556206f,-0.381164f},{0.00208972f,0.995448f,-0.0952887f}, -{0.023146f,0.996478f,-0.0805908f},{-0.200122f,0.828964f,0.522273f},{-0.223522f,0.953553f,0.201925f}, -{0.261343f,0.928881f,-0.262449f},{0.331113f,0.923764f,-0.192418f},{0.573723f,0.819049f,0.000855026f}, -{0.362715f,0.829104f,0.42547f},{-0.0573298f,0.844648f,0.532243f},{-0.0897245f,0.990344f,-0.105682f}, -{0.791768f,0.584989f,0.175761f},{0.788555f,0.524059f,0.321781f},{0.396688f,0.784354f,0.476893f}, -{-0.142441f,0.853827f,0.50069f},{-0.497251f,0.741148f,0.451045f},{-0.52758f,0.754131f,-0.391083f}, -{-0.74581f,0.423423f,-0.514276f},{-0.835334f,0.507605f,-0.211079f},{-0.760969f,0.639595f,0.108834f}, -{0.665519f,0.564337f,0.488476f},{0.184704f,0.965314f,0.184535f},{-0.377948f,0.905644f,-0.19226f}, -{-0.374352f,0.926577f,-0.0362743f},{0.481967f,0.867384f,0.123909f},{0.524646f,0.846426f,-0.0911632f}, -{-0.0773877f,0.88845f,0.452402f},{-0.697527f,-0.161082f,0.698218f},{-0.728014f,-0.219408f,0.649505f}, -{-0.806167f,-0.22881f,0.545657f},{0.859404f,0.505542f,0.0765056f},{0.18694f,0.936136f,0.297831f}, -{0.627902f,0.752182f,-0.199901f},{0.439551f,0.827994f,0.348167f},{-0.106603f,0.891453f,0.440395f}, -{-0.739824f,0.137059f,0.658692f},{-0.696005f,0.314806f,0.645348f},{0.777963f,0.596105f,0.198575f}, -{0.625854f,0.727341f,0.281572f},{0.586037f,0.75803f,0.286273f},{-0.273339f,0.876824f,0.395556f}, -{-0.117479f,0.873974f,0.471559f},{-0.141536f,0.827666f,0.543081f},{0.0223492f,-0.998109f,0.0572571f}, -{-0.000931591f,-0.998825f,0.0484584f},{-0.360291f,0.888095f,0.285442f},{-0.105675f,0.913747f,0.392299f}, -{-0.13649f,0.989925f,0.0376649f},{0.0384947f,0.98542f,0.165729f},{0.647598f,0.705639f,-0.287558f}, -{-0.629182f,0.60845f,-0.483651f},{-0.18035f,0.850769f,0.493626f},{-0.200136f,0.659248f,0.724802f}, -{-0.40814f,0.771931f,0.487385f},{-0.56766f,0.779026f,0.266235f},{-0.50392f,0.782727f,0.365244f}, -{0.059644f,0.998218f,-0.00191144f},{0.493305f,0.788252f,0.367843f},{0.233534f,0.915322f,0.328097f}, -{0.100081f,0.994977f,-0.001886f},{0.0540968f,0.9859f,0.158351f},{0.0288702f,0.997117f,-0.0701744f}, -{-0.579249f,0.78716f,-0.211777f},{0.474653f,0.813336f,0.336437f},{0.549723f,0.788931f,0.274576f}, -{-0.633886f,0.679356f,0.369682f},{-0.0300771f,0.878075f,0.477576f},{0.0456401f,0.99866f,-0.0244092f}, -{0.0727139f,0.973018f,0.21897f},{0.0735803f,0.671302f,-0.737522f},{0.0494458f,0.395419f,-0.917169f}, -{0.00888718f,0.859255f,-0.511471f},{-0.854026f,0.2938f,0.429328f},{0.267715f,0.935591f,0.230212f}, -{-0.0884375f,0.963257f,-0.253602f},{-0.27228f,0.959388f,-0.0737389f},{-0.55698f,0.773671f,-0.302004f}, -{-0.71943f,0.67545f,-0.161826f},{-0.653106f,0.624328f,-0.428564f},{-0.379852f,0.787478f,-0.485377f}, -{-0.0496136f,0.821031f,0.568724f},{-0.556395f,0.828516f,-0.0631306f},{-0.00650614f,0.939219f,0.343256f}, -{-0.0378066f,0.973412f,-0.225918f},{-0.554061f,0.40543f,-0.727078f},{-0.569182f,0.171273f,-0.804175f}, -{-0.709345f,0.399365f,-0.580807f},{0.312263f,0.8806f,-0.356421f},{0.670924f,0.693388f,0.262818f}, -{-0.537859f,0.0528585f,0.841376f},{0.383935f,0.853309f,0.352785f},{-0.437111f,0.89267f,0.109884f}, -{-0.318147f,0.945762f,0.0657079f},{0.817501f,0.574998f,0.0327173f},{0.804964f,0.593238f,-0.0100991f}, -{0.82956f,0.536471f,0.155014f},{0.807816f,0.543091f,0.229097f},{0.767553f,0.561873f,0.308482f}, -{0.734804f,0.509692f,0.447523f},{-0.184696f,0.932773f,-0.309551f},{-0.164745f,0.95509f,-0.246299f}, -{0.272873f,0.875473f,0.398857f},{-0.547438f,0.648874f,0.528464f},{-0.509731f,0.801615f,0.312391f}, -{-0.693304f,0.660768f,0.287602f},{0.830856f,0.553276f,-0.0596929f},{0.817452f,0.574321f,0.04391f}, -{0.82274f,0.56071f,0.0932945f},{0.799149f,0.580408f,0.156486f},{-0.187866f,0.976313f,0.107331f}, -{0.83228f,0.547521f,-0.0867808f},{0.814186f,0.578133f,-0.0535041f},{0.810153f,0.585831f,0.0213339f}, -{0.809173f,0.580772f,0.0891247f},{0.80695f,0.590596f,-0.00528696f},{0.801762f,0.595959f,0.044831f}, -{0.77998f,0.602313f,0.169853f},{0.744047f,0.592678f,0.308427f},{-0.966823f,0.0452095f,0.251413f}, -{-0.956155f,0.198707f,0.215134f},{0.0574333f,0.997765f,-0.0341582f},{0.806921f,0.589501f,-0.0369692f}, -{0.802278f,0.59668f,0.0179628f},{0.766982f,0.633314f,0.10321f},{0.650228f,0.622419f,0.435658f}, -{0.704453f,0.647844f,0.289904f},{0.628921f,0.597557f,0.497378f},{-0.743343f,0.229344f,-0.628365f}, -{-0.69546f,0.312394f,-0.647105f},{-0.660438f,0.266932f,-0.701832f},{0.806766f,0.581782f,-0.103241f}, -{0.80487f,0.593418f,-0.00630056f},{0.769639f,0.637487f,0.035579f},{0.734675f,0.659159f,0.160504f}, -{0.80405f,0.549513f,-0.227025f},{0.803626f,0.593911f,-0.0381408f},{0.769531f,0.638363f,-0.0177426f}, -{0.765295f,0.642865f,0.0323697f},{0.567755f,0.649438f,0.505849f},{0.381409f,-0.893429f,-0.237301f}, -{-0.00752063f,0.229679f,-0.973237f},{0.807026f,0.580752f,-0.10694f},{0.758431f,0.650052f,-0.047062f}, -{0.732079f,0.672795f,0.106805f},{0.704091f,0.702637f,0.102745f},{0.698117f,0.699929f,0.150773f}, -{0.663589f,0.679392f,0.313173f},{0.574373f,0.681896f,0.452896f},{-0.803084f,0.330145f,-0.496045f}, -{0.798028f,0.532226f,-0.282643f},{0.766386f,0.563802f,-0.307862f},{0.80442f,0.55547f,-0.210621f}, -{0.76591f,0.631894f,-0.11871f},{0.715646f,0.697201f,0.0419614f},{0.603596f,0.722225f,0.337732f}, -{0.520807f,0.654939f,0.547553f},{0.229172f,0.800804f,0.553347f},{0.0812578f,0.986317f,-0.143444f}, -{-0.9886f,0.111022f,-0.101703f},{0.741263f,0.671205f,0.00366621f},{0.704182f,0.709381f,0.0301024f}, -{0.639249f,0.747109f,0.182178f},{0.586867f,0.654313f,0.47693f},{-0.604248f,0.685136f,0.406783f}, -{0.749005f,0.617153f,-0.241066f},{0.692909f,0.716962f,-0.0764364f},{0.694198f,0.719117f,-0.0309967f}, -{0.667752f,0.740189f,0.0789108f},{0.709131f,0.696508f,-0.109592f},{0.666081f,0.734678f,-0.128782f}, -{0.67466f,0.736436f,0.0499464f},{0.637302f,0.765583f,0.0879164f},{0.605727f,0.778945f,0.162297f}, -{0.584384f,0.769989f,0.25615f},{0.569427f,0.738575f,0.360916f},{0.701706f,0.63332f,-0.326365f}, -{0.672913f,0.705054f,-0.2238f},{0.646507f,0.761239f,0.0504462f},{0.540585f,0.730735f,0.416886f}, -{0.554591f,0.652851f,0.515959f},{-0.45615f,0.77338f,-0.440239f},{-0.861977f,-0.205293f,0.463519f}, -{-0.851613f,0.0465911f,0.522096f},{-0.884595f,-0.0397011f,0.464667f},{-0.265588f,0.792521f,0.548975f}, -{0.626767f,0.74215f,-0.237436f},{0.650336f,0.759537f,0.0128991f},{0.607046f,0.766684f,0.209022f}, -{0.42584f,0.81007f,-0.403047f},{0.479766f,0.78941f,-0.382957f},{0.440625f,0.776807f,-0.449912f}, -{-0.965918f,-0.188346f,-0.177559f},{-0.917033f,-0.300542f,-0.262156f},{0.655378f,0.670166f,-0.348365f}, -{0.655846f,0.747655f,-0.104302f},{0.638829f,0.768028f,-0.0450667f},{0.620536f,0.777113f,0.105025f}, -{0.419917f,0.795884f,0.436164f},{-0.484423f,0.76896f,-0.417174f},{0.283428f,-0.883937f,-0.371919f}, -{-0.877507f,-0.432781f,-0.206596f},{-0.0647534f,0.116705f,-0.991053f},{-0.00251298f,-0.196393f,-0.980522f}, -{-0.120996f,-0.17257f,-0.977537f},{0.625618f,0.75948f,-0.178302f},{0.622883f,0.775196f,-0.105295f}, -{0.618509f,0.784484f,0.045081f},{0.555738f,0.808838f,0.192188f},{0.540989f,0.792397f,0.281847f}, -{0.494361f,0.783838f,0.375773f},{-0.472517f,-0.398134f,0.786268f},{-0.503204f,-0.412649f,0.75928f}, -{-0.0691448f,0.651623f,-0.755385f},{-0.0855156f,0.570482f,-0.816846f},{-0.886059f,-0.355448f,-0.297583f}, -{0.594546f,0.762545f,-0.255029f},{0.622101f,0.721187f,-0.304761f},{0.605176f,0.774254f,-0.185182f}, -{0.610974f,0.791608f,0.00823471f},{0.573345f,0.817999f,0.0464058f},{0.560795f,0.821271f,0.10499f}, -{0.414525f,0.848734f,0.328358f},{0.736676f,0.649956f,0.186727f},{0.0552009f,0.917445f,0.394014f}, -{0.58116f,0.774985f,-0.248299f},{0.603961f,0.79543f,-0.0502213f},{0.566922f,0.823735f,0.00775409f}, -{0.433232f,0.874383f,0.218552f},{0.338907f,0.844676f,0.414324f},{0.335796f,0.825149f,0.45428f}, -{0.335634f,0.727757f,0.598097f},{0.592382f,0.796432f,-0.121568f},{0.564733f,0.823747f,-0.0501802f}, -{0.471839f,0.874441f,0.112784f},{0.391375f,0.8556f,0.338782f},{0.272028f,0.795259f,0.541815f}, -{-0.321054f,-0.946891f,-0.017938f},{-0.583011f,0.804225f,-0.115411f},{-0.0186705f,0.88413f,0.466868f}, -{0.58237f,0.771302f,-0.256787f},{0.583304f,0.788563f,-0.194745f},{0.56576f,0.815156f,-0.124239f}, -{0.508372f,0.860502f,0.0330708f},{0.427096f,0.759848f,0.490122f},{0.0181058f,0.259257f,-0.965639f}, -{-0.0500199f,0.232695f,-0.971262f},{0.0170665f,0.950699f,0.309644f},{-0.0152952f,0.950205f,0.311251f}, -{-0.881404f,0.0726797f,-0.466739f},{-0.877608f,0.0389104f,-0.477797f},{0.30436f,0.386033f,-0.870829f}, -{0.165782f,0.556552f,-0.814105f},{0.346919f,0.302604f,-0.887737f},{0.513981f,0.856343f,-0.0500122f}, -{0.511201f,0.859461f,-0.000758396f},{0.361243f,0.903013f,0.23253f},{0.452609f,0.687968f,0.567314f}, -{0.407572f,0.674302f,0.615794f},{0.57013f,0.802797f,-0.174555f},{0.51097f,0.852913f,-0.107003f}, -{0.453526f,0.888135f,0.0743731f},{0.413537f,0.896599f,0.158418f},{0.389912f,0.886016f,0.250887f}, -{0.445681f,0.789273f,0.422395f},{0.309789f,0.731113f,0.607869f},{-0.0846571f,0.900316f,0.426924f}, -{0.545197f,0.794322f,-0.267979f},{0.547967f,0.836466f,-0.00756271f},{0.470132f,0.882429f,0.0171804f}, -{0.431296f,0.900927f,0.0481153f},{0.416849f,0.879298f,0.230372f},{0.440959f,0.838019f,0.321371f}, -{0.407999f,0.737634f,0.537989f},{-0.886332f,0.390751f,0.248453f},{-0.833616f,0.516196f,0.196536f}, -{0.471464f,0.881296f,-0.0322266f},{0.438674f,0.898631f,0.00523751f},{0.406783f,0.824159f,0.394068f}, -{0.2856f,0.832072f,0.475488f},{0.457025f,0.885608f,-0.0826232f},{0.446409f,0.893715f,-0.0446337f}, -{0.402155f,0.90619f,0.130735f},{0.173173f,0.782164f,0.598523f},{-0.13066f,-0.990258f,0.0481328f}, -{0.516393f,0.806743f,0.287235f},{-0.430925f,0.715581f,0.54977f},{0.448735f,0.327623f,-0.831445f}, -{0.493816f,0.1669f,-0.853399f},{-0.512482f,0.435375f,0.740143f},{-0.501902f,0.485164f,0.716038f}, -{0.00864245f,0.296578f,-0.95497f},{-0.638979f,0.481665f,-0.599754f},{-0.619463f,0.418906f,-0.663915f}, -{-0.676628f,-0.0650151f,0.733449f},{-0.653662f,-0.082975f,0.752224f},{-0.807571f,0.313101f,0.499796f}, -{-0.757473f,0.403682f,0.513103f},{-0.852017f,0.200593f,0.483559f},{-0.864641f,0.0993041f,0.492479f}, -{-0.819801f,0.214178f,0.531088f},{-0.890242f,0.0583071f,0.451741f},{-0.685458f,0.430081f,0.587519f}, -{-0.512972f,0.206372f,0.833229f},{-0.788466f,-0.229526f,-0.570648f},{0.0241731f,-0.998842f,-0.0416034f}, -{0.0326615f,-0.998887f,-0.0340157f},{0.0295508f,-0.999062f,-0.03164f},{-0.467001f,0.782354f,0.412107f}, -{-0.292685f,0.821794f,0.488866f},{-0.412556f,0.764212f,0.495759f},{-0.610348f,0.435518f,0.661664f}, -{-0.811272f,-0.319379f,0.48973f},{-0.81612f,-0.309379f,0.48809f},{-0.70417f,0.414397f,0.576559f}, -{-0.687124f,0.513775f,0.513707f},{-0.47835f,0.641065f,0.600181f},{-0.421403f,0.744624f,0.517644f}, -{-0.741206f,0.448145f,0.499779f},{-0.814976f,0.396613f,0.422508f},{-0.812736f,-0.386413f,-0.436056f}, -{-0.104997f,0.47965f,-0.871155f},{-0.0162628f,0.460022f,-0.887759f},{-0.765465f,0.240563f,0.596819f}, -{-0.597611f,0.57362f,0.560198f},{-0.689789f,0.505065f,0.518749f},{-0.727175f,0.423293f,0.540407f}, -{-0.308127f,0.849674f,0.427916f},{-0.0791706f,0.609536f,0.788796f},{-0.823089f,-0.0371484f,0.566695f}, -{-0.82769f,-0.0336199f,0.560178f},{-0.815599f,-0.0632867f,0.575146f},{-0.127929f,-0.000264798f,-0.991783f}, -{-0.84084f,0.290014f,0.457034f},{-0.859387f,0.296015f,0.416928f},{-0.89802f,-0.0693067f,0.434461f}, -{-0.825519f,-0.0620058f,0.560957f},{-0.818802f,-0.152933f,0.55333f},{-0.80371f,-0.147357f,0.576486f}, -{-0.579463f,-0.023075f,-0.814672f},{-0.673952f,0.194501f,-0.712711f},{-0.588945f,0.0471562f,-0.806796f}, -{-0.425986f,-0.0397759f,-0.903855f},{-0.613002f,0.594276f,0.520638f},{-0.509363f,0.698473f,0.502678f}, -{-0.636005f,0.594838f,0.491595f},{-0.498753f,-0.295648f,0.814762f},{-0.780513f,-0.394895f,0.484621f}, -{-0.726784f,-0.181705f,0.662396f},{-0.654261f,-0.705981f,0.27117f},{-0.454155f,-0.890405f,-0.0303461f}, -{-0.78205f,-0.621982f,-0.0391931f},{-0.813216f,-0.3632f,0.454716f},{-0.846288f,-0.351263f,0.400513f}, -{-0.833476f,-0.307216f,0.459277f},{-0.851383f,-0.494771f,0.174211f},{-0.924493f,-0.309175f,-0.222986f}, -{-0.424515f,0.751553f,0.50493f},{-0.801391f,-0.0292747f,0.597424f},{-0.823191f,-0.323435f,0.466634f}, -{-0.81734f,-0.314257f,0.482906f},{-0.827421f,-0.291732f,0.479861f},{-0.536161f,0.21014f,0.817541f}, -{-0.479851f,0.395272f,0.783264f},{-0.585877f,0.38605f,0.712541f},{-0.818216f,-0.122578f,0.561691f}, -{-0.827807f,-0.206853f,0.521486f},{-0.405365f,0.515397f,0.755014f},{-0.679631f,0.446817f,0.58177f}, -{-0.544681f,0.503073f,0.671f},{-0.748484f,-0.190258f,0.635274f},{-0.582454f,0.295646f,-0.757193f}, -{-0.238605f,-0.733799f,-0.636087f},{-0.211375f,-0.785263f,-0.581965f},{-0.248305f,-0.659941f,-0.7091f}, -{-0.671462f,-0.241978f,0.700418f},{-0.702697f,0.40569f,0.584494f},{-0.424814f,-0.45386f,0.78329f}, -{0.50287f,0.771715f,-0.389331f},{-0.681696f,-0.191082f,0.706242f},{-0.716836f,-0.265053f,0.644897f}, -{-0.770713f,-0.297385f,0.563528f},{-0.747238f,-0.118241f,0.653953f},{-0.954785f,-0.184225f,0.23334f}, -{-0.548361f,-0.727836f,0.411769f},{-0.921405f,-0.371992f,0.112408f},{-0.503367f,-0.393242f,0.769404f}, -{-0.576726f,-0.342498f,0.741675f},{-0.361183f,0.225455f,-0.90483f},{-0.891653f,0.404043f,0.204217f}, -{0.0338141f,-0.928257f,0.370398f},{-0.0219507f,-0.943046f,0.331938f},{-0.0745498f,-0.684872f,0.72484f}, -{-0.806646f,-0.13619f,0.57513f},{-0.808811f,-0.404271f,0.427071f},{-0.44685f,0.609374f,0.654972f}, -{-0.461291f,0.570642f,0.679396f},{-0.170721f,-0.981654f,0.0849051f},{0.548492f,0.127866f,-0.826321f}, -{0.481372f,0.192323f,-0.855157f},{0.542861f,0.164021f,-0.82365f},{-0.29651f,0.199589f,-0.933941f}, -{0.227659f,0.120444f,-0.966263f},{-0.59647f,0.306507f,-0.741807f},{0.0284581f,0.296894f,-0.954486f}, -{0.0122738f,0.499735f,-0.866092f},{-0.829669f,-0.29228f,0.475629f},{-0.485308f,-0.240124f,0.840724f}, -{-0.438823f,-0.341511f,0.831146f},{-0.605016f,0.775383f,0.180933f},{-0.712909f,0.673776f,-0.194388f}, -{-0.433914f,-0.114761f,-0.893615f},{-0.513091f,-0.0345913f,-0.857637f},{-0.521915f,0.0848665f,-0.848765f}, -{-0.655513f,0.204912f,0.726852f},{-0.425762f,-0.24177f,-0.871937f},{-0.814908f,-0.301909f,0.494749f}, -{-0.532045f,-0.147684f,0.833737f},{-0.896942f,-0.179224f,0.404195f},{-0.560803f,0.260994f,0.785737f}, -{-0.676909f,-0.32187f,0.661962f},{-0.804451f,-0.351504f,0.478856f},{-0.826835f,-0.314315f,0.466423f}, -{0.24554f,-0.848717f,0.468391f},{0.252259f,-0.880717f,0.400878f},{0.261369f,-0.906495f,0.331593f}, -{-0.871316f,0.402879f,0.280174f},{-0.947823f,0.241453f,0.208163f},{-0.736231f,0.393781f,0.550364f}, -{-0.897723f,0.376006f,0.22959f},{-0.499015f,-0.219682f,0.838286f},{-0.685411f,0.694441f,-0.219006f}, -{-0.496778f,0.833956f,0.240268f},{-0.679974f,-0.471155f,0.561826f},{-0.587924f,-0.513635f,0.62492f}, -{-0.626815f,-0.437178f,0.644963f},{-0.814539f,-0.302632f,0.494915f},{0.0151252f,-0.997929f,0.0625192f}, -{-0.368475f,0.238131f,-0.898621f},{-0.356529f,0.312421f,-0.8805f},{-0.457637f,-0.114404f,0.881748f}, -{0.029499f,-0.999511f,-0.0103668f},{-0.00938924f,-0.999942f,0.00521503f},{-0.00868702f,-0.99974f,-0.0210859f}, -{-0.883607f,-0.125016f,0.451231f},{-0.897507f,0.0204293f,0.440526f},{-0.667722f,0.554902f,0.496217f}, -{-0.763542f,0.385739f,0.51789f},{-0.510416f,-0.322454f,0.797182f},{-0.464866f,-0.34522f,0.815305f}, -{-0.158149f,0.34114f,-0.926613f},{-0.627815f,0.613943f,0.478458f},{-0.44089f,0.789623f,0.426745f}, -{-0.828792f,-0.311666f,0.464724f},{-0.554504f,0.725721f,0.407252f},{-0.662594f,-0.0304637f,0.748359f}, -{-0.435102f,-0.462729f,0.772378f},{-0.666116f,0.499234f,0.554125f},{-0.732412f,0.118538f,0.670464f}, -{-0.869508f,-0.48865f,0.0719463f},{-0.311367f,-0.328529f,-0.891694f},{-0.971581f,-0.23594f,0.0190483f}, -{-0.863437f,-0.282645f,0.417838f},{-0.302687f,-0.925788f,-0.226489f},{-0.488993f,-0.817903f,-0.303186f}, -{-0.80689f,-0.288878f,0.515246f},{-0.551655f,0.717482f,0.425319f},{-0.432414f,-0.240387f,0.869041f}, -{-0.897626f,0.378674f,0.225551f},{-0.576051f,0.646691f,0.499956f},{-0.526094f,0.728597f,0.438601f}, -{-0.77966f,0.166922f,0.603545f},{-0.787693f,0.266878f,0.555261f},{-0.601311f,-0.0491254f,-0.797504f}, -{-0.785811f,0.00908449f,-0.6184f},{-0.769137f,0.0463938f,-0.637398f},{-0.445453f,-0.202091f,-0.872199f}, -{-0.654855f,-0.272176f,-0.705043f},{-0.544025f,-0.184676f,-0.818493f},{0.030312f,0.401667f,-0.915284f}, -{-0.041871f,0.443354f,-0.895368f},{-0.0727087f,0.385587f,-0.919802f},{-0.511658f,0.7034f,0.493391f}, -{-0.805663f,0.152777f,0.572334f},{-0.751126f,-0.47213f,0.461414f},{-0.798257f,-0.322169f,0.508913f}, -{-0.576619f,0.0724766f,0.813792f},{-0.520617f,0.718185f,0.461702f},{-0.33865f,0.562898f,0.753964f}, -{0.234955f,0.238834f,-0.942207f},{0.251331f,0.314931f,-0.915233f},{0.185063f,0.330729f,-0.925403f}, -{-0.886911f,0.375469f,0.269096f},{-0.154109f,0.250557f,-0.955757f},{-0.400531f,0.813668f,0.421331f}, -{-0.5416f,-0.770518f,0.336113f},{-0.544135f,0.16461f,-0.822691f},{-0.211698f,0.175625f,-0.961426f}, -{-0.334504f,-0.0129159f,-0.942306f},{-0.394133f,0.000893468f,-0.919053f},{-0.391245f,0.0852153f,-0.916333f}, -{-0.648911f,0.15809f,-0.74426f},{-0.812766f,-0.31308f,0.491318f},{-0.692476f,-0.419684f,0.586807f}, -{-0.81264f,-0.0624337f,0.579412f},{-0.633244f,-0.291183f,0.717088f},{-0.952223f,0.27226f,0.138367f}, -{-0.452731f,0.502721f,0.736415f},{-0.719407f,-0.663803f,-0.2045f},{-0.613654f,-0.789512f,-0.00995104f}, -{-0.737211f,-0.205266f,0.643728f},{-0.575835f,0.262539f,-0.774266f},{-0.543006f,0.155016f,-0.825297f}, -{-0.769728f,0.282775f,0.572326f},{-0.794855f,0.0192248f,0.606495f},{-0.466456f,-0.18462f,0.865063f}, -{-0.502563f,-0.290176f,0.814388f},{-0.581134f,-0.13327f,0.802821f},{-0.339314f,-0.250814f,0.906619f}, -{-0.831761f,-0.0775132f,0.549696f},{0.0198175f,-0.999708f,-0.0138038f},{0.00494828f,-0.999849f,-0.0166457f}, -{0.0221211f,-0.999637f,-0.0153761f},{-0.35896f,0.0528321f,-0.931857f},{-0.394276f,0.80845f,0.436984f}, -{-0.633605f,0.20823f,0.745108f},{-0.594276f,0.417433f,0.687449f},{-0.546438f,0.464911f,0.696608f}, -{-0.595217f,0.476599f,0.64697f},{-0.362789f,-0.186007f,-0.913119f},{-0.420958f,0.66549f,0.616375f}, -{-0.543996f,0.546085f,0.637071f},{-0.325797f,-0.26756f,0.90679f},{-0.183163f,-0.194712f,0.963607f}, -{-0.445429f,0.0859319f,-0.891184f},{-0.545556f,0.105608f,-0.831394f},{-0.610353f,0.539882f,-0.579653f}, -{-0.545833f,-0.242049f,0.802171f},{-0.759919f,-0.00155307f,0.650016f},{-0.752876f,-0.0855841f,0.652574f}, -{-0.534606f,-0.263421f,0.802998f},{-0.552957f,-0.182488f,0.81298f},{-0.635767f,0.182895f,0.7499f}, -{-0.559979f,0.292242f,0.775253f},{-0.598309f,0.249397f,0.761464f},{-0.638105f,0.200247f,0.743453f}, -{-0.66314f,0.0604394f,0.746051f},{-0.510999f,0.0128487f,0.859485f},{-0.452527f,-0.107616f,0.885233f}, -{-0.446189f,-0.437712f,0.780592f},{-0.818986f,0.569003f,0.0741459f},{-0.256962f,-0.883326f,0.392053f}, -{0.160324f,0.287601f,-0.944236f},{-0.98996f,-0.125316f,0.0653766f},{-0.984502f,-0.118441f,-0.129335f}, -{0.0653595f,-0.997831f,0.00782317f},{-0.17971f,-0.965573f,0.188077f},{0.00449062f,-0.995378f,0.0959267f}, -{-0.50379f,-0.181022f,0.844646f},{0.00183938f,-0.468409f,-0.88351f},{-0.450589f,0.612839f,0.649152f}, -{-0.638726f,0.29257f,0.71164f},{-0.572547f,0.229584f,0.787071f},{-0.545939f,0.374596f,0.749419f}, -{-0.346339f,0.933504f,-0.092841f},{-0.532212f,0.180167f,0.827218f},{-0.657665f,-0.128369f,0.742293f}, -{-0.557517f,-0.316215f,0.767582f},{-0.537161f,0.59042f,0.60238f},{-0.433749f,0.634675f,0.63957f}, -{-0.907702f,-0.239757f,-0.344374f},{-0.815025f,-0.244928f,-0.525113f},{-0.508138f,-0.465009f,0.724957f}, -{-0.597399f,-0.419279f,0.683608f},{-0.157794f,0.0739844f,-0.984697f},{-0.215131f,0.345583f,-0.913395f}, -{-0.641043f,-0.381159f,0.666169f},{-0.463103f,-0.204799f,-0.862318f},{-0.420183f,-0.257033f,-0.870276f}, -{-0.426429f,-0.833762f,0.350713f},{-0.288873f,-0.855688f,0.42936f},{-0.262027f,-0.885132f,0.384556f}, -{-0.505665f,-0.329907f,-0.79716f},{-0.423011f,-0.843442f,0.33116f},{-0.188296f,-0.95367f,0.234643f}, -{-0.186668f,-0.96361f,0.191339f},{0.016626f,-0.42944f,-0.902942f},{0.229574f,-0.618164f,-0.751778f}, -{0.213167f,-0.630559f,-0.746294f},{-0.653506f,0.170378f,0.737497f},{-0.754205f,0.139048f,0.641748f}, -{-0.733566f,-0.113507f,-0.670073f},{-0.714556f,0.0437677f,-0.698208f},{-0.534084f,0.6353f,0.557806f}, -{-0.477724f,0.66335f,0.575975f},{-0.564231f,-0.278572f,0.777201f},{-0.0153342f,-0.98466f,0.173808f}, -{-0.00899519f,-0.990321f,0.138506f},{-0.747073f,0.149048f,0.647816f},{-0.739693f,0.330268f,0.586325f}, -{-0.75432f,0.0203637f,0.656191f},{-0.584713f,-0.0127331f,0.81114f},{-0.627251f,0.0874965f,0.773886f}, -{-0.375288f,0.744741f,0.551832f},{-0.85599f,0.509751f,-0.086229f},{-0.856581f,0.450396f,-0.251818f}, -{-0.964796f,0.114569f,-0.236733f},{-0.788723f,0.613207f,-0.0435051f},{-0.705179f,0.661605f,-0.254952f}, -{-0.622839f,-0.125899f,0.772154f},{-0.643766f,0.0804802f,0.760979f},{-0.561995f,-0.357569f,0.745859f}, -{-0.650896f,-0.230573f,0.723305f},{-0.647344f,0.0159482f,0.762031f},{-0.719224f,0.0847135f,0.689595f}, -{-0.66153f,-0.118747f,0.740458f},{-0.201788f,0.273426f,-0.940489f},{-0.265744f,0.281923f,-0.9219f}, -{-0.222384f,0.236431f,-0.945857f},{0.373598f,0.281689f,-0.883785f},{0.400531f,0.272846f,-0.874717f}, -{0.437973f,0.267974f,-0.85812f},{-0.615037f,-0.456725f,0.642753f},{-0.826765f,0.552627f,-0.10518f}, -{-0.613802f,-0.0665211f,0.786653f},{-0.794276f,-0.309824f,-0.522623f},{-0.558536f,-0.666482f,-0.493801f}, -{-0.663791f,-0.693794f,-0.27934f},{-0.614065f,-0.405564f,0.677083f},{-0.675169f,0.476757f,0.562895f}, -{-0.589291f,0.541487f,0.599607f},{-0.388849f,-0.419335f,0.820338f},{-0.637315f,-0.0303753f,0.770004f}, -{-0.0304552f,0.316204f,-0.948202f},{-0.26997f,0.334033f,-0.903071f},{-0.214728f,0.536029f,-0.816434f}, -{-0.415018f,0.564237f,-0.71372f},{-0.453154f,0.844034f,-0.286808f},{0.153137f,0.210379f,-0.965552f}, -{0.249746f,0.276643f,-0.927952f},{-0.836283f,0.441701f,0.324856f},{-0.694397f,-0.327434f,-0.640781f}, -{-0.634576f,-0.386536f,-0.669255f},{-0.722049f,-0.311531f,-0.617732f},{-0.701986f,0.404823f,0.585947f}, -{-0.769988f,0.330764f,0.545631f},{-0.81952f,0.310075f,0.481913f},{-0.793846f,0.44448f,0.415026f}, -{0.348806f,-0.234002f,-0.907512f},{-0.556915f,0.764365f,0.32495f},{-0.702632f,-0.354421f,-0.617004f}, -{-0.591409f,-0.175052f,-0.787142f},{-0.603679f,-0.341051f,-0.720595f},{-0.829158f,0.205157f,0.520006f}, -{-0.0234405f,-0.0669621f,-0.99748f},{0.0827914f,-0.212663f,-0.973612f},{-0.613392f,-0.382432f,-0.69101f}, -{-0.669679f,-0.44593f,-0.593865f},{-0.587962f,-0.438583f,-0.679666f},{-0.514604f,-0.418881f,-0.748145f}, -{-0.683355f,0.203558f,-0.701135f},{-0.343854f,-0.869667f,0.35418f},{-0.693639f,0.102823f,0.712946f}, -{-0.643381f,0.507362f,0.573276f},{-0.179229f,-0.798935f,0.57409f},{-0.625846f,-0.345565f,-0.699215f}, -{0.193112f,-0.566099f,0.801399f},{0.363743f,-0.582821f,0.726644f},{-0.590179f,-0.699363f,0.403211f}, -{-0.782717f,-0.13318f,0.607962f},{-0.750313f,0.182009f,0.635534f},{-0.685217f,0.425887f,0.590845f}, -{-0.765752f,-0.0469561f,0.641419f},{-0.55663f,-0.659276f,0.505489f},{-0.430096f,0.189334f,-0.882706f}, -{-0.868659f,-0.194001f,0.455845f},{-0.948159f,0.316867f,-0.0242684f},{-0.923184f,0.288381f,0.2541f}, -{-0.864769f,-0.393138f,0.312437f},{-0.673731f,0.121125f,0.728982f},{-0.447896f,-0.0639182f,-0.891798f}, -{-0.732419f,0.332546f,0.594117f},{-0.697571f,0.617732f,-0.363044f},{-0.232532f,-0.885746f,0.401724f}, -{-0.549515f,-0.43611f,0.71263f},{-0.915083f,0.184311f,0.358682f},{-0.631895f,0.505717f,0.587332f}, -{-0.048755f,-0.912305f,0.406599f},{-0.00499332f,-0.708072f,0.706123f},{-0.740317f,0.109004f,0.663362f}, -{-0.748566f,-0.168053f,0.64141f},{-0.819601f,-0.148101f,0.553462f},{-0.825063f,-0.0489577f,0.562915f}, -{-0.885336f,-0.0479825f,0.462469f},{-0.826903f,0.073578f,0.55751f},{-0.88385f,0.0608632f,0.463794f}, -{-0.838473f,-0.318529f,0.442156f},{-0.647852f,0.483823f,0.58839f},{-0.67151f,-0.362356f,0.646353f}, -{-0.887521f,-0.297247f,0.352066f},{-0.858956f,-0.223478f,0.460709f},{-0.811293f,0.176758f,0.557279f}, -{-0.809109f,0.259872f,0.527075f},{-0.513998f,0.694608f,0.503314f},{-0.461626f,-0.819637f,-0.339258f}, -{-0.310498f,-0.762119f,-0.568125f},{-0.323819f,-0.907785f,-0.266585f},{-0.873213f,0.321721f,0.366054f}, -{-0.0693406f,-0.767637f,0.637123f},{-0.0292936f,-0.951498f,0.306258f},{0.202785f,-0.741235f,0.639882f}, -{-0.730227f,0.361624f,0.579652f},{-0.658946f,0.469511f,0.587664f},{-0.809055f,-0.1302f,0.573131f}, -{-0.764863f,0.244937f,0.595811f},{-0.775799f,0.182781f,0.603926f},{0.250327f,0.459893f,-0.851959f}, -{-0.228841f,-0.44984f,0.863294f},{-0.783305f,0.442176f,0.436936f},{0.311199f,-0.345385f,-0.885361f}, -{0.17222f,-0.27239f,-0.946649f},{-0.791398f,-0.0531614f,0.608985f},{-0.786133f,0.0675726f,0.614352f}, -{-0.66844f,-0.297679f,-0.681598f},{-0.580798f,-0.26834f,-0.768549f},{-0.638322f,0.206607f,0.741524f}, -{-0.598039f,0.28478f,0.749166f},{-0.706041f,-0.141691f,0.693851f},{-0.504882f,0.619097f,0.601509f}, -{-0.424321f,0.739317f,0.52284f},{-0.420945f,0.809959f,0.408377f},{-0.470592f,0.407277f,0.782732f}, -{-0.647062f,-0.190766f,-0.738187f},{-0.681777f,-0.143191f,-0.717409f},{-0.772775f,-0.260891f,-0.578581f}, -{-0.473436f,-0.635563f,-0.609851f},{-0.470861f,-0.668675f,-0.575468f},{-0.549722f,-0.641587f,-0.534951f}, -{-0.913123f,-0.21534f,0.346171f},{-0.850555f,-0.110966f,0.514045f},{-0.800178f,-0.0676003f,0.59594f}, -{-0.759561f,-0.0435877f,0.648974f},{-0.75589f,0.0642564f,0.651538f},{-0.744366f,0.180982f,0.642779f}, -{-0.978468f,-0.150371f,0.141381f},{-0.626719f,0.274355f,-0.729351f},{-0.817811f,0.468598f,0.334068f}, -{-0.732834f,0.078916f,0.675815f},{-0.602859f,0.410502f,0.684141f},{-0.423418f,0.689193f,0.587988f}, -{-0.451121f,-0.705396f,-0.546724f},{-0.39819f,-0.683051f,-0.612279f},{-0.449073f,-0.679805f,-0.579826f}, -{-0.970855f,0.186967f,0.149948f},{-0.133586f,-0.655213f,0.743539f},{-0.746645f,-0.422237f,0.51404f}, -{-0.824048f,-0.311098f,0.473459f},{-0.833598f,-0.199787f,0.514975f},{-0.718462f,0.256136f,0.646689f}, -{-0.843945f,-0.00335243f,0.53642f},{-0.695026f,0.203394f,0.689615f},{-0.572752f,0.593211f,0.565735f}, -{-0.802339f,0.45988f,0.380477f},{-0.885006f,0.353562f,0.302916f},{-0.66682f,0.60401f,0.43649f}, -{-0.5106f,0.593405f,0.622221f},{-0.396866f,0.798109f,0.453344f},{-0.438631f,-0.817212f,0.373856f}, -{0.628597f,0.070023f,-0.774572f},{0.567272f,0.0837215f,-0.819264f},{0.539457f,0.0680128f,-0.839262f}, -{-0.339831f,-0.126378f,-0.931957f},{-0.0729324f,-0.0291307f,-0.996911f},{0.44108f,0.201069f,-0.874654f}, -{-0.804002f,-0.209477f,0.556508f},{-0.69699f,0.239007f,0.676077f},{-0.682645f,0.263004f,0.68178f}, -{-0.432575f,-0.75762f,0.488766f},{-0.468404f,0.0411905f,0.882554f},{-0.64841f,0.269969f,0.711815f}, -{-0.550359f,0.491757f,0.674744f},{-0.378679f,0.762194f,0.525036f},{-0.348953f,0.788101f,0.507079f}, -{-0.582953f,0.580175f,0.568825f},{-0.732857f,0.474231f,-0.487879f},{-0.553702f,0.702597f,-0.446959f}, -{0.373769f,0.188421f,-0.908182f},{-0.813838f,-0.0701697f,0.576839f},{-0.788545f,-0.0220965f,0.614579f}, -{-0.759679f,-0.0248215f,0.649824f},{-0.707009f,0.225235f,0.670379f},{-0.738227f,0.138017f,0.660282f}, -{0.0382768f,-0.996456f,0.0749003f},{-0.766233f,0.258764f,0.588157f},{-0.686959f,0.567356f,0.454087f}, -{-0.73823f,-0.0898627f,0.668536f},{-0.372659f,0.774285f,0.511477f},{-0.723401f,0.205919f,0.659006f}, -{0.160182f,-0.5659f,-0.808764f},{0.434856f,-0.616598f,-0.656283f},{0.0231616f,-0.97957f,-0.199767f}, -{-0.66567f,-0.564697f,0.487853f},{0.316206f,0.241841f,-0.917348f},{0.375475f,0.220209f,-0.900292f}, -{-0.7103f,-0.384795f,0.589412f},{-0.764348f,-0.17699f,0.620037f},{-0.802285f,-0.0445413f,0.595277f}, -{-0.77726f,0.0111166f,0.629081f},{-0.732092f,0.0259054f,0.680713f},{-0.688352f,0.102232f,0.718136f}, -{-0.680752f,0.226134f,0.696735f},{-0.884425f,0.348781f,0.310071f},{-0.861093f,0.272212f,0.429441f}, -{-0.343287f,-0.894841f,0.285332f},{-0.674998f,-0.708227f,0.206865f},{-0.800865f,0.372938f,0.468542f}, -{-0.503765f,0.611881f,0.609772f},{-0.392682f,0.749152f,0.533453f},{-0.650023f,0.325047f,0.686888f}, -{-0.291221f,-0.315675f,-0.903072f},{-0.30522f,-0.105777f,-0.946389f},{-0.253134f,-0.266368f,-0.930039f}, -{-0.673406f,0.265473f,0.689963f},{-0.827281f,0.337787f,0.448896f},{-0.775433f,-0.55732f,0.296814f}, -{-0.749854f,-0.461074f,0.474477f},{-0.803676f,0.408894f,0.432332f},{-0.681633f,0.527799f,0.506759f}, -{0.607975f,-0.172449f,-0.775002f},{0.434956f,-0.900438f,-0.00486778f},{-0.580756f,0.519123f,0.627084f}, -{0.397173f,0.329672f,-0.856487f},{-0.360323f,-0.650174f,-0.668911f},{0.0343635f,0.0931413f,-0.99506f}, -{-0.631268f,-0.222999f,-0.742813f},{-0.746227f,-0.214046f,-0.630341f},{-0.671459f,-0.189288f,-0.716459f}, -{-0.659546f,-0.0381326f,-0.750696f},{-0.815974f,0.00295256f,0.578082f},{-0.888849f,0.0688656f,0.452996f}, -{-0.803058f,0.243254f,0.54399f},{-0.833593f,0.316012f,0.453055f},{-0.579459f,0.631209f,0.51556f}, -{-0.530057f,0.818813f,0.220418f},{0.229917f,-0.548714f,0.803773f},{0.189054f,-0.33771f,0.922069f}, -{0.629261f,0.0979529f,-0.770996f},{-0.676455f,-0.307285f,0.669316f},{-0.624391f,-0.452539f,0.636666f}, -{-0.751741f,-0.0822216f,0.654312f},{-0.659358f,0.21247f,0.721183f},{-0.466465f,-0.872416f,-0.145944f}, -{-0.297602f,-0.903282f,-0.309055f},{-0.00581529f,-0.986921f,-0.161101f},{-0.850233f,0.271603f,0.450927f}, -{-0.645747f,0.76093f,0.0632147f},{-0.742278f,-0.558166f,0.370775f},{-0.752377f,-0.470443f,0.461099f}, -{-0.817796f,0.574776f,0.0290093f},{-0.383178f,0.76701f,0.514655f},{-0.630893f,0.362954f,0.685739f}, -{0.0332487f,-0.998789f,-0.0362681f},{0.0243115f,-0.99914f,-0.0335984f},{0.279421f,-0.915639f,0.289013f}, -{-0.472456f,-0.157848f,-0.867104f},{-0.82926f,0.269673f,0.489493f},{-0.668103f,-0.469037f,0.577618f}, -{-0.622098f,0.656668f,-0.426358f},{-0.902728f,0.430072f,0.0109956f},{-0.0496615f,0.304177f,-0.95132f}, -{-0.883749f,-0.145445f,-0.444784f},{-0.265136f,0.243864f,-0.932863f},{-0.610512f,-0.789531f,-0.0625791f}, -{-0.190525f,0.190871f,-0.962948f},{-0.153502f,0.660391f,-0.735065f},{0.118652f,0.907375f,-0.403227f}, -{0.154264f,0.8649f,-0.477652f},{-0.0161343f,0.881f,-0.472842f},{0.235805f,0.915596f,-0.325698f}, -{0.217685f,0.886898f,-0.407463f},{-0.729908f,0.583186f,-0.356552f},{0.116651f,0.282444f,-0.952165f}, -{0.215742f,0.267895f,-0.938982f},{0.0109213f,0.907924f,-0.418992f},{0.162564f,0.653304f,-0.739437f}, -{0.0479323f,0.611091f,-0.790108f},{0.766837f,0.53508f,-0.354471f},{-0.653129f,-0.103326f,-0.750164f}, -{-0.867818f,-0.0822351f,-0.49003f},{-0.821129f,-0.155542f,-0.549139f},{0.51254f,0.652523f,-0.558137f}, -{0.589058f,0.59275f,-0.549234f},{0.219218f,0.840223f,-0.495953f},{0.278717f,0.785049f,-0.553185f}, -{0.197953f,0.797583f,-0.569804f},{-0.830511f,-0.209543f,-0.516084f},{-0.785971f,-0.188003f,-0.588986f}, -{-0.330683f,0.346221f,-0.87794f},{-0.324171f,0.619309f,-0.715101f},{-0.000413993f,-0.998852f,0.0479042f}, -{0.0241025f,0.940366f,-0.33931f},{-0.687919f,-0.155575f,-0.708917f},{-0.608044f,0.279841f,-0.742948f}, -{-0.869399f,-0.148854f,-0.471156f},{0.15548f,0.819973f,-0.550881f},{0.0859084f,0.827993f,-0.554118f}, -{-0.927365f,0.0475724f,-0.371121f},{-0.802364f,-0.227847f,-0.551632f},{-0.833075f,-0.210273f,-0.511635f}, -{-0.915617f,-0.0470975f,-0.399283f},{-0.876015f,-0.166462f,-0.452646f},{-0.782091f,-0.310435f,-0.540337f}, -{-0.69515f,-0.343201f,-0.631648f},{-0.625069f,-0.446537f,-0.640229f},{-0.625458f,-0.0937403f,-0.774606f}, -{-0.957594f,0.0112719f,-0.2879f},{-0.634462f,-0.376214f,-0.675219f},{-0.922026f,-0.141245f,-0.360442f}, -{-0.945026f,-0.0123246f,-0.326763f},{-0.915351f,-0.124506f,-0.382924f},{-0.847758f,-0.270915f,-0.455973f}, -{-0.785936f,-0.330092f,-0.522823f},{-0.764905f,-0.404768f,-0.501082f},{-0.572019f,-0.577086f,-0.582895f}, -{-0.475734f,-0.497352f,-0.725478f},{0.0412363f,-0.999149f,-0.000575673f},{-0.974726f,-0.011953f,-0.223085f}, -{-0.476842f,-0.660929f,-0.579478f},{-0.972092f,-0.00139264f,-0.234595f},{-0.948887f,-0.0918976f,-0.301941f}, -{-0.899332f,-0.194675f,-0.391539f},{-0.830531f,-0.355461f,-0.428795f},{-0.480972f,-0.670668f,-0.564686f}, -{-0.839168f,-0.338982f,-0.425309f},{-0.693691f,-0.500137f,-0.51832f},{-0.543033f,-0.647155f,-0.535075f}, -{-0.912901f,-0.218345f,-0.344872f},{-0.238438f,0.675042f,-0.698187f},{-0.181185f,0.617331f,-0.765555f}, -{-0.966653f,0.0317663f,-0.254111f},{-0.920666f,-0.00972829f,-0.390229f},{-0.970752f,-0.0188526f,-0.239345f}, -{-0.955074f,-0.110583f,-0.274962f},{-0.939826f,-0.171711f,-0.295367f},{-0.89025f,-0.290814f,-0.350546f}, -{-0.772973f,-0.474061f,-0.421638f},{-0.553283f,-0.649761f,-0.521238f},{-0.771538f,-0.484487f,-0.412312f}, -{-0.976721f,0.0834547f,-0.197616f},{-0.96782f,-0.0501943f,-0.246587f},{-0.602259f,0.376395f,-0.703997f}, -{-0.576564f,0.215634f,-0.788084f},{-0.666104f,0.00345015f,-0.745851f},{-0.658184f,-0.594629f,-0.461746f}, -{-0.98324f,0.0764916f,-0.165493f},{-0.978554f,0.0576061f,-0.197773f},{-0.963464f,-0.11138f,-0.243581f}, -{-0.927319f,-0.231403f,-0.294163f},{-0.821827f,-0.421623f,-0.38319f},{-0.694751f,-0.508234f,-0.508939f}, -{-0.570395f,-0.621536f,-0.536976f},{-0.979728f,0.108607f,-0.168339f},{-0.729935f,-0.560912f,-0.390607f}, -{-0.548836f,-0.641527f,-0.535932f},{-0.137297f,-0.0651369f,-0.988386f},{-0.983567f,0.0087842f,-0.180332f}, -{-0.955803f,-0.176433f,-0.235186f},{-0.869009f,-0.366445f,-0.332476f},{-0.774158f,-0.455288f,-0.439764f}, -{-0.619558f,-0.627742f,-0.471262f},{-0.491225f,-0.73335f,-0.469995f},{-0.858948f,-0.422974f,-0.288621f}, -{-0.322444f,0.919917f,-0.223118f},{-0.851542f,0.52224f,-0.0462868f},{0.329143f,0.78615f,-0.523099f}, -{0.346796f,0.808097f,-0.476143f},{0.260363f,0.82633f,-0.49939f},{0.49845f,0.168966f,-0.850293f}, -{0.542044f,0.204992f,-0.814964f},{0.531619f,0.163787f,-0.830996f},{0.476991f,0.648298f,-0.593455f}, -{0.412125f,0.600022f,-0.685657f},{0.534435f,0.512549f,-0.672066f},{0.0905934f,0.864983f,-0.493555f}, -{-0.0394386f,0.854323f,-0.518244f},{-0.530297f,0.721798f,-0.444739f},{0.245727f,-0.163502f,-0.95545f}, -{0.260433f,-0.101818f,-0.960108f},{-0.0886096f,0.68229f,-0.725691f},{-0.280944f,0.805369f,-0.521968f}, -{-0.157878f,0.797038f,-0.582928f},{-0.328697f,0.704327f,-0.629191f},{-0.940973f,-0.0805013f,0.32877f}, -{-0.978425f,0.154397f,-0.137284f},{-0.98397f,-0.0434644f,-0.172959f},{-0.923355f,-0.277758f,-0.265077f}, -{-0.845702f,-0.37754f,-0.377163f},{-0.728052f,-0.547275f,-0.412833f},{-0.523263f,-0.68013f,-0.513438f}, -{-0.761618f,-0.560802f,-0.324714f},{-0.0442249f,0.846128f,-0.531142f},{0.118938f,0.815643f,-0.566198f}, -{-0.106843f,0.701031f,-0.705082f},{-0.269174f,0.720933f,-0.638593f},{-0.956881f,0.109636f,0.268995f}, -{-0.87996f,0.403169f,0.251248f},{0.0556408f,0.312043f,-0.948437f},{0.232607f,0.302752f,-0.924249f}, -{0.0834377f,0.381388f,-0.920642f},{-0.000786142f,0.810607f,-0.58559f},{-0.035975f,0.777677f,-0.627634f}, -{0.0508906f,0.747998f,-0.661747f},{-0.107152f,0.734086f,-0.670549f},{-0.106257f,0.727624f,-0.677696f}, -{-0.31261f,0.743435f,-0.591252f},{-0.102666f,0.76875f,-0.631255f},{0.169555f,0.774775f,-0.609078f}, -{-0.0233887f,0.767772f,-0.640296f},{-0.357587f,0.907916f,-0.21868f},{-0.158598f,0.747223f,-0.645372f}, -{0.0443315f,0.544164f,-0.837807f},{0.0199804f,0.53045f,-0.847481f},{0.000180536f,0.693536f,-0.720422f}, -{0.184154f,0.705218f,-0.684657f},{-0.549089f,-0.833126f,0.0663552f},{-0.355312f,-0.924539f,0.137772f}, -{-0.550829f,-0.82148f,0.147507f},{-0.228807f,0.69465f,-0.681988f},{0.554866f,0.643871f,-0.526834f}, -{0.44528f,0.677502f,-0.585421f},{0.435356f,0.728495f,-0.528923f},{-0.0265682f,0.551005f,-0.834079f}, -{-0.0283525f,0.549752f,-0.834846f},{-0.0534209f,0.591202f,-0.804753f},{0.374862f,0.383933f,-0.843845f}, -{0.393388f,0.487811f,-0.779286f},{-0.0113779f,0.578591f,-0.815539f},{-0.600071f,-0.0107687f,-0.799875f}, -{-0.768247f,0.169597f,-0.617279f},{0.249316f,0.206271f,-0.9462f},{0.260273f,0.258905f,-0.930175f}, -{0.200955f,0.168393f,-0.965019f},{-0.0240418f,-0.994179f,0.105028f},{0.00728482f,-0.993241f,0.115838f}, -{-0.965055f,0.204971f,-0.163264f},{-0.947471f,0.271797f,-0.168596f},{-0.976652f,0.151255f,-0.152557f}, -{-0.969842f,-0.135725f,-0.202448f},{-0.920074f,-0.273845f,-0.28013f},{-0.867173f,-0.400469f,-0.296032f}, -{-0.629318f,-0.659676f,-0.410837f},{-0.912934f,-0.31712f,-0.256878f},{0.353662f,0.330311f,-0.87511f}, -{0.402182f,0.318681f,-0.858307f},{0.451212f,0.315875f,-0.834644f},{0.0698329f,0.848959f,-0.523824f}, -{0.1656f,0.746272f,-0.644713f},{0.0791368f,0.199257f,-0.976747f},{-0.799717f,-0.230111f,-0.554528f}, -{-0.823964f,0.15489f,-0.545062f},{-0.843488f,0.216541f,-0.491566f},{0.00578011f,0.749809f,-0.661629f}, -{-0.0349199f,0.699277f,-0.713997f},{-0.0829151f,0.75947f,-0.645237f},{-0.880051f,0.380791f,0.283742f}, -{-0.303249f,0.728386f,-0.614406f},{-0.0616567f,-0.982204f,-0.177406f},{-0.580776f,-0.680002f,-0.447545f}, -{0.64457f,0.353625f,-0.677849f},{0.611951f,0.453782f,-0.647764f},{0.620319f,0.469135f,-0.628583f}, -{0.14269f,0.455273f,-0.878844f},{-0.114267f,0.845521f,-0.521571f},{-0.209425f,0.898253f,-0.386372f}, -{-0.260342f,0.837888f,-0.479755f},{-0.298369f,0.85314f,-0.427935f},{-0.617404f,-0.37837f,-0.689673f}, -{-0.680221f,-0.42967f,-0.593871f},{-0.710034f,-0.37957f,-0.593109f},{-0.78232f,-0.388716f,-0.486698f}, -{-0.832582f,0.30817f,-0.46026f},{-0.461526f,0.804212f,-0.374483f},{-0.490626f,0.695119f,-0.525448f}, -{-0.61646f,0.663409f,-0.424106f},{-0.639165f,0.549961f,-0.537597f},{-0.469639f,0.537434f,-0.700431f}, -{0.679093f,0.422242f,-0.600453f},{0.698225f,0.270889f,-0.662647f},{0.615003f,0.328574f,-0.716806f}, -{0.233794f,0.579118f,-0.781001f},{0.226217f,0.491376f,-0.841056f},{0.259529f,0.520396f,-0.813531f}, -{0.285164f,0.525232f,-0.801757f},{0.252231f,0.40395f,-0.87932f},{0.228237f,0.438116f,-0.869461f}, -{0.373608f,0.508213f,-0.775975f},{0.414642f,0.498775f,-0.761115f},{0.338994f,0.504203f,-0.794269f}, -{-0.672568f,-0.267274f,-0.690085f},{-0.738537f,-0.304573f,-0.601497f},{-0.581012f,-0.305672f,-0.754314f}, -{-0.816326f,-0.311619f,-0.486318f},{-0.840138f,-0.337409f,-0.424645f},{-0.897044f,-0.216641f,-0.385201f}, -{-0.900858f,-0.0265083f,-0.433303f},{-0.865957f,0.140418f,-0.480001f},{-0.847461f,0.273879f,-0.454753f}, -{-0.842143f,0.354717f,-0.406167f},{-0.737181f,0.516162f,-0.436052f},{-0.927486f,0.302631f,0.219509f}, -{-0.981675f,0.141154f,-0.128021f},{-0.965402f,-0.216887f,-0.144771f},{-0.743468f,-0.592587f,-0.309994f}, -{-0.576586f,-0.709313f,-0.405492f},{-0.80673f,-0.53517f,-0.250559f},{-0.948932f,0.0757926f,0.30624f}, -{0.0720768f,0.624395f,-0.777776f},{-0.102689f,0.384984f,-0.917192f},{-0.649688f,-0.339633f,-0.680114f}, -{-0.763436f,-0.24085f,-0.599297f},{-0.842123f,-0.328308f,-0.427834f},{-0.93705f,-0.0397002f,-0.346932f}, -{-0.832593f,0.415712f,-0.366023f},{0.0558894f,0.647015f,-0.760426f},{0.186694f,0.515431f,-0.836347f}, -{0.167057f,0.796417f,-0.581216f},{-0.013721f,0.746685f,-0.665036f},{-0.074801f,0.743277f,-0.664789f}, -{-0.557577f,-0.401232f,-0.726719f},{-0.695221f,-0.350494f,-0.627552f},{-0.758386f,-0.342505f,-0.554564f}, -{-0.923356f,0.113223f,-0.366871f},{-0.509779f,0.79534f,-0.327962f},{-0.979265f,0.119692f,0.163447f}, -{-0.98726f,0.0809253f,0.137f},{-0.904176f,-0.388755f,-0.177018f},{0.455558f,0.263758f,-0.850235f}, -{0.487306f,0.146717f,-0.860818f},{0.205814f,0.624123f,-0.753732f},{-0.0595557f,0.7814f,-0.621182f}, -{-0.100202f,0.733338f,-0.67244f},{-0.798938f,-0.286607f,-0.52873f},{-0.827743f,-0.32863f,-0.4548f}, -{-0.861636f,-0.297967f,-0.410852f},{-0.778058f,-0.249262f,-0.576623f},{-0.86606f,-0.265874f,-0.423381f}, -{-0.886519f,-0.259833f,-0.382847f},{-0.884378f,-0.314477f,-0.344935f},{-0.874401f,-0.254297f,-0.413226f}, -{-0.934063f,-0.0868268f,-0.346391f},{-0.951526f,0.0806207f,-0.296814f},{-0.889652f,0.184177f,-0.417849f}, -{-0.850233f,0.348223f,-0.394771f},{-0.787832f,0.5495f,-0.278155f},{-0.990759f,-0.0191876f,0.134268f}, -{-0.971217f,0.155734f,-0.180232f},{-0.971098f,-0.0403574f,-0.235244f},{-0.952427f,-0.20938f,-0.221457f}, -{-0.895477f,-0.335529f,-0.292474f},{-0.689745f,-0.654384f,-0.309893f},{-0.697157f,-0.662355f,-0.274332f}, -{-0.991092f,-0.133136f,0.00332425f},{-0.34596f,-0.657323f,0.669506f},{-0.139928f,0.746144f,-0.650914f}, -{-0.88565f,-0.260006f,-0.384736f},{-0.119213f,0.536603f,-0.835372f},{0.0401096f,0.531459f,-0.846134f}, -{0.217478f,0.763288f,-0.608355f},{-0.345093f,0.574183f,-0.742445f},{-0.332209f,0.464239f,-0.821048f}, -{-0.363386f,0.523473f,-0.770666f},{-0.11312f,0.740586f,-0.662372f},{-0.812245f,0.237191f,-0.532915f}, -{-0.692428f,0.460837f,-0.555133f},{-0.745763f,0.212997f,-0.631244f},{-0.592546f,0.508668f,-0.624617f}, -{-0.944421f,-0.251383f,0.21184f},{-0.0282219f,0.728704f,-0.684247f},{-0.89321f,-0.192984f,-0.406121f}, -{-0.918234f,-0.245104f,-0.311078f},{-0.92194f,-0.272905f,-0.274863f},{-0.893661f,-0.357294f,-0.271499f}, -{-0.924488f,-0.268229f,-0.270878f},{-0.921025f,-0.271284f,-0.279497f},{-0.195757f,-0.980249f,-0.0281213f}, -{0.304488f,0.726339f,-0.616214f},{0.371242f,0.605966f,-0.703552f},{0.469584f,0.571727f,-0.672769f}, -{-0.882291f,-0.437208f,0.174387f},{0.18895f,0.750629f,-0.63313f},{0.0412555f,0.674764f,-0.736879f}, -{-0.90528f,-0.318957f,-0.280597f},{-0.888689f,-0.362498f,-0.280763f},{-0.924107f,-0.260881f,-0.279224f}, -{-0.959584f,-0.106115f,-0.260649f},{-0.885816f,-0.0467579f,-0.461675f},{-0.659046f,0.746035f,0.0953459f}, -{-0.674056f,0.737495f,-0.0418221f},{0.367991f,0.483938f,-0.793969f},{-0.817986f,-0.561808f,-0.123579f}, -{-0.991833f,0.0445393f,-0.119513f},{-0.986462f,0.0322381f,-0.160793f},{-0.774363f,-0.547466f,-0.317242f}, -{-0.868264f,-0.453342f,-0.201488f},{-0.26792f,0.738131f,-0.619178f},{-0.284771f,0.799236f,-0.529271f}, -{-0.119769f,0.803515f,-0.583111f},{-0.0182616f,0.559203f,-0.828829f},{-0.0234112f,0.565326f,-0.824535f}, -{-0.0600253f,0.646342f,-0.760683f},{-0.927258f,-0.33292f,0.171338f},{0.0436789f,0.832412f,-0.552433f}, -{0.00637399f,-0.0948247f,-0.995474f},{0.0884458f,0.788312f,-0.608885f},{-0.0589162f,0.60668f,-0.79276f}, -{-0.184244f,0.75806f,-0.625619f},{-0.786197f,0.366074f,-0.49788f},{-0.74957f,0.414396f,-0.51616f}, -{-0.668454f,0.559474f,-0.490059f},{-0.587639f,0.579841f,-0.564327f},{-0.0358703f,0.534826f,-0.844201f}, -{-0.880005f,-0.0687891f,-0.469956f},{-0.915141f,-0.110246f,-0.387766f},{-0.920034f,-0.193473f,-0.340743f}, -{-0.917471f,-0.210934f,-0.337274f},{-0.907767f,-0.289137f,-0.303906f},{-0.925365f,-0.259778f,-0.27607f}, -{-0.908746f,-0.296639f,-0.293576f},{-0.89718f,-0.329847f,-0.293716f},{-0.92929f,-0.237296f,-0.283039f}, -{0.0873267f,-0.833744f,-0.545202f},{0.132631f,-0.275063f,-0.952234f},{0.133723f,0.778328f,-0.613452f}, -{0.112997f,0.888124f,-0.445496f},{-0.996352f,0.0845663f,-0.0114163f},{-0.242757f,0.902481f,-0.355804f}, -{-0.192791f,0.925555f,-0.325852f},{0.0821069f,0.599657f,-0.796034f},{0.0450017f,0.462362f,-0.885549f}, -{0.0456863f,0.445472f,-0.89413f},{0.0488839f,0.541727f,-0.839132f},{0.117665f,0.639629f,-0.759625f}, -{-0.0755639f,0.649307f,-0.756763f},{-0.523536f,-0.790108f,-0.318809f},{-0.802758f,0.404456f,-0.438171f}, -{-0.905192f,-0.304054f,-0.296949f},{-0.882081f,-0.454427f,-0.124212f},{-0.993901f,0.017008f,-0.108954f}, -{-0.937838f,-0.181207f,-0.296014f},{-0.665141f,-0.586076f,-0.462712f},{-0.778656f,-0.544372f,-0.312015f}, -{-0.997034f,0.0503957f,0.0581647f},{-0.451822f,-0.741887f,-0.49544f},{-0.530233f,-0.728497f,-0.433757f}, -{-0.514687f,-0.777484f,-0.361407f},{0.436724f,-0.897585f,0.0601103f},{-0.267713f,0.874596f,-0.404242f}, -{-0.184382f,0.894412f,-0.407468f},{-0.239753f,0.839678f,-0.487299f},{-0.660937f,0.453012f,-0.598283f}, -{-0.668512f,0.361127f,-0.650138f},{-0.674786f,0.061231f,-0.735469f},{-0.93075f,-0.0503379f,-0.362175f}, -{-0.929642f,-0.0906662f,-0.357134f},{-0.64978f,-0.615394f,-0.446178f},{-0.58863f,-0.71698f,-0.373436f}, -{0.00318272f,-0.939555f,0.342383f},{-0.145101f,-0.961075f,0.235116f},{-0.680715f,0.113708f,-0.72367f}, -{-0.887669f,0.397071f,-0.233192f},{-0.954059f,0.0816392f,-0.288281f},{-0.792749f,0.556533f,-0.248635f}, -{-0.679507f,0.672828f,-0.292527f},{-0.45138f,0.853066f,-0.261789f},{-0.603588f,0.761234f,-0.237075f}, -{-0.922933f,0.26974f,-0.274656f},{-0.96959f,-0.0548561f,-0.238506f},{-0.947935f,-0.133122f,-0.289307f}, -{-0.924055f,-0.213494f,-0.317085f},{-0.899426f,-0.251276f,-0.357622f},{-0.900932f,-0.266772f,-0.342278f}, -{-0.194343f,0.850455f,-0.488832f},{-0.0324944f,0.788577f,-0.614077f},{-0.916005f,0.348945f,0.19792f}, -{-0.812545f,-0.531355f,0.239652f},{-0.70015f,0.345013f,-0.625105f},{-0.657777f,-0.143039f,-0.739506f}, -{-0.764772f,0.307474f,-0.566201f},{-0.688961f,-0.668823f,-0.279299f},{-0.87333f,-0.281439f,-0.397601f}, -{-0.429668f,-0.366092f,-0.825447f},{-0.233538f,-0.771659f,-0.59161f},{-0.426967f,0.109738f,-0.897584f}, -{-0.737624f,-0.655111f,-0.163528f},{-0.905149f,-0.408362f,-0.118095f},{-0.999381f,-0.00136333f,-0.0351535f}, -{-0.904803f,-0.318869f,-0.282231f},{-0.946042f,-0.284675f,-0.154804f},{0.0884216f,0.584999f,-0.8062f}, -{0.106585f,0.427367f,-0.897773f},{0.0498672f,0.628808f,-0.77596f},{-0.704076f,0.547598f,-0.452122f}, -{-0.664798f,0.333039f,-0.668677f},{-0.472316f,0.827564f,-0.303406f},{-0.550143f,0.780893f,-0.295885f}, -{-0.722361f,-0.592277f,-0.356934f},{-0.872574f,0.386936f,-0.298154f},{-0.928608f,0.133556f,-0.346195f}, -{-0.792346f,0.542703f,-0.278677f},{-0.72946f,0.638489f,-0.245398f},{-0.870852f,0.385273f,-0.305257f}, -{-0.963596f,-0.0794412f,-0.255286f},{-0.947973f,-0.173342f,-0.267021f},{-0.888068f,-0.328748f,-0.321342f}, -{-0.907185f,-0.261738f,-0.329407f},{0.0476047f,0.889729f,-0.453999f},{0.0592263f,0.829014f,-0.556083f}, -{-0.0314531f,0.840112f,-0.5415f},{0.331963f,-0.0387972f,-0.942494f},{-0.0368371f,-0.256588f,-0.965819f}, -{-0.0167172f,-0.297411f,-0.954603f},{0.185203f,0.0534945f,-0.981243f},{-0.870331f,0.453847f,0.191171f}, -{-0.622077f,-0.0313076f,-0.78233f},{-0.699579f,0.420684f,-0.577594f},{-0.803813f,0.488717f,-0.339176f}, -{0.0329742f,-0.999242f,0.0207125f},{0.164832f,-0.983764f,0.0709828f},{-0.0206047f,0.918457f,-0.394983f}, -{-0.0153557f,0.905575f,-0.423907f},{-0.0935167f,0.715321f,-0.692511f},{0.0511931f,0.851253f,-0.522252f}, -{-0.0160317f,-0.999497f,0.0273526f},{-0.968668f,-0.178708f,-0.17247f},{-0.899931f,-0.411584f,-0.143951f}, -{-0.753191f,-0.543083f,-0.371166f},{-0.921122f,-0.369519f,-0.122436f},{-0.675025f,0.556727f,-0.484146f}, -{-0.922432f,0.21482f,-0.320891f},{-0.946594f,-0.313147f,0.0767992f},{-0.826512f,-0.505872f,0.246925f}, -{-0.101095f,0.874518f,-0.474339f},{0.178633f,0.891713f,-0.415859f},{0.174257f,0.866981f,-0.466882f}, -{-0.0200044f,0.642351f,-0.76615f},{0.0617693f,0.424787f,-0.903184f},{-0.0536696f,0.441809f,-0.895502f}, -{-0.977742f,-0.116558f,0.174454f},{-0.704941f,0.55243f,-0.444837f},{-0.785385f,0.27646f,-0.553842f}, -{-0.797305f,0.473351f,-0.374492f},{-0.842062f,0.352114f,-0.408592f},{-0.818045f,-0.42511f,-0.387406f}, -{0.0565383f,0.364246f,-0.929585f},{0.0346147f,0.516041f,-0.855864f},{0.363058f,0.509097f,-0.78039f}, -{0.440208f,0.416773f,-0.79531f},{0.328956f,0.493552f,-0.805106f},{0.187626f,0.556664f,-0.809273f}, -{0.208331f,0.517454f,-0.829964f},{-0.989202f,-0.121884f,-0.0813819f},{0.499549f,0.158873f,-0.851593f}, -{0.432908f,0.0386735f,-0.900608f},{0.273405f,0.49063f,-0.827364f},{0.0817157f,0.606752f,-0.79068f}, -{0.106964f,0.0401378f,-0.993452f},{0.0945015f,-0.110277f,-0.989398f},{-0.0850992f,0.719827f,-0.688917f}, -{0.417252f,0.52599f,-0.741104f},{0.395665f,0.461008f,-0.794306f},{0.103608f,0.642954f,-0.758865f}, -{0.116833f,0.681212f,-0.722704f},{0.368249f,0.572081f,-0.732882f},{-0.77825f,-0.597763f,-0.192372f}, -{-0.931479f,-0.327635f,-0.15812f},{-0.968138f,-0.239452f,-0.0732868f},{0.0234646f,-0.992831f,0.1172f}, -{0.00620094f,0.863367f,-0.504538f},{-0.74072f,-0.135665f,-0.657973f},{-0.75342f,-0.0540682f,-0.655313f}, -{-0.674416f,-0.0614504f,-0.73579f},{-0.612793f,0.0468009f,-0.788856f},{-0.734032f,0.00265937f,-0.67911f}, -{-0.706752f,0.0267475f,-0.706955f},{-0.526979f,0.0954262f,-0.844504f},{-0.782884f,-0.564665f,-0.261241f}, -{0.679924f,-0.0978195f,-0.726729f},{0.561959f,-0.391283f,-0.728766f},{-0.585405f,0.436328f,-0.683314f}, -{0.0137966f,0.957329f,-0.288671f},{-0.139726f,0.939267f,-0.313454f},{-0.0246292f,0.926615f,-0.375203f}, -{-0.687732f,-0.384911f,-0.615523f},{-0.734801f,-0.248514f,-0.631117f},{-0.789134f,-0.0194749f,-0.613912f}, -{-0.782444f,-0.0322267f,-0.621886f},{-0.73717f,0.00902504f,-0.675647f},{-0.701868f,0.228167f,-0.674774f}, -{-0.0342424f,0.914195f,-0.403826f},{0.0216571f,0.853809f,-0.520136f},{-0.158441f,0.87924f,-0.449259f}, -{-0.640767f,0.226042f,-0.733705f},{-0.751944f,0.506839f,-0.421539f},{-0.363757f,0.83771f,-0.407337f}, -{0.296575f,0.632464f,-0.715564f},{0.26247f,0.617033f,-0.741876f},{0.159429f,0.413905f,-0.89625f}, -{-0.636593f,-0.395732f,-0.661925f},{0.00776096f,0.570112f,-0.82153f},{0.0359855f,0.664895f,-0.746069f}, -{0.0310453f,0.609546f,-0.792142f},{0.288612f,0.808413f,-0.513002f},{0.393032f,0.753305f,-0.52731f}, -{0.325346f,0.75768f,-0.565748f},{-0.974308f,-0.178684f,-0.137097f},{-0.953546f,-0.22885f,-0.195905f}, -{-0.625887f,0.490681f,-0.606216f},{-0.609771f,0.642855f,-0.463592f},{-0.307379f,-0.933886f,-0.182687f}, -{0.303272f,0.817697f,-0.489282f},{-0.0330104f,0.731284f,-0.681274f},{0.0176375f,0.73728f,-0.675357f}, -{-0.799932f,-0.0896961f,-0.593349f},{-0.739251f,-0.0909561f,-0.66726f},{-0.730596f,-0.0295249f,-0.682171f}, -{-0.735792f,0.141394f,-0.662282f},{0.398786f,0.719891f,-0.568091f},{0.175395f,0.891763f,-0.417127f}, -{-0.878951f,-0.343843f,-0.33048f},{0.102957f,-0.628029f,-0.771349f},{-0.00816262f,-0.613874f,-0.789362f}, -{-0.893497f,-0.435569f,0.109282f},{0.0100863f,-0.0486995f,-0.998763f},{0.150525f,0.0452677f,-0.987569f}, -{0.0764546f,0.26098f,-0.962312f},{0.152391f,0.171026f,-0.97341f},{0.345637f,0.689084f,-0.636944f}, -{0.357883f,0.609575f,-0.707346f},{-0.100902f,0.519759f,-0.848333f},{-0.140263f,0.68451f,-0.715383f}, -{-0.10744f,0.788916f,-0.605035f},{0.394548f,0.75452f,-0.524434f},{0.388926f,0.688586f,-0.612034f}, -{-0.738403f,-0.340227f,-0.582242f},{-0.782643f,-0.254177f,-0.568211f},{0.247413f,-0.564007f,-0.787834f}, -{0.256883f,-0.117003f,-0.959334f},{-0.786296f,-0.0782728f,-0.612872f},{-0.707897f,-0.152897f,-0.689568f}, -{-0.723229f,0.022688f,-0.690235f},{-0.749203f,0.184557f,-0.636108f},{-0.701033f,0.199585f,-0.68463f}, -{-0.709307f,0.157231f,-0.687141f},{-0.696854f,0.196286f,-0.689831f},{-0.118736f,0.910259f,-0.396649f}, -{-0.175142f,0.912401f,-0.369931f},{-0.131566f,0.87213f,-0.471254f},{0.378213f,0.661221f,-0.647875f}, -{0.0959242f,0.458718f,-0.883389f},{0.383769f,0.604907f,-0.697716f},{0.349285f,0.490389f,-0.798447f}, -{0.329539f,0.53652f,-0.776885f},{-0.616684f,0.525528f,-0.586107f},{-0.422189f,0.264445f,-0.867079f}, -{-0.298524f,0.112001f,-0.947808f},{-0.306054f,0.243506f,-0.920345f},{-0.685699f,0.495668f,-0.533039f}, -{-0.657282f,0.676852f,-0.331438f},{-0.265994f,0.899443f,-0.346771f},{0.188719f,0.811568f,-0.552939f}, -{0.403312f,0.792154f,-0.458074f},{0.377123f,0.811736f,-0.44594f},{0.302501f,0.527583f,-0.79382f}, -{-0.0959399f,0.939362f,-0.329235f},{-0.772767f,-0.320831f,-0.547631f},{-0.690519f,0.217566f,-0.689818f}, -{-0.661912f,0.307201f,-0.683739f},{0.351612f,0.447101f,-0.822478f},{0.303686f,0.461482f,-0.833552f}, -{-0.147613f,0.832848f,-0.533455f},{0.312312f,0.449462f,-0.836926f},{-0.781602f,-0.335284f,-0.526007f}, -{-0.917526f,-0.0964975f,-0.385791f},{-0.838488f,-0.158383f,-0.521394f},{0.0f,-1.0f,0.0f}, -{-0.886577f,-0.14044f,-0.440747f},{-0.968258f,-0.0498201f,-0.244938f},{-0.655652f,0.450153f,-0.606203f}, -{-0.604448f,0.678246f,-0.41788f},{-0.14275f,-0.918332f,0.369173f},{0.0989465f,0.694789f,-0.712374f}, -{0.166933f,0.837658f,-0.52006f},{0.21055f,0.72595f,-0.654725f},{0.316211f,0.415471f,-0.852874f}, -{-0.547079f,-0.625644f,-0.556123f},{-0.6564f,-0.45908f,-0.598652f},{-0.620557f,-0.50989f,-0.595752f}, -{-0.334171f,0.525758f,-0.782246f},{-0.733579f,-0.147398f,-0.663427f},{-0.792315f,0.0928118f,-0.603012f}, -{-0.690414f,0.293632f,-0.661142f},{0.578691f,-0.376963f,-0.723198f},{-0.599053f,0.374824f,-0.707561f}, -{0.015523f,0.715745f,-0.698189f},{-0.107927f,0.774788f,-0.62294f},{-0.0441408f,0.723233f,-0.689192f}, -{0.407924f,0.684044f,-0.604716f},{-0.194453f,0.780287f,-0.594425f},{-0.114251f,0.723885f,-0.680394f}, -{0.555647f,0.406394f,-0.725328f},{0.518593f,0.360257f,-0.77542f},{0.520778f,0.303692f,-0.797848f}, -{0.240672f,0.416642f,-0.876633f},{0.0327207f,-0.998585f,-0.0419202f},{-0.0431421f,0.587874f,-0.807801f}, -{-0.766352f,0.134119f,-0.628264f},{-0.862351f,-0.0512968f,-0.503705f},{-0.888499f,-0.189282f,-0.418021f}, -{-0.804259f,-0.259012f,-0.534865f},{-0.645443f,-0.635757f,-0.42334f},{-0.698401f,-0.436983f,-0.566817f}, -{-0.765176f,-0.285133f,-0.577239f},{-0.830084f,-0.296906f,-0.472025f},{-0.795711f,-0.359287f,-0.487603f}, -{-0.743921f,-0.239702f,-0.623799f},{-0.780822f,-0.174298f,-0.599948f},{-0.811998f,-0.130463f,-0.568893f}, -{-0.879525f,0.0516754f,-0.473039f},{-0.820533f,0.14866f,-0.55193f},{-0.807281f,0.13951f,-0.573441f}, -{-0.712668f,0.21512f,-0.667704f},{-0.729673f,0.319276f,-0.604683f},{-0.696901f,0.37933f,-0.608636f}, -{-0.656775f,0.415176f,-0.629504f},{-0.691862f,0.261617f,-0.672966f},{-0.568101f,0.174111f,-0.80433f}, -{-0.112366f,0.606799f,-0.786873f},{-0.05266f,0.579328f,-0.813392f},{-0.1848f,0.629204f,-0.754951f}, -{-0.196257f,0.888754f,-0.414246f},{-0.240208f,0.903375f,-0.355264f},{0.544748f,0.342669f,-0.765393f}, -{0.385739f,0.3243f,-0.863733f},{0.457805f,0.216345f,-0.862328f},{0.384613f,0.32892f,-0.862487f}, -{0.0803373f,0.547268f,-0.833093f},{0.0454906f,0.620927f,-0.782547f},{-0.674372f,0.00883527f,-0.738339f}, -{-0.84339f,-0.19135f,-0.502075f},{-0.931514f,-0.058715f,-0.358935f},{-0.758433f,-0.616169f,-0.212403f}, -{-0.600183f,0.119047f,-0.790954f},{-0.365026f,0.727664f,-0.580743f},{-0.775646f,0.368886f,-0.51215f}, -{-0.665811f,0.318583f,-0.674686f},{-0.523593f,0.612358f,-0.592341f},{0.599859f,0.0667783f,-0.797314f}, -{-0.0627656f,0.904092f,-0.422703f},{-0.800314f,-0.47969f,-0.359714f},{-0.804728f,-0.352697f,-0.477513f}, -{-0.797558f,0.251342f,-0.548387f},{0.299336f,-0.933466f,0.197581f},{0.329159f,-0.935342f,0.129572f}, -{-0.219073f,0.903725f,-0.367817f},{-0.212267f,0.916372f,-0.339419f},{-0.131723f,0.689763f,-0.711952f}, -{-0.0554175f,0.330594f,-0.942145f},{0.0320061f,0.18098f,-0.982966f},{-0.280935f,0.879313f,-0.384558f}, -{-0.251187f,0.930229f,-0.267543f},{-0.292435f,0.903886f,-0.312204f},{-0.718851f,0.057869f,-0.692752f}, -{-0.982328f,0.12595f,-0.138447f},{0.786614f,0.464934f,-0.406294f},{-0.700668f,0.366514f,-0.612153f}, -{0.312493f,0.817967f,-0.48299f},{-0.601982f,-0.595711f,-0.531738f},{-0.489698f,-0.677372f,-0.548965f}, -{-0.811554f,-0.468049f,-0.349729f},{-0.761489f,0.347982f,-0.546848f},{-0.731756f,0.145687f,-0.665814f}, -{0.174515f,0.884687f,-0.432289f},{-0.114839f,0.792609f,-0.598818f},{0.112595f,0.652698f,-0.749205f}, -{0.767002f,0.399536f,-0.502075f},{0.15278f,0.810745f,-0.565111f},{-0.702188f,0.107794f,-0.703784f}, -{-0.633727f,0.299399f,-0.713267f},{-0.0571531f,-0.643154f,0.763601f},{-0.427399f,0.823243f,-0.373633f}, -{-0.47606f,0.788375f,-0.389657f},{-0.518836f,0.696978f,-0.495006f},{-0.761843f,0.502152f,-0.409193f}, -{-0.908978f,0.15949f,-0.385125f},{-0.917297f,0.0193351f,-0.397734f},{-0.926845f,-0.050602f,-0.372019f}, -{-0.927027f,-0.202271f,-0.315766f},{-0.590106f,-0.644232f,-0.48656f},{-0.603943f,-0.643506f,-0.470269f}, -{-0.580711f,-0.717758f,-0.384186f},{-0.677655f,-0.7017f,-0.220003f},{-0.804464f,-0.533413f,-0.261358f}, -{-0.864175f,-0.356112f,-0.355508f},{-0.851693f,-0.371734f,-0.369368f},{-0.854062f,-0.407542f,-0.323244f}, -{-0.851561f,-0.394576f,-0.345188f},{-0.877129f,-0.167053f,-0.450265f},{-0.918302f,-0.0351973f,-0.394312f}, -{-0.927236f,-0.0126858f,-0.374262f},{-0.95147f,0.0250336f,-0.306721f},{-0.915624f,0.0651938f,-0.396715f}, -{-0.876806f,0.15456f,-0.455326f},{-0.885586f,0.147487f,-0.440438f},{-0.883614f,0.193033f,-0.426574f}, -{-0.825263f,0.319221f,-0.465875f},{-0.790863f,0.32737f,-0.517074f},{-0.709898f,0.0806033f,-0.699677f}, -{-0.0398124f,0.680137f,-0.732003f},{0.584153f,0.293525f,-0.756708f},{0.618851f,0.395068f,-0.678929f}, -{-0.767229f,0.225208f,-0.600534f},{-0.77519f,0.253299f,-0.578723f},{-0.682595f,0.190452f,-0.705544f}, -{-0.776026f,0.168611f,-0.607745f},{-0.859731f,0.371183f,-0.350837f},{-0.673324f,0.285739f,-0.6819f}, -{-0.727279f,0.537275f,-0.427084f},{-0.735501f,0.339622f,-0.586256f},{-0.716775f,0.674215f,-0.177957f}, -{-0.74042f,0.661547f,-0.118885f},{-0.43986f,0.804958f,-0.398203f},{-0.940599f,0.0319039f,-0.338018f}, -{-0.581107f,-0.717514f,-0.384043f},{-0.606471f,-0.659641f,-0.443923f},{-0.913605f,-0.148399f,-0.378555f}, -{-0.933232f,0.0702974f,-0.352329f},{-0.834932f,0.33923f,-0.433372f},{-0.738723f,0.209806f,-0.640523f}, -{-0.755023f,0.427757f,-0.496955f},{-0.724755f,0.681174f,-0.103601f},{-0.489712f,0.813523f,-0.313628f}, -{-0.868385f,-0.320696f,-0.378234f},{-0.899023f,0.150755f,-0.411134f},{-0.620953f,-0.356866f,-0.6979f}, -{-0.736245f,0.329334f,-0.591171f},{-0.752901f,0.257652f,-0.605604f},{-0.758671f,0.506889f,-0.409246f}, -{-0.670159f,0.564671f,-0.481698f},{-0.41136f,0.798592f,-0.439357f},{-0.712829f,0.660545f,-0.235702f}, -{-0.955273f,0.267109f,-0.126908f},{-0.993407f,0.0231793f,-0.11227f},{-0.933768f,-0.285835f,-0.215351f}, -{-0.522153f,-0.80213f,-0.28973f},{-0.591668f,-0.703124f,-0.394392f},{-0.686102f,-0.632814f,-0.358901f}, -{-0.674643f,-0.686631f,-0.270916f},{-0.751492f,-0.557023f,-0.353533f},{-0.851592f,-0.408749f,-0.328199f}, -{-0.874671f,-0.330786f,-0.354304f},{-0.889016f,-0.355231f,-0.288896f},{-0.808405f,-0.536273f,-0.242677f}, -{-0.865771f,-0.41462f,-0.280233f},{-0.919658f,-0.178283f,-0.349921f},{-0.929822f,0.0642691f,-0.362355f}, -{-0.955185f,0.0169424f,-0.295525f},{-0.930455f,0.000111387f,-0.366407f},{-0.91058f,0.167131f,-0.378036f}, -{-0.920372f,0.185707f,-0.344133f},{-0.899459f,0.2174f,-0.379093f},{-0.884971f,0.276707f,-0.374512f}, -{-0.864626f,0.258211f,-0.430985f},{-0.798431f,0.0357707f,-0.601023f},{-0.706052f,-0.322651f,-0.630387f}, -{-0.645647f,-0.42174f,-0.636612f},{-0.686848f,-0.423865f,-0.590405f},{-0.762974f,-0.311095f,-0.566648f}, -{-0.881004f,-0.0543548f,-0.469976f},{-0.878294f,0.0736529f,-0.472414f},{-0.855078f,0.167816f,-0.49059f}, -{-0.795931f,0.234467f,-0.558139f},{-0.731186f,0.272107f,-0.62556f},{-0.691631f,0.234792f,-0.683022f}, -{-0.652312f,0.437466f,-0.618961f},{-0.736543f,0.354978f,-0.575756f},{-0.841663f,0.118126f,-0.526925f}, -{-0.821913f,0.158685f,-0.547063f},{-0.766839f,0.226806f,-0.60043f},{-0.700081f,0.449037f,-0.555205f}, -{-0.633108f,0.633201f,-0.445232f},{-0.701542f,0.248827f,-0.667775f},{-0.756746f,0.56066f,-0.336147f}, -{-0.629406f,0.77327f,0.0768261f},{-0.652054f,-0.665617f,-0.363016f},{-0.850827f,-0.17411f,-0.495762f}, -{-0.92283f,0.0165544f,-0.384853f},{-0.92248f,0.063835f,-0.380731f},{-0.900127f,0.114247f,-0.420379f}, -{-0.782641f,0.243676f,-0.572796f},{-0.77963f,0.230663f,-0.582213f},{-0.845516f,0.11178f,-0.522119f}, -{-0.709714f,0.466652f,-0.527772f},{-0.400168f,0.870759f,-0.285735f},{-0.292425f,0.156734f,-0.943357f}, -{-0.735463f,-0.631546f,-0.245446f},{-0.797337f,-0.491385f,-0.350419f},{-0.908647f,0.250044f,-0.334423f}, -{-0.671733f,-0.467832f,-0.574377f},{-0.707944f,0.390645f,-0.588398f},{-0.807272f,0.194343f,-0.557264f}, -{-0.610848f,-0.732514f,-0.30048f},{-0.674118f,-0.457605f,-0.579795f},{0.451244f,0.0484673f,-0.891083f}, -{0.473483f,0.0961672f,-0.875538f},{-0.641274f,-0.741973f,-0.195559f},{-0.496208f,0.338717f,-0.799405f}, -{-0.461432f,0.358428f,-0.811548f},{0.566993f,0.562716f,-0.601556f},{-0.016211f,0.337597f,-0.941151f}, -{0.0142408f,0.296582f,-0.954901f},{0.152933f,0.162301f,-0.974818f},{0.460267f,0.760721f,-0.457665f}, -{0.266763f,-0.4287f,0.863165f},{-0.229672f,0.792f,-0.565674f},{-0.183382f,0.922747f,-0.338982f}, -{-0.0423757f,0.683786f,-0.728451f},{-0.078403f,0.92181f,-0.379631f},{-0.175821f,0.91269f,-0.368895f}, -{0.0319953f,0.763247f,-0.645315f},{0.702159f,0.515647f,-0.491f},{0.773998f,0.507949f,-0.378041f}, -{0.700035f,0.505806f,-0.504094f},{0.488668f,0.329755f,-0.807754f},{0.494024f,0.59918f,-0.630019f}, -{0.553235f,0.493178f,-0.671347f},{0.416349f,0.563334f,-0.713658f},{0.631496f,0.041896f,-0.774246f}, -{-0.164784f,0.487377f,-0.857502f},{-0.0916461f,0.350752f,-0.931973f},{-0.123292f,0.333143f,-0.93478f}, -{0.432491f,0.372184f,-0.821237f},{0.371927f,0.337693f,-0.864658f},{0.366353f,0.303488f,-0.879591f}, -{0.301134f,0.453315f,-0.838942f},{0.338526f,0.404715f,-0.849474f},{0.335097f,0.376204f,-0.863818f}, -{0.418205f,0.224577f,-0.880153f},{0.301306f,0.574076f,-0.761349f},{0.242002f,0.593726f,-0.767414f}, -{0.282472f,0.61884f,-0.732971f},{0.0259057f,0.734429f,-0.678191f},{0.289283f,0.717467f,-0.633684f}, -{0.000842052f,0.572893f,-0.819629f},{0.611392f,0.270866f,-0.743527f},{0.38074f,0.252503f,-0.889539f}, -{0.465128f,0.413081f,-0.782956f},{0.171625f,0.243028f,-0.954716f},{0.125825f,0.386253f,-0.91377f}, -{0.0129325f,0.398473f,-0.917089f},{0.0361355f,0.47008f,-0.881884f},{0.341164f,-0.747721f,0.569667f}, -{0.200665f,-0.688634f,0.69679f},{0.235842f,0.431982f,-0.8705f},{0.636529f,0.504031f,-0.583766f}, -{0.608404f,0.487187f,-0.626493f},{0.228318f,0.295752f,-0.927578f},{-0.363634f,0.203676f,-0.909003f}, -{0.588486f,0.667092f,-0.456807f},{0.581279f,0.615243f,-0.532532f},{-0.0425343f,0.776099f,-0.629175f}, -{-0.033611f,0.737196f,-0.674843f},{0.451443f,0.142728f,-0.880811f},{0.0148181f,-0.998955f,-0.0432437f}, -{0.430652f,0.505955f,-0.747361f},{0.663306f,0.015291f,-0.748192f},{0.381259f,0.835846f,-0.394973f}, -{0.319437f,0.838482f,-0.441485f},{0.478502f,0.508641f,-0.715765f},{0.343964f,0.541458f,-0.767145f}, -{0.0565948f,-0.83426f,-0.548459f},{-0.2399f,0.915786f,-0.322155f},{-0.17528f,0.938477f,-0.297554f}, -{-0.345293f,0.876527f,-0.335369f},{0.155107f,-0.700209f,0.696886f},{0.518676f,0.656536f,-0.547664f}, -{0.540738f,0.696976f,-0.470985f},{-0.530286f,0.670052f,-0.519449f},{0.173892f,0.450541f,-0.875657f}, -{0.264071f,0.476953f,-0.838321f},{0.242757f,0.218363f,-0.945191f},{0.166356f,-0.768676f,0.617627f}, -{-0.113909f,0.326739f,-0.938225f},{0.484652f,0.733872f,-0.475967f},{0.25989f,0.909259f,-0.325124f}, -{-0.13513f,0.367255f,-0.920252f},{-0.0836041f,0.28648f,-0.954431f},{0.694915f,0.407838f,-0.592251f}, -{0.755633f,0.298784f,-0.582878f},{0.183817f,0.688876f,-0.701185f},{0.329009f,0.56222f,-0.758724f}, -{0.450194f,0.417842f,-0.789135f},{0.426558f,0.624877f,-0.653894f},{0.474707f,0.334435f,-0.814129f}, -{-0.368151f,0.702815f,-0.6087f},{0.441703f,0.751622f,-0.48986f},{0.324125f,0.385029f,-0.864116f}, -{0.553038f,0.362224f,-0.750296f},{0.592331f,0.191065f,-0.782712f},{0.545859f,0.282084f,-0.788965f}, -{0.643405f,0.153596f,-0.749959f},{0.603579f,0.440697f,-0.664439f},{0.561321f,0.45505f,-0.691266f}, -{0.274957f,0.426057f,-0.861901f},{0.51976f,0.49844f,-0.693835f},{0.492771f,0.292664f,-0.819466f}, -{0.475031f,0.455529f,-0.752887f},{0.447749f,0.310442f,-0.838538f},{0.60608f,0.361225f,-0.708649f}, -{0.671187f,0.621191f,-0.404513f},{0.499191f,0.431184f,-0.751591f},{0.496577f,0.735805f,-0.460437f}, -{-0.182961f,0.799778f,-0.571734f},{-0.148508f,0.75117f,-0.643187f},{-0.125094f,0.69274f,-0.710255f}, -{-0.0456011f,0.630923f,-0.774504f},{0.515427f,0.473627f,-0.714151f},{0.325487f,0.479803f,-0.814768f}, -{0.0854529f,0.600774f,-0.794838f},{0.397275f,0.715379f,-0.574809f},{0.723071f,0.581009f,-0.373626f}, -{0.538154f,0.430644f,-0.724524f},{-0.318307f,0.836747f,-0.445572f},{0.309693f,0.443584f,-0.841025f}, -{0.609157f,0.175619f,-0.77336f},{0.0230232f,0.685541f,-0.72767f},{0.574796f,0.145307f,-0.805292f}, -{0.0529214f,0.706485f,-0.705747f},{0.462671f,0.340719f,-0.818441f},{0.292814f,0.517741f,-0.803868f}, -{-0.23533f,0.822868f,-0.517212f},{0.108122f,0.103404f,-0.988745f},{0.707184f,0.394909f,-0.586463f}, -{0.529927f,0.343312f,-0.775445f},{0.0648392f,0.783754f,-0.617677f},{0.02647f,0.524744f,-0.850848f}, -{-0.045521f,0.7608f,-0.647388f},{0.118751f,0.88849f,-0.443264f},{-0.0161997f,0.457597f,-0.889012f}, -{0.000280184f,0.398345f,-0.917235f},{0.0561452f,0.767709f,-0.638334f},{-0.624146f,-0.0435425f,-0.780093f}, -{0.231384f,-0.0713779f,-0.970241f},{0.403915f,0.224348f,-0.88686f},{0.210782f,0.871545f,-0.442697f}, -{0.239799f,0.817561f,-0.523536f},{0.449956f,0.539841f,-0.711415f},{0.777722f,0.411413f,-0.475276f}, -{-0.0354915f,0.335593f,-0.941338f},{-0.568895f,-0.812661f,-0.126259f},{0.191192f,0.806213f,-0.55988f}, -{-0.0525749f,0.804373f,-0.591794f},{-0.00818761f,0.759069f,-0.650959f},{0.0183587f,-0.996702f,0.0790466f}, -{0.798654f,0.469085f,-0.376976f},{0.00703419f,0.455561f,-0.890177f},{-0.379388f,0.711838f,-0.591059f}, -{-0.356592f,0.682883f,-0.637584f},{0.159572f,0.698134f,-0.697958f},{-0.0127765f,0.446995f,-0.894445f}, -{0.429407f,0.375184f,-0.82149f},{0.375785f,0.710967f,-0.5944f},{-0.353617f,0.82554f,-0.439818f}, -{-0.29696f,0.869412f,-0.39489f},{-0.206536f,0.683309f,-0.700309f},{0.0821383f,0.485265f,-0.870501f}, -{0.0984004f,0.402228f,-0.910236f},{0.516561f,0.229612f,-0.82489f},{0.550054f,0.0979327f,-0.829367f}, -{0.385639f,-0.695462f,0.606312f},{-0.366341f,0.482633f,-0.795525f},{-0.402403f,0.371983f,-0.836481f}, -{0.155905f,0.37037f,-0.915707f},{0.349217f,0.269209f,-0.897538f},{0.0164691f,-0.998683f,0.0485895f}, -{0.598748f,0.120536f,-0.791815f},{0.610598f,0.110001f,-0.784264f},{-0.514242f,0.289975f,-0.807137f}, -{-0.0559095f,0.147385f,-0.987498f},{-0.318715f,0.0545386f,-0.94628f},{0.504873f,0.254761f,-0.824742f}, -{0.208381f,0.0932082f,-0.973596f},{0.387806f,0.408758f,-0.82615f},{0.433037f,0.482513f,-0.761354f}, -{0.290996f,0.751733f,-0.591793f},{0.447236f,0.828435f,-0.337157f},{0.00941225f,0.76729f,-0.641231f}, -{-0.394672f,0.547728f,-0.737718f},{0.0124283f,0.71336f,-0.700687f},{-0.00554958f,0.640843f,-0.767652f}, -{-0.0250379f,0.60922f,-0.792606f},{-0.355539f,0.551191f,-0.754838f},{-0.0722814f,0.578202f,-0.812685f}, -{0.567135f,0.265433f,-0.779682f},{0.0651969f,0.379966f,-0.9227f},{-0.690634f,-0.632789f,-0.350148f}, -{-0.588416f,-0.793163f,-0.157031f},{-0.61951f,-0.714354f,-0.325432f},{0.26334f,0.909731f,-0.321001f}, -{0.162899f,0.168777f,-0.9721f},{-0.250455f,-0.579707f,-0.775379f},{0.0868959f,0.251874f,-0.963851f}, -{-0.00789398f,0.248566f,-0.968583f},{0.169066f,-0.886262f,-0.431227f},{0.230861f,0.171183f,-0.95781f}, -{-0.326545f,0.302039f,-0.895623f},{0.390293f,0.218435f,-0.894403f},{0.46466f,0.36971f,-0.804615f}, -{0.395036f,0.206159f,-0.895234f},{0.355156f,0.127125f,-0.926123f},{0.426136f,0.16671f,-0.889166f}, -{0.227801f,-0.666285f,0.71005f},{-0.143781f,0.574938f,-0.805465f},{-0.17141f,0.442747f,-0.88011f}, -{-0.267554f,0.646156f,-0.714771f},{-0.303341f,0.558085f,-0.772351f},{-0.291798f,0.614407f,-0.733047f}, -{-0.273007f,0.547826f,-0.790793f},{0.492345f,0.234013f,-0.838352f},{-0.077035f,0.628769f,-0.773767f}, -{-0.218071f,0.684619f,-0.695515f},{-0.244835f,0.698392f,-0.672535f},{-0.22162f,0.646343f,-0.730154f}, -{-0.214732f,0.54545f,-0.810169f},{-0.268715f,0.470151f,-0.840684f},{0.0603743f,-0.691798f,-0.719563f}, -{0.606051f,0.3876f,-0.694599f},{0.265445f,0.352554f,-0.897354f},{-0.153875f,0.507607f,-0.847737f}, -{-0.0218791f,0.2504f,-0.967895f},{0.551176f,0.495749f,-0.671147f},{0.611981f,0.287921f,-0.736601f}, -{0.256431f,0.513728f,-0.818735f},{0.0377112f,-0.996204f,0.078455f},{0.303029f,0.247999f,-0.920147f}, -{0.111975f,0.673271f,-0.730868f},{0.171041f,0.507994f,-0.844208f},{0.212217f,0.634694f,-0.743053f}, -{0.064679f,0.308196f,-0.949122f},{0.137869f,0.696416f,-0.704271f},{-0.132098f,0.735681f,-0.664322f}, -{-0.265268f,0.687997f,-0.675495f},{-0.177326f,0.583504f,-0.792514f},{-0.159021f,0.5532f,-0.81773f}, -{-0.0648649f,0.494838f,-0.866561f},{0.742841f,0.289633f,-0.603574f},{-0.244684f,0.734364f,-0.633119f}, -{-0.230733f,0.626359f,-0.744605f},{-0.0475614f,0.476977f,-0.877628f},{0.806145f,0.328443f,-0.492195f}, -{0.553227f,0.516329f,-0.653716f},{-0.157719f,0.757436f,-0.633573f},{-0.115361f,0.701471f,-0.7033f}, -{-0.121287f,0.647932f,-0.751979f},{-0.119817f,0.518635f,-0.846559f},{0.686161f,0.434175f,-0.583674f}, -{0.414612f,0.725276f,-0.549611f},{0.0854752f,0.862823f,-0.498227f},{-0.12717f,0.823634f,-0.55268f}, -{-0.039744f,0.417788f,-0.907675f},{0.058142f,0.464484f,-0.883671f},{0.331886f,0.247708f,-0.910216f}, -{0.385355f,0.193432f,-0.902267f},{-0.0793643f,0.273121f,-0.9587f},{0.0536832f,0.505359f,-0.861238f}, -{-0.615467f,0.0831187f,-0.783768f},{0.313339f,0.713027f,-0.627226f},{0.689499f,0.582774f,-0.430075f}, -{-0.128185f,0.762866f,-0.633723f},{0.0196996f,0.887205f,-0.460954f},{-0.00598953f,0.836441f,-0.548024f}, -{-0.0213968f,0.757067f,-0.652987f},{-0.00143753f,0.690355f,-0.72347f},{-0.0019361f,0.639495f,-0.768793f}, -{-0.00192568f,0.582949f,-0.812506f},{0.0273509f,0.473471f,-0.880385f},{-0.02277f,0.363068f,-0.931484f}, -{0.0540861f,-0.998258f,0.0235792f},{0.0645095f,0.441878f,-0.894753f},{0.0700004f,0.944914f,-0.319746f}, -{0.0117661f,0.405937f,-0.913825f},{0.0176947f,0.515517f,-0.856697f},{0.680651f,0.415756f,-0.60321f}, -{0.130425f,-0.961724f,0.240989f},{0.0967715f,-0.959725f,0.263748f},{0.0194044f,-0.999714f,-0.0139699f}, -{0.133409f,0.926465f,-0.351945f},{0.117102f,0.858963f,-0.498468f},{0.103475f,0.763646f,-0.637289f}, -{0.111402f,0.690044f,-0.715143f},{0.101804f,0.595361f,-0.796982f},{0.128685f,0.522187f,-0.843067f}, -{0.0402739f,0.41697f,-0.908027f},{0.399144f,-0.91055f,-0.107621f},{-0.435934f,-0.825475f,-0.358542f}, -{-0.109148f,0.471589f,-0.875037f},{-0.0636207f,0.541546f,-0.83826f},{0.16092f,0.918152f,-0.362079f}, -{0.132701f,0.495073f,-0.858657f},{-0.45753f,0.383971f,-0.802018f},{0.599068f,0.532026f,-0.598386f}, -{0.18527f,0.936653f,-0.297248f},{0.206933f,0.904728f,-0.372352f},{0.249515f,0.825249f,-0.506662f}, -{0.271295f,0.741368f,-0.613818f},{0.310646f,0.614839f,-0.724894f},{0.241053f,0.565042f,-0.789063f}, -{0.241853f,0.535239f,-0.809337f},{0.176168f,0.543811f,-0.820509f},{0.0455045f,0.57979f,-0.813494f}, -{-0.0771866f,0.507401f,-0.858246f},{0.440673f,-0.660931f,-0.607436f},{0.500526f,0.292855f,-0.814684f}, -{0.0414138f,-0.998864f,0.0235917f},{-0.0509805f,-0.997048f,0.0574192f},{-0.415864f,0.575909f,-0.703836f}, -{0.338532f,0.763192f,-0.550395f},{0.35893f,0.71351f,-0.601724f},{0.385059f,0.664926f,-0.640003f}, -{0.328951f,0.645277f,-0.689499f},{0.221126f,0.632886f,-0.741996f},{0.108873f,0.668475f,-0.735723f}, -{0.0340051f,0.683036f,-0.729593f},{-0.00556542f,0.544468f,-0.838763f},{-0.00862487f,-0.999916f,-0.00968689f}, -{-0.522209f,-0.433801f,-0.734244f},{-0.171697f,-0.631512f,-0.756117f},{0.133674f,0.312652f,-0.940415f}, -{-0.497572f,0.211301f,-0.841293f},{-0.362949f,0.167034f,-0.916716f},{0.0326084f,-0.00788205f,-0.999437f}, -{0.0178542f,-0.0277267f,-0.999456f},{-0.47475f,0.365741f,-0.800529f},{-0.473612f,0.341419f,-0.811865f}, -{-0.461667f,0.388046f,-0.797674f},{-0.424027f,0.360027f,-0.831012f},{-0.432038f,0.35578f,-0.828712f}, -{-0.431902f,0.351066f,-0.830791f},{-0.456517f,0.110316f,-0.882849f},{-0.361814f,0.114788f,-0.925156f}, -{-0.228224f,-0.316424f,-0.920755f},{-0.148414f,-0.339823f,-0.928706f},{-0.261238f,-0.215537f,-0.940903f}, -{-0.328999f,-0.10573f,-0.938393f},{-0.451714f,0.350036f,-0.820627f},{-0.347968f,0.0215898f,-0.937258f}, -{-0.309485f,-0.0149301f,-0.950787f},{0.463137f,0.067709f,-0.883696f},{-0.241012f,-0.400193f,-0.884171f}, -{-0.0357501f,-0.449568f,-0.892531f},{-0.0140368f,-0.988301f,-0.151869f},{0.0435599f,-0.988519f,-0.144679f}, -{-0.534633f,0.0470525f,-0.843773f},{-0.478002f,-0.0821379f,-0.87451f},{-0.401819f,0.0454912f,-0.914588f}, -{-0.357866f,-0.0533086f,-0.93225f},{-0.451596f,0.267947f,-0.851038f},{-0.360766f,0.261536f,-0.895236f}, -{0.410366f,-0.166006f,-0.896684f},{-0.513599f,0.162015f,-0.842596f},{0.3566f,-0.711176f,0.605859f}, -{-0.120089f,0.322861f,-0.938797f},{-0.248431f,0.441079f,-0.862399f},{-0.175283f,0.367227f,-0.913466f}, -{-0.450494f,0.0551368f,-0.891075f},{-0.42014f,0.147097f,-0.895458f},{-0.557979f,0.0600499f,-0.82768f}, -{0.366826f,-0.521694f,-0.770243f},{0.365232f,-0.318742f,-0.874648f},{0.363532f,-0.145989f,-0.920072f}, -{0.20774f,0.0420311f,-0.977281f},{0.0751624f,0.217239f,-0.97322f},{-0.321394f,-0.326397f,-0.888915f}, -{-0.393182f,-0.385769f,-0.83462f},{-0.392275f,-0.212391f,-0.894992f},{-0.406007f,-0.534047f,-0.741588f}, -{0.315182f,-0.194353f,-0.928917f},{-0.0685202f,-0.992297f,-0.103202f},{-0.0284892f,0.181927f,-0.982899f}, -{-0.53002f,-0.387743f,-0.754145f},{0.357128f,-0.656742f,-0.664191f},{0.276723f,-0.451058f,-0.848511f}, -{0.175629f,-0.170525f,-0.969575f},{0.0425135f,0.164236f,-0.985505f},{-0.0143207f,0.317665f,-0.948095f}, -{0.0122568f,0.405787f,-0.913885f},{-0.47831f,-0.644036f,-0.597024f},{-0.475634f,-0.613191f,-0.63069f}, -{-0.348139f,-0.163224f,-0.923124f},{-0.411986f,-0.109838f,-0.904546f},{-0.581602f,-0.567347f,-0.582972f}, -{-0.517116f,-0.623338f,-0.586551f},{-0.105834f,-0.0441267f,-0.993404f},{0.0528876f,-0.29564f,-0.953834f}, -{-0.50201f,-0.715353f,-0.486061f},{-0.461784f,-0.701117f,-0.543314f},{-0.626786f,0.0544235f,-0.777288f}, -{-0.752071f,0.129508f,-0.646232f},{-0.263653f,-0.0708322f,-0.962014f},{0.438893f,-0.660336f,-0.609368f}, -{0.217609f,-0.414783f,-0.883516f},{0.147652f,-0.530349f,-0.834822f},{-0.338162f,0.160716f,-0.927263f}, -{0.307363f,0.120576f,-0.943922f},{0.0490676f,0.223205f,-0.973536f},{-0.403132f,0.0502257f,-0.913763f}, -{-0.404395f,0.167715f,-0.899075f},{-0.273011f,0.356315f,-0.893591f},{0.00575582f,0.31997f,-0.94741f}, -{-0.154191f,0.0769798f,-0.985038f},{-0.0460386f,-0.00195168f,-0.998938f},{-0.417116f,-0.198723f,-0.886862f}, -{-0.529885f,-0.00125872f,-0.848068f},{-0.196126f,-0.974976f,0.104673f},{0.287061f,-0.528227f,-0.799107f}, -{0.162375f,-0.468503f,-0.868412f},{0.11783f,-0.339373f,-0.933243f},{0.00841994f,-0.0591842f,-0.998212f}, -{0.0947982f,0.174364f,-0.980107f},{0.351317f,0.0632065f,-0.93412f},{0.024536f,0.157757f,-0.987173f}, -{0.10294f,-0.457501f,-0.88323f},{0.122128f,-0.417088f,-0.900623f},{0.102582f,-0.465494f,-0.879086f}, -{0.167471f,-0.388124f,-0.906263f},{-0.0613336f,0.143051f,-0.987813f},{-0.29684f,0.289434f,-0.910008f}, -{-0.152998f,-0.0536475f,-0.986769f},{-0.519057f,-0.225463f,-0.824467f},{-0.145503f,0.163285f,-0.97579f}, -{-0.499829f,-0.705746f,-0.50209f},{-0.0914336f,-0.843831f,0.528762f},{0.0807299f,-0.328036f,-0.94121f}, -{-0.806231f,0.368991f,-0.462426f},{0.330734f,-0.580551f,-0.744027f},{0.583488f,0.141328f,-0.79973f}, -{-0.320216f,0.320748f,-0.891394f},{-0.412065f,0.356592f,-0.838478f},{-0.491405f,0.167616f,-0.854649f}, -{0.199711f,-0.705233f,-0.680266f},{0.146874f,-0.613057f,-0.776267f},{0.227035f,-0.450278f,-0.863542f}, -{0.122738f,-0.209788f,-0.970012f},{0.112813f,-0.0401108f,-0.992806f},{-0.203394f,-0.724243f,-0.658865f}, -{0.0196344f,-0.138169f,-0.990214f},{0.0655215f,-0.302574f,-0.950871f},{-0.0604679f,-0.00683363f,-0.998147f}, -{-0.221203f,-0.308623f,-0.925106f},{-0.226549f,-0.188684f,-0.955549f},{-0.433699f,0.367571f,-0.822677f}, -{0.191396f,-0.331647f,-0.923784f},{0.172897f,-0.271091f,-0.946898f},{-0.214423f,0.265942f,-0.939839f}, -{-0.172306f,0.202648f,-0.963973f},{-0.235133f,0.261565f,-0.936107f},{-0.159272f,0.192711f,-0.968243f}, -{-0.366161f,0.368952f,-0.854284f},{-0.416712f,0.28621f,-0.862806f},{-0.322311f,0.235694f,-0.916823f}, -{-0.108791f,0.0573097f,-0.992411f},{-0.23577f,-0.0337679f,-0.971222f},{-0.106879f,-0.064881f,-0.992153f}, -{-0.02569f,-0.335202f,-0.941796f},{-0.577113f,0.0728067f,-0.813412f},{-0.46981f,-0.468811f,-0.747994f}, -{-0.0801707f,-0.0791455f,-0.993634f},{-0.0991288f,-0.0698804f,-0.992618f},{0.166914f,-0.585763f,-0.793109f}, -{0.124322f,-0.458685f,-0.879859f},{0.0818947f,-0.254017f,-0.963726f},{0.203168f,-0.284487f,-0.936905f}, -{-0.378567f,0.271463f,-0.88487f},{-0.415195f,-0.628034f,-0.658169f},{-0.332351f,-0.620089f,-0.710656f}, -{-0.254031f,-0.712061f,-0.654551f},{-0.376504f,-0.711748f,-0.593009f},{-0.37075f,-0.39528f,-0.840416f}, -{0.0194336f,-0.0314723f,-0.999316f},{-0.301979f,-0.494561f,-0.814996f},{-0.294411f,-0.766308f,-0.571046f}, -{-0.106275f,0.131253f,-0.985636f},{0.0212621f,0.103805f,-0.99437f},{-0.0399005f,0.257478f,-0.96546f}, -{-0.113825f,0.251492f,-0.961143f},{-0.176062f,-0.583995f,-0.792434f},{-0.427957f,0.302497f,-0.851674f}, -{-0.289149f,-0.76017f,-0.581838f},{-0.366384f,-0.718341f,-0.591396f},{-0.546571f,-0.25365f,-0.798074f}, -{-0.39526f,-0.289349f,-0.871807f},{-0.403287f,-0.227755f,-0.886277f},{-0.489823f,-0.266145f,-0.830205f}, -{0.480623f,0.0180865f,-0.876741f},{0.00374673f,0.181041f,-0.983468f},{-0.38202f,-0.586857f,-0.713905f}, -{0.158242f,-0.536317f,-0.829049f},{0.0826999f,-0.411103f,-0.90783f},{0.233891f,-0.411181f,-0.881037f}, -{-0.254003f,-0.718621f,-0.647353f},{-0.0677313f,-0.248287f,-0.966316f},{-0.355975f,-0.0219649f,-0.934237f}, -{-0.244444f,-0.773455f,-0.58482f},{0.0347758f,0.0843179f,-0.995832f},{-0.0978183f,-0.384104f,-0.918094f}, -{0.0148392f,-0.349137f,-0.936954f},{-0.234185f,-0.31982f,-0.918081f},{-0.296005f,-0.312823f,-0.902509f}, -{-0.149664f,-0.762597f,-0.629322f},{0.298053f,-0.548791f,-0.78102f},{0.0532691f,0.187605f,-0.980799f}, -{-0.033569f,-0.249132f,-0.967888f},{-0.389285f,-0.307134f,-0.868404f},{-0.314508f,-0.334821f,-0.888245f}, -{-0.262679f,-0.400729f,-0.877733f},{-0.211967f,-0.335246f,-0.917976f},{-0.0722862f,-0.746754f,-0.661161f}, -{-0.209982f,-0.10056f,-0.97252f},{-0.61991f,-0.237285f,-0.747935f},{-0.486362f,-0.715322f,-0.501763f}, -{0.591243f,0.0442269f,-0.80528f},{-0.1822f,-0.425288f,-0.886529f},{-0.12628f,-0.280556f,-0.951494f}, -{-0.293787f,-0.25386f,-0.921544f},{-0.45819f,-0.694794f,-0.554367f},{-0.265962f,-0.2459f,-0.932093f}, -{0.552218f,-0.296904f,-0.77904f},{0.616997f,-0.208742f,-0.758776f},{0.532225f,-0.0320237f,-0.845997f}, -{0.518351f,0.0671195f,-0.85253f},{0.0783362f,-0.99421f,0.0735581f},{0.118141f,-0.991686f,0.051016f}, -{-0.162888f,-0.271886f,-0.948444f},{-0.293131f,0.331585f,-0.896731f},{0.598523f,-0.060331f,-0.798831f}, -{-0.309627f,-0.348615f,-0.884646f},{0.466335f,-0.598079f,-0.651792f},{0.663968f,-0.130472f,-0.73629f}, -{-0.426057f,-0.246834f,-0.870373f},{-0.320111f,-0.413622f,-0.852318f},{-0.275072f,-0.289065f,-0.916939f}, -{-0.121374f,-0.00139793f,-0.992606f},{-0.104278f,0.0295214f,-0.99411f},{-0.441475f,0.425385f,-0.79003f}, -{-0.354671f,-0.736701f,0.575743f},{-0.307603f,-0.735628f,0.603517f},{-0.14795f,-0.963575f,0.222786f}, -{-0.247067f,-0.209033f,-0.946184f},{0.478306f,-0.542814f,-0.690346f},{0.573596f,-0.413039f,-0.70738f}, -{0.0413827f,0.111407f,-0.992913f},{0.697966f,-0.174554f,-0.694531f},{0.0884714f,-0.995767f,-0.0249182f}, -{0.66496f,-0.0925447f,-0.741123f},{0.530716f,0.0144358f,-0.847427f},{0.424264f,0.0554731f,-0.903838f}, -{0.43501f,0.059857f,-0.898434f},{-0.0618874f,0.058737f,-0.996353f},{-0.153908f,0.138131f,-0.978382f}, -{-0.433835f,-0.75467f,-0.492201f},{0.311733f,0.130743f,-0.941132f},{0.430592f,-0.545578f,-0.718982f}, -{0.563177f,-0.165806f,-0.809531f},{0.528658f,-0.0254374f,-0.848454f},{0.463703f,0.116946f,-0.878239f}, -{0.408836f,0.0773136f,-0.909327f},{0.432356f,-0.362167f,-0.825774f},{-0.0226638f,-0.365996f,-0.93034f}, -{-0.0502062f,-0.277693f,-0.959357f},{-0.0211832f,-0.252399f,-0.967391f},{-0.500045f,-0.0644449f,-0.863598f}, -{-0.551538f,-0.0144755f,-0.834024f},{-0.34341f,-0.0575228f,-0.937423f},{-0.312247f,-0.0818833f,-0.946465f}, -{-0.182016f,-0.0683459f,-0.980918f},{-0.613054f,-0.35332f,-0.706633f},{-0.169602f,0.137656f,-0.975851f}, -{0.501381f,-0.187936f,-0.844569f},{0.410831f,0.034876f,-0.911044f},{0.556872f,-0.242513f,-0.794406f}, -{0.430962f,0.0348824f,-0.901696f},{0.466346f,0.0318584f,-0.884029f},{0.476106f,0.0373906f,-0.878593f}, -{-0.384256f,-0.333572f,0.860858f},{0.409459f,-0.402863f,-0.818563f},{0.347749f,-0.57205f,-0.742852f}, -{0.3489f,-0.310127f,-0.884359f},{0.330387f,0.0285511f,-0.943413f},{0.386763f,0.0233366f,-0.921884f}, -{0.434189f,-0.216166f,-0.874501f},{0.403344f,-0.155649f,-0.901713f},{0.397898f,-0.0907694f,-0.912928f}, -{0.444065f,0.110133f,-0.8892f},{0.436053f,0.102098f,-0.89411f},{0.450432f,0.0181053f,-0.892627f}, -{0.459103f,0.0236729f,-0.888068f},{-0.400662f,-0.908358f,-0.119813f},{-0.25029f,0.0413912f,-0.967286f}, -{-0.285704f,0.0674397f,-0.955942f},{-0.250687f,0.0544366f,-0.966537f},{0.414188f,-0.541434f,-0.731641f}, -{0.263469f,-0.554858f,-0.789124f},{0.478863f,-0.182555f,-0.858699f},{0.499925f,-0.229435f,-0.835126f}, -{0.44019f,-0.441255f,-0.782001f},{0.273243f,-0.564661f,-0.778778f},{0.308691f,-0.458051f,-0.833606f}, -{0.258205f,-0.263016f,-0.929598f},{0.266399f,-0.0140867f,-0.96376f},{0.325926f,-0.0461329f,-0.944269f}, -{0.350478f,-0.219007f,-0.910605f},{0.354576f,-0.145572f,-0.923626f},{0.370918f,-0.170775f,-0.912828f}, -{0.36704f,-0.104143f,-0.924357f},{0.397743f,0.0893554f,-0.913135f},{0.412708f,0.16809f,-0.89522f}, -{0.461831f,0.0794305f,-0.883404f},{0.491097f,0.00610044f,-0.871083f},{0.469434f,0.0393794f,-0.882089f}, -{-0.318099f,0.1176f,-0.940736f},{0.397764f,-0.22051f,-0.890595f},{0.339251f,-0.140336f,-0.930169f}, -{0.415097f,0.104971f,-0.903701f},{0.448675f,0.0117692f,-0.893618f},{0.335919f,-0.319947f,-0.885885f}, -{0.31524f,-0.196916f,-0.928357f},{0.441539f,0.052358f,-0.895713f},{0.374789f,0.0703258f,-0.924439f}, -{0.291724f,-0.429357f,-0.854722f},{0.198636f,-0.335479f,-0.920868f},{0.241156f,-0.318072f,-0.916883f}, -{0.309921f,-0.504065f,-0.806144f},{0.342391f,-0.433425f,-0.833613f},{0.279045f,-0.345422f,-0.896001f}, -{0.282074f,-0.247687f,-0.926869f},{0.279043f,-0.0375461f,-0.959544f},{0.26891f,-0.0713013f,-0.960523f}, -{0.277696f,-0.230241f,-0.93267f},{0.282046f,-0.160948f,-0.945804f},{0.24807f,-0.11132f,-0.962325f}, -{0.324934f,0.0120236f,-0.94566f},{0.404792f,0.0859546f,-0.91036f},{0.421959f,-0.0172375f,-0.906451f}, -{0.405509f,0.0607184f,-0.912072f},{0.370021f,0.0255989f,-0.92867f},{-0.273495f,0.102608f,-0.956385f}, -{-0.214751f,-0.0217704f,-0.976426f},{0.0389195f,-0.998942f,-0.0245161f},{0.301224f,-0.125571f,-0.945249f}, -{0.247679f,0.00834955f,-0.968806f},{-0.582805f,-0.287323f,-0.760121f},{0.153013f,-0.257305f,-0.954139f}, -{0.0623255f,-0.321166f,-0.94497f},{0.118664f,-0.440027f,-0.890109f},{0.186817f,-0.485921f,-0.853804f}, -{0.256389f,-0.395781f,-0.881829f},{0.242238f,-0.192341f,-0.95096f},{0.215539f,-0.00689006f,-0.976471f}, -{0.250731f,-0.139028f,-0.958021f},{0.261066f,-0.213902f,-0.941324f},{0.256085f,-0.0887571f,-0.962571f}, -{0.230182f,-0.188229f,-0.95477f},{0.34271f,-0.116949f,-0.932133f},{0.483111f,0.0179296f,-0.875376f}, -{0.506741f,0.0262392f,-0.861699f},{0.420864f,0.0887582f,-0.902771f},{0.387847f,0.0724752f,-0.91887f}, -{0.373944f,0.0811103f,-0.923898f},{-0.463775f,-0.155676f,-0.872169f},{0.205632f,-0.363896f,-0.908457f}, -{0.414665f,-0.202407f,-0.887177f},{0.51326f,-0.0593179f,-0.856181f},{0.477654f,0.0737985f,-0.875443f}, -{0.456738f,0.120889f,-0.881349f},{-0.124059f,-0.0143952f,-0.99217f},{0.159493f,-0.171302f,-0.972223f}, -{0.0728596f,-0.286864f,-0.955197f},{0.14769f,-0.548362f,-0.823096f},{0.222186f,-0.501618f,-0.83607f}, -{0.140263f,-0.412915f,-0.899904f},{0.0834118f,-0.318639f,-0.944199f},{0.132404f,-0.165691f,-0.977249f}, -{0.211184f,-0.0144253f,-0.97734f},{0.247741f,-0.159525f,-0.955603f},{0.282763f,-0.251771f,-0.925557f}, -{0.309661f,-0.0746755f,-0.94791f},{0.352027f,-0.173439f,-0.91978f},{0.314486f,-0.260742f,-0.91275f}, -{0.309214f,-0.0476167f,-0.9498f},{0.297153f,0.0785501f,-0.951593f},{0.341974f,0.140095f,-0.929208f}, -{0.361015f,0.0969296f,-0.927509f},{0.319776f,0.0989742f,-0.94231f},{0.13153f,0.190633f,-0.97281f}, -{0.0931867f,0.114043f,-0.989096f},{0.223886f,-0.0861198f,-0.970803f},{0.168265f,-0.0797806f,-0.982508f}, -{0.312417f,-0.196147f,-0.929474f},{0.326859f,-0.0967924f,-0.940103f},{-0.359361f,0.0730781f,-0.930333f}, -{0.158572f,-0.0861268f,-0.983584f},{0.109713f,-0.282932f,-0.952845f},{0.138901f,-0.618307f,-0.773565f}, -{0.227161f,-0.643871f,-0.730635f},{0.27837f,-0.418527f,-0.864492f},{0.262264f,-0.228899f,-0.937456f}, -{0.15929f,-0.233517f,-0.959216f},{0.095923f,-0.265918f,-0.959211f},{0.273692f,-0.203507f,-0.940041f}, -{0.395505f,-0.250086f,-0.883761f},{0.321622f,-0.368589f,-0.872182f},{0.370407f,-0.233665f,-0.898999f}, -{0.268743f,-0.0340914f,-0.962608f},{0.190561f,-0.22345f,-0.955906f},{0.199725f,-0.252784f,-0.946684f}, -{0.219432f,-0.0917187f,-0.971307f},{0.249687f,0.0682264f,-0.96592f},{0.251793f,0.115452f,-0.96087f}, -{0.311541f,0.0876862f,-0.946178f},{0.277111f,0.139705f,-0.950627f},{0.335169f,-0.213682f,-0.917606f}, -{0.413841f,-0.243567f,-0.877161f},{-0.508553f,0.375086f,-0.775038f},{0.158959f,-0.33245f,-0.929628f}, -{0.149185f,-0.0420049f,-0.987917f},{0.119061f,-0.346273f,-0.930548f},{0.104111f,-0.669696f,-0.735301f}, -{0.144693f,-0.679733f,-0.719046f},{0.165334f,-0.354326f,-0.92039f},{0.190832f,-0.188236f,-0.963405f}, -{0.213776f,-0.300113f,-0.929641f},{0.184987f,-0.345558f,-0.919984f},{0.214224f,-0.303985f,-0.928279f}, -{0.256223f,-0.283327f,-0.924162f},{0.23446f,-0.110913f,-0.965778f},{0.222045f,0.0280285f,-0.974634f}, -{0.219076f,-0.154819f,-0.963347f},{0.20427f,-0.26067f,-0.94357f},{0.200559f,-0.182029f,-0.962622f}, -{0.20429f,-0.0842184f,-0.975281f},{0.25253f,0.0505589f,-0.966267f},{0.332164f,0.0709402f,-0.94055f}, -{0.441632f,0.0665385f,-0.894726f},{-0.351427f,0.362608f,-0.863142f},{0.247619f,0.00508906f,-0.968844f}, -{0.389279f,-0.0348041f,-0.920462f},{0.443012f,0.0647495f,-0.894174f},{0.109221f,-0.993986f,-0.00792956f}, -{0.203599f,-0.978122f,-0.0427252f},{-0.238324f,0.306725f,-0.921478f},{0.1839f,-0.223995f,-0.957082f}, -{0.409799f,0.203448f,-0.889198f},{0.102517f,-0.279304f,-0.954714f},{0.13668f,-0.0744809f,-0.987811f}, -{0.186384f,-0.311169f,-0.931899f},{0.174915f,-0.699354f,-0.693043f},{0.187465f,-0.654656f,-0.732313f}, -{0.136217f,-0.352045f,-0.926018f},{0.203846f,-0.210139f,-0.956184f},{0.244663f,-0.312758f,-0.917781f}, -{0.108868f,-0.329495f,-0.93786f},{0.203825f,-0.317197f,-0.926197f},{0.204169f,-0.301991f,-0.931191f}, -{0.20256f,-0.0767667f,-0.976256f},{0.150877f,-0.00640872f,-0.988532f},{0.230954f,-0.186151f,-0.954991f}, -{0.155388f,-0.298392f,-0.941709f},{0.1697f,-0.192309f,-0.96655f},{0.18909f,-0.116842f,-0.974984f}, -{0.282293f,-0.0916951f,-0.954936f},{0.331828f,-0.0941502f,-0.93863f},{0.308796f,0.0477273f,-0.94993f}, -{-0.408249f,-0.720043f,-0.561134f},{0.268533f,-0.263567f,-0.926511f},{0.091933f,-0.285835f,-0.953859f}, -{0.118349f,-0.0897115f,-0.988911f},{0.145821f,-0.461532f,-0.875057f},{0.126957f,-0.694749f,-0.707958f}, -{0.114736f,-0.552027f,-0.825894f},{0.0458875f,-0.363814f,-0.930341f},{0.17179f,-0.349481f,-0.92106f}, -{0.241402f,-0.314832f,-0.917936f},{0.187544f,-0.248817f,-0.95022f},{0.154279f,-0.317391f,-0.935661f}, -{0.171403f,-0.273071f,-0.946601f},{0.218886f,-0.0469395f,-0.974621f},{0.23039f,-0.0452667f,-0.972045f}, -{0.334638f,-0.235148f,-0.912537f},{0.238913f,-0.201569f,-0.94989f},{0.201881f,-0.159874f,-0.966273f}, -{0.25613f,-0.189546f,-0.947877f},{0.257277f,-0.113556f,-0.959642f},{0.220836f,-0.0757441f,-0.972365f}, -{0.162348f,0.0763838f,-0.983773f},{0.189445f,0.265051f,-0.945441f},{0.136332f,-0.0751422f,-0.987809f}, -{0.095285f,-0.27107f,-0.957832f},{0.101441f,-0.104338f,-0.989355f},{0.0567444f,-0.445659f,-0.893402f}, -{-0.000193409f,-0.676142f,-0.736771f},{0.0109145f,-0.465338f,-0.885066f},{0.0534069f,-0.389789f,-0.919354f}, -{0.0916234f,-0.502817f,-0.859523f},{0.160832f,-0.40552f,-0.899826f},{0.159299f,-0.195571f,-0.967665f}, -{0.132088f,-0.240001f,-0.961744f},{0.0841788f,-0.31464f,-0.945471f},{0.133508f,-0.134741f,-0.981845f}, -{0.17912f,-0.0888595f,-0.979806f},{0.208443f,-0.195479f,-0.9583f},{0.259759f,-0.212322f,-0.942043f}, -{0.226557f,-0.164269f,-0.960046f},{0.138192f,-0.0514023f,-0.989071f},{0.093177f,-0.0381038f,-0.99492f}, -{0.0672073f,-0.120768f,-0.990403f},{0.176091f,0.262835f,-0.948636f},{0.0965525f,-0.994059f,-0.0502461f}, -{-0.0002735f,-0.997933f,0.0642685f},{-0.00876615f,-0.997232f,0.073829f},{-0.0215592f,-0.996239f,0.083924f}, -{0.198791f,-0.12984f,-0.971403f},{-0.613472f,-0.357682f,-0.704071f},{0.145189f,-0.0897178f,-0.985328f}, -{0.0700315f,-0.316691f,-0.94594f},{-0.0368761f,-0.677374f,-0.734714f},{-0.0508762f,-0.574966f,-0.816594f}, -{0.00461845f,-0.453498f,-0.891245f},{-0.00453975f,-0.52994f,-0.848023f},{0.00720484f,-0.395835f,-0.918294f}, -{0.0863324f,-0.18462f,-0.979011f},{0.129269f,-0.278945f,-0.951567f},{0.227027f,-0.32294f,-0.918786f}, -{0.265326f,-0.189893f,-0.945274f},{0.255582f,-0.118537f,-0.959493f},{0.287931f,-0.233008f,-0.928872f}, -{0.268068f,-0.185136f,-0.945444f},{0.196184f,-0.0750087f,-0.977694f},{0.0985332f,0.00685483f,-0.99511f}, -{0.162505f,-0.0579435f,-0.985005f},{0.151121f,-0.336992f,-0.9293f},{0.208861f,-0.129676f,-0.96931f}, -{-0.333093f,-0.877541f,-0.344923f},{-0.855978f,-0.334846f,-0.393928f},{0.342906f,-0.296651f,-0.891299f}, -{0.278857f,-0.0874291f,-0.956345f},{0.191219f,-0.979642f,0.0611353f},{-0.0449772f,-0.984866f,-0.167378f}, -{0.257991f,-0.139881f,-0.955967f},{0.140787f,0.0217321f,-0.989801f},{0.171542f,-0.0350602f,-0.984553f}, -{0.191266f,-0.111461f,-0.975189f},{0.134866f,0.0460265f,-0.989794f},{-0.474359f,-0.186298f,-0.860393f}, -{-0.0743062f,-0.679009f,0.730359f},{0.17509f,-0.179612f,-0.968031f},{0.18737f,-0.182224f,-0.965239f}, -{0.0634384f,-0.553884f,-0.830173f},{-0.0614459f,-0.573997f,-0.816549f},{-0.0548518f,-0.463718f,-0.884283f}, -{-0.0542619f,-0.46565f,-0.883304f},{-0.0886851f,-0.485649f,-0.869643f},{-0.031275f,-0.343695f,-0.938561f}, -{0.109803f,-0.424685f,-0.898658f},{0.157277f,-0.316265f,-0.935543f},{0.181625f,-0.149741f,-0.9719f}, -{0.250089f,-0.202109f,-0.946893f},{0.224643f,-0.195189f,-0.954692f},{0.189713f,-0.127546f,-0.97352f}, -{0.120296f,-0.0534839f,-0.991296f},{-0.457533f,-0.498441f,-0.736356f},{-0.0184083f,-0.864544f,0.502219f}, -{0.0450966f,-0.998981f,0.00189569f},{0.0182236f,-0.999668f,-0.0182031f},{-0.308813f,-0.950316f,0.0391569f}, -{0.249777f,-0.228349f,-0.940993f},{0.0407418f,-0.378347f,-0.924767f},{-0.164432f,0.40839f,-0.897875f}, -{-0.314956f,0.0949649f,-0.944343f},{-0.541635f,-0.409308f,-0.734233f},{-0.159007f,-0.282733f,-0.945927f}, -{-0.0413941f,-0.283658f,-0.958032f},{0.0651972f,-0.232411f,-0.97043f},{0.0368408f,-0.149265f,-0.988111f}, -{0.0695572f,-0.163889f,-0.984024f},{0.0598061f,-0.11698f,-0.991332f},{0.0909766f,0.0319594f,-0.99534f}, -{0.102819f,-0.0478997f,-0.993546f},{0.0437593f,-0.077876f,-0.996002f},{0.0155373f,0.0713922f,-0.997327f}, -{-0.348753f,0.139677f,-0.926748f},{0.23431f,-0.891494f,0.387733f},{-0.553502f,-0.308364f,-0.773659f}, -{-0.616738f,-0.173523f,-0.767805f},{-0.380602f,0.11266f,-0.917851f},{0.22381f,-0.132088f,-0.965641f}, -{-0.0792494f,-0.411621f,-0.907903f},{-0.193881f,-0.479576f,-0.855813f},{-0.197234f,-0.449732f,-0.871114f}, -{-0.0877846f,-0.449835f,-0.888787f},{-0.185332f,-0.415287f,-0.890612f},{-0.207097f,-0.395328f,-0.894889f}, -{-0.118296f,-0.403333f,-0.907374f},{0.00189189f,-0.999994f,0.00306737f},{-0.457134f,-0.420451f,-0.783741f}, -{-0.635975f,-0.131724f,-0.760385f},{-0.269536f,-0.956413f,-0.112361f},{-0.288356f,-0.418766f,-0.861096f}, -{-0.36962f,-0.401844f,-0.837797f},{-0.377607f,-0.407334f,-0.83156f},{-0.348602f,-0.404377f,-0.845551f}, -{-0.248868f,-0.324939f,-0.912403f},{-0.279433f,-0.340647f,-0.897707f},{-0.214021f,-0.324631f,-0.921309f}, -{-0.112611f,-0.190842f,-0.97514f},{-0.0751645f,-0.194146f,-0.978089f},{-0.0507894f,-0.146409f,-0.987919f}, -{-0.0101824f,-0.0328948f,-0.999407f},{0.0159028f,-0.0202976f,-0.999668f},{-0.0595336f,0.00126352f,-0.998226f}, -{-0.0968821f,0.0913483f,-0.991095f},{-0.139114f,0.286357f,-0.94797f},{-0.921666f,-0.384264f,-0.0535948f}, -{0.0780428f,-0.996611f,-0.0260006f},{-0.283515f,-0.477441f,-0.831667f},{-0.331705f,-0.449341f,-0.829496f}, -{-0.385828f,-0.392684f,-0.834827f},{-0.517772f,-0.225955f,-0.82514f},{-0.55825f,-0.15923f,-0.81425f}, -{-0.592719f,-0.108802f,-0.798027f},{0.230233f,-0.0502752f,-0.971836f},{0.119686f,0.0323427f,-0.992285f}, -{-0.158251f,-0.204838f,-0.965918f},{-0.250495f,-0.436161f,-0.864301f},{-0.453561f,-0.372427f,-0.809679f}, -{-0.371939f,-0.334884f,-0.865745f},{-0.351896f,-0.847199f,0.398023f},{-0.0471725f,-0.995583f,0.0811798f}, -{-0.178855f,0.347392f,-0.920505f},{-0.0643786f,-0.901551f,0.427855f},{0.165713f,-0.0165558f,-0.986035f}, -{0.093963f,0.185729f,-0.978098f},{-0.085456f,0.0715648f,-0.993768f},{-0.383911f,-0.292464f,-0.875829f}, -{-0.429875f,-0.347318f,-0.833413f},{-0.481882f,-0.391585f,-0.783869f},{-0.433764f,-0.41101f,-0.801823f}, -{-0.492389f,-0.348149f,-0.797713f},{-0.48093f,-0.351514f,-0.803209f},{-0.369498f,-0.397625f,-0.83986f}, -{-0.434404f,-0.368349f,-0.821956f},{-0.328686f,-0.300934f,-0.895212f},{-0.272589f,-0.176483f,-0.945806f}, -{-0.194385f,-0.0887588f,-0.976901f},{-0.213207f,0.0173482f,-0.976853f},{-0.203672f,0.0458605f,-0.977965f}, -{-0.212849f,0.138942f,-0.967156f},{-0.201355f,0.286949f,-0.936545f},{-0.170263f,-0.958942f,0.226804f}, -{0.0336438f,-0.997239f,0.066202f},{0.476486f,-0.877819f,0.0489346f},{-0.175802f,-0.482737f,-0.857938f}, -{-0.240114f,-0.406166f,-0.881688f},{-0.317766f,-0.319497f,-0.892719f},{-0.450952f,-0.15198f,-0.879514f}, -{-0.511979f,-0.296898f,-0.806058f},{-0.508813f,-0.393695f,-0.76558f},{0.112715f,0.225438f,-0.967715f}, -{-0.598289f,-0.679083f,-0.42532f},{-0.235634f,-0.951767f,-0.196511f},{-0.476286f,-0.803592f,-0.356919f}, -{-0.362864f,-0.223333f,-0.904683f},{-0.420486f,-0.21012f,-0.882633f},{-0.279394f,0.219675f,-0.93471f}, -{-0.0115128f,-0.999142f,0.0397777f},{-0.000605356f,-0.997024f,0.077089f},{-0.0082265f,-0.999963f,0.00249397f}, -{-0.0261943f,-0.998588f,-0.0462172f},{0.0705986f,0.26835f,-0.960731f},{-0.0994969f,0.328516f,-0.939243f}, -{-0.393652f,-0.0258967f,-0.918895f},{-0.523073f,-0.360866f,-0.772121f},{-0.533142f,-0.277189f,-0.799328f}, -{-0.483933f,-0.15738f,-0.860837f},{-0.436994f,-0.0964095f,-0.894283f},{-0.363398f,0.0677128f,-0.92917f}, -{-0.473792f,-0.00518424f,-0.880622f},{-0.390418f,0.0204487f,-0.920411f},{-0.355069f,0.15848f,-0.921309f}, -{-0.18989f,-0.469618f,-0.862207f},{0.0387132f,-0.998767f,0.031081f},{-0.22247f,-0.972103f,-0.0743105f}, -{-0.0842592f,-0.983493f,0.160133f},{-0.460062f,0.220102f,-0.860173f},{0.0931486f,-0.955462f,0.280027f}, -{0.0532537f,-0.998488f,-0.0136487f},{-0.203823f,-0.966645f,-0.155093f},{0.0599921f,-0.998181f,0.00590705f}, -{0.0167739f,-0.999717f,-0.0168777f},{0.111033f,-0.986245f,0.122446f},{0.0914944f,-0.881277f,0.463658f}, -{0.0355514f,-0.998636f,0.0382277f},{0.437185f,-0.872861f,0.216754f},{0.422546f,-0.855048f,0.300579f}, -{0.42756f,-0.880253f,0.205784f},{-0.322485f,-0.87414f,-0.363155f},{-0.00853661f,-0.991127f,-0.132642f}, -{-0.145474f,-0.888027f,-0.436171f},{-0.493414f,-0.735429f,0.464422f},{-0.335755f,-0.760172f,0.556243f}, -{-0.493879f,-0.817461f,0.296379f},{0.261385f,-0.811544f,0.522565f},{0.032797f,-0.995392f,0.090103f}, -{0.114284f,-0.915866f,0.384874f},{-0.423877f,-0.903915f,-0.0571463f},{-0.595218f,-0.723646f,0.34936f}, -{0.21114f,-0.821121f,0.530264f},{-0.00545385f,-0.999841f,-0.0169869f},{-0.0187241f,-0.995127f,-0.0968045f}, -{0.0192527f,-0.997316f,0.0706471f},{0.0217938f,-0.996704f,0.0781471f},{0.0252164f,-0.997289f,0.0691295f}, -{0.0388396f,-0.996338f,0.076169f},{-0.0958933f,-0.67412f,0.732371f},{-0.0528083f,-0.6354f,0.770375f}, -{-0.277386f,-0.89954f,0.337469f},{-0.415031f,-0.742829f,0.525313f},{0.0269597f,-0.998768f,0.0416694f}, -{0.0208328f,-0.998511f,0.0504246f},{0.0197848f,-0.999201f,0.0347204f},{0.441117f,-0.887602f,0.132582f}, -{0.220524f,-0.949395f,-0.223647f},{0.254325f,-0.918615f,-0.302432f},{-0.411947f,-0.905298f,-0.103613f}, -{0.0330157f,-0.999407f,0.00973608f},{0.0360647f,-0.999324f,0.00715541f},{0.0281243f,-0.999554f,0.0100368f}, -{0.0317264f,-0.999288f,-0.0204045f},{0.0207974f,-0.999648f,-0.0164574f},{0.390465f,-0.895183f,0.214907f}, -{0.068996f,-0.997368f,-0.0222887f},{0.00696426f,-0.999677f,0.0244445f},{0.113192f,-0.990527f,-0.0777368f}, -{0.0300783f,-0.997791f,-0.0592262f},{-0.101247f,-0.989736f,0.100855f},{-0.488221f,-0.872483f,-0.0203287f}, -{0.0192702f,-0.995406f,0.0937832f},{-0.00526962f,-0.999976f,0.004602f},{0.168434f,-0.985586f,-0.015808f}, -{-0.274512f,-0.959802f,0.0585097f},{-0.125707f,-0.991656f,-0.0285798f},{-0.440623f,-0.879403f,-0.180285f}, -{-0.508811f,-0.860146f,0.0355013f},{-0.295831f,-0.930916f,-0.214194f},{-0.133933f,-0.979029f,-0.153508f}, -{-0.504832f,-0.82857f,-0.242108f},{-0.199422f,-0.931407f,-0.304485f},{-0.0191935f,-0.999509f,-0.0247501f}, -{-0.00421024f,-0.997259f,-0.0738707f},{-0.456138f,-0.792245f,-0.405322f},{0.536549f,-0.617989f,0.574635f}, -{0.159432f,-0.964327f,0.211319f},{0.119699f,-0.987882f,0.098801f},{0.0753162f,-0.996306f,0.041258f}, -{0.0769156f,-0.995434f,0.056522f},{0.199961f,-0.972262f,0.121333f},{0.0324883f,-0.998411f,0.0460362f}, -{0.00150144f,-0.998946f,0.0458802f},{0.0212488f,-0.999318f,0.0302135f},{0.0380284f,-0.999242f,-0.00828349f}, -{0.0575431f,-0.998323f,0.00632132f},{-0.0275333f,-0.993345f,-0.111842f},{0.179328f,-0.983237f,-0.032964f}, -{0.134155f,-0.989332f,0.056792f},{-0.275129f,-0.942456f,0.189949f},{-0.434564f,-0.859275f,0.269818f}, -{-0.501779f,-0.819213f,0.277684f},{0.230928f,-0.92776f,0.293145f},{0.457012f,-0.817257f,0.351042f}, -{0.431776f,-0.889879f,0.147261f},{-0.00337819f,-0.99996f,0.00822642f},{-0.0679747f,-0.924453f,0.375188f}, -{0.421036f,-0.80576f,0.41651f},{0.261081f,-0.824249f,0.502445f},{-0.400411f,-0.863751f,0.30595f}, -{-0.00950766f,-0.998909f,0.0457252f},{0.108334f,-0.993724f,-0.0278652f},{0.119746f,-0.987411f,0.103343f}, -{0.246439f,-0.960619f,0.128374f},{-0.0457223f,-0.994671f,-0.0924088f},{0.254503f,-0.966784f,0.0235859f}, -{0.267335f,-0.961599f,0.0621237f},{0.139755f,-0.968292f,0.207074f},{-0.0581971f,-0.996083f,0.0665645f}, -{-0.100193f,-0.994413f,0.0332144f},{0.256728f,-0.860271f,0.440482f},{0.0205264f,-0.995617f,0.0912464f}, -{0.145715f,-0.989314f,-0.00497361f},{0.442628f,-0.725749f,0.526658f},{0.422509f,-0.759082f,0.495258f}, -{0.0250255f,-0.999672f,0.00538897f},{0.0226148f,-0.999695f,-0.0098717f},{-0.0512331f,-0.95503f,0.29205f}, -{0.0094949f,-0.999954f,0.00102734f},{-0.134225f,-0.965527f,-0.223029f},{-0.0342345f,-0.997022f,-0.0691043f}, -{0.0220392f,-0.999002f,-0.0388572f},{0.0200358f,-0.999289f,-0.031944f},{-0.160766f,-0.975433f,-0.150616f}, -{0.0182022f,-0.999505f,-0.0256645f},{0.157028f,-0.799171f,0.580231f},{0.348365f,-0.535744f,0.769168f}, -{-0.0879878f,-0.890344f,0.446705f},{-0.299798f,-0.892556f,0.336847f},{-0.485275f,-0.745735f,0.456494f}, -{-0.0470124f,-0.998452f,-0.0297115f},{0.0765366f,-0.877318f,0.473766f},{-0.0188492f,-0.998556f,-0.0503023f}, -{0.0232935f,-0.998163f,0.0559258f},{-0.0291428f,-0.923105f,0.383443f},{0.0719425f,-0.983426f,0.166427f}, -{-0.352676f,-0.869485f,0.345856f},{0.0223918f,-0.995144f,0.0958476f},{0.0235307f,-0.996475f,0.0805263f}, -{-0.0904133f,-0.98791f,0.125936f},{-0.669071f,-0.733856f,-0.117467f},{0.409527f,-0.911178f,-0.0452039f}, -{-0.477475f,-0.771456f,0.420563f},{0.0244424f,-0.995812f,0.0881007f},{0.0470478f,-0.997189f,0.0583127f}, -{-0.627038f,-0.766081f,0.141222f},{-0.641998f,-0.766623f,-0.0113149f},{-0.598191f,-0.738564f,-0.310951f}, -{-0.435507f,-0.821898f,-0.367176f},{-0.00972171f,-0.998838f,0.0472077f},{-0.433635f,-0.802921f,0.408997f}, -{0.0943655f,-0.869567f,0.484715f},{-0.113401f,-0.985403f,0.126968f},{-0.0507322f,-0.910702f,0.409937f}, -{-0.147138f,-0.692524f,0.706229f},{0.0576281f,-0.990996f,0.120851f},{0.0329572f,-0.994475f,0.0996614f}, -{0.0424437f,-0.995673f,0.0826672f},{-0.458454f,-0.748406f,0.479278f},{0.183653f,-0.959272f,-0.214638f}, -{0.0274192f,-0.999423f,-0.020069f},{0.0224728f,-0.999636f,-0.0148969f},{0.0689027f,-0.996106f,0.0550065f}, -{0.267426f,-0.943674f,0.194839f},{-0.143591f,-0.609172f,0.77993f},{-0.683555f,-0.706749f,0.182371f}, -{0.0207577f,-0.999514f,-0.0232647f},{-0.00208528f,-0.999923f,-0.0122105f},{0.00944962f,-0.999952f,0.00269041f}, -{0.0197769f,-0.999642f,-0.0180048f},{0.0818378f,-0.995107f,0.0553525f},{-0.60003f,-0.772993f,0.206023f}, -{0.132217f,-0.736984f,0.662852f},{0.0259287f,-0.996915f,0.0740829f},{-0.219604f,-0.975282f,0.0244756f}, -{0.181724f,-0.972486f,0.145768f},{0.186707f,-0.976889f,-0.104062f},{-0.358453f,-0.845749f,0.395247f}, -{0.125563f,-0.984195f,0.124874f},{-0.172515f,-0.972719f,0.155102f},{0.0503893f,-0.998717f,-0.00495466f}, -{0.252812f,-0.945431f,0.20554f},{0.327671f,-0.916653f,0.228865f},{0.413063f,-0.88025f,0.233537f}, -{0.507231f,-0.849177f,0.147022f},{0.418226f,-0.898864f,0.130885f},{-0.254397f,-0.928918f,0.26906f}, -{0.331623f,-0.931502f,0.149429f},{0.31091f,-0.914002f,0.260643f},{0.66593f,-0.668128f,0.331876f}, -{0.344914f,-0.804073f,0.484252f},{0.368575f,-0.849033f,0.378543f},{0.0591826f,-0.99639f,0.0608577f}, -{-0.623304f,-0.750806f,-0.218594f},{-0.617055f,-0.758178f,-0.210734f},{-0.588556f,-0.784469f,-0.195473f}, -{-0.559468f,-0.824327f,-0.0864911f},{0.0300425f,-0.998085f,0.0540763f},{0.0202993f,-0.999654f,-0.0167502f}, -{0.0324792f,-0.999177f,-0.0242951f},{0.0377085f,-0.998735f,-0.0332751f},{0.0247975f,-0.999377f,-0.0251006f}, -{-0.175498f,-0.980598f,-0.0873358f},{0.0152553f,-0.999611f,-0.0233534f},{-0.0155738f,-0.999348f,-0.0325671f}, -{0.433514f,-0.891799f,0.129464f},{0.0318165f,-0.999425f,-0.0117401f},{0.0301593f,-0.998859f,-0.0370258f}, -{0.0351686f,-0.998546f,-0.0408672f},{0.0354106f,-0.997615f,0.0592413f},{0.0265466f,-0.993097f,0.114249f}, -{-0.246175f,-0.969217f,-0.004021f},{0.0260654f,-0.999081f,-0.0340246f},{0.439339f,-0.795647f,0.417046f}, -{0.453894f,-0.753803f,0.475144f},{-0.0218013f,-0.997889f,0.0611717f},{-0.353667f,-0.930265f,-0.0976006f}, -{-0.573537f,-0.714299f,-0.401039f},{-0.258594f,-0.948539f,-0.182764f},{-0.4667f,-0.864393f,-0.187126f}, -{0.395986f,-0.871117f,0.290431f},{0.177311f,-0.984137f,-0.0060141f},{-0.0176953f,-0.999403f,-0.0296736f}, -{-0.467747f,-0.865832f,-0.177615f},{0.0250974f,-0.998326f,-0.052109f},{-0.639944f,-0.768392f,0.00664921f}, -{-0.436519f,-0.882692f,-0.174088f},{-0.0443429f,-0.996264f,-0.0741012f},{0.148824f,-0.978852f,0.14036f}, -{0.290687f,-0.919037f,0.266219f},{0.352249f,-0.880871f,0.316206f},{0.0831872f,-0.874957f,0.477f}, -{-0.0582198f,-0.996291f,0.0633602f},{-0.210873f,-0.96402f,-0.161858f},{0.133774f,-0.990679f,-0.0256777f}, -{0.438413f,-0.846291f,0.302631f},{0.033499f,-0.997861f,0.056144f},{-0.45141f,-0.872907f,-0.1851f}, -{0.0452908f,-0.996803f,0.0658251f},{-0.0145148f,-0.999841f,0.0103397f},{0.498847f,-0.852849f,0.154272f}, -{-0.333123f,-0.851253f,0.40546f},{-0.48286f,-0.805861f,-0.342687f},{-0.296849f,-0.934096f,-0.198358f}, -{0.0291155f,-0.99953f,-0.00955752f},{-0.222844f,-0.947564f,0.229046f},{-0.0128039f,-0.996041f,0.087971f}, -{-0.522135f,-0.852551f,0.0230707f},{-0.397436f,-0.898396f,-0.186892f},{-0.522835f,-0.827296f,-0.205488f}, -{-0.641568f,-0.688765f,0.337629f},{0.0315253f,-0.999262f,-0.0219513f},{-0.0624349f,-0.891708f,0.448284f}, -{-0.19033f,-0.639321f,0.745012f},{0.465534f,-0.885002f,-0.00708205f},{0.0205535f,-0.999617f,0.0185422f}, -{0.0343446f,-0.999226f,-0.019187f},{-0.012597f,-0.921971f,0.387055f},{-0.0375038f,-0.964409f,0.261741f}, -{0.0311963f,-0.999185f,-0.0256275f},{-0.179976f,-0.983404f,0.0229121f},{0.019335f,-0.999568f,0.0221399f}, -{0.0401681f,-0.998975f,0.0208602f},{-0.460601f,-0.886659f,-0.0410255f},{-0.440598f,-0.897705f,-4.98216e-05f}, -{-0.504286f,-0.842614f,0.188935f},{-0.692687f,-0.706962f,0.142793f},{-0.655434f,-0.755063f,0.0168972f}, -{0.0579206f,-0.997201f,0.0472857f},{0.0291897f,-0.999256f,0.0252153f},{0.277683f,-0.837692f,0.470282f}, -{-0.35385f,-0.827547f,0.43584f},{-0.14467f,-0.922792f,0.357107f},{-0.243562f,-0.650974f,0.718965f}, -{-0.0765156f,-0.90654f,0.415127f},{-0.0870873f,-0.647042f,0.757464f},{-0.0998985f,-0.705678f,0.701455f}, -{-0.121883f,-0.585755f,0.801271f},{-0.0845681f,-0.794925f,0.600785f},{0.322318f,-0.89145f,0.318478f}, -{0.268049f,-0.899651f,0.344641f},{0.394246f,-0.896125f,0.20379f},{0.365052f,-0.901085f,0.234057f}, -{-0.328019f,-0.934659f,-0.137167f},{-0.360418f,-0.920976f,0.147993f},{-0.45244f,-0.82013f,0.350265f}, -{-0.591845f,-0.602434f,0.535531f},{0.0557912f,-0.997563f,0.0418935f},{0.0480669f,-0.998536f,0.0248022f}, -{-0.705643f,-0.70726f,-0.0430247f},{0.0151378f,-0.95688f,0.290088f},{0.0243109f,-0.999251f,0.0300928f}, -{0.0207376f,-0.998779f,0.0448426f},{0.0115761f,-0.99813f,0.060023f},{0.0210507f,-0.999506f,-0.0233455f}, -{-0.297012f,-0.954334f,-0.0321031f},{-0.354475f,-0.691456f,0.629472f},{0.00592118f,-0.999939f,0.0093082f}, -{0.00944358f,-0.99995f,0.00317306f},{0.00479116f,-0.999985f,-0.00271793f},{0.111701f,-0.93354f,0.340625f}, -{-0.256367f,-0.898633f,0.355998f},{-0.243354f,-0.885941f,0.394826f},{0.0241804f,-0.803704f,0.594538f}, -{-0.538186f,-0.842816f,-0.00415148f},{-0.251625f,-0.957127f,0.1435f},{-0.339474f,-0.897541f,0.281383f}, -{0.446715f,-0.894676f,-0.000879809f},{0.0248744f,-0.995502f,0.0914169f},{-0.309336f,-0.665887f,0.6789f}, -{0.391327f,-0.920154f,-0.0134252f},{0.0404577f,-0.997928f,0.0500338f},{-0.00232434f,-0.9993f,0.037331f}, -{-0.00513422f,-0.999965f,-0.00653303f},{-0.253237f,-0.892645f,0.372903f},{-0.272659f,-0.844382f,0.461169f}, -{0.0187416f,-0.996571f,0.080588f},{-0.502938f,-0.647014f,0.573085f},{0.300552f,-0.922456f,-0.242371f}, -{0.271425f,-0.952077f,-0.140989f},{-0.00736048f,-0.999908f,0.0114276f},{-0.16623f,-0.958139f,0.233104f}, -{0.0206399f,-0.999591f,0.0197855f},{0.00345179f,-0.998907f,-0.0466221f},{0.0212683f,-0.999708f,-0.0114886f}, -{0.0375103f,-0.999227f,-0.0118001f},{-0.348836f,-0.931621f,0.101959f},{-0.314378f,-0.680497f,0.661883f}, -{-0.239775f,-0.428203f,0.871292f},{0.0269942f,-0.999498f,-0.016598f},{0.205362f,-0.975052f,0.0842651f}, -{0.270583f,-0.666424f,0.69474f},{-0.00150245f,-0.999758f,-0.0219692f},{-0.714f,-0.698681f,0.0452555f}, -{-0.688861f,-0.724634f,0.0193742f},{0.401174f,-0.906291f,0.133027f},{-0.505844f,-0.788873f,0.348999f}, -{-0.247088f,-0.952407f,0.178519f},{-0.205733f,-0.59121f,0.779836f},{0.0494061f,-0.992878f,0.108406f}, -{0.0367044f,-0.994233f,0.100762f},{0.0351902f,-0.99526f,0.0906619f},{0.213513f,-0.950656f,0.225089f}, -{-0.792844f,-0.571214f,0.212401f},{-0.741162f,-0.631635f,0.227412f},{-0.803971f,-0.570798f,0.166793f}, -{0.017301f,-0.999692f,-0.0177914f},{-0.229972f,-0.922314f,0.310563f},{-0.216697f,-0.792922f,0.569489f}, -{0.235083f,-0.926277f,0.294528f},{0.00602081f,-0.999691f,-0.0241236f},{-0.777905f,-0.572679f,0.258656f}, -{-0.814979f,-0.579368f,-0.0119202f},{-0.134095f,-0.712885f,0.688341f},{0.0263432f,-0.991925f,0.124058f}, -{-0.286608f,-0.917236f,0.276647f},{-0.274125f,-0.949667f,0.151618f},{-0.15952f,-0.639275f,0.752251f}, -{0.0140026f,-0.513734f,0.857835f},{0.0268088f,-0.997391f,0.0670283f},{0.54123f,-0.811167f,0.221538f}, -{-0.114704f,-0.964508f,0.23784f},{-0.114607f,-0.950567f,0.288597f},{-0.650764f,-0.732086f,-0.201387f}, -{-0.679137f,-0.732762f,0.042813f},{-0.626677f,-0.75023f,0.210786f},{-0.744444f,-0.615384f,0.259046f}, -{-0.783919f,-0.549936f,0.28817f},{0.0951864f,-0.992793f,0.0728156f},{-0.167854f,-0.82374f,0.541551f}, -{-0.556335f,-0.758532f,-0.339294f},{-0.572388f,-0.778919f,-0.256236f},{-0.675517f,-0.72405f,-0.139386f}, -{-0.697059f,-0.69526f,0.175279f},{-0.679396f,-0.680833f,0.273657f},{-0.745357f,-0.557158f,0.366084f}, -{-0.177695f,-0.919051f,0.351809f},{-0.246284f,-0.738901f,0.627192f},{-0.392196f,-0.627861f,0.672289f}, -{-0.637037f,-0.759177f,-0.133544f},{-0.651607f,-0.758376f,0.0165816f},{-0.628765f,-0.747946f,0.212678f}, -{-0.696044f,-0.539656f,0.473597f},{-0.631972f,-0.595965f,0.495417f},{0.0272724f,-0.999054f,0.0338618f}, -{0.0369473f,-0.938149f,0.344253f},{0.0546958f,-0.953689f,0.295779f},{-0.448396f,-0.847467f,-0.28415f}, -{-0.686933f,-0.723593f,0.0673533f},{-0.714324f,-0.659988f,0.232717f},{-0.625211f,-0.744034f,0.235634f}, -{-0.710254f,-0.586809f,0.388837f},{-0.580688f,-0.774537f,0.250786f},{-0.0388857f,-0.882911f,0.467928f}, -{-0.0236237f,-0.998928f,0.0398115f},{-0.527334f,-0.834f,-0.162363f},{-0.712196f,-0.701721f,-0.0190777f}, -{-0.719809f,-0.662478f,0.20736f},{-0.620255f,-0.739483f,0.261626f},{-0.668833f,-0.679571f,0.301408f}, -{-0.187982f,-0.790274f,0.583207f},{-0.26728f,-0.633922f,0.725743f},{-0.404074f,-0.88524f,-0.230377f}, -{-0.652531f,-0.733136f,0.19161f},{-0.715147f,-0.651889f,0.252201f},{-0.666044f,-0.696571f,0.266786f}, -{-0.588823f,-0.721757f,0.363807f},{-0.631337f,-0.667355f,0.395032f},{-0.626106f,-0.621972f,0.470257f}, -{-0.689142f,-0.508164f,0.516578f},{0.483577f,-0.845639f,0.225937f},{0.222438f,-0.938139f,0.26536f}, -{0.452834f,-0.838274f,0.303706f},{-0.385865f,-0.875169f,-0.29187f},{-0.379143f,-0.892042f,-0.245992f}, -{-0.367463f,-0.921055f,-0.128949f},{-0.448753f,-0.891519f,-0.0617599f},{-0.605329f,-0.795648f,0.0228318f}, -{-0.616404f,-0.740274f,0.268404f},{-0.60119f,-0.724447f,0.337264f},{0.339494f,-0.926629f,-0.161565f}, -{0.311439f,-0.949616f,-0.0351357f},{0.168152f,-0.911037f,0.376479f},{0.244289f,-0.95705f,0.156134f}, -{-0.397373f,-0.877227f,-0.269383f},{-0.338469f,-0.915208f,-0.218707f},{-0.297257f,-0.945486f,-0.133023f}, -{-0.464221f,-0.885413f,0.0232871f},{-0.527235f,-0.836455f,0.149552f},{-0.537636f,-0.781501f,0.316549f}, -{0.263596f,-0.94726f,0.182252f},{0.107578f,-0.844528f,0.524594f},{-0.0229386f,-0.670058f,0.741954f}, -{-0.198094f,-0.980182f,-0.00106648f},{0.300789f,-0.87079f,0.38891f},{-0.331517f,-0.918344f,-0.216197f}, -{-0.462501f,-0.834991f,0.29813f},{-0.569042f,-0.72583f,0.386474f},{-0.53184f,-0.784895f,0.317941f}, -{-0.530304f,-0.751916f,0.391663f},{-0.553343f,-0.688627f,0.46862f},{-0.626114f,-0.554425f,0.548265f}, -{-0.302206f,-0.872003f,0.385073f},{-0.281619f,-0.878895f,0.385013f},{0.370219f,-0.889681f,0.267219f}, -{-0.184527f,-0.981478f,0.0514892f},{-0.283202f,-0.942306f,-0.178485f},{-0.337896f,-0.936388f,-0.0948912f}, -{-0.353937f,-0.934617f,0.0349132f},{-0.428673f,-0.891312f,0.147655f},{-0.5048f,-0.763794f,0.40224f}, -{-0.516355f,-0.788889f,0.333213f},{-0.498756f,-0.722068f,0.479437f},{-0.511297f,-0.653887f,0.55768f}, -{-0.0552784f,-0.998325f,-0.0170444f},{-0.0497695f,-0.998759f,0.00176456f},{0.562496f,-0.806987f,0.179916f}, -{-0.299019f,-0.940457f,-0.161642f},{-0.414565f,-0.881518f,0.225968f},{-0.502966f,-0.770283f,0.392032f}, -{-0.0454346f,-0.996589f,-0.0688842f},{-0.367346f,-0.899865f,-0.23516f},{-0.2963f,-0.947716f,-0.118494f}, -{-0.332368f,-0.926584f,0.175994f},{-0.341852f,-0.900192f,0.269799f},{-0.460975f,-0.794915f,0.394476f}, -{-0.459568f,-0.762351f,0.455653f},{-0.492738f,-0.570427f,0.657132f},{-0.00268755f,-0.999991f,0.00317682f}, -{-0.0378324f,-0.99816f,0.0473877f},{-0.307912f,-0.950429f,-0.0433015f},{-0.363829f,-0.853433f,0.373204f}, -{-0.444851f,-0.787192f,0.427126f},{-0.44801f,-0.714161f,0.537829f},{-0.417495f,-0.673544f,0.609948f}, -{0.538354f,-0.616967f,0.574044f},{0.0257254f,-0.999666f,0.00248564f},{-0.0522176f,-0.990073f,-0.130498f}, -{-0.00701713f,-0.999776f,0.0199769f},{-0.0505058f,-0.997468f,0.0500581f},{-0.139269f,-0.980868f,0.136026f}, -{0.353183f,-0.908848f,-0.221941f},{-0.170674f,-0.984269f,-0.045659f},{-0.385411f,-0.915059f,-0.118848f}, -{-0.279051f,-0.940992f,0.191479f},{-0.387699f,-0.811757f,0.436738f},{-0.402329f,-0.599593f,0.691824f}, -{-0.392088f,-0.494074f,0.775988f},{0.25138f,-0.960718f,0.117599f},{0.25867f,-0.934443f,0.244756f}, -{-0.000258648f,-0.999939f,-0.0110008f},{-0.450518f,-0.754245f,0.477648f},{-0.369431f,-0.928961f,-0.0234975f}, -{-0.246785f,-0.963682f,-0.10205f},{-0.269227f,-0.960722f,-0.0673043f},{-0.277024f,-0.921078f,0.273628f}, -{-0.312528f,-0.895043f,0.318157f},{-0.397753f,-0.824121f,0.403258f},{-0.395394f,-0.819083f,0.415653f}, -{-0.407799f,-0.784016f,0.467994f},{-0.361726f,-0.476824f,0.80112f},{0.419553f,-0.807576f,0.414483f}, -{-0.0328999f,-0.995562f,-0.0881688f},{0.00490456f,-0.999923f,0.0114243f},{-0.00500412f,-0.999536f,0.0300628f}, -{-0.0225893f,-0.999116f,0.0354473f},{-0.250415f,-0.96782f,-0.0248562f},{-0.262979f,-0.963299f,-0.0538211f}, -{-0.259915f,-0.893097f,0.367181f},{-0.406335f,-0.754039f,0.516059f},{-0.374501f,-0.707038f,0.599872f}, -{-0.00901535f,-0.999941f,-0.00597997f},{0.0112928f,-0.999817f,0.0154339f},{-0.0553316f,-0.996185f,0.0674767f}, -{-0.262157f,-0.946199f,0.189687f},{-0.289524f,-0.868456f,0.402442f},{-0.338735f,-0.659233f,0.671319f}, -{-0.334709f,-0.593664f,0.731801f},{-0.371741f,-0.513727f,0.773236f},{-0.365128f,-0.483605f,0.795492f}, -{-0.00059238f,-0.999824f,0.0187576f},{-0.708771f,-0.535678f,0.459013f},{-0.268248f,-0.931937f,0.244002f}, -{-0.257741f,-0.923495f,0.284124f},{-0.302267f,-0.864319f,0.40198f},{-0.328919f,-0.814504f,0.477908f}, -{-0.398278f,-0.744518f,0.535786f},{-0.341668f,-0.543084f,0.767022f},{-0.00906552f,-0.998416f,-0.0555298f}, -{0.0048979f,-0.999787f,0.0200287f},{0.00803717f,-0.999851f,0.0152808f},{-0.0119875f,-0.999745f,0.0191419f}, -{-0.0895555f,-0.994392f,0.056257f},{0.0254007f,-0.998967f,-0.0376913f},{-0.312509f,-0.768606f,0.558197f}, -{0.364893f,-0.920631f,-0.138894f},{0.0128993f,-0.999899f,0.0059179f},{-0.0288258f,-0.999178f,0.0285066f}, -{-0.258087f,-0.956813f,0.133793f},{-0.255757f,-0.886008f,0.386754f},{-0.290083f,-0.856254f,0.427413f}, -{-0.283366f,-0.70297f,0.652332f},{-0.293061f,-0.650643f,0.700556f},{-0.276473f,-0.622532f,0.732131f}, -{-0.299256f,-0.582439f,0.755785f},{0.0163878f,-0.999752f,0.0150724f},{-0.000507724f,-0.999995f,0.00315279f}, -{-0.0421698f,-0.998888f,0.0210646f},{-0.250928f,-0.931038f,0.264959f},{-0.25111f,-0.884116f,0.394059f}, -{-0.23645f,-0.852751f,0.465732f},{0.328467f,-0.825255f,0.459417f},{0.021008f,-0.999752f,-0.00734064f}, -{0.00493785f,-0.999854f,0.0163817f},{-0.0179672f,-0.999771f,0.0116054f},{-0.0863018f,-0.994636f,0.0570237f}, -{-0.265653f,-0.809295f,0.523899f},{-0.24574f,-0.773703f,0.583948f},{-0.636252f,-0.7509f,-0.17701f}, -{-0.0316337f,-0.995426f,-0.0901415f},{0.0238889f,-0.999625f,0.013358f},{-0.0237546f,-0.999559f,0.0178184f}, -{-0.152329f,-0.985341f,0.0768047f},{-0.254989f,-0.67342f,0.693891f},{-0.268603f,-0.639303f,0.720517f}, -{-0.235042f,-0.608826f,0.757685f},{-0.204491f,-0.976698f,-0.0651494f},{-0.150398f,-0.979806f,-0.131759f}, -{0.021122f,-0.999776f,-0.00166307f},{0.0218361f,-0.999755f,0.00350407f},{-0.00245073f,-0.999989f,-0.00403658f}, -{0.0329289f,-0.998216f,0.049806f},{-0.0214891f,-0.999676f,0.0136586f},{-0.151138f,-0.988004f,0.0317164f}, -{-0.471599f,-0.880218f,0.053017f},{-0.087744f,-0.99605f,0.0136261f},{0.00488223f,-0.999985f,0.00253027f}, -{0.0235519f,-0.999662f,0.0109848f},{0.00771536f,-0.999958f,0.00493556f},{-0.0483468f,-0.998722f,0.0147213f}, -{-0.0966289f,-0.995311f,-0.00443566f},{-0.100578f,-0.994867f,0.0110831f},{-0.2308f,-0.783992f,0.576271f}, -{-0.0949228f,-0.994152f,-0.0515007f},{0.0585386f,-0.998263f,0.00666826f},{0.0257647f,-0.999628f,-0.00891625f}, -{0.00705262f,-0.999964f,0.0048063f},{0.0893046f,-0.99592f,0.0129442f},{-0.0840676f,-0.996023f,0.0294995f}, -{-0.0915318f,-0.995284f,0.0321161f},{-0.442534f,-0.744053f,0.500548f},{-0.188343f,-0.832876f,0.520427f}, -{-0.212909f,-0.727666f,0.652053f},{-0.149082f,-0.630633f,0.761627f},{-0.0149772f,-0.999886f,0.00202056f}, -{0.0580058f,-0.998296f,0.00634372f},{0.0261921f,-0.999637f,0.00628144f},{0.0210074f,-0.999747f,-0.00809831f}, -{0.0894734f,-0.978034f,0.188264f},{-0.00727228f,-0.995179f,-0.0978041f},{-0.0580299f,-0.995908f,0.0692871f}, -{-0.0377081f,-0.999179f,0.0148206f},{-0.167246f,-0.975051f,0.145963f},{-0.604768f,-0.766228f,0.217143f}, -{-0.323243f,-0.754984f,-0.570538f},{-0.0413738f,-0.561193f,0.82665f},{0.0582311f,-0.995559f,0.0739708f}, -{0.212125f,-0.976309f,0.0427084f},{0.173089f,-0.984599f,0.0245825f},{0.051426f,-0.998628f,0.00991884f}, -{0.185538f,-0.971576f,0.14702f},{-0.0620059f,-0.998041f,-0.00827753f},{-0.03141f,-0.998079f,0.0533925f}, -{-0.00191083f,-0.999499f,0.031603f},{-0.0122951f,-0.99968f,0.0221021f},{-0.389179f,-0.888326f,0.243755f}, -{-0.171659f,-0.788917f,0.590037f},{-0.100815f,-0.675771f,0.730185f},{0.00989494f,-0.999864f,0.0132298f}, -{0.164735f,-0.973664f,0.15761f},{0.0399642f,-0.999185f,-0.00564971f},{0.0490862f,-0.99459f,0.0915527f}, -{-0.208849f,-0.878834f,-0.42899f},{-0.102638f,-0.991526f,0.0796346f},{-0.00117614f,-0.998978f,0.0451781f}, -{-0.0267789f,-0.554178f,0.831967f},{0.00127388f,-0.547167f,0.837023f},{-0.0125311f,-0.994257f,-0.106286f}, -{0.0688277f,-0.990612f,0.118109f},{0.438693f,-0.870826f,0.221835f},{0.153572f,-0.988126f,0.00473824f}, -{0.0123614f,-0.999638f,-0.0239179f},{0.25956f,-0.840154f,0.476205f},{-0.0867319f,-0.990761f,0.104262f}, -{0.0170529f,-0.999175f,0.0368684f},{-0.0207686f,-0.999401f,0.0276937f},{-0.389356f,-0.798411f,0.459284f}, -{0.00408834f,-0.999335f,0.0362461f},{0.281034f,-0.921743f,0.267225f},{0.538217f,-0.831567f,0.137184f}, -{0.254132f,-0.96649f,0.0362606f},{0.415705f,-0.67735f,0.606948f},{-0.0280288f,-0.996898f,0.0735436f}, -{0.0158366f,-0.999616f,0.0227446f},{-0.0714032f,-0.995802f,0.0572737f},{-0.127591f,-0.543009f,0.829977f}, -{-0.036722f,-0.581478f,0.812733f},{0.0470635f,-0.972199f,0.229378f},{0.495334f,-0.78023f,0.38195f}, -{0.548915f,-0.83117f,0.0885944f},{0.050024f,-0.996427f,-0.0680481f},{0.00182298f,-0.993609f,0.112866f}, -{0.0320522f,-0.847962f,0.529087f},{0.182468f,-0.665739f,0.723531f},{-0.190379f,-0.970945f,0.14499f}, -{-0.00400532f,-0.997543f,0.0699363f},{-0.225038f,-0.934108f,0.277127f},{-0.548473f,-0.671738f,0.497941f}, -{0.224808f,-0.844388f,0.486283f},{0.517686f,-0.730233f,0.445827f},{0.546374f,-0.676221f,0.494166f}, -{0.663669f,-0.699985f,0.263752f},{0.693083f,-0.700284f,0.17099f},{0.6845f,-0.721383f,0.1052f}, -{0.0132515f,-0.999243f,-0.036568f},{-0.0643658f,-0.652754f,0.754831f},{-0.0872083f,-0.990061f,0.110334f}, -{0.0131632f,-0.999166f,0.0386394f},{0.00918824f,-0.999946f,0.00494036f},{0.00299431f,-0.999855f,0.0167387f}, -{-0.274836f,-0.757344f,0.592364f},{0.00276646f,-0.999321f,0.0367524f},{0.447262f,-0.740067f,0.502253f}, -{0.433396f,-0.841955f,0.321372f},{0.394638f,-0.916117f,0.0706392f},{0.194072f,-0.980913f,-0.0121182f}, -{0.0126458f,-0.996717f,0.0799662f},{0.0145306f,-0.999772f,0.0156459f},{-0.0174913f,-0.992895f,0.117701f}, -{-0.385953f,-0.467366f,0.795367f},{0.0160004f,-0.956788f,0.290344f},{0.312568f,-0.740614f,0.594804f}, -{0.176774f,-0.970293f,0.165177f},{0.264879f,-0.963745f,-0.0321725f},{0.161229f,-0.966667f,-0.198898f}, -{0.0507536f,-0.996521f,-0.0661077f},{-0.114232f,-0.859549f,0.498123f},{-0.202267f,-0.633674f,0.746689f}, -{-0.0184963f,-0.996587f,0.0804444f},{0.0172107f,-0.999819f,0.00810566f},{-0.136089f,-0.812372f,0.567037f}, -{0.092536f,-0.806883f,0.583419f},{0.180439f,-0.715084f,0.67535f},{0.251063f,-0.795468f,0.551542f}, -{0.269027f,-0.936129f,0.226468f},{0.0235811f,-0.999722f,-0.000653242f},{0.0840396f,-0.996167f,-0.0242714f}, -{-0.00162f,-0.998063f,0.0621954f},{0.0179201f,-0.999605f,0.0216578f},{0.0181591f,-0.999786f,0.00986533f}, -{0.00224664f,-0.999758f,0.0219044f},{0.00595345f,-0.962377f,0.271653f},{0.0386505f,-0.962227f,0.269491f}, -{0.038499f,-0.999256f,0.0023295f},{0.0160894f,-0.999733f,-0.0165747f},{-0.0262832f,-0.997902f,0.0591677f}, -{-0.239813f,-0.71134f,0.66067f},{-0.0309912f,-0.992189f,0.120837f},{0.0115709f,-0.997856f,0.0644212f}, -{0.0368453f,-0.770181f,0.636761f},{0.0922318f,-0.65956f,0.745972f},{0.00614854f,-0.999486f,-0.0314708f}, -{0.00833138f,-0.999583f,-0.0276359f},{0.0221366f,-0.999162f,-0.0344259f},{-0.237067f,-0.892857f,0.382892f}, -{-0.458626f,-0.677624f,0.57488f},{0.0112014f,-0.995233f,0.0968749f},{0.018316f,-0.999811f,0.00656286f}, -{0.0184051f,-0.916806f,0.398908f},{0.0823861f,-0.955558f,0.283056f},{-0.00672928f,-0.999787f,-0.0195119f}, -{0.018828f,-0.998952f,-0.0417204f},{0.0051507f,-0.999739f,-0.0222567f},{0.0139985f,-0.999673f,0.0214007f}, -{0.0223943f,-0.999681f,0.0117089f},{-0.0215988f,-0.964608f,0.262801f},{0.00900485f,-0.99966f,-0.0244794f}, -{0.0237502f,-0.999717f,-0.00113404f},{-0.0242339f,-0.997172f,0.0711428f},{-0.455636f,-0.734198f,0.503339f}, -{0.00172714f,-0.986485f,0.163843f},{-0.0337965f,-0.753808f,0.656225f},{-0.085226f,-0.650073f,0.755077f}, -{-0.000145314f,-0.809869f,0.58661f},{0.00112795f,-0.998842f,-0.0480878f},{-0.00700838f,-0.999844f,-0.0162146f}, -{-0.383834f,-0.835895f,0.392366f},{-0.00401123f,-0.99521f,0.0976833f},{0.00684734f,-0.999954f,0.00668154f}, -{0.00964511f,-0.999495f,0.0302887f},{-0.0842361f,-0.95879f,0.271342f},{-0.0034021f,-0.999668f,-0.0255305f}, -{0.0210144f,-0.999263f,-0.0321101f},{0.0505819f,-0.994622f,-0.0903837f},{0.0368916f,-0.999319f,0.0012392f}, -{-0.527677f,-0.660974f,0.533546f},{-0.000344693f,-0.999873f,0.0159435f},{0.0311967f,-0.999503f,-0.00457001f}, -{-0.629911f,-0.66083f,0.408063f},{-0.00148687f,-0.996097f,0.0882514f},{0.0772459f,-0.995314f,-0.0581728f} diff --git a/src/demos/data/models/knight.md2 b/src/demos/data/models/knight.md2 Binary files differdeleted file mode 100644 index c8ab12a..0000000 --- a/src/demos/data/models/knight.md2 +++ /dev/null diff --git a/src/demos/data/models/teapot.obj b/src/demos/data/models/teapot.obj deleted file mode 100755 index 29cbc90..0000000 --- a/src/demos/data/models/teapot.obj +++ /dev/null @@ -1,9071 +0,0 @@ -# Sat Dec 17 21:31:04 2000 -# -# - -g -v 21.334499 14.872898 -0.001426 -v 20.829699 14.873169 5.140986 -v 20.543299 15.649567 5.081406 -v 21.042198 15.649300 -0.001467 -v 20.484598 16.204166 5.069176 -v 20.982399 16.203899 -0.001496 -v 20.612299 16.536867 5.095709 -v 21.112598 16.536598 -0.001514 -v 20.884899 16.647770 5.152373 -v 21.390799 16.647499 -0.001520 -v 21.261000 16.536873 5.230579 -v 21.774599 16.536598 -0.001514 -v 21.699200 16.204180 5.321706 -v 22.221798 16.203899 -0.001496 -v 22.158199 15.649585 5.417156 -v 22.690100 15.649300 -0.001467 -v 22.596399 14.873188 5.508306 -v 23.137199 14.872898 -0.001426 -v 19.378399 14.873419 9.904826 -v 19.108799 15.649815 9.790075 -v 19.053598 16.204412 9.766556 -v 19.173800 16.537115 9.817669 -v 19.430399 16.648022 9.926843 -v 19.784498 16.537128 10.077489 -v 20.196999 16.204439 10.253006 -v 20.629000 15.649849 10.436835 -v 21.041498 14.873456 10.612376 -v 17.075399 14.873645 14.195477 -v 16.832499 15.650038 14.031035 -v 16.782700 16.204636 13.997306 -v 16.890999 16.537338 14.070589 -v 17.122198 16.648247 14.226983 -v 17.441299 16.537357 14.442889 -v 17.812998 16.204672 14.694506 -v 18.202198 15.650086 14.957935 -v 18.573999 14.873698 15.209476 -v 14.015200 14.873840 17.918177 -v 13.807699 15.650231 17.710634 -v 13.765200 16.204828 17.668106 -v 13.857698 16.537533 17.760590 -v 14.055199 16.648443 17.958082 -v 14.327700 16.537558 18.230589 -v 14.645199 16.204876 18.548105 -v 14.977699 15.650293 18.880634 -v 15.295198 14.873908 19.198177 -v 10.292499 14.874002 20.978376 -v 10.128098 15.650391 20.735435 -v 10.094398 16.204988 20.685606 -v 10.167699 16.537693 20.793888 -v 10.324099 16.648605 21.025084 -v 10.539999 16.537722 21.344189 -v 10.791598 16.205042 21.715906 -v 11.054998 15.650462 22.105135 -v 11.306499 14.874081 22.476976 -v 6.001849 14.874123 23.281376 -v 5.887149 15.650510 23.011734 -v 5.863648 16.205107 22.956507 -v 5.914789 16.537811 23.076689 -v 6.023959 16.648727 23.333282 -v 6.174599 16.537844 23.687389 -v 6.350099 16.205168 24.099907 -v 6.533898 15.650590 24.531935 -v 6.709399 14.874210 24.944477 -v 1.238019 14.874199 24.732677 -v 1.178469 15.650585 24.446234 -v 1.166279 16.205183 24.387506 -v 1.192819 16.537888 24.515188 -v 1.249499 16.648804 24.787783 -v 1.327689 16.537922 25.163889 -v 1.418809 16.205246 25.602106 -v 1.514219 15.650671 26.061134 -v 1.605329 14.874292 26.499376 -v -3.904401 14.874226 25.237476 -v -3.904401 15.650612 24.945135 -v -3.904401 16.205208 24.885206 -v -3.904401 16.537914 25.015490 -v -3.904401 16.648830 25.293684 -v -3.904401 16.537949 25.677488 -v -3.904401 16.205275 26.124706 -v -3.904401 15.650699 26.593035 -v -3.904401 14.874321 27.040176 -v -9.512651 14.874199 24.732677 -v -9.299341 15.650585 24.446234 -v -9.171601 16.205183 24.387506 -v -9.115351 16.537888 24.515188 -v -9.116531 16.648804 24.787783 -v -9.161061 16.537922 25.163889 -v -9.234881 16.205246 25.602106 -v -9.323931 15.650671 26.061134 -v -9.414131 14.874292 26.499376 -v -14.495101 14.874123 23.281376 -v -14.154501 15.650510 23.011734 -v -13.961202 16.205107 22.956507 -v -13.890701 16.537811 23.076689 -v -13.918302 16.648727 23.333282 -v -14.019502 16.537844 23.687389 -v -14.169601 16.205168 24.099907 -v -14.344101 15.650590 24.531935 -v -14.518201 14.874210 24.944477 -v -18.814301 14.874002 20.978376 -v -18.414501 15.650391 20.735435 -v -18.204002 16.204988 20.685606 -v -18.150600 16.537693 20.793888 -v -18.222101 16.648605 21.025084 -v -18.386402 16.537722 21.344189 -v -18.611502 16.205042 21.715906 -v -18.865200 15.650462 22.105135 -v -19.115301 14.874081 22.476976 -v -22.432402 14.873840 17.918177 -v -22.024101 15.650231 17.710634 -v -21.830702 16.204828 17.668106 -v -21.815001 16.537533 17.760590 -v -21.940001 16.648443 17.958082 -v -22.168602 16.537558 18.230589 -v -22.463501 16.204876 18.548105 -v -22.787701 15.650293 18.880634 -v -23.104002 14.873908 19.198177 -v -25.312002 14.873645 14.195477 -v -24.927900 15.650038 14.031035 -v -24.772001 16.204636 13.997306 -v -24.804300 16.537338 14.070589 -v -24.984501 16.648247 14.226983 -v -25.272602 16.537357 14.442889 -v -25.628502 16.204672 14.694506 -v -26.011902 15.650086 14.957935 -v -26.382801 14.873698 15.209476 -v -27.415401 14.873419 9.904826 -v -27.070501 15.649815 9.790075 -v -26.958702 16.204412 9.766556 -v -27.038301 16.537115 9.817669 -v -27.267702 16.648022 9.926843 -v -27.605301 16.537128 10.077489 -v -28.009401 16.204439 10.253006 -v -28.438202 15.649849 10.436835 -v -28.850302 14.873456 10.612376 -v -28.705002 14.873169 5.140986 -v -28.396702 15.649567 5.081406 -v -28.321501 16.204166 5.069176 -v -28.437302 16.536867 5.095709 -v -28.702002 16.647770 5.152373 -v -29.073301 16.536873 5.230579 -v -29.509102 16.204180 5.321706 -v -29.967102 15.649585 5.417156 -v -30.405201 14.873188 5.508306 -v -29.143301 14.872898 -0.001426 -v -28.851002 15.649300 -0.001467 -v -28.791201 16.203899 -0.001496 -v -28.921402 16.536598 -0.001514 -v -29.199602 16.647499 -0.001520 -v -29.583401 16.536598 -0.001514 -v -30.030602 16.203899 -0.001496 -v -30.498901 15.649300 -0.001467 -v -30.946001 14.872898 -0.001426 -v -28.638502 14.872627 -5.143844 -v -28.352100 15.649033 -5.084334 -v -28.293402 16.203632 -5.072174 -v -28.421101 16.536329 -5.098731 -v -28.693701 16.647228 -5.155417 -v -29.069801 16.536324 -5.233611 -v -29.508001 16.203619 -5.324704 -v -29.967001 15.649014 -5.420084 -v -30.405201 14.872608 -5.511164 -v -27.187201 14.872377 -9.907674 -v -26.917601 15.648785 -9.793015 -v -26.862402 16.203386 -9.769544 -v -26.982601 16.536081 -9.820702 -v -27.239201 16.646976 -9.929887 -v -27.593302 16.536068 -10.080511 -v -28.005802 16.203360 -10.255994 -v -28.437801 15.648750 -10.439764 -v -28.850302 14.872340 -10.615224 -v -24.884201 14.872151 -14.198323 -v -24.641302 15.648561 -14.033964 -v -24.591501 16.203163 -14.000294 -v -24.699800 16.535858 -14.073611 -v -24.931002 16.646751 -14.230017 -v -25.250101 16.535839 -14.445911 -v -25.621801 16.203127 -14.697494 -v -26.011002 15.648513 -14.960864 -v -26.382801 14.872098 -15.212323 -v -21.824001 14.871956 -17.921024 -v -21.616501 15.648368 -17.713566 -v -21.574001 16.202971 -17.671095 -v -21.666502 16.535664 -17.763611 -v -21.864000 16.646555 -17.961117 -v -22.136501 16.535639 -18.233612 -v -22.454000 16.202923 -18.551094 -v -22.786501 15.648306 -18.883566 -v -23.104002 14.871888 -19.201023 -v -18.101301 14.871795 -20.981224 -v -17.936901 15.648209 -20.738365 -v -17.903202 16.202810 -20.688595 -v -17.976501 16.535503 -20.796911 -v -18.132900 16.646393 -21.028116 -v -18.348801 16.535475 -21.347212 -v -18.600401 16.202757 -21.718893 -v -18.863800 15.648137 -22.108065 -v -19.115301 14.871716 -22.479824 -v -13.810651 14.871674 -23.284224 -v -13.695941 15.648089 -23.014666 -v -13.672451 16.202692 -22.959494 -v -13.723581 16.535385 -23.079712 -v -13.832761 16.646271 -23.336317 -v -13.983401 16.535353 -23.690411 -v -14.158901 16.202631 -24.102894 -v -14.342701 15.648009 -24.534866 -v -14.518201 14.871586 -24.947323 -v -9.046822 14.871597 -24.735523 -v -8.987271 15.648014 -24.449165 -v -8.975081 16.202616 -24.390493 -v -9.001621 16.535309 -24.518211 -v -9.058302 16.646194 -24.790817 -v -9.136492 16.535275 -25.166912 -v -9.227612 16.202553 -25.605095 -v -9.323021 15.647928 -26.064066 -v -9.414131 14.871504 -26.502224 -v -3.904401 14.871571 -25.240324 -v -3.904401 15.647987 -24.948065 -v -3.904401 16.202591 -24.888294 -v -3.904401 16.535282 -25.018511 -v -3.904401 16.646168 -25.296717 -v -3.904401 16.535248 -25.680511 -v -3.904401 16.202524 -26.127693 -v -3.904401 15.647901 -26.595966 -v -3.904401 14.871475 -27.043024 -v 1.238019 14.871597 -24.735523 -v 1.178469 15.648014 -24.449165 -v 1.166279 16.202616 -24.390493 -v 1.192819 16.535309 -24.518211 -v 1.249499 16.646194 -24.790817 -v 1.327689 16.535275 -25.166912 -v 1.418809 16.202553 -25.605095 -v 1.514219 15.647928 -26.064066 -v 1.605329 14.871504 -26.502224 -v 6.001849 14.871674 -23.284224 -v 5.887149 15.648089 -23.014666 -v 5.863648 16.202692 -22.959494 -v 5.914789 16.535385 -23.079712 -v 6.023959 16.646271 -23.336317 -v 6.174599 16.535353 -23.690411 -v 6.350099 16.202631 -24.102894 -v 6.533898 15.648009 -24.534866 -v 6.709399 14.871586 -24.947323 -v 10.292499 14.871795 -20.981224 -v 10.128098 15.648209 -20.738365 -v 10.094398 16.202810 -20.688595 -v 10.167699 16.535503 -20.796911 -v 10.324099 16.646393 -21.028116 -v 10.539999 16.535475 -21.347212 -v 10.791598 16.202757 -21.718893 -v 11.054998 15.648137 -22.108065 -v 11.306499 14.871716 -22.479824 -v 14.015200 14.871956 -17.921024 -v 13.807699 15.648368 -17.713566 -v 13.765200 16.202971 -17.671095 -v 13.857698 16.535664 -17.763611 -v 14.055199 16.646555 -17.961117 -v 14.327700 16.535639 -18.233612 -v 14.645199 16.202923 -18.551094 -v 14.977699 15.648306 -18.883566 -v 15.295198 14.871888 -19.201023 -v 17.075399 14.872151 -14.198323 -v 16.832499 15.648561 -14.033964 -v 16.782700 16.203163 -14.000294 -v 16.890999 16.535858 -14.073611 -v 17.122198 16.646751 -14.230017 -v 17.441299 16.535839 -14.445911 -v 17.812998 16.203127 -14.697494 -v 18.202198 15.648513 -14.960864 -v 18.573999 14.872098 -15.212323 -v 19.378399 14.872377 -9.907674 -v 19.108799 15.648785 -9.793015 -v 19.053598 16.203386 -9.769544 -v 19.173800 16.536081 -9.820702 -v 19.430399 16.646976 -9.929887 -v 19.784498 16.536068 -10.080511 -v 20.196999 16.203360 -10.255994 -v 20.629000 15.648750 -10.439764 -v 21.041498 14.872340 -10.615224 -v 20.829699 14.872627 -5.143844 -v 20.543299 15.649033 -5.084334 -v 20.484598 16.203632 -5.072174 -v 20.612299 16.536329 -5.098731 -v 20.884899 16.647228 -5.155417 -v 21.261000 16.536324 -5.233611 -v 21.699200 16.203619 -5.324704 -v 22.158199 15.649014 -5.420084 -v 22.596399 14.872608 -5.511164 -v 24.244099 11.326610 5.851053 -v 24.818499 11.326302 -0.001240 -v 25.839998 7.795926 6.183049 -v 26.446999 7.795601 -0.001054 -v 27.332399 4.296942 6.493513 -v 27.969898 4.296600 -0.000869 -v 28.669500 0.845457 6.771694 -v 29.334299 0.845100 -0.000688 -v 29.799601 -2.542732 7.006823 -v 30.487398 -2.543100 -0.000509 -v 30.670900 -5.851621 7.188147 -v 31.376497 -5.851999 -0.000335 -v 31.231600 -9.065415 7.304895 -v 31.948599 -9.065800 -0.000166 -v 31.429998 -12.168313 7.346309 -v 32.151100 -12.168699 -0.000002 -v 22.592499 11.326895 11.272463 -v 24.094799 7.796227 11.911848 -v 25.499599 4.297258 12.509732 -v 26.758299 0.845787 13.045514 -v 27.822100 -2.542390 13.498292 -v 28.642199 -5.851271 13.847366 -v 29.170000 -9.065060 14.072135 -v 29.356798 -12.167954 14.151798 -v 19.971498 11.327151 16.155363 -v 21.325199 7.796499 17.071648 -v 22.591099 4.297544 17.928434 -v 23.725199 0.846084 18.696115 -v 24.683798 -2.542083 19.344893 -v 25.422798 -5.850955 19.845165 -v 25.898499 -9.064739 20.167135 -v 26.066698 -12.167632 20.281199 -v 16.488899 11.327374 20.392063 -v 17.645100 7.796734 21.548449 -v 18.726299 4.297791 22.629833 -v 19.695099 0.846342 23.598814 -v 20.513800 -2.541816 24.417692 -v 21.144999 -5.850682 25.049067 -v 21.551298 -9.064461 25.455536 -v 21.695000 -12.167353 25.599400 -v 12.252199 11.327558 23.874664 -v 13.168299 7.796928 25.228548 -v 14.024899 4.297994 26.494633 -v 14.792398 0.846554 27.628914 -v 15.440998 -2.541596 28.587692 -v 15.941099 -5.850457 29.326866 -v 16.262899 -9.064232 29.802635 -v 16.376799 -12.167123 29.971100 -v 7.369399 11.327696 26.495663 -v 8.008499 7.797074 27.998148 -v 8.606298 4.298147 29.403133 -v 9.141799 0.846713 30.662014 -v 9.594398 -2.541431 31.725893 -v 9.943298 -5.850287 32.546268 -v 10.167899 -9.064060 33.074234 -v 10.247398 -12.166949 33.261200 -v 1.947899 11.327783 28.147263 -v 2.279699 7.797165 29.743349 -v 2.589979 4.298244 31.235933 -v 2.867979 0.846814 32.573212 -v 3.102929 -2.541327 33.703491 -v 3.284079 -5.850181 34.574966 -v 3.400659 -9.063951 35.135834 -v 3.441909 -12.166841 35.334400 -v -3.904401 11.327812 28.721664 -v -3.904401 7.797197 30.350349 -v -3.904401 4.298277 31.873434 -v -3.904401 0.846849 33.238014 -v -3.904401 -2.541291 34.391293 -v -3.904401 -5.850143 35.280567 -v -3.904401 -9.063913 35.852837 -v -3.904401 -12.166802 36.055500 -v -9.756701 11.327783 28.147263 -v -10.088501 7.797165 29.743349 -v -10.398781 4.298244 31.235933 -v -10.676781 0.846814 32.573212 -v -10.911732 -2.541327 33.703491 -v -11.092881 -5.850181 34.574966 -v -11.209461 -9.063951 35.135834 -v -11.250711 -12.166841 35.334400 -v -15.178202 11.327696 26.495663 -v -15.817301 7.797074 27.998148 -v -16.415100 4.298147 29.403133 -v -16.950602 0.846713 30.662014 -v -17.403202 -2.541431 31.725893 -v -17.752102 -5.850287 32.546268 -v -17.976700 -9.064060 33.074234 -v -18.056202 -12.166949 33.261200 -v -20.061102 11.327558 23.874664 -v -20.977100 7.796928 25.228548 -v -21.833702 4.297994 26.494633 -v -22.601202 0.846554 27.628914 -v -23.249802 -2.541596 28.587692 -v -23.749901 -5.850457 29.326866 -v -24.071701 -9.064232 29.802635 -v -24.185600 -12.167123 29.971100 -v -24.297701 11.327374 20.392063 -v -25.453901 7.796734 21.548449 -v -26.535101 4.297791 22.629833 -v -27.503901 0.846342 23.598814 -v -28.322601 -2.541816 24.417692 -v -28.953802 -5.850682 25.049067 -v -29.360102 -9.064461 25.455536 -v -29.503801 -12.167353 25.599400 -v -27.780302 11.327151 16.155363 -v -29.134001 7.796499 17.071648 -v -30.399900 4.297544 17.928434 -v -31.534000 0.846084 18.696115 -v -32.492599 -2.542083 19.344893 -v -33.231602 -5.850955 19.845165 -v -33.707302 -9.064739 20.167135 -v -33.875504 -12.167632 20.281199 -v -30.401300 11.326895 11.272463 -v -31.903601 7.796227 11.911848 -v -33.308403 4.297258 12.509732 -v -34.567101 0.845787 13.045514 -v -35.630901 -2.542390 13.498292 -v -36.451004 -5.851271 13.847366 -v -36.978798 -9.065060 14.072135 -v -37.165604 -12.167954 14.151798 -v -32.052902 11.326610 5.851053 -v -33.648804 7.795926 6.183049 -v -35.141201 4.296942 6.493513 -v -36.478302 0.845457 6.771694 -v -37.608398 -2.542732 7.006823 -v -38.479698 -5.851621 7.188147 -v -39.040398 -9.065415 7.304895 -v -39.238800 -12.168313 7.346309 -v -32.627304 11.326302 -0.001240 -v -34.255802 7.795601 -0.001054 -v -35.778702 4.296600 -0.000869 -v -37.143105 0.845100 -0.000688 -v -38.296204 -2.543100 -0.000509 -v -39.185303 -5.851999 -0.000335 -v -39.757500 -9.065800 -0.000166 -v -39.959900 -12.168699 -0.000002 -v -32.052902 11.325994 -5.853537 -v -33.648804 7.795276 -6.185152 -v -35.141201 4.296259 -6.495247 -v -36.478302 0.844744 -6.773066 -v -37.608398 -2.543469 -7.007837 -v -38.479698 -5.852377 -7.188813 -v -39.040398 -9.066184 -7.305224 -v -39.238800 -12.169086 -7.346312 -v -30.401300 11.325708 -11.275038 -v -31.903601 7.794974 -11.913952 -v -33.308403 4.295942 -12.511567 -v -34.567101 0.844414 -13.046886 -v -35.630901 -2.543810 -13.499308 -v -36.451004 -5.852728 -13.848033 -v -36.978798 -9.066540 -14.072465 -v -37.165604 -12.169444 -14.151801 -v -27.780302 11.325452 -16.157936 -v -29.134001 7.794703 -17.073751 -v -30.399900 4.295657 -17.930166 -v -31.534000 0.844117 -18.697485 -v -32.492599 -2.544118 -19.345907 -v -33.231602 -5.853043 -19.845835 -v -33.707302 -9.066860 -20.167465 -v -33.875504 -12.169766 -20.281200 -v -24.297701 11.325229 -20.394537 -v -25.453901 7.794467 -21.550552 -v -26.535101 4.295410 -22.631567 -v -27.503901 0.843859 -23.600185 -v -28.322601 -2.544385 -24.418709 -v -28.953802 -5.853317 -25.049734 -v -29.360102 -9.067139 -25.455864 -v -29.503801 -12.170046 -25.599401 -v -20.061102 11.325046 -23.877136 -v -20.977100 7.794274 -25.230652 -v -21.833702 4.295207 -26.496367 -v -22.601202 0.843647 -27.630285 -v -23.249802 -2.544604 -28.588707 -v -23.749901 -5.853542 -29.327534 -v -24.071701 -9.067368 -29.803064 -v -24.185600 -12.170276 -29.971100 -v -15.178202 11.324907 -26.498137 -v -15.817301 7.794128 -28.000252 -v -16.415100 4.295053 -29.404867 -v -16.950602 0.843487 -30.663385 -v -17.403202 -2.544769 -31.727009 -v -17.752102 -5.853711 -32.546932 -v -17.976700 -9.067539 -33.074566 -v -18.056202 -12.170449 -33.261200 -v -9.756701 11.324821 -28.149736 -v -10.088501 7.794036 -29.745451 -v -10.398781 4.294957 -31.237667 -v -10.676781 0.843387 -32.574589 -v -10.911732 -2.544873 -33.704510 -v -11.092881 -5.853818 -34.575634 -v -11.209461 -9.067648 -35.136166 -v -11.250711 -12.170558 -35.334400 -v -3.904401 11.324791 -28.724136 -v -3.904401 7.794004 -30.352451 -v -3.904401 4.294924 -31.875166 -v -3.904401 0.843352 -33.239388 -v -3.904401 -2.544909 -34.392307 -v -3.904401 -5.853855 -35.281231 -v -3.904401 -9.067686 -35.853165 -v -3.904401 -12.170596 -36.055500 -v 1.947899 11.324821 -28.149736 -v 2.279699 7.794036 -29.745451 -v 2.589979 4.294957 -31.237667 -v 2.867979 0.843387 -32.574589 -v 3.102929 -2.544873 -33.704510 -v 3.284079 -5.853818 -34.575634 -v 3.400659 -9.067648 -35.136166 -v 3.441909 -12.170558 -35.334400 -v 7.369399 11.324907 -26.498137 -v 8.008499 7.794128 -28.000252 -v 8.606298 4.295053 -29.404867 -v 9.141799 0.843487 -30.663385 -v 9.594398 -2.544769 -31.727009 -v 9.943298 -5.853711 -32.546932 -v 10.167899 -9.067539 -33.074566 -v 10.247398 -12.170449 -33.261200 -v 12.252199 11.325046 -23.877136 -v 13.168299 7.794274 -25.230652 -v 14.024899 4.295207 -26.496367 -v 14.792398 0.843647 -27.630285 -v 15.440998 -2.544604 -28.588707 -v 15.941099 -5.853542 -29.327534 -v 16.262899 -9.067368 -29.803064 -v 16.376799 -12.170276 -29.971100 -v 16.488899 11.325229 -20.394537 -v 17.645100 7.794467 -21.550552 -v 18.726299 4.295410 -22.631567 -v 19.695099 0.843859 -23.600185 -v 20.513800 -2.544385 -24.418709 -v 21.144999 -5.853317 -25.049734 -v 21.551298 -9.067139 -25.455864 -v 21.695000 -12.170046 -25.599401 -v 19.971498 11.325452 -16.157936 -v 21.325199 7.794703 -17.073751 -v 22.591099 4.295657 -17.930166 -v 23.725199 0.844117 -18.697485 -v 24.683798 -2.544118 -19.345907 -v 25.422798 -5.853043 -19.845835 -v 25.898499 -9.066860 -20.167465 -v 26.066698 -12.169766 -20.281200 -v 22.592499 11.325708 -11.275038 -v 24.094799 7.794974 -11.913952 -v 25.499599 4.295942 -12.511567 -v 26.758299 0.844414 -13.046886 -v 27.822100 -2.543810 -13.499308 -v 28.642199 -5.852728 -13.848033 -v 29.170000 -9.066540 -14.072465 -v 29.356798 -12.169444 -14.151801 -v 24.244099 11.325994 -5.853537 -v 25.839998 7.795276 -6.185152 -v 27.332399 4.296259 -6.495247 -v 28.669500 0.844744 -6.773066 -v 29.799601 -2.543469 -7.007837 -v 30.670900 -5.852377 -7.188813 -v 31.231600 -9.066184 -7.305224 -v 31.429998 -12.169086 -7.346312 -v 31.050398 -15.023018 7.267539 -v 31.763800 -15.023400 0.000148 -v 30.049799 -17.513329 7.059620 -v 30.742701 -17.513700 0.000279 -v 28.635000 -19.654984 6.765593 -v 29.299097 -19.655340 0.000392 -v 27.013199 -21.463942 6.428508 -v 27.644199 -21.464279 0.000487 -v 25.391399 -22.955999 6.091406 -v 25.989298 -22.956320 0.000566 -v 23.976698 -24.147015 5.797329 -v 24.545698 -24.147320 0.000629 -v 22.975998 -25.052816 5.589326 -v 23.524498 -25.053110 0.000676 -v 22.596399 -25.689251 5.510440 -v 23.137199 -25.689541 0.000710 -v 28.999498 -15.022664 13.999949 -v 28.057499 -17.512985 13.599279 -v 26.725800 -19.654655 13.032792 -v 25.199200 -21.463627 12.383287 -v 23.672499 -22.955702 11.733866 -v 22.340799 -24.146732 11.167229 -v 21.398798 -25.052544 10.766577 -v 21.041498 -25.688982 10.614510 -v 25.744799 -15.022345 20.063549 -v 24.895998 -17.512676 19.489281 -v 23.695999 -19.654358 18.677292 -v 22.320398 -21.463346 17.746588 -v 20.944698 -22.955435 16.815765 -v 19.744699 -24.146479 16.003828 -v 18.895899 -25.052298 15.429477 -v 18.573999 -25.688740 15.211610 -v 21.419998 -15.022068 25.324549 -v 20.695000 -17.512407 24.599680 -v 19.670099 -19.654100 23.574892 -v 18.495098 -21.463100 22.399988 -v 17.320099 -22.955204 21.225065 -v 16.295099 -24.146257 20.200129 -v 15.570198 -25.052086 19.475277 -v 15.295198 -25.688530 19.200310 -v 16.158998 -15.021841 29.649347 -v 15.584599 -17.512186 28.800680 -v 14.772499 -19.653889 27.600792 -v 13.841700 -21.462900 26.225288 -v 12.910799 -22.955013 24.849667 -v 12.098799 -24.146076 23.649729 -v 11.524399 -25.051910 22.800976 -v 11.306499 -25.688358 22.479109 -v 10.095399 -15.021669 32.904049 -v 9.694599 -17.512020 31.962179 -v 9.127998 -19.653728 30.630592 -v 8.478398 -21.462748 29.104088 -v 7.828898 -22.954868 27.577465 -v 7.262198 -24.145939 26.245829 -v 6.861499 -25.051779 25.303877 -v 6.709399 -25.688229 24.946609 -v 3.362989 -15.021562 34.954948 -v 3.154949 -17.511915 33.954380 -v 2.860809 -19.653629 32.539791 -v 2.523619 -21.462652 30.918087 -v 2.186439 -22.954779 29.296366 -v 1.892299 -24.145853 27.881729 -v 1.684249 -25.051697 26.881077 -v 1.605329 -25.688135 26.501509 -v -3.904401 -15.021524 35.668346 -v -3.904401 -17.511877 34.647381 -v -3.904401 -19.653593 33.203892 -v -3.904401 -21.462620 31.549088 -v -3.904401 -22.954748 29.894266 -v -3.904401 -24.145823 28.450729 -v -3.904401 -25.051668 27.429577 -v -3.904401 -25.688107 27.042309 -v -11.171791 -15.021562 34.954948 -v -10.963751 -17.511915 33.954380 -v -10.669611 -19.653629 32.539791 -v -10.332421 -21.462652 30.918087 -v -9.995241 -22.954779 29.296366 -v -9.701101 -24.145853 27.881729 -v -9.493052 -25.051697 26.881077 -v -9.414131 -25.688135 26.501509 -v -17.904202 -15.021669 32.904049 -v -17.503401 -17.512020 31.962179 -v -16.936802 -19.653728 30.630592 -v -16.287201 -21.462748 29.104088 -v -15.637701 -22.954868 27.577465 -v -15.071001 -24.145939 26.245829 -v -14.670301 -25.051779 25.303877 -v -14.518201 -25.688229 24.946609 -v -23.967802 -15.021841 29.649347 -v -23.393402 -17.512186 28.800680 -v -22.581301 -19.653889 27.600792 -v -21.650501 -21.462900 26.225288 -v -20.719601 -22.955013 24.849667 -v -19.907600 -24.146076 23.649729 -v -19.333202 -25.051910 22.800976 -v -19.115301 -25.688358 22.479109 -v -29.228802 -15.022068 25.324549 -v -28.503801 -17.512407 24.599680 -v -27.478901 -19.654100 23.574892 -v -26.303902 -21.463100 22.399988 -v -25.128901 -22.955204 21.225065 -v -24.103901 -24.146257 20.200129 -v -23.379002 -25.052086 19.475277 -v -23.104002 -25.688530 19.200310 -v -33.553600 -15.022345 20.063549 -v -32.704803 -17.512676 19.489281 -v -31.504801 -19.654358 18.677292 -v -30.129202 -21.463346 17.746588 -v -28.753502 -22.955435 16.815765 -v -27.553501 -24.146479 16.003828 -v -26.704700 -25.052298 15.429477 -v -26.382801 -25.688740 15.211610 -v -36.808304 -15.022664 13.999949 -v -35.866302 -17.512985 13.599279 -v -34.534599 -19.654655 13.032792 -v -33.008003 -21.463627 12.383287 -v -31.481300 -22.955702 11.733866 -v -30.149601 -24.146732 11.167229 -v -29.207602 -25.052544 10.766577 -v -28.850302 -25.688982 10.614510 -v -38.859200 -15.023018 7.267539 -v -37.858604 -17.513329 7.059620 -v -36.443802 -19.654984 6.765593 -v -34.821999 -21.463942 6.428508 -v -33.200203 -22.955999 6.091406 -v -31.785501 -24.147015 5.797329 -v -30.784801 -25.052816 5.589326 -v -30.405201 -25.689251 5.510440 -v -39.572601 -15.023400 0.000148 -v -38.551498 -17.513700 0.000279 -v -37.107903 -19.655340 0.000392 -v -35.453003 -21.464279 0.000487 -v -33.798103 -22.956320 0.000566 -v -32.354500 -24.147320 0.000629 -v -31.333302 -25.053110 0.000676 -v -30.946001 -25.689541 0.000710 -v -38.859200 -15.023783 -7.267241 -v -37.858604 -17.514072 -7.059070 -v -36.443802 -19.655706 -6.764818 -v -34.821999 -21.464617 -6.427532 -v -33.200203 -22.956650 -6.090274 -v -31.785501 -24.147625 -5.796071 -v -30.784801 -25.053404 -5.587974 -v -30.405201 -25.689831 -5.509020 -v -36.808304 -15.024137 -13.999651 -v -35.866302 -17.514416 -13.598721 -v -34.534599 -19.656034 -13.032007 -v -33.008003 -21.464931 -12.382312 -v -31.481300 -22.956947 -11.732734 -v -30.149601 -24.147907 -11.165971 -v -29.207602 -25.053677 -10.765224 -v -28.850302 -25.690100 -10.613091 -v -33.553600 -15.024456 -20.063251 -v -32.704803 -17.514725 -19.488720 -v -31.504801 -19.656332 -18.676508 -v -30.129202 -21.465212 -17.745613 -v -28.753502 -22.957214 -16.814634 -v -27.553501 -24.148161 -16.002571 -v -26.704700 -25.053923 -15.428123 -v -26.382801 -25.690342 -15.210190 -v -29.228802 -15.024733 -25.324251 -v -28.503801 -17.514994 -24.599121 -v -27.478901 -19.656590 -23.574108 -v -26.303902 -21.465458 -22.399012 -v -25.128901 -22.957445 -21.223934 -v -24.103901 -24.148382 -20.198872 -v -23.379002 -25.054134 -19.473923 -v -23.104002 -25.690552 -19.198891 -v -23.967802 -15.024960 -29.649052 -v -23.393402 -17.515215 -28.800119 -v -22.581301 -19.656801 -27.600008 -v -21.650501 -21.465658 -26.224312 -v -20.719601 -22.957636 -24.848534 -v -19.907600 -24.148563 -23.648472 -v -19.333202 -25.054310 -22.799623 -v -19.115301 -25.690723 -22.477692 -v -17.904202 -15.025131 -32.903751 -v -17.503401 -17.515381 -31.961620 -v -16.936802 -19.656961 -30.629808 -v -16.287201 -21.465811 -29.103113 -v -15.637701 -22.957781 -27.576334 -v -15.071001 -24.148701 -26.244572 -v -14.670301 -25.054441 -25.302523 -v -14.518201 -25.690853 -24.945190 -v -11.171791 -15.025239 -34.954651 -v -10.963751 -17.515486 -33.953918 -v -10.669611 -19.657061 -32.539009 -v -10.332421 -21.465906 -30.917112 -v -9.995241 -22.957870 -29.295235 -v -9.701101 -24.148787 -27.880470 -v -9.493052 -25.054523 -26.879723 -v -9.414131 -25.690935 -26.500092 -v -3.904401 -15.025276 -35.668053 -v -3.904401 -17.515524 -34.646820 -v -3.904401 -19.657097 -33.203106 -v -3.904401 -21.465939 -31.548113 -v -3.904401 -22.957901 -29.893133 -v -3.904401 -24.148817 -28.449471 -v -3.904401 -25.054552 -27.428223 -v -3.904401 -25.690964 -27.040892 -v 3.362989 -15.025239 -34.954651 -v 3.154949 -17.515486 -33.953918 -v 2.860809 -19.657061 -32.539009 -v 2.523619 -21.465906 -30.917112 -v 2.186439 -22.957870 -29.295235 -v 1.892299 -24.148787 -27.880470 -v 1.684249 -25.054523 -26.879723 -v 1.605329 -25.690935 -26.500092 -v 10.095399 -15.025131 -32.903751 -v 9.694599 -17.515381 -31.961620 -v 9.127998 -19.656961 -30.629808 -v 8.478398 -21.465811 -29.103113 -v 7.828898 -22.957781 -27.576334 -v 7.262198 -24.148701 -26.244572 -v 6.861499 -25.054441 -25.302523 -v 6.709399 -25.690853 -24.945190 -v 16.158998 -15.024960 -29.649052 -v 15.584599 -17.515215 -28.800119 -v 14.772499 -19.656801 -27.600008 -v 13.841700 -21.465658 -26.224312 -v 12.910799 -22.957636 -24.848534 -v 12.098799 -24.148563 -23.648472 -v 11.524399 -25.054310 -22.799623 -v 11.306499 -25.690723 -22.477692 -v 21.419998 -15.024733 -25.324251 -v 20.695000 -17.514994 -24.599121 -v 19.670099 -19.656590 -23.574108 -v 18.495098 -21.465458 -22.399012 -v 17.320099 -22.957445 -21.223934 -v 16.295099 -24.148382 -20.198872 -v 15.570198 -25.054134 -19.473923 -v 15.295198 -25.690552 -19.198891 -v 25.744799 -15.024456 -20.063251 -v 24.895998 -17.514725 -19.488720 -v 23.695999 -19.656332 -18.676508 -v 22.320398 -21.465212 -17.745613 -v 20.944698 -22.957214 -16.814634 -v 19.744699 -24.148161 -16.002571 -v 18.895899 -25.053923 -15.428123 -v 18.573999 -25.690342 -15.210190 -v 28.999498 -15.024137 -13.999651 -v 28.057499 -17.514416 -13.598721 -v 26.725800 -19.656034 -13.032007 -v 25.199200 -21.464931 -12.382312 -v 23.672499 -22.956947 -11.732734 -v 22.340799 -24.147907 -11.165971 -v 21.398798 -25.053677 -10.765224 -v 21.041498 -25.690100 -10.613091 -v 31.050398 -15.023783 -7.267241 -v 30.049799 -17.514072 -7.059070 -v 28.635000 -19.655706 -6.764818 -v 27.013199 -21.464617 -6.427532 -v 25.391399 -22.956650 -6.090274 -v 23.976698 -24.147625 -5.796071 -v 22.975998 -25.053404 -5.587974 -v 22.596399 -25.689831 -5.509020 -v 22.490299 -26.193642 5.488407 -v 23.028999 -26.193930 0.000736 -v 21.995998 -26.682186 5.385663 -v 22.524599 -26.682470 0.000762 -v 20.849499 -27.139059 5.147326 -v 21.354698 -27.139330 0.000786 -v 18.786900 -27.548401 4.718518 -v 19.249998 -27.548649 0.000808 -v 15.544199 -27.894377 4.044346 -v 15.941099 -27.894592 0.000826 -v 10.857399 -28.161150 3.069930 -v 11.158599 -28.161312 0.000840 -v 4.462499 -28.332870 1.740399 -v 4.633259 -28.332962 0.000849 -v -3.904401 -28.393700 0.000852 -v 20.941599 -26.193373 10.572037 -v 20.476299 -26.681925 10.374163 -v 19.397099 -27.138809 9.914987 -v 17.455500 -27.548170 9.088908 -v 14.403099 -27.894180 7.790186 -v 9.991199 -28.161001 5.913080 -v 3.971589 -28.332787 3.351879 -v 18.483999 -26.193132 15.150737 -v 18.064699 -26.681688 14.867063 -v 17.092199 -27.138582 14.208986 -v 15.342699 -27.547964 13.025108 -v 12.592199 -27.894003 11.163926 -v 8.616699 -28.160864 8.473800 -v 3.192529 -28.332710 4.803279 -v 15.218298 -26.192924 19.123436 -v 14.860199 -26.681482 18.765362 -v 14.029598 -27.138386 17.934786 -v 12.535198 -27.547785 16.440409 -v 10.185899 -27.893848 14.091126 -v 6.790399 -28.160748 10.695640 -v 2.157339 -28.332644 6.062589 -v 11.245599 -26.192753 22.389135 -v 10.961899 -26.681314 21.969862 -v 10.303799 -27.138226 20.997385 -v 9.119899 -27.547636 19.247908 -v 7.258698 -27.893723 16.497425 -v 4.568559 -28.160652 12.521939 -v 0.898029 -28.332588 7.097779 -v 6.666899 -26.192623 24.846735 -v 6.468999 -26.681189 24.381462 -v 6.009799 -27.138103 23.302286 -v 5.183699 -27.547525 21.360708 -v 3.884959 -27.893627 18.308325 -v 2.007839 -28.160580 13.896440 -v -0.553371 -28.332548 7.876839 -v 1.583269 -26.192532 26.395435 -v 1.480499 -26.681108 25.901163 -v 1.242139 -27.138027 24.754684 -v 0.813309 -27.547455 22.692108 -v 0.139119 -27.893568 19.449425 -v -0.835311 -28.160534 14.762640 -v -2.164851 -28.332521 8.367749 -v -3.904401 -26.192503 26.934135 -v -3.904401 -26.681080 26.429762 -v -3.904401 -27.138000 25.259886 -v -3.904401 -27.547430 23.155209 -v -3.904401 -27.893547 19.846325 -v -3.904401 -28.160519 15.063840 -v -3.904401 -28.332514 8.538509 -v -9.392071 -26.192532 26.395435 -v -9.289301 -26.681108 25.901163 -v -9.050941 -27.138027 24.754684 -v -8.622111 -27.547455 22.692108 -v -7.947921 -27.893568 19.449425 -v -6.973491 -28.160534 14.762640 -v -5.643951 -28.332521 8.367749 -v -14.475701 -26.192623 24.846735 -v -14.277802 -26.681189 24.381462 -v -13.818602 -27.138103 23.302286 -v -12.992501 -27.547525 21.360708 -v -11.693762 -27.893627 18.308325 -v -9.816641 -28.160580 13.896440 -v -7.255431 -28.332548 7.876839 -v -19.054401 -26.192753 22.389135 -v -18.770702 -26.681314 21.969862 -v -18.112602 -27.138226 20.997385 -v -16.928701 -27.547636 19.247908 -v -15.067501 -27.893723 16.497425 -v -12.377361 -28.160652 12.521939 -v -8.706831 -28.332588 7.097779 -v -23.027102 -26.192924 19.123436 -v -22.669001 -26.681482 18.765362 -v -21.838402 -27.138386 17.934786 -v -20.344002 -27.547785 16.440409 -v -17.994701 -27.893848 14.091126 -v -14.599201 -28.160748 10.695640 -v -9.966141 -28.332644 6.062589 -v -26.292801 -26.193132 15.150737 -v -25.873501 -26.681688 14.867063 -v -24.901001 -27.138582 14.208986 -v -23.151501 -27.547964 13.025108 -v -20.401001 -27.894003 11.163926 -v -16.425501 -28.160864 8.473800 -v -11.001331 -28.332710 4.803279 -v -28.750401 -26.193373 10.572037 -v -28.285101 -26.681925 10.374163 -v -27.205902 -27.138809 9.914987 -v -25.264301 -27.548170 9.088908 -v -22.211901 -27.894180 7.790186 -v -17.800001 -28.161001 5.913080 -v -11.780392 -28.332787 3.351879 -v -30.299101 -26.193642 5.488407 -v -29.804802 -26.682186 5.385663 -v -28.658300 -27.139059 5.147326 -v -26.595701 -27.548401 4.718518 -v -23.353001 -27.894377 4.044346 -v -18.666203 -28.161150 3.069930 -v -12.271301 -28.332870 1.740399 -v -30.837801 -26.193930 0.000736 -v -30.333401 -26.682470 0.000762 -v -29.163502 -27.139330 0.000786 -v -27.058802 -27.548649 0.000808 -v -23.749901 -27.894592 0.000826 -v -18.967402 -28.161312 0.000840 -v -12.442061 -28.332962 0.000849 -v -30.299101 -26.194218 -5.486933 -v -29.804802 -26.682755 -5.384138 -v -28.658300 -27.139601 -5.145754 -v -26.595701 -27.548897 -4.716902 -v -23.353001 -27.894806 -4.042694 -v -18.666203 -28.161474 -3.068250 -v -12.271301 -28.333054 -1.738701 -v -28.750401 -26.194487 -10.570563 -v -28.285101 -26.683016 -10.372638 -v -27.205902 -27.139851 -9.913414 -v -25.264301 -27.549129 -9.087292 -v -22.211901 -27.895002 -7.788534 -v -17.800001 -28.161623 -5.911400 -v -11.780392 -28.333138 -3.350181 -v -26.292801 -26.194727 -15.149263 -v -25.873501 -26.683252 -14.865538 -v -24.901001 -27.140078 -14.207414 -v -23.151501 -27.549335 -13.023492 -v -20.401001 -27.895180 -11.162273 -v -16.425501 -28.161758 -8.472120 -v -11.001331 -28.333214 -4.801581 -v -23.027102 -26.194935 -19.121964 -v -22.669001 -26.683458 -18.763838 -v -21.838402 -27.140274 -17.933214 -v -20.344002 -27.549515 -16.438791 -v -17.994701 -27.895334 -14.089474 -v -14.599201 -28.161875 -10.693960 -v -9.966141 -28.333281 -6.060891 -v -19.054401 -26.195107 -22.387665 -v -18.770702 -26.683626 -21.968338 -v -18.112602 -27.140434 -20.995815 -v -16.928701 -27.549664 -19.246292 -v -15.067501 -27.895460 -16.495775 -v -12.377361 -28.161970 -12.520261 -v -8.706831 -28.333336 -7.096081 -v -14.475701 -26.195236 -24.845264 -v -14.277802 -26.683752 -24.379938 -v -13.818602 -27.140556 -23.300714 -v -12.992501 -27.549774 -21.359093 -v -11.693762 -27.895555 -18.306675 -v -9.816641 -28.162043 -13.894760 -v -7.255431 -28.333376 -7.875141 -v -9.392071 -26.195318 -26.393965 -v -9.289301 -26.683832 -25.899637 -v -9.050941 -27.140633 -24.753115 -v -8.622111 -27.549845 -22.690493 -v -7.947921 -27.895615 -19.447775 -v -6.973491 -28.162088 -14.760961 -v -5.643951 -28.333403 -8.366051 -v -3.904401 -26.195347 -26.932665 -v -3.904401 -26.683861 -26.428238 -v -3.904401 -27.140659 -25.258314 -v -3.904401 -27.549870 -23.153591 -v -3.904401 -27.895636 -19.844675 -v -3.904401 -28.162104 -15.062160 -v -3.904401 -28.333410 -8.536811 -v 1.583269 -26.195318 -26.393965 -v 1.480499 -26.683832 -25.899637 -v 1.242139 -27.140633 -24.753115 -v 0.813309 -27.549845 -22.690493 -v 0.139119 -27.895615 -19.447775 -v -0.835311 -28.162088 -14.760961 -v -2.164851 -28.333403 -8.366051 -v 6.666899 -26.195236 -24.845264 -v 6.468999 -26.683752 -24.379938 -v 6.009799 -27.140556 -23.300714 -v 5.183699 -27.549774 -21.359093 -v 3.884959 -27.895555 -18.306675 -v 2.007839 -28.162043 -13.894760 -v -0.553371 -28.333376 -7.875141 -v 11.245599 -26.195107 -22.387665 -v 10.961899 -26.683626 -21.968338 -v 10.303799 -27.140434 -20.995815 -v 9.119899 -27.549664 -19.246292 -v 7.258698 -27.895460 -16.495775 -v 4.568559 -28.161970 -12.520261 -v 0.898029 -28.333336 -7.096081 -v 15.218298 -26.194935 -19.121964 -v 14.860199 -26.683458 -18.763838 -v 14.029598 -27.140274 -17.933214 -v 12.535198 -27.549515 -16.438791 -v 10.185899 -27.895334 -14.089474 -v 6.790399 -28.161875 -10.693960 -v 2.157339 -28.333281 -6.060891 -v 18.483999 -26.194727 -15.149263 -v 18.064699 -26.683252 -14.865538 -v 17.092199 -27.140078 -14.207414 -v 15.342699 -27.549335 -13.023492 -v 12.592199 -27.895180 -11.162273 -v 8.616699 -28.161758 -8.472120 -v 3.192529 -28.333214 -4.801581 -v 20.941599 -26.194487 -10.570563 -v 20.476299 -26.683016 -10.372638 -v 19.397099 -27.139851 -9.913414 -v 17.455500 -27.549129 -9.087292 -v 14.403099 -27.895002 -7.788534 -v 9.991199 -28.161623 -5.911400 -v 3.971589 -28.333138 -3.350181 -v 22.490299 -26.194218 -5.486933 -v 21.995998 -26.682755 -5.384138 -v 20.849499 -27.139601 -5.145754 -v 18.786900 -27.548897 -4.716902 -v 15.544199 -27.894806 -4.042694 -v 10.857399 -28.161474 -3.068250 -v 4.462499 -28.333054 -1.738701 -v -32.748802 8.112499 -0.001070 -v -32.671303 8.286894 1.773523 -v -37.226601 8.278593 1.773523 -v -37.224098 8.104599 -0.001070 -v -41.240105 8.220793 1.773526 -v -41.171204 8.049099 -0.001067 -v -44.691704 8.063795 1.773534 -v -44.569000 7.898602 -0.001059 -v -47.561005 7.758093 1.773551 -v -47.396400 7.605499 -0.001044 -v -49.827904 7.253992 1.773587 -v -49.632202 7.122200 -0.001018 -v -51.472099 6.502092 1.773627 -v -51.255402 6.401299 -0.000980 -v -52.473404 5.452795 1.773682 -v -52.244804 5.395100 -0.000927 -v -52.811699 4.056395 1.773755 -v -52.579300 4.056301 -0.000857 -v -32.467102 8.746460 3.041078 -v -37.233398 8.737259 3.041079 -v -41.422005 8.673161 3.041082 -v -45.015099 8.499161 3.041091 -v -47.994904 8.160160 3.041109 -v -50.343605 7.601460 3.041139 -v -52.043304 6.767860 3.041183 -v -53.076103 5.604462 3.041244 -v -53.424400 4.056461 3.041325 -v -32.178402 9.396101 3.801594 -v -37.243004 9.385698 3.801595 -v -41.679199 9.312700 3.801599 -v -45.472504 9.114500 3.801609 -v -48.608498 8.728701 3.801629 -v -51.072701 8.092501 3.801663 -v -52.850800 7.143400 3.801713 -v -53.928200 5.818998 3.801782 -v -54.290604 4.056501 3.801875 -v -31.847401 10.140812 4.055065 -v -37.253998 10.128914 4.055066 -v -41.973999 10.045815 4.055070 -v -45.996704 9.820015 4.055082 -v -49.311798 9.380314 4.055105 -v -51.908600 8.655415 4.055143 -v -53.776505 7.574012 4.055200 -v -54.904999 6.064811 4.055280 -v -55.283501 4.056514 4.055386 -v -31.516401 10.885500 3.801516 -v -37.264999 10.872202 3.801517 -v -42.268700 10.778799 3.801522 -v -46.521004 10.525400 3.801535 -v -50.015099 10.031900 3.801561 -v -52.744400 9.218302 3.801604 -v -54.702202 8.004499 3.801667 -v -55.881798 6.310598 3.801757 -v -56.276398 4.056501 3.801875 -v -31.227701 11.535160 3.040932 -v -37.274605 11.520561 3.040932 -v -42.525902 11.418259 3.040938 -v -46.978302 11.140759 3.040952 -v -50.628700 10.600262 3.040981 -v -53.473602 9.709259 3.041028 -v -55.509705 8.380058 3.041098 -v -56.733803 6.524960 3.041195 -v -57.142601 4.056461 3.041325 -v -31.023500 11.994593 1.773328 -v -37.281303 11.979094 1.773328 -v -42.707802 11.870493 1.773334 -v -47.301804 11.575891 1.773350 -v -51.062599 11.002295 1.773380 -v -53.989304 10.056494 1.773430 -v -56.080902 8.645594 1.773504 -v -57.336502 6.676592 1.773617 -v -57.755302 4.056395 1.773755 -v -30.946001 12.168701 -0.001284 -v -37.283905 12.152901 -0.001283 -v -42.776703 12.042000 -0.001277 -v -47.424500 11.740898 -0.001261 -v -51.227303 11.154701 -0.001231 -v -54.184898 10.188198 -0.001180 -v -56.297600 8.746300 -0.001104 -v -57.565102 6.734001 -0.000998 -v -57.987701 4.056301 -0.000857 -v -31.023500 11.994406 -1.775882 -v -37.281303 11.978907 -1.775882 -v -42.707802 11.870306 -1.775876 -v -47.301804 11.575705 -1.775860 -v -51.062599 11.002108 -1.775830 -v -53.989304 10.056307 -1.775780 -v -56.080902 8.645407 -1.775706 -v -57.336502 6.676405 -1.775603 -v -57.755302 4.056208 -1.775465 -v -31.227701 11.534840 -3.043438 -v -37.274605 11.520241 -3.043437 -v -42.525902 11.417938 -3.043432 -v -46.978302 11.140438 -3.043417 -v -50.628700 10.599941 -3.043389 -v -53.473602 9.708939 -3.043342 -v -55.509705 8.379738 -3.043272 -v -56.733803 6.524639 -3.043175 -v -57.142601 4.056141 -3.043045 -v -31.516401 10.885099 -3.803944 -v -37.264999 10.871801 -3.803943 -v -42.268700 10.778399 -3.803938 -v -46.521004 10.525000 -3.803925 -v -50.015099 10.031500 -3.803899 -v -52.744400 9.217901 -3.803856 -v -54.702202 8.004099 -3.803792 -v -55.881798 6.310198 -3.803703 -v -56.276398 4.056101 -3.803585 -v -31.847401 10.140385 -4.057425 -v -37.253998 10.128487 -4.057424 -v -41.973999 10.045387 -4.057420 -v -45.996704 9.819588 -4.057408 -v -49.311798 9.379887 -4.057385 -v -51.908600 8.654987 -4.057347 -v -53.776505 7.573586 -4.057290 -v -54.904999 6.064385 -4.057210 -v -55.283501 4.056088 -4.057105 -v -32.178402 9.395700 -3.803866 -v -37.243004 9.385298 -3.803865 -v -41.679199 9.312300 -3.803861 -v -45.472504 9.114100 -3.803851 -v -48.608498 8.728300 -3.803831 -v -51.072701 8.092100 -3.803797 -v -52.850800 7.143000 -3.803747 -v -53.928200 5.818598 -3.803678 -v -54.290604 4.056101 -3.803585 -v -32.467102 8.746140 -3.043292 -v -37.233398 8.736938 -3.043291 -v -41.422005 8.672840 -3.043288 -v -45.015099 8.498840 -3.043278 -v -47.994904 8.159840 -3.043261 -v -50.343605 7.601139 -3.043231 -v -52.043304 6.767540 -3.043187 -v -53.076103 5.604141 -3.043126 -v -53.424400 4.056141 -3.043045 -v -32.671303 8.286707 -1.775687 -v -37.226601 8.278406 -1.775687 -v -41.240105 8.220606 -1.775684 -v -44.691704 8.063608 -1.775676 -v -47.561005 7.757906 -1.775659 -v -49.827904 7.253805 -1.775633 -v -51.472099 6.501905 -1.775593 -v -52.473404 5.452608 -1.775538 -v -52.811699 4.056208 -1.775465 -v -52.633804 2.304493 1.773847 -v -52.406799 2.360899 -0.000767 -v -52.086304 0.282793 1.773954 -v -51.875099 0.380301 -0.000663 -v -51.148598 -1.917507 1.774069 -v -50.963203 -1.790400 -0.000549 -v -49.799904 -4.205008 1.774190 -v -49.649803 -4.056200 -0.000429 -v -48.019600 -6.488407 1.774310 -v -47.914001 -6.322001 -0.000310 -v -45.787102 -8.676506 1.774425 -v -45.734398 -8.492701 -0.000196 -v -43.081604 -10.677807 1.774530 -v -43.090103 -10.473301 -0.000092 -v -39.882401 -12.401007 1.774621 -v -53.232300 2.155760 3.041425 -v -52.643204 0.025560 3.041537 -v -51.637398 -2.252640 3.041657 -v -50.195602 -4.597441 3.041780 -v -48.298203 -6.927340 3.041903 -v -45.925903 -9.161039 3.042020 -v -43.058998 -11.216940 3.042129 -v -39.678200 -13.013640 3.042223 -v -54.078499 1.945400 3.801986 -v -53.430405 -0.338101 3.802106 -v -52.328499 -2.726500 3.802232 -v -50.755005 -5.152300 3.802360 -v -48.692101 -7.548000 3.802485 -v -46.122101 -9.846199 3.802606 -v -43.027199 -11.979200 3.802719 -v -39.389503 -13.879700 3.802819 -v -55.048500 1.704214 4.055509 -v -54.332802 -0.755087 4.055638 -v -53.120705 -3.269686 4.055771 -v -51.396301 -5.788388 4.055903 -v -49.143700 -8.259487 4.056033 -v -46.347099 -10.631586 4.056158 -v -42.990700 -12.853086 4.056275 -v -39.058502 -14.872686 4.056381 -v -56.018501 1.462999 3.802011 -v -55.235298 -1.171999 3.802150 -v -53.912903 -3.813000 3.802289 -v -52.037498 -6.424500 3.802427 -v -49.595200 -8.971001 3.802560 -v -46.572098 -11.417000 3.802689 -v -42.954102 -13.727100 3.802811 -v -38.727501 -15.865600 3.802923 -v -56.864601 1.252559 3.041473 -v -56.022499 -1.535740 3.041619 -v -54.604004 -4.286940 3.041764 -v -52.596901 -6.979441 3.041906 -v -49.989098 -9.591740 3.042043 -v -46.768303 -12.102240 3.042175 -v -42.922302 -14.489440 3.042301 -v -38.438805 -16.731840 3.042419 -v -57.463104 1.103594 1.773911 -v -56.579300 -1.793106 1.774063 -v -55.092804 -4.622208 1.774212 -v -52.992599 -7.372007 1.774356 -v -50.267700 -10.030807 1.774496 -v -46.907104 -12.586906 1.774631 -v -42.899704 -15.028707 1.774759 -v -38.234604 -17.344606 1.774881 -v -57.690102 1.047100 -0.000698 -v -56.790504 -1.890800 -0.000544 -v -55.278198 -4.749401 -0.000393 -v -53.142700 -7.520901 -0.000247 -v -50.373398 -10.197401 -0.000106 -v -46.959801 -12.770801 0.000029 -v -42.891205 -15.233400 0.000159 -v -38.157104 -17.577000 0.000283 -v -57.463104 1.103407 -1.775309 -v -56.579300 -1.793293 -1.775157 -v -55.092804 -4.622395 -1.775008 -v -52.992599 -7.372194 -1.774864 -v -50.267700 -10.030994 -1.774724 -v -46.907104 -12.587093 -1.774589 -v -42.899704 -15.028893 -1.774461 -v -38.234604 -17.344793 -1.774339 -v -56.864601 1.252239 -3.042897 -v -56.022499 -1.536060 -3.042751 -v -54.604004 -4.287260 -3.042606 -v -52.596901 -6.979761 -3.042454 -v -49.989098 -9.592060 -3.042317 -v -46.768303 -12.102560 -3.042185 -v -42.922302 -14.489760 -3.042059 -v -38.438805 -16.732161 -3.041941 -v -56.018501 1.462599 -3.803448 -v -55.235298 -1.172399 -3.803310 -v -53.912903 -3.813400 -3.803171 -v -52.037498 -6.424900 -3.803033 -v -49.595200 -8.971401 -3.802900 -v -46.572098 -11.417400 -3.802771 -v -42.954102 -13.727501 -3.802649 -v -38.727501 -15.866000 -3.802537 -v -55.048500 1.703787 -4.056981 -v -54.332802 -0.755514 -4.056852 -v -53.120705 -3.270113 -4.056719 -v -51.396301 -5.788814 -4.056587 -v -49.143700 -8.259914 -4.056457 -v -46.347099 -10.632013 -4.056332 -v -42.990700 -12.853514 -4.056215 -v -39.058502 -14.873114 -4.056109 -v -54.078499 1.945000 -3.803474 -v -53.430405 -0.338501 -3.803354 -v -52.328499 -2.726900 -3.803228 -v -50.755005 -5.152700 -3.803100 -v -48.692101 -7.548401 -3.802974 -v -46.122101 -9.846600 -3.802854 -v -43.027199 -11.979601 -3.802741 -v -39.389503 -13.880200 -3.802641 -v -53.232300 2.155440 -3.042945 -v -52.643204 0.025240 -3.042833 -v -51.637398 -2.252960 -3.042713 -v -50.195602 -4.597761 -3.042580 -v -48.298203 -6.927660 -3.042457 -v -45.925903 -9.161360 -3.042340 -v -43.058998 -11.217260 -3.042231 -v -39.678200 -13.013961 -3.042137 -v -52.633804 2.304306 -1.775373 -v -52.086304 0.282606 -1.775266 -v -51.148598 -1.917694 -1.775151 -v -49.799904 -4.205194 -1.775030 -v -48.019600 -6.488594 -1.774910 -v -45.787102 -8.676693 -1.774795 -v -43.081604 -10.677994 -1.774690 -v -39.882401 -12.401194 -1.774599 -v 26.742798 -2.704201 -0.000501 -v 26.742798 -3.342995 3.903665 -v 31.995298 -2.734499 3.799422 -v 31.879999 -2.170700 -0.000529 -v 35.571999 -1.191915 3.524601 -v 35.390495 -0.718300 -0.000605 -v 37.890800 1.055865 3.136063 -v 37.675598 1.431299 -0.000718 -v 39.369301 3.780442 2.690650 -v 39.136902 4.056301 -0.000857 -v 40.425201 6.753017 2.245223 -v 40.175598 6.934700 -0.001008 -v 41.476402 9.745096 1.856636 -v 41.193199 9.844898 -0.001162 -v 42.940498 12.527984 1.581750 -v 42.590996 12.564899 -0.001305 -v 45.235298 14.872976 1.477416 -v 44.770500 14.872898 -0.001426 -v 26.742798 -5.027648 6.692423 -v 32.299202 -4.221056 6.513731 -v 36.050697 -2.441083 6.042657 -v 38.458000 0.065783 5.376655 -v 39.981895 3.053042 4.613178 -v 41.083298 6.273903 3.849689 -v 42.223099 9.481968 3.183640 -v 43.861900 12.430544 2.712505 -v 46.460602 14.873032 2.533726 -v 26.742798 -7.409560 8.365748 -v 32.728897 -6.322972 8.142382 -v 36.727402 -4.207202 7.553540 -v 39.259895 -1.334047 6.721049 -v 40.848099 2.024504 5.766722 -v 42.013802 5.596353 4.812385 -v 43.278702 9.109810 3.979859 -v 45.164497 12.292678 3.390962 -v 48.193001 14.873065 3.167516 -v 26.742798 -10.140131 8.923632 -v 33.221497 -8.732644 8.685358 -v 37.503098 -6.231777 8.057246 -v 40.179100 -2.938822 7.169243 -v 41.840996 0.845424 6.151284 -v 43.080399 4.819671 5.133315 -v 44.488899 8.683123 4.245282 -v 46.657799 12.134590 3.617120 -v 50.178902 14.873075 3.378776 -v 26.742798 -12.870761 8.366035 -v 33.714096 -11.142272 8.142635 -v 38.278801 -8.256503 7.553753 -v 41.098297 -4.543647 6.721218 -v 42.834000 -0.333696 5.766846 -v 44.147102 4.042951 4.812466 -v 45.698997 8.256508 3.979904 -v 48.151100 11.976577 3.390979 -v 52.164696 14.873065 3.167516 -v 26.742798 -15.252849 6.692961 -v 34.143799 -13.244358 6.514205 -v 38.955498 -10.022782 6.043056 -v 41.900200 -5.943618 5.376971 -v 43.700096 -1.362358 4.613410 -v 45.077499 3.365403 3.849842 -v 46.754601 7.884265 3.183724 -v 49.453697 11.838644 2.712536 -v 53.897102 14.873032 2.533726 -v 26.742798 -16.937794 3.904390 -v 34.447701 -14.731300 3.800053 -v 39.434196 -11.272116 3.525131 -v 42.467400 -6.933936 3.136483 -v 44.312798 -2.090059 2.690958 -v 45.735703 2.886118 2.245427 -v 47.501297 7.620898 1.856748 -v 50.375099 11.741084 1.581791 -v 55.122398 14.872976 1.477416 -v 26.742798 -17.577000 0.000283 -v 34.562996 -15.295401 0.000162 -v 39.615700 -11.746201 -0.000025 -v 42.682602 -7.309700 -0.000258 -v 44.545197 -2.366100 -0.000519 -v 45.985298 2.704201 -0.000786 -v 47.784599 7.521000 -0.001039 -v 50.724602 11.703999 -0.001259 -v 55.587196 14.872898 -0.001426 -v 26.742798 -16.938206 -3.903890 -v 34.447701 -14.731701 -3.799787 -v 39.434196 -11.272486 -3.525229 -v 42.467400 -6.934266 -3.137037 -v 44.312798 -2.090342 -2.692022 -v 45.735703 2.885881 -2.247013 -v 47.501297 7.620702 -1.858832 -v 50.375099 11.740918 -1.584309 -v 55.122398 14.872820 -1.480264 -v 26.742798 -15.253552 -6.692639 -v 34.143799 -13.245043 -6.514105 -v 38.955498 -10.023417 -6.043284 -v 41.900200 -5.944184 -5.377629 -v 43.700096 -1.362843 -4.614550 -v 45.077499 3.364997 -3.851478 -v 46.754601 7.883931 -3.185846 -v 49.453697 11.838358 -2.715064 -v 53.897102 14.872765 -2.536584 -v 26.742798 -12.871640 -8.365974 -v 33.714096 -11.143128 -8.142745 -v 38.278801 -8.257298 -7.554177 -v 41.098297 -4.544354 -6.722023 -v 42.834000 -0.334303 -5.768104 -v 44.147102 4.042445 -4.814184 -v 45.698997 8.256088 -3.982056 -v 48.151100 11.976220 -3.393521 -v 52.164696 14.872731 -3.170364 -v 26.742798 -10.141069 -8.923848 -v 33.221497 -8.733558 -8.685721 -v 37.503098 -6.232625 -8.057874 -v 40.179100 -2.939577 -7.170217 -v 41.840996 0.844777 -6.152656 -v 43.080399 4.819131 -5.135115 -v 44.488899 8.682676 -4.247478 -v 46.657799 12.134209 -3.619690 -v 50.178902 14.872721 -3.381634 -v 26.742798 -7.410440 -8.366261 -v 32.728897 -6.323829 -8.142999 -v 36.727402 -4.207997 -7.554390 -v 39.259895 -1.334754 -6.722191 -v 40.848099 2.023897 -5.768228 -v 42.013802 5.595847 -4.814266 -v 43.278702 9.109390 -3.982101 -v 45.164497 12.292321 -3.393538 -v 48.193001 14.872731 -3.170364 -v 26.742798 -5.028352 -6.693187 -v 32.299202 -4.221742 -6.514579 -v 36.050697 -2.441718 -6.043683 -v 38.458000 0.065217 -5.377945 -v 39.981895 3.052557 -4.614782 -v 41.083298 6.273498 -3.851631 -v 42.223099 9.481632 -3.185930 -v 43.861900 12.430258 -2.715095 -v 46.460602 14.872765 -2.536584 -v 26.742798 -3.343406 -3.904605 -v 31.995298 -2.734899 -3.800428 -v 35.571999 -1.192286 -3.525759 -v 37.890800 1.055535 -3.137457 -v 39.369301 3.780159 -2.692330 -v 40.425201 6.752781 -2.247217 -v 41.476402 9.744902 -1.858944 -v 42.940498 12.527818 -1.584350 -v 45.235298 14.872820 -1.480264 -v 45.930199 15.321976 1.451973 -v 45.439499 15.316601 -0.001450 -v 46.563995 15.643772 1.384946 -v 46.066299 15.633499 -0.001466 -v 47.097496 15.837668 1.290195 -v 46.608498 15.823601 -0.001476 -v 47.491196 15.903363 1.181592 -v 47.024002 15.887001 -0.001480 -v 47.705902 15.840255 1.072995 -v 47.270500 15.823601 -0.001476 -v 47.702400 15.647852 0.978263 -v 47.305702 15.633499 -0.001466 -v 47.441200 15.325548 0.911270 -v 47.087402 15.316601 -0.001450 -v 46.883202 14.872945 0.885877 -v 46.573296 14.872898 -0.001426 -v 47.223900 15.336232 2.490132 -v 47.876297 15.670726 2.375234 -v 48.386497 15.874815 2.212814 -v 48.722900 15.946507 2.026640 -v 48.853996 15.883997 1.840463 -v 48.748199 15.685487 1.678074 -v 48.374100 15.349180 1.563211 -v 47.699997 14.872978 1.519666 -v 49.052795 15.356163 3.113021 -v 49.731598 15.708855 2.969412 -v 50.209000 15.927144 2.766391 -v 50.464302 16.007435 2.533666 -v 50.477097 15.945922 2.300950 -v 50.226799 15.738811 2.097951 -v 49.692902 15.382504 1.954379 -v 48.854996 14.872998 1.899936 -v 51.149399 15.379176 3.320650 -v 51.858398 15.752467 3.167470 -v 52.298096 15.987155 2.950908 -v 52.460495 16.077242 2.702673 -v 52.337700 16.016830 2.454446 -v 51.921799 15.799919 2.237907 -v 51.204796 15.420611 2.084768 -v 50.178902 14.873005 2.026696 -v 53.245895 15.402065 3.113019 -v 53.985199 15.796055 2.969408 -v 54.387199 16.047146 2.766384 -v 54.456696 16.147034 2.533659 -v 54.198296 16.087721 2.300942 -v 53.616798 15.861012 2.097944 -v 52.716698 15.458801 1.954376 -v 51.502800 14.872998 1.899936 -v 55.074898 15.421929 2.490127 -v 55.840500 15.834125 2.375226 -v 56.209702 16.099417 2.212802 -v 56.198097 16.207905 2.026626 -v 55.821396 16.149595 1.840449 -v 55.095299 15.914289 1.678061 -v 54.035500 15.492083 1.563204 -v 52.657700 14.872978 1.519666 -v 56.368500 15.436077 1.451967 -v 57.152802 15.860973 1.384934 -v 57.498695 16.136368 1.290180 -v 57.429802 16.250963 1.181574 -v 56.969498 16.193256 1.072977 -v 56.141197 15.951952 0.978247 -v 54.968399 15.515646 0.911260 -v 53.474602 14.872945 0.885877 -v 56.859200 15.441299 -0.001456 -v 57.650497 15.871101 -0.001479 -v 57.987701 16.150398 -0.001494 -v 57.896996 16.267200 -0.001500 -v 57.404900 16.209801 -0.001497 -v 56.537895 15.966198 -0.001484 -v 55.322197 15.524498 -0.001461 -v 53.784401 14.872898 -0.001426 -v 56.368500 15.435925 -1.454873 -v 57.152802 15.860828 -1.387886 -v 57.498695 16.136230 -1.293170 -v 57.429802 16.250837 -1.184566 -v 56.969498 16.193142 -1.075963 -v 56.141197 15.951849 -0.981215 -v 54.968399 15.515551 -0.914182 -v 53.474602 14.872851 -0.888730 -v 55.074898 15.421668 -2.493033 -v 55.840500 15.833875 -2.378185 -v 56.209702 16.099184 -2.215788 -v 56.198097 16.207691 -2.029614 -v 55.821396 16.149401 -1.843441 -v 55.095299 15.914111 -1.681018 -v 54.035500 15.491919 -1.566126 -v 52.657700 14.872818 -1.522514 -v 53.245895 15.401737 -3.115932 -v 53.985199 15.795742 -2.972362 -v 54.387199 16.046856 -2.769356 -v 54.456696 16.146767 -2.536651 -v 54.198296 16.087481 -2.303928 -v 53.616798 15.860790 -2.100906 -v 52.716698 15.458595 -1.957285 -v 51.502800 14.872798 -1.902794 -v 51.149399 15.378827 -3.323560 -v 51.858398 15.752133 -3.170410 -v 52.298096 15.986844 -2.953882 -v 52.460495 16.076956 -2.705657 -v 52.337700 16.016571 -2.457414 -v 51.921799 15.799683 -2.240863 -v 51.204796 15.420392 -2.087672 -v 50.178902 14.872791 -2.029554 -v 49.052795 15.355835 -3.115929 -v 49.731598 15.708542 -2.972358 -v 50.209000 15.926852 -2.769349 -v 50.464302 16.007168 -2.536644 -v 50.477097 15.945680 -2.303920 -v 50.226799 15.738590 -2.100899 -v 49.692902 15.382298 -1.957281 -v 48.854996 14.872798 -1.902794 -v 47.223900 15.335971 -2.493028 -v 47.876297 15.670476 -2.378176 -v 48.386497 15.874582 -2.215776 -v 48.722900 15.946293 -2.029600 -v 48.853996 15.883802 -1.843427 -v 48.748199 15.685309 -1.681006 -v 48.374100 15.349016 -1.566119 -v 47.699997 14.872818 -1.522514 -v 45.930199 15.321823 -1.454867 -v 46.563995 15.643627 -1.387874 -v 47.097496 15.837533 -1.293155 -v 47.491196 15.903239 -1.184548 -v 47.705902 15.840142 -1.075945 -v 47.702400 15.647749 -0.981199 -v 47.441200 15.325453 -0.914172 -v 46.883202 14.872851 -0.888730 -v -3.904401 28.393700 -0.002138 -v 0.160859 28.156145 0.845958 -v 0.243389 28.156101 -0.002126 -v 2.114109 27.506468 1.253442 -v 2.236299 27.506401 -0.002092 -v 2.493709 26.539968 1.332592 -v 2.623619 26.539898 -0.002041 -v 1.837989 25.351564 1.195675 -v 1.954619 25.351501 -0.001978 -v 0.685319 24.036449 0.954980 -v 0.778589 24.036400 -0.001909 -v -0.425961 22.689636 0.722770 -v -0.355191 22.689598 -0.001838 -v -0.957511 21.406233 0.611325 -v -0.897431 21.406200 -0.001770 -v -0.370961 20.281239 0.732920 -v -0.298851 20.281200 -0.001711 -v -0.076611 28.156187 1.630247 -v 1.762539 27.506529 2.414552 -v 2.119929 26.540033 2.566892 -v 1.502449 25.351624 2.303395 -v 0.416999 24.036497 1.840174 -v -0.629541 22.689671 1.393365 -v -1.130261 21.406263 1.179093 -v -0.578281 20.281275 1.413472 -v -0.453821 28.156223 2.335557 -v 1.204069 27.506582 3.458742 -v 1.526189 26.540091 3.676932 -v 0.969479 25.351675 3.299665 -v -0.009161 24.036539 2.636454 -v -0.952781 22.689703 1.996825 -v -1.404461 21.406290 1.690302 -v -0.907291 20.281307 2.026412 -v -0.955591 28.156256 2.946687 -v 0.461199 27.506630 4.363512 -v 0.736439 26.540142 4.638793 -v 0.260579 25.351721 4.162995 -v -0.575911 24.036575 3.326584 -v -1.382561 22.689732 2.520005 -v -1.768891 21.406313 2.133733 -v -1.344461 20.281336 2.558232 -v -1.566721 28.156282 3.448457 -v -0.443571 27.506670 5.106382 -v -0.225431 26.540184 5.428553 -v -0.602761 25.351757 4.871895 -v -1.266041 24.036604 3.893334 -v -1.905741 22.689753 2.949785 -v -2.212331 21.406332 2.498163 -v -1.876281 20.281359 2.995402 -v -2.272021 28.156303 3.825668 -v -1.487761 27.506699 5.664852 -v -1.335471 26.540215 6.022283 -v -1.599031 25.351786 5.404865 -v -2.062321 24.036627 4.319484 -v -2.509191 22.689770 3.273025 -v -2.723541 21.406347 2.772372 -v -2.489221 20.281376 3.324412 -v -3.056316 28.156315 4.063138 -v -2.648861 27.506718 6.016422 -v -2.569771 26.540234 6.396072 -v -2.706741 25.351803 5.740415 -v -2.947512 24.036642 4.587814 -v -3.179793 22.689781 3.476595 -v -3.291306 21.406355 2.945122 -v -3.169770 20.281385 3.531732 -v -3.904401 28.156319 4.145668 -v -3.904401 27.506723 6.138612 -v -3.904401 26.540241 6.525982 -v -3.904401 25.351810 5.857045 -v -3.904401 24.036646 4.681084 -v -3.904401 22.689785 3.547375 -v -3.904401 21.406359 3.005203 -v -3.904401 20.281389 3.603842 -v -4.752486 28.156315 4.063138 -v -5.159941 27.506718 6.016422 -v -5.239031 26.540234 6.396072 -v -5.102061 25.351803 5.740415 -v -4.861290 24.036642 4.587814 -v -4.629009 22.689781 3.476595 -v -4.517496 21.406355 2.945122 -v -4.639032 20.281385 3.531732 -v -5.536781 28.156303 3.825668 -v -6.321041 27.506699 5.664852 -v -6.473331 26.540215 6.022283 -v -6.209771 25.351786 5.404865 -v -5.746481 24.036627 4.319484 -v -5.299611 22.689770 3.273025 -v -5.085261 21.406347 2.772372 -v -5.319581 20.281376 3.324412 -v -6.242081 28.156282 3.448457 -v -7.365232 27.506670 5.106382 -v -7.583371 26.540184 5.428553 -v -7.206041 25.351757 4.871895 -v -6.542761 24.036604 3.893334 -v -5.903061 22.689753 2.949785 -v -5.596471 21.406332 2.498163 -v -5.932521 20.281359 2.995402 -v -6.853211 28.156256 2.946687 -v -8.270001 27.506630 4.363512 -v -8.545241 26.540142 4.638793 -v -8.069382 25.351721 4.162995 -v -7.232891 24.036575 3.326584 -v -6.426241 22.689732 2.520005 -v -6.039911 21.406313 2.133733 -v -6.464341 20.281336 2.558232 -v -7.354981 28.156223 2.335557 -v -9.012871 27.506582 3.458742 -v -9.334991 26.540091 3.676932 -v -8.778281 25.351675 3.299665 -v -7.799641 24.036539 2.636454 -v -6.856021 22.689703 1.996825 -v -6.404341 21.406290 1.690302 -v -6.901511 20.281307 2.026412 -v -7.732191 28.156187 1.630247 -v -9.571341 27.506529 2.414552 -v -9.928732 26.540033 2.566892 -v -9.311251 25.351624 2.303395 -v -8.225801 24.036497 1.840174 -v -7.179261 22.689671 1.393365 -v -6.678541 21.406263 1.179093 -v -7.230521 20.281275 1.413472 -v -7.969661 28.156145 0.845958 -v -9.922911 27.506468 1.253442 -v -10.302511 26.539968 1.332592 -v -9.646791 25.351564 1.195675 -v -8.494122 24.036449 0.954980 -v -7.382841 22.689636 0.722770 -v -6.851291 21.406233 0.611325 -v -7.437841 20.281239 0.732920 -v -8.052191 28.156101 -0.002126 -v -10.045101 27.506401 -0.002092 -v -10.432421 26.539898 -0.002041 -v -9.763421 25.351501 -0.001978 -v -8.587391 24.036400 -0.001909 -v -7.453611 22.689598 -0.001838 -v -6.911371 21.406200 -0.001770 -v -7.509951 20.281200 -0.001711 -v -7.969661 28.156057 -0.850211 -v -9.922911 27.506334 -1.257628 -v -10.302511 26.539827 -1.336677 -v -9.646791 25.351439 -1.199635 -v -8.494122 24.036350 -0.958798 -v -7.382841 22.689560 -0.726446 -v -6.851291 21.406168 -0.614865 -v -7.437841 20.281162 -0.736342 -v -7.732191 28.156015 -1.634503 -v -9.571341 27.506273 -2.418738 -v -9.928732 26.539762 -2.570978 -v -9.311251 25.351379 -2.307345 -v -8.225801 24.036303 -1.843996 -v -7.179261 22.689526 -1.397045 -v -6.678541 21.406137 -1.182627 -v -7.230521 20.281126 -1.416888 -v -7.354981 28.155979 -2.339813 -v -9.012871 27.506220 -3.462918 -v -9.334991 26.539705 -3.681018 -v -8.778281 25.351328 -3.303615 -v -7.799641 24.036261 -2.640266 -v -6.856021 22.689493 -2.000495 -v -6.404341 21.406111 -1.693847 -v -6.901511 20.281094 -2.029838 -v -6.853211 28.155947 -2.950943 -v -8.270001 27.506172 -4.367698 -v -8.545241 26.539654 -4.642878 -v -8.069382 25.351282 -4.166955 -v -7.232891 24.036224 -3.330396 -v -6.426241 22.689465 -2.523685 -v -6.039911 21.406088 -2.137277 -v -6.464341 20.281065 -2.561648 -v -6.242081 28.155920 -3.452713 -v -7.365232 27.506132 -5.110558 -v -7.583371 26.539612 -5.432638 -v -7.206041 25.351246 -4.875855 -v -6.542761 24.036196 -3.897156 -v -5.903061 22.689444 -2.953455 -v -5.596471 21.406069 -2.501708 -v -5.932521 20.281042 -2.998828 -v -5.536781 28.155899 -3.829922 -v -6.321041 27.506104 -5.669028 -v -6.473331 26.539581 -6.026368 -v -6.209771 25.351217 -5.408825 -v -5.746481 24.036173 -4.323306 -v -5.299611 22.689426 -3.276705 -v -5.085261 21.406054 -2.775908 -v -5.319581 20.281025 -3.327828 -v -4.752486 28.155888 -4.067382 -v -5.159941 27.506084 -6.020608 -v -5.239031 26.539562 -6.400147 -v -5.102061 25.351200 -5.744375 -v -4.861290 24.036158 -4.591626 -v -4.629009 22.689415 -3.480275 -v -4.517496 21.406046 -2.948668 -v -4.639032 20.281015 -3.535148 -v -3.904401 28.155884 -4.149922 -v -3.904401 27.506079 -6.142798 -v -3.904401 26.539555 -6.530057 -v -3.904401 25.351192 -5.860995 -v -3.904401 24.036154 -4.684896 -v -3.904401 22.689411 -3.551055 -v -3.904401 21.406042 -3.008748 -v -3.904401 20.281012 -3.607258 -v -3.056316 28.155888 -4.067382 -v -2.648861 27.506084 -6.020608 -v -2.569771 26.539562 -6.400147 -v -2.706741 25.351200 -5.744375 -v -2.947512 24.036158 -4.591626 -v -3.179793 22.689415 -3.480275 -v -3.291306 21.406046 -2.948668 -v -3.169770 20.281015 -3.535148 -v -2.272021 28.155899 -3.829922 -v -1.487761 27.506104 -5.669028 -v -1.335471 26.539581 -6.026368 -v -1.599031 25.351217 -5.408825 -v -2.062321 24.036173 -4.323306 -v -2.509191 22.689426 -3.276705 -v -2.723541 21.406054 -2.775908 -v -2.489221 20.281025 -3.327828 -v -1.566721 28.155920 -3.452713 -v -0.443571 27.506132 -5.110558 -v -0.225431 26.539612 -5.432638 -v -0.602761 25.351246 -4.875855 -v -1.266041 24.036196 -3.897156 -v -1.905741 22.689444 -2.953455 -v -2.212331 21.406069 -2.501708 -v -1.876281 20.281042 -2.998828 -v -0.955591 28.155947 -2.950943 -v 0.461199 27.506172 -4.367698 -v 0.736439 26.539654 -4.642878 -v 0.260579 25.351282 -4.166955 -v -0.575911 24.036224 -3.330396 -v -1.382561 22.689465 -2.523685 -v -1.768891 21.406088 -2.137277 -v -1.344461 20.281065 -2.561648 -v -0.453821 28.155979 -2.339813 -v 1.204069 27.506220 -3.462918 -v 1.526189 26.539705 -3.681018 -v 0.969479 25.351328 -3.303615 -v -0.009161 24.036261 -2.640266 -v -0.952781 22.689493 -2.000495 -v -1.404461 21.406111 -1.693847 -v -0.907291 20.281094 -2.029838 -v -0.076611 28.156015 -1.634503 -v 1.762539 27.506273 -2.418738 -v 2.119929 26.539762 -2.570978 -v 1.502449 25.351379 -2.307345 -v 0.416999 24.036303 -1.843996 -v -0.629541 22.689526 -1.397045 -v -1.130261 21.406137 -1.182627 -v -0.578281 20.281126 -1.416888 -v 0.160859 28.156057 -0.850211 -v 2.114109 27.506334 -1.257628 -v 2.493709 26.539827 -1.336677 -v 1.837989 25.351439 -1.199635 -v 0.685319 24.036350 -0.958798 -v -0.425961 22.689560 -0.726446 -v -0.957511 21.406168 -0.614865 -v -0.370961 20.281162 -0.736342 -v 1.478579 19.383459 1.117499 -v 1.588429 19.383400 -0.001664 -v 4.156259 18.675686 1.674246 -v 4.320759 18.675598 -0.001627 -v 7.330799 18.094822 2.334297 -v 7.560099 18.094700 -0.001596 -v 10.670999 17.577259 3.028784 -v 10.968499 17.577099 -0.001569 -v 13.845598 17.059696 3.688831 -v 14.207899 17.059502 -0.001542 -v 16.523298 16.478724 4.245572 -v 16.940199 16.478500 -0.001511 -v 18.372799 15.771045 4.630149 -v 18.827499 15.770802 -0.001474 -v 19.062998 14.873149 4.773676 -v 19.531698 14.872898 -0.001426 -v 1.162739 19.383512 2.154269 -v 3.683309 18.675768 3.226746 -v 6.671598 18.094936 4.498227 -v 9.815799 17.577406 5.836044 -v 12.804199 17.059875 7.107521 -v 15.324699 16.478931 8.179992 -v 17.065800 15.771271 8.920789 -v 17.715399 14.873382 9.197237 -v 0.661519 19.383562 3.088049 -v 2.932769 18.675842 4.625026 -v 5.625489 18.095039 6.447197 -v 8.458699 17.577539 8.364433 -v 11.151399 17.060038 10.186562 -v 13.422699 16.479116 11.723592 -v 14.991499 15.771474 12.785229 -v 15.576799 14.873591 13.181376 -v -0.004491 19.383606 3.898249 -v 1.935469 18.675905 5.838236 -v 4.235409 18.095127 8.138217 -v 6.655398 17.577654 10.558233 -v 8.955298 17.060179 12.858161 -v 10.895299 16.479279 14.798192 -v 12.235199 15.771650 16.138128 -v 12.735199 14.873774 16.638176 -v -0.814681 19.383640 4.564249 -v 0.722249 18.675959 6.835536 -v 2.544399 18.095201 9.528287 -v 4.461609 17.577749 12.361533 -v 6.283699 17.060293 15.054261 -v 7.820699 16.479412 17.325592 -v 8.882298 15.771795 18.894428 -v 9.278399 14.873923 19.479776 -v -1.748461 19.383667 5.065469 -v -0.676021 18.675997 7.586086 -v 0.595429 18.095257 10.574407 -v 1.933209 17.577820 13.718634 -v 3.204659 17.060381 16.707062 -v 4.277099 16.479511 19.227592 -v 5.017859 15.771905 20.968630 -v 5.294259 14.874036 21.618376 -v -2.785241 19.383682 5.381309 -v -2.228521 18.676022 8.059036 -v -1.568501 18.095291 11.233606 -v -0.874051 17.577866 14.573833 -v -0.214031 17.060436 17.748463 -v 0.342689 16.479574 20.426193 -v 0.727219 15.771974 22.275728 -v 0.870699 14.874106 22.965977 -v -3.904401 19.383688 5.491169 -v -3.904401 18.676031 8.223536 -v -3.904401 18.095303 11.462907 -v -3.904401 17.577881 14.871333 -v -3.904401 17.060455 18.110762 -v -3.904401 16.479597 20.843092 -v -3.904401 15.771997 22.730429 -v -3.904401 14.874131 23.434677 -v -5.023561 19.383682 5.381309 -v -5.580281 18.676022 8.059036 -v -6.240301 18.095291 11.233606 -v -6.934752 17.577866 14.573833 -v -7.594771 17.060436 17.748463 -v -8.151491 16.479574 20.426193 -v -8.536021 15.771974 22.275728 -v -8.679501 14.874106 22.965977 -v -6.060341 19.383667 5.065469 -v -7.132781 18.675997 7.586086 -v -8.404231 18.095257 10.574407 -v -9.742011 17.577820 13.718634 -v -11.013461 17.060381 16.707062 -v -12.085901 16.479511 19.227592 -v -12.826661 15.771905 20.968630 -v -13.103062 14.874036 21.618376 -v -6.994122 19.383640 4.564249 -v -8.531052 18.675959 6.835536 -v -10.353201 18.095201 9.528287 -v -12.270411 17.577749 12.361533 -v -14.092502 17.060293 15.054261 -v -15.629501 16.479412 17.325592 -v -16.691101 15.771795 18.894428 -v -17.087200 14.873923 19.479776 -v -7.804311 19.383606 3.898249 -v -9.744271 18.675905 5.838236 -v -12.044211 18.095127 8.138217 -v -14.464201 17.577654 10.558233 -v -16.764101 17.060179 12.858161 -v -18.704102 16.479279 14.798192 -v -20.044001 15.771650 16.138128 -v -20.544001 14.873774 16.638176 -v -8.470322 19.383562 3.088049 -v -10.741571 18.675842 4.625026 -v -13.434291 18.095039 6.447197 -v -16.267502 17.577539 8.364433 -v -18.960201 17.060038 10.186562 -v -21.231501 16.479116 11.723592 -v -22.800301 15.771474 12.785229 -v -23.385601 14.873591 13.181376 -v -8.971541 19.383512 2.154269 -v -11.492111 18.675768 3.226746 -v -14.480401 18.094936 4.498227 -v -17.624601 17.577406 5.836044 -v -20.613001 17.059875 7.107521 -v -23.133501 16.478931 8.179992 -v -24.874601 15.771271 8.920789 -v -25.524200 14.873382 9.197237 -v -9.287381 19.383459 1.117499 -v -11.965061 18.675686 1.674246 -v -15.139601 18.094822 2.334297 -v -18.479801 17.577259 3.028784 -v -21.654402 17.059696 3.688831 -v -24.332102 16.478724 4.245572 -v -26.181601 15.771045 4.630149 -v -26.871801 14.873149 4.773676 -v -9.397231 19.383400 -0.001664 -v -12.129561 18.675598 -0.001627 -v -15.368901 18.094700 -0.001596 -v -18.777302 17.577099 -0.001569 -v -22.016701 17.059502 -0.001542 -v -24.749001 16.478500 -0.001511 -v -26.636301 15.770802 -0.001474 -v -27.340502 14.872898 -0.001426 -v -9.287381 19.383341 -1.120831 -v -11.965061 18.675510 -1.677504 -v -15.139601 18.094578 -2.337493 -v -18.479801 17.576939 -3.031926 -v -21.654402 17.059307 -3.691919 -v -24.332102 16.478277 -4.248598 -v -26.181601 15.770558 -4.633091 -v -26.871801 14.872647 -4.776524 -v -8.971541 19.383287 -2.157601 -v -11.492111 18.675428 -3.230004 -v -14.480401 18.094463 -4.501423 -v -17.624601 17.576792 -5.839176 -v -20.613001 17.059128 -7.110599 -v -23.133501 16.478069 -8.183008 -v -24.874601 15.770332 -8.923731 -v -25.524200 14.872415 -9.200084 -v -8.470322 19.383238 -3.091381 -v -10.741571 18.675354 -4.628284 -v -13.434291 18.094360 -6.450393 -v -16.267502 17.576658 -8.367577 -v -18.960201 17.058966 -10.189639 -v -21.231501 16.477884 -11.726608 -v -22.800301 15.770129 -12.788171 -v -23.385601 14.872205 -13.184223 -v -7.804311 19.383194 -3.901571 -v -9.744271 18.675291 -5.841494 -v -12.044211 18.094273 -8.141413 -v -14.464201 17.576544 -10.561366 -v -16.764101 17.058825 -12.861238 -v -18.704102 16.477722 -14.801208 -v -20.044001 15.769953 -16.141071 -v -20.544001 14.872023 -16.641024 -v -6.994122 19.383160 -4.567581 -v -8.531052 18.675238 -6.838794 -v -10.353201 18.094198 -9.531484 -v -12.270411 17.576448 -12.364667 -v -14.092502 17.058710 -15.057339 -v -15.629501 16.477589 -17.328608 -v -16.691101 15.769808 -18.897371 -v -17.087200 14.871873 -19.482624 -v -6.060341 19.383133 -5.068801 -v -7.132781 18.675200 -7.589344 -v -8.404231 18.094143 -10.577593 -v -9.742011 17.576378 -13.721867 -v -11.013461 17.058622 -16.710138 -v -12.085901 16.477489 -19.230608 -v -12.826661 15.769698 -20.971672 -v -13.103062 14.871760 -21.621223 -v -5.023561 19.383118 -5.384641 -v -5.580281 18.675175 -8.062284 -v -6.240301 18.094109 -11.236794 -v -6.934752 17.576332 -14.576966 -v -7.594771 17.058567 -17.751537 -v -8.151491 16.477427 -20.429207 -v -8.536021 15.769629 -22.278671 -v -8.679501 14.871690 -22.968822 -v -3.904401 19.383112 -5.494491 -v -3.904401 18.675165 -8.226793 -v -3.904401 18.094097 -11.466093 -v -3.904401 17.576317 -14.874467 -v -3.904401 17.058548 -18.113838 -v -3.904401 16.477404 -20.846107 -v -3.904401 15.769606 -22.733372 -v -3.904401 14.871665 -23.437523 -v -2.785241 19.383118 -5.384641 -v -2.228521 18.675175 -8.062284 -v -1.568501 18.094109 -11.236794 -v -0.874051 17.576332 -14.576966 -v -0.214031 17.058567 -17.751537 -v 0.342689 16.477427 -20.429207 -v 0.727219 15.769629 -22.278671 -v 0.870699 14.871690 -22.968822 -v -1.748461 19.383133 -5.068801 -v -0.676021 18.675200 -7.589344 -v 0.595429 18.094143 -10.577593 -v 1.933209 17.576378 -13.721867 -v 3.204659 17.058622 -16.710138 -v 4.277099 16.477489 -19.230608 -v 5.017859 15.769698 -20.971672 -v 5.294259 14.871760 -21.621223 -v -0.814681 19.383160 -4.567581 -v 0.722249 18.675238 -6.838794 -v 2.544399 18.094198 -9.531484 -v 4.461609 17.576448 -12.364667 -v 6.283699 17.058710 -15.057339 -v 7.820699 16.477589 -17.328608 -v 8.882298 15.769808 -18.897371 -v 9.278399 14.871873 -19.482624 -v -0.004491 19.383194 -3.901571 -v 1.935469 18.675291 -5.841494 -v 4.235409 18.094273 -8.141413 -v 6.655398 17.576544 -10.561366 -v 8.955298 17.058825 -12.861238 -v 10.895299 16.477722 -14.801208 -v 12.235199 15.769953 -16.141071 -v 12.735199 14.872023 -16.641024 -v 0.661519 19.383238 -3.091381 -v 2.932769 18.675354 -4.628284 -v 5.625489 18.094360 -6.450393 -v 8.458699 17.576658 -8.367577 -v 11.151399 17.058966 -10.189639 -v 13.422699 16.477884 -11.726608 -v 14.991499 15.770129 -12.788171 -v 15.576799 14.872205 -13.184223 -v 1.162739 19.383287 -2.157601 -v 3.683309 18.675428 -3.230004 -v 6.671598 18.094463 -4.501423 -v 9.815799 17.576792 -5.839176 -v 12.804199 17.059128 -7.110599 -v 15.324699 16.478069 -8.183008 -v 17.065800 15.770332 -8.923731 -v 17.715399 14.872415 -9.200084 -v 1.478579 19.383341 -1.120831 -v 4.156259 18.675510 -1.677504 -v 7.330799 18.094578 -2.337493 -v 10.670999 17.576939 -3.031926 -v 13.845598 17.059307 -3.691919 -v 16.523298 16.478277 -4.248598 -v 18.372799 15.770558 -4.633091 -v 19.062998 14.872647 -4.776524 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn 0.000000 0.000000 0.000000 -vn -0.935440 -0.352160 -0.030587 -vn -0.911208 -0.352493 -0.213189 -vn -0.953787 -0.231875 -0.191113 -vn -0.972794 -0.231669 -0.000943 -vn -0.972233 0.132720 -0.192738 -vn -0.991181 0.132508 0.001046 -vn -0.918700 0.364634 -0.151763 -vn -0.930763 0.364353 0.030438 -vn -0.851604 -0.352981 -0.387524 -vn -0.897718 -0.232198 -0.374416 -vn -0.915537 0.132883 -0.379650 -vn -0.870845 0.365184 -0.329044 -vn -0.759771 -0.353314 -0.545818 -vn -0.807471 -0.232487 -0.542162 -vn -0.823973 0.132953 -0.550811 -vn -0.789755 0.365578 -0.492585 -vn -0.639610 -0.353415 -0.682640 -vn -0.687043 -0.232591 -0.688384 -vn -0.701570 0.132965 -0.700085 -vn -0.679177 0.365729 -0.636365 -vn -0.495091 -0.353231 -0.793796 -vn -0.540580 -0.232530 -0.808519 -vn -0.552571 0.132875 -0.822806 -vn -0.543047 0.365649 -0.755911 -vn -0.330713 -0.352849 -0.875287 -vn -0.372641 -0.232273 -0.898436 -vn -0.381612 0.132740 -0.914742 -vn -0.385570 0.365323 -0.847275 -vn -0.152518 -0.352382 -0.923345 -vn -0.189228 -0.231981 -0.954137 -vn -0.194821 0.132549 -0.971841 -vn -0.212112 0.364836 -0.906589 -vn 0.026159 -0.356917 -0.933770 -vn -0.001514 -0.234830 -0.972035 -vn -0.002471 0.129038 -0.991637 -vn -0.031107 0.364455 -0.930701 -vn 0.200127 -0.393641 -0.897216 -vn 0.182237 -0.268527 -0.945877 -vn 0.189931 0.090060 -0.977658 -vn 0.151366 0.338314 -0.928780 -vn 0.365325 -0.445736 -0.817225 -vn 0.358027 -0.328907 -0.873863 -vn 0.380490 0.016138 -0.924644 -vn 0.338851 0.265113 -0.902715 -vn 0.516345 -0.479717 -0.709408 -vn 0.518720 -0.375917 -0.767864 -vn 0.557766 -0.044391 -0.828810 -vn 0.520444 0.189795 -0.832536 -vn 0.651932 -0.481944 -0.585418 -vn 0.661827 -0.387887 -0.641504 -vn 0.712330 -0.060029 -0.699273 -vn 0.679495 0.155426 -0.717028 -vn 0.770333 -0.453691 -0.448052 -vn 0.786513 -0.362754 -0.499808 -vn 0.838345 -0.027020 -0.544469 -vn 0.804596 0.177773 -0.566588 -vn 0.863585 -0.407618 -0.296762 -vn 0.886050 -0.312548 -0.342387 -vn 0.928274 0.035978 -0.370152 -vn 0.887373 0.241429 -0.392787 -vn 0.920215 -0.367320 -0.135209 -vn 0.949693 -0.261639 -0.172131 -vn 0.977902 0.096960 -0.185218 -vn 0.926608 0.312299 -0.209445 -vn 0.935320 -0.352105 0.034613 -vn 0.971843 -0.235555 0.005941 -vn 0.991816 0.127658 0.002299 -vn 0.934615 0.354547 -0.028136 -vn 0.911207 -0.352473 0.213226 -vn 0.953787 -0.231854 0.191138 -vn 0.972233 0.132742 0.192724 -vn 0.918704 0.364641 0.151725 -vn 0.851605 -0.352939 0.387561 -vn 0.897718 -0.232160 0.374439 -vn 0.915537 0.132926 0.379636 -vn 0.870843 0.365224 0.329005 -vn 0.759772 -0.353256 0.545855 -vn 0.807471 -0.232429 0.542187 -vn 0.823973 0.133010 0.550796 -vn 0.789752 0.365633 0.492548 -vn 0.639610 -0.353342 0.682677 -vn 0.687043 -0.232518 0.688409 -vn 0.701570 0.133038 0.700071 -vn 0.679177 0.365799 0.636325 -vn 0.495092 -0.353150 0.793832 -vn 0.540580 -0.232443 0.808544 -vn 0.552572 0.132959 0.822792 -vn 0.543049 0.365728 0.755871 -vn 0.330714 -0.352757 0.875323 -vn 0.372642 -0.232179 0.898460 -vn 0.381611 0.132835 0.914728 -vn 0.385571 0.365403 0.847240 -vn 0.152518 -0.352282 0.923383 -vn 0.189233 -0.231852 0.954168 -vn 0.194828 0.132607 0.971832 -vn 0.212113 0.364932 0.906550 -vn -0.030606 -0.352104 0.935460 -vn -0.000955 -0.231616 0.972807 -vn 0.001053 0.132553 0.991175 -vn 0.030456 0.364395 0.930746 -vn -0.213208 -0.352432 0.911227 -vn -0.191125 -0.231815 0.953799 -vn -0.192731 0.132781 0.972226 -vn -0.151744 0.364680 0.918685 -vn -0.387543 -0.352913 0.851623 -vn -0.374427 -0.232131 0.897730 -vn -0.379644 0.132953 0.915529 -vn -0.329025 0.365254 0.870823 -vn -0.545837 -0.353245 0.759789 -vn -0.542175 -0.232415 0.807484 -vn -0.550803 0.133023 0.823966 -vn -0.492565 0.365647 0.789735 -vn -0.682658 -0.353345 0.639629 -vn -0.688396 -0.232517 0.687056 -vn -0.700079 0.133038 0.701563 -vn -0.636346 0.365799 0.679157 -vn -0.793815 -0.353163 0.495110 -vn -0.808531 -0.232459 0.540592 -vn -0.822799 0.132949 0.552564 -vn -0.755892 0.365716 0.543027 -vn -0.875306 -0.352783 0.330731 -vn -0.898448 -0.232209 0.372653 -vn -0.914735 0.132808 0.381604 -vn -0.847255 0.365390 0.385550 -vn -0.923363 -0.352325 0.152536 -vn -0.954156 -0.231891 0.189244 -vn -0.971839 0.132565 0.194820 -vn -0.906570 0.364895 0.212093 -vn -0.360406 0.928973 -0.084354 -vn -0.370286 0.928838 -0.012165 -vn -0.365347 0.928911 -0.060374 -vn -0.370288 0.928839 0.012067 -vn -0.336462 0.929161 -0.153147 -vn -0.345945 0.929102 -0.130734 -vn -0.299958 0.929286 -0.215529 -vn -0.313467 0.929247 -0.195544 -vn -0.252443 0.929325 -0.269493 -vn -0.269439 0.929327 -0.252496 -vn -0.195500 0.929240 -0.313518 -vn -0.215480 0.929281 -0.300008 -vn -0.130689 0.929088 -0.346000 -vn -0.153101 0.929149 -0.336516 -vn -0.060326 0.928894 -0.365399 -vn -0.084307 0.928957 -0.360459 -vn 0.011921 0.927971 -0.372462 -vn -0.012251 0.928816 -0.370337 -vn 0.088387 0.921444 -0.378324 -vn 0.061824 0.925443 -0.373808 -vn 0.171528 0.910579 -0.376063 -vn 0.142667 0.915384 -0.376455 -vn 0.252700 0.902184 -0.349581 -vn 0.227238 0.903908 -0.362372 -vn 0.316752 0.901840 -0.293859 -vn 0.301680 0.898263 -0.319552 -vn 0.354398 0.909314 -0.218060 -vn 0.351805 0.901984 -0.250314 -vn 0.368842 0.919351 -0.136932 -vn 0.374157 0.911970 -0.168280 -vn 0.371542 0.926475 -0.060001 -vn 0.377193 0.922034 -0.087054 -vn 0.370286 0.928834 0.012459 -vn 0.373422 0.927586 -0.011876 -vn 0.360408 0.928982 0.084257 -vn 0.365349 0.928917 0.060277 -vn 0.336463 0.929176 0.153051 -vn 0.345947 0.929115 0.130640 -vn 0.299962 0.929307 0.215434 -vn 0.313468 0.929267 0.195450 -vn 0.252450 0.929352 0.269394 -vn 0.269443 0.929353 0.252397 -vn 0.195501 0.929272 0.313423 -vn 0.215485 0.929311 0.299911 -vn 0.130684 0.929127 0.345898 -vn 0.153098 0.929186 0.336413 -vn 0.060325 0.928934 0.365299 -vn 0.084306 0.928998 0.360355 -vn -0.012116 0.928858 0.370237 -vn 0.012115 0.928859 0.370234 -vn -0.084305 0.928997 0.360358 -vn -0.060325 0.928934 0.365297 -vn -0.153099 0.929186 0.336414 -vn -0.130687 0.929127 0.345896 -vn -0.215482 0.929312 0.299911 -vn -0.195499 0.929274 0.313417 -vn -0.269444 0.929352 0.252398 -vn -0.252449 0.929354 0.269390 -vn -0.313469 0.929267 0.195450 -vn -0.299961 0.929308 0.215431 -vn -0.345947 0.929115 0.130638 -vn -0.336463 0.929176 0.153049 -vn -0.365349 0.928917 0.060277 -vn -0.360408 0.928982 0.084257 -vn 0.270142 0.960748 0.063137 -vn 0.277591 0.960657 0.009033 -vn 0.434329 0.896047 0.091972 -vn 0.444255 0.895885 0.005254 -vn 0.670868 0.728906 0.136502 -vn 0.684945 0.728590 0.002701 -vn 0.802176 0.574804 0.161596 -vn 0.818551 0.574432 0.001641 -vn 0.868410 0.464425 0.173703 -vn 0.885794 0.464079 0.000576 -vn 0.252126 0.960876 0.114672 -vn 0.407361 0.896319 0.175127 -vn 0.630586 0.729405 0.265198 -vn 0.754520 0.575408 0.315604 -vn 0.817201 0.465007 0.340517 -vn 0.224748 0.960956 0.161405 -vn 0.365087 0.896522 0.250918 -vn 0.566449 0.729807 0.382776 -vn 0.678279 0.575849 0.456437 -vn 0.734959 0.465464 0.493131 -vn 0.189167 0.960975 0.201849 -vn 0.309442 0.896582 0.316838 -vn 0.481382 0.729962 0.485209 -vn 0.576844 0.576024 0.579178 -vn 0.625362 0.465625 0.626191 -vn 0.146476 0.960940 0.234819 -vn 0.242203 0.896511 0.370953 -vn 0.378264 0.729816 0.569460 -vn 0.453680 0.575864 0.680113 -vn 0.492149 0.465490 0.735601 -vn 0.097943 0.960838 0.259225 -vn 0.165355 0.896307 0.411451 -vn 0.260133 0.729443 0.632648 -vn 0.312525 0.575412 0.755797 -vn 0.339411 0.465064 0.817628 -vn 0.045222 0.960716 0.273825 -vn 0.081524 0.896045 0.436415 -vn 0.131104 0.728927 0.671920 -vn 0.158300 0.574843 0.802805 -vn 0.172529 0.464481 0.868614 -vn -0.009013 0.960453 0.278297 -vn -0.005245 0.895770 0.444487 -vn -0.002714 0.728550 0.684987 -vn -0.001668 0.574462 0.818530 -vn -0.000600 0.464127 0.885768 -vn -0.064578 0.958916 0.276242 -vn -0.092731 0.894238 0.437881 -vn -0.136813 0.727477 0.672354 -vn -0.161679 0.574380 0.802464 -vn -0.173731 0.464413 0.868411 -vn -0.120844 0.956566 0.265288 -vn -0.179177 0.891153 0.416824 -vn -0.266998 0.724966 0.634931 -vn -0.316020 0.573906 0.755488 -vn -0.340574 0.464846 0.817268 -vn -0.173585 0.954901 0.240898 -vn -0.260030 0.888442 0.378228 -vn -0.387000 0.722688 0.572672 -vn -0.457426 0.573362 0.679719 -vn -0.493246 0.465165 0.735072 -vn -0.217282 0.954861 0.202554 -vn -0.329676 0.887612 0.321651 -vn -0.491341 0.721883 0.487307 -vn -0.580643 0.573127 0.578255 -vn -0.626352 0.465256 0.625476 -vn -0.248432 0.956353 0.153851 -vn -0.383658 0.888988 0.250015 -vn -0.575733 0.722831 0.382160 -vn -0.681652 0.573295 0.454625 -vn -0.735778 0.465130 0.492225 -vn -0.267059 0.958482 0.099958 -vn -0.420151 0.891703 0.168340 -vn -0.637175 0.724931 0.261692 -vn -0.756949 0.573690 0.312903 -vn -0.817763 0.464815 0.339427 -vn -0.276039 0.960092 0.045013 -vn -0.439920 0.894304 0.081795 -vn -0.673889 0.727082 0.131244 -vn -0.803360 0.574060 0.158328 -vn -0.868682 0.464362 0.172508 -vn -0.277591 0.960654 -0.009283 -vn -0.444764 0.895631 -0.005468 -vn -0.685258 0.728295 -0.002857 -vn -0.818652 0.574287 -0.001722 -vn -0.885801 0.464066 -0.000626 -vn -0.270140 0.960742 -0.063238 -vn -0.434330 0.896036 -0.092066 -vn -0.670868 0.728891 -0.136579 -vn -0.802176 0.574787 -0.161657 -vn -0.868410 0.464408 -0.173751 -vn -0.252126 0.960864 -0.114771 -vn -0.407361 0.896300 -0.175221 -vn -0.630587 0.729376 -0.265276 -vn -0.754520 0.575374 -0.315664 -vn -0.817198 0.464977 -0.340564 -vn -0.224749 0.960939 -0.161503 -vn -0.365087 0.896496 -0.251009 -vn -0.566449 0.729766 -0.382853 -vn -0.678280 0.575799 -0.456499 -vn -0.734957 0.465416 -0.493180 -vn -0.189169 0.960953 -0.201951 -vn -0.309443 0.896548 -0.316934 -vn -0.481381 0.729911 -0.485286 -vn -0.576844 0.575963 -0.579239 -vn -0.625363 0.465561 -0.626238 -vn -0.146475 0.960915 -0.234920 -vn -0.242204 0.896470 -0.371050 -vn -0.378263 0.729756 -0.569537 -vn -0.453681 0.575794 -0.680173 -vn -0.492146 0.465417 -0.735649 -vn -0.097941 0.960812 -0.259324 -vn -0.165354 0.896263 -0.411546 -vn -0.260132 0.729375 -0.632727 -vn -0.312525 0.575333 -0.755858 -vn -0.339412 0.464976 -0.817678 -vn -0.045221 0.960688 -0.273922 -vn -0.081523 0.895999 -0.436508 -vn -0.131104 0.728856 -0.671997 -vn -0.158300 0.574759 -0.802866 -vn -0.172529 0.464389 -0.868664 -vn 0.009084 0.960642 -0.277639 -vn 0.005301 0.895862 -0.444301 -vn 0.002739 0.728554 -0.684983 -vn 0.001671 0.574389 -0.818581 -vn 0.000600 0.464032 -0.885818 -vn 0.063188 0.960731 -0.270191 -vn 0.092019 0.896019 -0.434377 -vn 0.136540 0.728862 -0.670907 -vn 0.161627 0.574754 -0.802206 -vn 0.173727 0.464371 -0.868434 -vn 0.114720 0.960858 -0.252174 -vn 0.175173 0.896288 -0.407408 -vn 0.265237 0.729358 -0.630624 -vn 0.315634 0.575351 -0.754550 -vn 0.340542 0.464949 -0.817223 -vn 0.161454 0.960936 -0.224797 -vn 0.250962 0.896490 -0.365135 -vn 0.382814 0.729757 -0.566488 -vn 0.456468 0.575787 -0.678311 -vn 0.493156 0.465399 -0.734984 -vn 0.201901 0.960954 -0.189216 -vn 0.316886 0.896549 -0.309489 -vn 0.485247 0.729911 -0.481420 -vn 0.579208 0.575963 -0.576874 -vn 0.626214 0.465561 -0.625388 -vn 0.234868 0.960920 -0.146523 -vn 0.371002 0.896478 -0.242249 -vn 0.569499 0.729767 -0.378302 -vn 0.680143 0.575805 -0.453711 -vn 0.735624 0.465429 -0.492171 -vn 0.259274 0.960820 -0.097992 -vn 0.411498 0.896276 -0.165403 -vn 0.632687 0.729396 -0.260171 -vn 0.755826 0.575357 -0.312555 -vn 0.817653 0.465002 -0.339436 -vn 0.273875 0.960699 -0.045272 -vn 0.436463 0.896017 -0.081571 -vn 0.671960 0.728884 -0.131143 -vn 0.802835 0.574794 -0.158331 -vn 0.868639 0.464426 -0.172553 -vn 0.888208 0.423935 0.177106 -vn 0.905847 0.423605 0.000050 -vn 0.894774 0.409294 0.178490 -vn 0.912544 0.408978 0.000124 -vn 0.905595 0.383714 0.180724 -vn 0.923580 0.383406 0.000193 -vn 0.920334 0.345298 0.183725 -vn 0.938600 0.345008 0.000252 -vn 0.938131 0.291244 0.187317 -vn 0.956723 0.290999 0.000293 -vn 0.957106 0.217778 0.191105 -vn 0.976041 0.217584 0.000293 -vn 0.973517 0.120483 0.194291 -vn 0.992728 0.120379 0.000211 -vn 0.980128 -0.034895 0.195275 -vn 0.999393 -0.034841 -0.000109 -vn 0.835984 0.424492 0.347760 -vn 0.842168 0.409839 0.350407 -vn 0.852369 0.384234 0.354728 -vn 0.866263 0.345790 0.360579 -vn 0.883059 0.291667 0.367609 -vn 0.900976 0.218108 0.375062 -vn 0.916487 0.120681 0.381428 -vn 0.922797 -0.034927 0.383701 -vn 0.752011 0.424902 0.503922 -vn 0.757558 0.410255 0.507736 -vn 0.766743 0.384630 0.513970 -vn 0.779261 0.346150 0.522430 -vn 0.794387 0.291995 0.532623 -vn 0.810544 0.218372 0.543445 -vn 0.824556 0.120831 0.552727 -vn 0.830313 -0.034952 0.556201 -vn 0.640012 0.425053 0.640090 -vn 0.644727 0.410397 0.644904 -vn 0.652525 0.384778 0.652807 -vn 0.663172 0.346291 0.663540 -vn 0.676056 0.292111 0.676476 -vn 0.689814 0.218470 0.690238 -vn 0.701765 0.120907 0.702073 -vn 0.706756 -0.034954 0.706594 -vn 0.503826 0.424916 0.752068 -vn 0.507513 0.410269 0.757700 -vn 0.513641 0.384643 0.766957 -vn 0.521997 0.346169 0.779542 -vn 0.532114 0.292017 0.794720 -vn 0.542948 0.218386 0.810873 -vn 0.552371 0.120872 0.824788 -vn 0.556387 -0.034904 0.830190 -vn 0.347647 0.424513 0.836020 -vn 0.350162 0.409870 0.842255 -vn 0.354350 0.384268 0.852510 -vn 0.360091 0.345814 0.866457 -vn 0.367048 0.291711 0.883278 -vn 0.374506 0.218158 0.901195 -vn 0.381029 0.120741 0.916645 -vn 0.383910 -0.034850 0.922713 -vn 0.176984 0.423974 0.888213 -vn 0.178227 0.409338 0.894806 -vn 0.180324 0.383754 0.905658 -vn 0.183204 0.345344 0.920420 -vn 0.186718 0.291301 0.938232 -vn 0.190511 0.217836 0.957211 -vn 0.193868 0.120556 0.973592 -vn 0.195502 -0.034799 0.980086 -vn -0.000073 0.423652 0.905825 -vn -0.000146 0.409026 0.912523 -vn -0.000213 0.383454 0.923560 -vn -0.000270 0.345057 0.938582 -vn -0.000308 0.291049 0.956708 -vn -0.000304 0.217636 0.976030 -vn -0.000217 0.120431 0.992722 -vn 0.000112 -0.034789 0.999395 -vn -0.177127 0.423971 0.888186 -vn -0.178511 0.409333 0.894752 -vn -0.180743 0.383751 0.905576 -vn -0.183746 0.345332 0.920317 -vn -0.187337 0.291288 0.938113 -vn -0.191117 0.217819 0.957094 -vn -0.194298 0.120524 0.973510 -vn -0.195273 -0.034854 0.980129 -vn -0.347781 0.424516 0.835963 -vn -0.350429 0.409865 0.842146 -vn -0.354749 0.384260 0.852348 -vn -0.360595 0.345806 0.866250 -vn -0.367624 0.291695 0.883044 -vn -0.375078 0.218139 0.900962 -vn -0.381437 0.120714 0.916479 -vn -0.383699 -0.034898 0.922799 -vn -0.503947 0.424917 0.751986 -vn -0.507759 0.410262 0.757539 -vn -0.513992 0.384645 0.766721 -vn -0.522450 0.346162 0.779242 -vn -0.532636 0.292005 0.794375 -vn -0.543454 0.218382 0.810535 -vn -0.552734 0.120845 0.824549 -vn -0.556201 -0.034928 0.830314 -vn -0.640114 0.425055 0.639986 -vn -0.644927 0.410395 0.644705 -vn -0.652828 0.384778 0.652505 -vn -0.663558 0.346291 0.663154 -vn -0.676491 0.292111 0.676040 -vn -0.690247 0.218474 0.689803 -vn -0.702075 0.120899 0.701765 -vn -0.706591 -0.034949 0.706759 -vn -0.752091 0.424904 0.503801 -vn -0.757723 0.410255 0.507491 -vn -0.766977 0.384632 0.513619 -vn -0.779558 0.346159 0.521980 -vn -0.794734 0.291999 0.532103 -vn -0.810884 0.218380 0.542934 -vn -0.824795 0.120858 0.552365 -vn -0.830187 -0.034927 0.556390 -vn -0.836043 0.424488 0.347624 -vn -0.842277 0.409844 0.350140 -vn -0.852531 0.384242 0.354329 -vn -0.866473 0.345798 0.360068 -vn -0.883294 0.291683 0.367032 -vn -0.901208 0.218122 0.374497 -vn -0.916653 0.120717 0.381018 -vn -0.922711 -0.034884 0.383910 -vn -0.888236 0.423936 0.176963 -vn -0.894827 0.409301 0.178206 -vn -0.905678 0.383715 0.180305 -vn -0.920438 0.345307 0.183187 -vn -0.938247 0.291265 0.186699 -vn -0.957222 0.217797 0.190499 -vn -0.973598 0.120510 0.193865 -vn -0.980084 -0.034841 0.195504 -vn -0.905847 0.423605 -0.000095 -vn -0.912544 0.408978 -0.000167 -vn -0.923580 0.383406 -0.000233 -vn -0.938600 0.345007 -0.000288 -vn -0.956724 0.290998 -0.000324 -vn -0.976039 0.217594 -0.000318 -vn -0.992728 0.120379 -0.000223 -vn -0.999393 -0.034851 0.000115 -vn -0.888208 0.423915 -0.177150 -vn -0.894773 0.409276 -0.178533 -vn -0.905596 0.383694 -0.180763 -vn -0.920334 0.345278 -0.183761 -vn -0.938131 0.291223 -0.187348 -vn -0.957106 0.217758 -0.191128 -vn -0.973515 0.120468 -0.194308 -vn -0.980127 -0.034921 -0.195273 -vn -0.835985 0.424454 -0.347804 -vn -0.842168 0.409802 -0.350451 -vn -0.852368 0.384197 -0.354769 -vn -0.866264 0.345750 -0.360615 -vn -0.883059 0.291629 -0.367639 -vn -0.900976 0.218068 -0.375085 -vn -0.916488 0.120641 -0.381440 -vn -0.922797 -0.034967 -0.383697 -vn -0.752008 0.424851 -0.503970 -vn -0.757561 0.410196 -0.507781 -vn -0.766741 0.384578 -0.514012 -vn -0.779260 0.346093 -0.522468 -vn -0.794387 0.291939 -0.532654 -vn -0.810543 0.218315 -0.543468 -vn -0.824556 0.120772 -0.552740 -vn -0.830313 -0.035010 -0.556197 -vn -0.640012 0.424985 -0.640135 -vn -0.644727 0.410327 -0.644949 -vn -0.652525 0.384709 -0.652848 -vn -0.663172 0.346222 -0.663576 -vn -0.676055 0.292041 -0.676507 -vn -0.689814 0.218401 -0.690259 -vn -0.701768 0.120829 -0.702084 -vn -0.706756 -0.035028 -0.706590 -vn -0.503827 0.424837 -0.752112 -vn -0.507516 0.410186 -0.757743 -vn -0.513641 0.384562 -0.766997 -vn -0.521998 0.346091 -0.779576 -vn -0.532119 0.291929 -0.794750 -vn -0.542945 0.218309 -0.810896 -vn -0.552371 0.120784 -0.824801 -vn -0.556388 -0.035000 -0.830185 -vn -0.347645 0.424427 -0.836065 -vn -0.350161 0.409780 -0.842299 -vn -0.354350 0.384178 -0.852551 -vn -0.360088 0.345731 -0.866491 -vn -0.367048 0.291618 -0.883309 -vn -0.374508 0.218055 -0.901219 -vn -0.381025 0.120649 -0.916659 -vn -0.383908 -0.034952 -0.922710 -vn -0.176984 0.423881 -0.888258 -vn -0.178227 0.409244 -0.894849 -vn -0.180324 0.383659 -0.905698 -vn -0.183204 0.345248 -0.920457 -vn -0.186714 0.291206 -0.938263 -vn -0.190509 0.217731 -0.957235 -vn -0.193867 0.120453 -0.973605 -vn -0.195503 -0.034903 -0.980082 -vn 0.000073 0.423557 -0.905869 -vn 0.000146 0.408930 -0.912566 -vn 0.000213 0.383357 -0.923600 -vn 0.000270 0.344959 -0.938618 -vn 0.000309 0.290948 -0.956739 -vn 0.000304 0.217533 -0.976053 -vn 0.000217 0.120327 -0.992734 -vn -0.000111 -0.034893 -0.999391 -vn 0.177127 0.423877 -0.888231 -vn 0.178511 0.409238 -0.894795 -vn 0.180742 0.383656 -0.905616 -vn 0.183743 0.345240 -0.920352 -vn 0.187333 0.291184 -0.938146 -vn 0.191117 0.217718 -0.957117 -vn 0.194297 0.120421 -0.973523 -vn 0.195273 -0.034957 -0.980126 -vn 0.347783 0.424430 -0.836006 -vn 0.350429 0.409776 -0.842189 -vn 0.354748 0.384171 -0.852389 -vn 0.360597 0.345723 -0.866283 -vn 0.367624 0.291601 -0.883075 -vn 0.375074 0.218041 -0.900987 -vn 0.381434 0.120613 -0.916494 -vn 0.383699 -0.034996 -0.922795 -vn 0.503946 0.424838 -0.752031 -vn 0.507760 0.410187 -0.757580 -vn 0.513992 0.384564 -0.766762 -vn 0.522450 0.346080 -0.779279 -vn 0.532639 0.291926 -0.794402 -vn 0.543457 0.218301 -0.810555 -vn 0.552733 0.120758 -0.824562 -vn 0.556199 -0.035025 -0.830311 -vn 0.640110 0.424983 -0.640037 -vn 0.644925 0.410329 -0.644749 -vn 0.652828 0.384709 -0.652545 -vn 0.663558 0.346222 -0.663190 -vn 0.676491 0.292040 -0.676071 -vn 0.690247 0.218401 -0.689826 -vn 0.702078 0.120829 -0.701775 -vn 0.706592 -0.035028 -0.706754 -vn 0.752089 0.424850 -0.503849 -vn 0.757722 0.410199 -0.507537 -vn 0.766977 0.384576 -0.513662 -vn 0.779558 0.346105 -0.522016 -vn 0.794734 0.291943 -0.532134 -vn 0.810884 0.218323 -0.542957 -vn 0.824795 0.120799 -0.552378 -vn 0.830187 -0.034985 -0.556386 -vn 0.836043 0.424453 -0.347667 -vn 0.842277 0.409806 -0.350182 -vn 0.852531 0.384204 -0.354371 -vn 0.866473 0.345757 -0.360106 -vn 0.883294 0.291645 -0.367063 -vn 0.901207 0.218083 -0.374520 -vn 0.916653 0.120677 -0.381031 -vn 0.922711 -0.034925 -0.383906 -vn 0.888236 0.423918 -0.177006 -vn 0.894828 0.409281 -0.178248 -vn 0.905678 0.383697 -0.180344 -vn 0.920439 0.345286 -0.183222 -vn 0.938247 0.291246 -0.186729 -vn 0.957224 0.217772 -0.190520 -vn 0.973599 0.120494 -0.193874 -vn 0.980084 -0.034861 -0.195501 -vn 0.947377 -0.259270 0.187765 -vn 0.965867 -0.259035 -0.001061 -vn 0.864903 -0.471979 0.170816 -vn 0.881787 -0.471644 -0.001543 -vn 0.770508 -0.619024 0.152074 -vn 0.785643 -0.618679 -0.001456 -vn 0.690835 -0.709995 0.136583 -vn 0.704525 -0.709678 -0.001074 -vn 0.640332 -0.757508 0.127106 -vn 0.653161 -0.757219 -0.000502 -vn 0.637133 -0.760138 0.127484 -vn 0.650089 -0.759858 0.000482 -vn 0.751673 -0.641522 0.153093 -vn 0.767373 -0.641193 0.003169 -vn 0.910544 -0.370393 0.183626 -vn 0.928989 -0.370101 0.002055 -vn 0.892069 -0.259638 0.369868 -vn 0.814334 -0.472536 0.337003 -vn 0.725300 -0.619601 0.300057 -vn 0.650127 -0.710540 0.269199 -vn 0.602432 -0.758012 0.249988 -vn 0.599224 -0.760635 0.249729 -vn 0.706638 -0.642065 0.297347 -vn 0.856677 -0.370877 0.358545 -vn 0.802807 -0.259880 0.536622 -vn 0.732840 -0.472950 0.489146 -vn 0.652612 -0.620038 0.435489 -vn 0.584840 -0.710942 0.390543 -vn 0.541781 -0.758389 0.362381 -vn 0.538697 -0.761001 0.361501 -vn 0.634857 -0.642473 0.429168 -vn 0.770257 -0.371218 0.518558 -vn 0.683551 -0.259959 0.682040 -vn 0.624069 -0.473078 0.621880 -vn 0.555729 -0.620183 0.553659 -vn 0.497937 -0.711085 0.496404 -vn 0.461148 -0.758520 0.460424 -vn 0.458300 -0.761125 0.458966 -vn 0.539543 -0.642611 0.544008 -vn 0.655090 -0.371365 0.657985 -vn 0.538403 -0.259836 0.801628 -vn 0.491742 -0.472924 0.731118 -vn 0.437941 -0.620018 0.650988 -vn 0.392351 -0.710933 0.583639 -vn 0.363240 -0.758379 0.541219 -vn 0.360720 -0.760998 0.539224 -vn 0.423916 -0.642466 0.638383 -vn 0.515140 -0.371225 0.772543 -vn 0.371866 -0.259548 0.891263 -vn 0.339901 -0.472486 0.813157 -vn 0.302798 -0.619573 0.724184 -vn 0.271233 -0.710515 0.649308 -vn 0.250954 -0.757996 0.602049 -vn 0.248865 -0.760616 0.599608 -vn 0.291468 -0.642064 0.709084 -vn 0.354731 -0.370899 0.858254 -vn 0.189886 -0.259182 0.946978 -vn 0.173905 -0.471920 0.864320 -vn 0.155003 -0.618977 0.769962 -vn 0.138752 -0.709963 0.690435 -vn 0.128138 -0.757483 0.640156 -vn 0.126562 -0.760115 0.637344 -vn 0.146833 -0.641494 0.752944 -vn 0.179568 -0.370403 0.911349 -vn 0.001072 -0.258989 0.965880 -vn 0.001568 -0.471598 0.881812 -vn 0.001491 -0.618633 0.785678 -vn 0.001112 -0.709640 0.704563 -vn 0.000542 -0.757184 0.653201 -vn -0.000441 -0.759824 0.650129 -vn -0.003136 -0.641157 0.767404 -vn -0.002036 -0.370058 0.929006 -vn -0.187748 -0.259241 0.947388 -vn -0.170791 -0.471943 0.864928 -vn -0.152045 -0.618984 0.770546 -vn -0.136546 -0.709966 0.690872 -vn -0.127067 -0.757480 0.640373 -vn -0.127444 -0.760110 0.637173 -vn -0.153057 -0.641493 0.751705 -vn -0.183605 -0.370363 0.910560 -vn -0.369854 -0.259610 0.892082 -vn -0.336973 -0.472516 0.814357 -vn -0.300024 -0.619575 0.725336 -vn -0.269162 -0.710520 0.650164 -vn -0.249947 -0.757994 0.602471 -vn -0.249689 -0.760616 0.599265 -vn -0.297313 -0.642043 0.706672 -vn -0.358525 -0.370854 0.856695 -vn -0.536609 -0.259866 0.802821 -vn -0.489121 -0.472937 0.732865 -vn -0.435456 -0.620026 0.652645 -vn -0.390505 -0.710931 0.584878 -vn -0.362341 -0.758380 0.541820 -vn -0.361461 -0.760992 0.538737 -vn -0.429134 -0.642463 0.634890 -vn -0.518540 -0.371204 0.770275 -vn -0.682026 -0.259959 0.683565 -vn -0.621855 -0.473078 0.624094 -vn -0.553626 -0.620183 0.555762 -vn -0.496367 -0.711085 0.497974 -vn -0.460385 -0.758519 0.461188 -vn -0.458926 -0.761125 0.458340 -vn -0.543974 -0.642612 0.539576 -vn -0.657966 -0.371366 0.655109 -vn -0.801615 -0.259850 0.538416 -vn -0.731092 -0.472937 0.491766 -vn -0.650955 -0.620029 0.437973 -vn -0.583602 -0.710943 0.392389 -vn -0.541179 -0.758388 0.363280 -vn -0.539184 -0.761007 0.360761 -vn -0.638349 -0.642477 0.423950 -vn -0.772524 -0.371239 0.515159 -vn -0.891250 -0.259571 0.371882 -vn -0.813128 -0.472516 0.339929 -vn -0.724151 -0.619596 0.302831 -vn -0.649271 -0.710535 0.271271 -vn -0.602009 -0.758015 0.250994 -vn -0.599568 -0.760634 0.248906 -vn -0.709051 -0.642085 0.291502 -vn -0.858235 -0.370925 0.354750 -vn -0.946968 -0.259211 0.189898 -vn -0.864296 -0.471955 0.173930 -vn -0.769923 -0.619017 0.155037 -vn -0.690397 -0.709992 0.138789 -vn -0.640116 -0.757510 0.128178 -vn -0.637304 -0.760142 0.126602 -vn -0.752913 -0.641523 0.146867 -vn -0.911331 -0.370437 0.179588 -vn -0.965868 -0.259034 0.001088 -vn -0.881788 -0.471644 0.001593 -vn -0.785643 -0.618679 0.001522 -vn -0.704526 -0.709677 0.001149 -vn -0.653161 -0.757219 0.000582 -vn -0.650089 -0.759858 -0.000401 -vn -0.767373 -0.641193 -0.003102 -vn -0.928989 -0.370102 -0.002016 -vn -0.947378 -0.259288 -0.187738 -vn -0.864904 -0.471997 -0.170766 -vn -0.770507 -0.619042 -0.152009 -vn -0.690835 -0.710009 -0.136508 -vn -0.640332 -0.757522 -0.127027 -vn -0.637132 -0.760153 -0.127403 -vn -0.751673 -0.641538 -0.153025 -vn -0.910542 -0.370417 -0.183586 -vn -0.892068 -0.259677 -0.369840 -vn -0.814334 -0.472571 -0.336953 -vn -0.725300 -0.619633 -0.299992 -vn -0.650127 -0.710568 -0.269125 -vn -0.602431 -0.758039 -0.249907 -vn -0.599223 -0.760663 -0.249649 -vn -0.706638 -0.642096 -0.297280 -vn -0.856676 -0.370917 -0.358506 -vn -0.802807 -0.259936 -0.536595 -vn -0.732840 -0.473001 -0.489097 -vn -0.652613 -0.620083 -0.435423 -vn -0.584841 -0.710982 -0.390469 -vn -0.541780 -0.758428 -0.362301 -vn -0.538696 -0.761041 -0.361420 -vn -0.634857 -0.642518 -0.429101 -vn -0.770256 -0.371270 -0.518521 -vn -0.683551 -0.260031 -0.682013 -vn -0.624069 -0.473142 -0.621831 -vn -0.555729 -0.620242 -0.553593 -vn -0.497937 -0.711137 -0.496329 -vn -0.461148 -0.758568 -0.460344 -vn -0.458299 -0.761175 -0.458885 -vn -0.539543 -0.642667 -0.543941 -vn -0.655090 -0.371433 -0.657947 -vn -0.538403 -0.259920 -0.801601 -vn -0.491742 -0.473000 -0.731068 -vn -0.437941 -0.620087 -0.650923 -vn -0.392351 -0.710994 -0.583565 -vn -0.363240 -0.758436 -0.541139 -vn -0.360720 -0.761056 -0.539142 -vn -0.423916 -0.642533 -0.638316 -vn -0.515139 -0.371306 -0.772505 -vn -0.371869 -0.259636 -0.891237 -vn -0.339905 -0.472575 -0.813104 -vn -0.302798 -0.619649 -0.724119 -vn -0.271234 -0.710583 -0.649233 -vn -0.250954 -0.758060 -0.601969 -vn -0.248865 -0.760681 -0.599526 -vn -0.291469 -0.642138 -0.709017 -vn -0.354731 -0.370988 -0.858215 -vn -0.189885 -0.259271 -0.946954 -vn -0.173905 -0.472009 -0.864271 -vn -0.155004 -0.619066 -0.769890 -vn -0.138752 -0.710036 -0.690360 -vn -0.128138 -0.757551 -0.640076 -vn -0.126562 -0.760183 -0.637262 -vn -0.146833 -0.641569 -0.752881 -vn -0.179569 -0.370495 -0.911311 -vn -0.001074 -0.259085 -0.965854 -vn -0.001568 -0.471690 -0.881763 -vn -0.001489 -0.618720 -0.785610 -vn -0.001112 -0.709715 -0.704489 -vn -0.000542 -0.757253 -0.653121 -vn 0.000441 -0.759894 -0.650047 -vn 0.003136 -0.641233 -0.767340 -vn 0.002036 -0.370150 -0.928970 -vn 0.187751 -0.259329 -0.947364 -vn 0.170791 -0.472033 -0.864879 -vn 0.152042 -0.619073 -0.770475 -vn 0.136546 -0.710038 -0.690797 -vn 0.127066 -0.757549 -0.640292 -vn 0.127444 -0.760179 -0.637091 -vn 0.153059 -0.641569 -0.751639 -vn 0.183606 -0.370453 -0.910524 -vn 0.369854 -0.259704 -0.892055 -vn 0.336978 -0.472595 -0.814309 -vn 0.300024 -0.619655 -0.725268 -vn 0.269162 -0.710588 -0.650090 -vn 0.249947 -0.758057 -0.602391 -vn 0.249688 -0.760681 -0.599183 -vn 0.297313 -0.642117 -0.706604 -vn 0.358527 -0.370941 -0.856657 -vn 0.536608 -0.259950 -0.802793 -vn 0.489122 -0.473013 -0.732815 -vn 0.435456 -0.620095 -0.652580 -vn 0.390506 -0.710993 -0.584803 -vn 0.362341 -0.758437 -0.541741 -vn 0.361460 -0.761050 -0.538656 -vn 0.429134 -0.642529 -0.634824 -vn 0.518540 -0.371284 -0.770237 -vn 0.682026 -0.260031 -0.683538 -vn 0.621855 -0.473142 -0.624045 -vn 0.553626 -0.620241 -0.555697 -vn 0.496366 -0.711138 -0.497899 -vn 0.460384 -0.758568 -0.461108 -vn 0.458925 -0.761175 -0.458259 -vn 0.543974 -0.642667 -0.539510 -vn 0.657966 -0.371434 -0.655071 -vn 0.801615 -0.259906 -0.538389 -vn 0.731093 -0.472988 -0.491717 -vn 0.650955 -0.620075 -0.437908 -vn 0.583602 -0.710984 -0.392314 -vn 0.541179 -0.758427 -0.363200 -vn 0.539183 -0.761047 -0.360680 -vn 0.638349 -0.642522 -0.423883 -vn 0.772524 -0.371293 -0.515120 -vn 0.891251 -0.259608 -0.371855 -vn 0.813128 -0.472551 -0.339880 -vn 0.724151 -0.619627 -0.302766 -vn 0.649271 -0.710563 -0.271196 -vn 0.602009 -0.758042 -0.250914 -vn 0.599566 -0.760662 -0.248825 -vn 0.709051 -0.642115 -0.291435 -vn 0.858235 -0.370961 -0.354712 -vn 0.946968 -0.259231 -0.189871 -vn 0.864296 -0.471973 -0.173880 -vn 0.769923 -0.619034 -0.154971 -vn 0.690397 -0.710007 -0.138714 -vn 0.640116 -0.757524 -0.128098 -vn 0.637303 -0.760156 -0.126522 -vn 0.752913 -0.641538 -0.146800 -vn 0.911332 -0.370454 -0.179550 -vn 0.964663 -0.209837 0.159355 -vn 0.977248 -0.209679 -0.031962 -vn 0.914551 -0.210214 0.345552 -vn 0.829488 -0.210458 0.517355 -vn 0.713372 -0.210604 0.668391 -vn 0.570377 -0.210515 0.793948 -vn 0.404939 -0.210299 0.889831 -vn 0.222750 -0.209963 0.951997 -vn 0.031973 -0.209627 0.977259 -vn -0.159344 -0.209796 0.964674 -vn -0.345540 -0.210189 0.914562 -vn -0.517346 -0.210444 0.829498 -vn -0.668381 -0.210602 0.713382 -vn -0.793937 -0.210530 0.570387 -vn -0.889819 -0.210326 0.404952 -vn -0.951986 -0.209999 0.222762 -vn -0.977248 -0.209676 0.031985 -vn -0.964663 -0.209856 -0.159331 -vn -0.914549 -0.210260 -0.345529 -vn -0.829487 -0.210516 -0.517334 -vn -0.713371 -0.210672 -0.668371 -vn -0.570377 -0.210601 -0.793925 -vn -0.404938 -0.210392 -0.889809 -vn -0.222750 -0.210063 -0.951975 -vn -0.031972 -0.209731 -0.977236 -vn 0.159342 -0.209898 -0.964652 -vn 0.345541 -0.210284 -0.914539 -vn 0.517346 -0.210529 -0.829476 -vn 0.668380 -0.210677 -0.713360 -vn 0.793936 -0.210590 -0.570366 -vn 0.889820 -0.210366 -0.404928 -vn 0.951986 -0.210021 -0.222739 -vn 0.677217 -0.718515 0.158472 -vn 0.695547 -0.718119 0.022797 -vn 0.530580 -0.841704 0.100097 -vn 0.540210 -0.841513 -0.005481 -vn 0.273421 -0.960509 0.051615 -vn 0.278439 -0.960450 -0.002787 -vn 0.144899 -0.989065 0.027461 -vn 0.147582 -0.989049 -0.001371 -vn 0.078407 -0.996811 0.014863 -vn 0.079856 -0.996806 -0.000737 -vn 0.040266 -0.999160 0.007581 -vn 0.040994 -0.999159 -0.000428 -vn 0.018354 -0.999826 0.003179 -vn 0.018624 -0.999826 -0.000464 -vn 0.000000 -1.000000 0.000052 -vn 0.632536 -0.719047 0.287869 -vn 0.500143 -0.842047 0.202022 -vn 0.257629 -0.960620 0.104099 -vn 0.136498 -0.989098 0.055267 -vn 0.073864 -0.996820 0.029909 -vn 0.037947 -0.999162 0.015310 -vn 0.017357 -0.999827 0.006708 -vn 0.564082 -0.719422 0.405270 -vn 0.450801 -0.842317 0.295434 -vn 0.232133 -0.960707 0.152171 -vn 0.122965 -0.989122 0.080731 -vn 0.066543 -0.996827 0.043688 -vn 0.034201 -0.999164 0.022391 -vn 0.015704 -0.999827 0.009956 -vn 0.474820 -0.719500 0.506819 -vn 0.384860 -0.842408 0.377136 -vn 0.198148 -0.960738 0.194218 -vn 0.104939 -0.989131 0.102995 -vn 0.056792 -0.996829 0.055738 -vn 0.029206 -0.999165 0.028585 -vn 0.013477 -0.999827 0.012807 -vn 0.367606 -0.719305 0.589463 -vn 0.304541 -0.842323 0.444687 -vn 0.156804 -0.960709 0.229021 -vn 0.083023 -0.989122 0.121430 -vn 0.044938 -0.996826 0.065714 -vn 0.023130 -0.999164 0.033717 -vn 0.010753 -0.999827 0.015180 -vn 0.245671 -0.718837 0.650323 -vn 0.212224 -0.842056 0.495885 -vn 0.109295 -0.960624 0.255453 -vn 0.057844 -0.989097 0.135432 -vn 0.031317 -0.996819 0.073295 -vn 0.016145 -0.999162 0.037622 -vn 0.007610 -0.999826 0.017003 -vn 0.113359 -0.718294 0.686443 -vn 0.111002 -0.841701 0.528411 -vn 0.057180 -0.960508 0.272313 -vn 0.030224 -0.989063 0.144367 -vn 0.016374 -0.996808 0.078135 -vn 0.008480 -0.999159 0.040121 -vn 0.004147 -0.999826 0.018194 -vn -0.022759 -0.718075 0.695593 -vn 0.005525 -0.841481 0.540259 -vn 0.002838 -0.960435 0.278489 -vn 0.001423 -0.989041 0.147634 -vn 0.000791 -0.996802 0.079908 -vn 0.000481 -0.999157 0.041047 -vn 0.000516 -0.999825 0.018677 -vn -0.158436 -0.718479 0.677263 -vn -0.100053 -0.841678 0.530629 -vn -0.051564 -0.960497 0.273470 -vn -0.027409 -0.989059 0.144950 -vn -0.014810 -0.996807 0.078460 -vn -0.007528 -0.999159 0.040318 -vn -0.003126 -0.999826 0.018407 -vn -0.287830 -0.719028 0.632576 -vn -0.201979 -0.842030 0.500190 -vn -0.104048 -0.960612 0.257679 -vn -0.055214 -0.989093 0.136550 -vn -0.029856 -0.996817 0.073916 -vn -0.015257 -0.999161 0.037999 -vn -0.006656 -0.999826 0.017409 -vn -0.405232 -0.719412 0.564121 -vn -0.295390 -0.842309 0.450845 -vn -0.152120 -0.960703 0.232183 -vn -0.080679 -0.989120 0.123017 -vn -0.043635 -0.996826 0.066596 -vn -0.022337 -0.999163 0.034254 -vn -0.009903 -0.999827 0.015756 -vn -0.506780 -0.719502 0.474859 -vn -0.377091 -0.842408 0.384904 -vn -0.194168 -0.960737 0.198198 -vn -0.102942 -0.989131 0.104991 -vn -0.055685 -0.996829 0.056845 -vn -0.028533 -0.999165 0.029259 -vn -0.012753 -0.999827 0.013531 -vn -0.589426 -0.719315 0.367645 -vn -0.444642 -0.842331 0.304586 -vn -0.228972 -0.960713 0.156855 -vn -0.121378 -0.989124 0.083075 -vn -0.065661 -0.996827 0.044990 -vn -0.033665 -0.999164 0.023183 -vn -0.015128 -0.999827 0.010807 -vn -0.650284 -0.718859 0.245709 -vn -0.495843 -0.842070 0.212269 -vn -0.255403 -0.960632 0.109346 -vn -0.135380 -0.989101 0.057896 -vn -0.073243 -0.996821 0.031369 -vn -0.037569 -0.999163 0.016198 -vn -0.016951 -0.999827 0.007662 -vn -0.686396 -0.718333 0.113395 -vn -0.528364 -0.841724 0.111046 -vn -0.272263 -0.960519 0.057231 -vn -0.144314 -0.989069 0.030276 -vn -0.078083 -0.996812 0.016426 -vn -0.040068 -0.999161 0.008532 -vn -0.018142 -0.999827 0.004200 -vn -0.695546 -0.718122 -0.022722 -vn -0.540209 -0.841512 0.005570 -vn -0.278439 -0.960450 0.002888 -vn -0.147582 -0.989049 0.001475 -vn -0.079856 -0.996806 0.000844 -vn -0.040994 -0.999159 0.000534 -vn -0.018624 -0.999826 0.000569 -vn -0.677219 -0.718529 -0.158399 -vn -0.530581 -0.841714 -0.100008 -vn -0.273421 -0.960514 -0.051514 -vn -0.144899 -0.989068 -0.027357 -vn -0.078407 -0.996812 -0.014758 -vn -0.040265 -0.999161 -0.007476 -vn -0.018354 -0.999827 -0.003073 -vn -0.632535 -0.719079 -0.287794 -vn -0.500143 -0.842069 -0.201934 -vn -0.257629 -0.960631 -0.103998 -vn -0.136498 -0.989103 -0.055162 -vn -0.073864 -0.996823 -0.029803 -vn -0.037947 -0.999164 -0.015205 -vn -0.017356 -0.999828 -0.006604 -vn -0.564083 -0.719464 -0.405194 -vn -0.450800 -0.842348 -0.295345 -vn -0.232134 -0.960723 -0.152070 -vn -0.122965 -0.989130 -0.080627 -vn -0.066543 -0.996831 -0.043583 -vn -0.034201 -0.999167 -0.022284 -vn -0.015704 -0.999828 -0.009849 -vn -0.474821 -0.719554 -0.506742 -vn -0.384860 -0.842448 -0.377047 -vn -0.198148 -0.960758 -0.194117 -vn -0.104939 -0.989142 -0.102891 -vn -0.056793 -0.996835 -0.055633 -vn -0.029206 -0.999168 -0.028481 -vn -0.013477 -0.999829 -0.012701 -vn -0.367606 -0.719367 -0.589387 -vn -0.304542 -0.842370 -0.444598 -vn -0.156804 -0.960733 -0.228922 -vn -0.083023 -0.989135 -0.121326 -vn -0.044938 -0.996833 -0.065609 -vn -0.023130 -0.999167 -0.033612 -vn -0.010753 -0.999829 -0.015076 -vn -0.245670 -0.718908 -0.650244 -vn -0.212224 -0.842107 -0.495799 -vn -0.109295 -0.960651 -0.255352 -vn -0.057844 -0.989111 -0.135328 -vn -0.031316 -0.996826 -0.073190 -vn -0.016146 -0.999166 -0.037516 -vn -0.007610 -0.999828 -0.016898 -vn -0.113358 -0.718377 -0.686356 -vn -0.111002 -0.841759 -0.528319 -vn -0.057181 -0.960537 -0.272213 -vn -0.030224 -0.989078 -0.144262 -vn -0.016373 -0.996817 -0.078030 -vn -0.008479 -0.999163 -0.040015 -vn -0.004147 -0.999828 -0.018089 -vn 0.022759 -0.718156 -0.695510 -vn -0.005525 -0.841541 -0.540165 -vn -0.002838 -0.960464 -0.278389 -vn -0.001423 -0.989057 -0.147530 -vn -0.000791 -0.996810 -0.079803 -vn -0.000481 -0.999161 -0.040942 -vn -0.000516 -0.999827 -0.018571 -vn 0.158435 -0.718557 -0.677181 -vn 0.100053 -0.841737 -0.530536 -vn 0.051565 -0.960526 -0.273371 -vn 0.027409 -0.989074 -0.144847 -vn 0.014810 -0.996816 -0.078354 -vn 0.007529 -0.999163 -0.040213 -vn 0.003125 -0.999828 -0.018301 -vn 0.287830 -0.719097 -0.632498 -vn 0.201978 -0.842085 -0.500098 -vn 0.104049 -0.960639 -0.257578 -vn 0.055214 -0.989107 -0.136446 -vn 0.029856 -0.996825 -0.073811 -vn 0.015257 -0.999165 -0.037894 -vn 0.006656 -0.999828 -0.017304 -vn 0.405233 -0.719472 -0.564044 -vn 0.295389 -0.842356 -0.450757 -vn 0.152121 -0.960727 -0.232083 -vn 0.080679 -0.989133 -0.122913 -vn 0.043635 -0.996832 -0.066491 -vn 0.022337 -0.999167 -0.034149 -vn 0.009903 -0.999828 -0.015652 -vn 0.506781 -0.719552 -0.474782 -vn 0.377092 -0.842448 -0.384816 -vn 0.194167 -0.960758 -0.198098 -vn 0.102943 -0.989142 -0.104886 -vn 0.055685 -0.996835 -0.056740 -vn 0.028532 -0.999168 -0.029153 -vn 0.012754 -0.999829 -0.013425 -vn 0.589425 -0.719355 -0.367569 -vn 0.444642 -0.842362 -0.304498 -vn 0.228972 -0.960729 -0.156753 -vn 0.121378 -0.989132 -0.082971 -vn 0.065661 -0.996832 -0.044885 -vn 0.033665 -0.999167 -0.023077 -vn 0.015128 -0.999828 -0.010700 -vn 0.650281 -0.718887 -0.245632 -vn 0.495841 -0.842093 -0.212180 -vn 0.255403 -0.960643 -0.109244 -vn 0.135381 -0.989107 -0.057792 -vn 0.073243 -0.996824 -0.031264 -vn 0.037568 -0.999164 -0.016093 -vn 0.016951 -0.999828 -0.007557 -vn 0.686396 -0.718344 -0.113321 -vn 0.528363 -0.841737 -0.110957 -vn 0.272262 -0.960526 -0.057130 -vn 0.144315 -0.989072 -0.030172 -vn 0.078083 -0.996813 -0.016321 -vn 0.040068 -0.999161 -0.008427 -vn 0.018142 -0.999827 -0.004095 -vn 0.475316 0.879191 -0.033128 -vn 0.001783 -0.999464 0.032700 -vn 0.001793 -0.965247 0.261331 -vn 0.007988 -0.975411 0.220247 -vn 0.007979 -0.999968 -0.000097 -vn 0.029459 -0.975197 0.219370 -vn 0.029413 -0.999567 -0.000273 -vn 0.074514 -0.972772 0.219460 -vn 0.074382 -0.997230 -0.000474 -vn 0.158885 -0.961744 0.223168 -vn 0.158866 -0.987300 -0.000550 -vn 0.310920 -0.920814 0.235439 -vn 0.312837 -0.949807 -0.000273 -vn 0.560196 -0.786437 0.260185 -vn 0.572881 -0.819638 0.000330 -vn 0.839028 -0.463925 0.284263 -vn 0.874005 -0.485917 -0.000111 -vn 0.955339 -0.069288 0.287273 -vn 0.997511 -0.070515 -0.000425 -vn 0.001639 -0.832459 0.554084 -vn 0.007382 -0.864765 0.502123 -vn 0.027400 -0.864992 0.501037 -vn 0.069469 -0.861921 0.502261 -vn 0.147369 -0.847177 0.510463 -vn 0.282660 -0.797574 0.532896 -vn 0.488270 -0.659198 0.571884 -vn 0.701177 -0.377918 0.604590 -vn 0.792369 -0.057207 0.607354 -vn 0.001563 -0.760649 0.649162 -vn 0.005184 -0.760811 0.648953 -vn 0.021274 -0.760828 0.648605 -vn 0.053522 -0.666235 0.743819 -vn 0.097050 -0.542554 0.834396 -vn 0.180541 -0.496886 0.848828 -vn 0.296369 -0.393968 0.870031 -vn 0.409704 -0.220686 0.885122 -vn 0.462899 -0.036703 0.885651 -vn -0.000728 0.322723 0.946493 -vn -0.004151 0.323486 0.946224 -vn -0.014363 0.323663 0.946064 -vn -0.034884 0.319071 0.947089 -vn -0.019180 0.062109 0.997885 -vn -0.013157 -0.008301 0.999879 -vn -0.014699 -0.016206 0.999761 -vn -0.009317 -0.019765 0.999761 -vn -0.001174 -0.012693 0.999919 -vn -0.001495 0.634894 0.772598 -vn -0.006622 0.562349 0.826874 -vn -0.023803 0.561936 0.826838 -vn -0.059181 0.555055 0.829706 -vn -0.121937 0.530473 0.838886 -vn -0.219565 0.466904 0.856617 -vn -0.339228 0.340428 0.876945 -vn -0.433225 0.163791 0.886278 -vn -0.465115 0.008328 0.885211 -vn -0.002176 0.893206 0.449643 -vn -0.009797 0.864626 0.502320 -vn -0.036126 0.863806 0.502528 -vn -0.091445 0.856734 0.507586 -vn -0.192620 0.830081 0.523319 -vn -0.358060 0.751194 0.554527 -vn -0.571349 0.568006 0.592393 -vn -0.739665 0.283872 0.610174 -vn -0.794404 0.021656 0.607003 -vn -0.002442 0.983715 0.179720 -vn -0.011067 0.975323 0.220505 -vn -0.041197 0.974466 0.220724 -vn -0.105103 0.968945 0.223829 -vn -0.223980 0.946209 0.233498 -vn -0.423836 0.869641 0.253154 -vn -0.688265 0.670031 0.278118 -vn -0.894896 0.339030 0.290205 -vn -0.957401 0.027548 0.287446 -vn -0.002486 0.999462 -0.032702 -vn -0.011308 0.999936 0.000045 -vn -0.042289 0.999105 0.000065 -vn -0.108225 0.994126 -0.000056 -vn -0.231432 0.972851 -0.000427 -vn -0.440178 0.897910 -0.000918 -vn -0.718601 0.695422 -0.000551 -vn -0.935683 0.352841 0.000648 -vn -0.999571 0.029291 0.000301 -vn -0.002371 0.965259 -0.261283 -vn -0.010806 0.975362 -0.220348 -vn -0.040520 0.974543 -0.220508 -vn -0.103739 0.969088 -0.223843 -vn -0.221384 0.946646 -0.234202 -vn -0.419545 0.871227 -0.254843 -vn -0.683957 0.673965 -0.279238 -vn -0.893723 0.343100 -0.289036 -vn -0.957493 0.030296 -0.286861 -vn -0.001984 0.832464 -0.554075 -vn -0.009115 0.864684 -0.502233 -vn -0.034397 0.863990 -0.502332 -vn -0.088001 0.857227 -0.507363 -vn -0.186261 0.831526 -0.523328 -vn -0.347636 0.755733 -0.554993 -vn -0.559950 0.578771 -0.592857 -vn -0.734778 0.296672 -0.609989 -vn -0.794244 0.030432 -0.606837 -vn -0.001760 0.760632 -0.649181 -vn -0.005933 0.760795 -0.648965 -vn -0.024728 0.760272 -0.649134 -vn -0.062264 0.662558 -0.746419 -vn -0.109982 0.533760 -0.838453 -vn -0.201255 0.476764 -0.855683 -vn -0.318890 0.360739 -0.876457 -vn -0.421524 0.188788 -0.886948 -vn -0.463855 0.025739 -0.885537 -vn -0.062440 0.302587 -0.951074 -vn -0.101145 0.272011 -0.956964 -vn -0.069678 0.119363 -0.990403 -vn 0.008037 0.015049 -0.999854 -vn 0.001159 0.011440 -0.999934 -vn 0.378336 -0.117000 -0.918244 -vn 0.464735 -0.012548 -0.885361 -vn 0.753258 0.007710 -0.657680 -vn 0.001785 -0.995229 -0.097548 -vn 0.010046 -0.995211 -0.097234 -vn 0.034537 -0.994713 -0.096717 -vn 0.084466 -0.991739 -0.096540 -vn 0.177469 -0.979233 -0.098021 -vn 0.345981 -0.932498 -0.103655 -vn 0.622731 -0.773804 -0.115904 -vn 0.908278 -0.398300 -0.128014 -vn 0.989269 -0.067557 -0.129549 -vn 0.942224 0.173810 0.286363 -vn 0.980055 0.197027 0.025946 -vn 0.906108 0.314725 0.282694 -vn 0.945646 0.325196 -0.001291 -vn 0.858393 0.434963 0.271972 -vn 0.894434 0.447193 -0.002629 -vn 0.798718 0.545114 0.254755 -vn 0.829712 0.558180 -0.003677 -vn 0.724398 0.648222 0.234640 -vn 0.749587 0.661894 -0.003986 -vn 0.632943 0.742765 0.218364 -vn 0.652416 0.757854 -0.003225 -vn 0.524026 0.824138 0.214926 -vn 0.538166 0.842838 -0.001152 -vn 0.467561 0.866428 0.175180 -vn 0.782329 0.143944 0.606004 -vn 0.752541 0.266675 0.602134 -vn 0.716682 0.374553 0.588283 -vn 0.674459 0.476781 0.563725 -vn 0.621021 0.575125 0.532508 -vn 0.550807 0.664792 0.504641 -vn 0.461090 0.735987 0.495700 -vn 0.422247 0.790753 0.443191 -vn 0.458383 0.081343 0.885024 -vn 0.440500 0.157205 0.883882 -vn 0.421784 0.226122 0.878048 -vn 0.403217 0.294640 0.866374 -vn 0.380703 0.364498 0.849827 -vn 0.347488 0.430528 0.833005 -vn 0.297646 0.480036 0.825210 -vn 0.297140 0.564757 0.769907 -vn 0.001351 -0.007912 0.999968 -vn 0.001057 -0.008236 0.999966 -vn 0.000333 -0.009622 0.999954 -vn 0.000031 -0.011438 0.999935 -vn 0.000745 -0.012543 0.999921 -vn 0.002777 -0.011146 0.999934 -vn 0.005465 -0.005795 0.999968 -vn 0.051627 0.098812 0.993766 -vn -0.455324 -0.096718 0.885057 -vn -0.433218 -0.179280 0.883279 -vn -0.408042 -0.255211 0.876567 -vn -0.382037 -0.326740 0.864459 -vn -0.353427 -0.393479 0.848683 -vn -0.318803 -0.450640 0.833839 -vn -0.275287 -0.489119 0.827635 -vn -0.219333 -0.431936 0.874828 -vn -0.778917 -0.159117 0.606606 -vn -0.736873 -0.303132 0.604259 -vn -0.681088 -0.430077 0.592581 -vn -0.619182 -0.538897 0.571142 -vn -0.554529 -0.629699 0.544037 -vn -0.488168 -0.701658 0.519006 -vn -0.420540 -0.752721 0.506514 -vn -0.372811 -0.742693 0.556254 -vn -0.938973 -0.189484 0.287099 -vn -0.885683 -0.365618 0.286163 -vn -0.809071 -0.517303 0.278930 -vn -0.721686 -0.639393 0.265229 -vn -0.633097 -0.733207 0.248183 -vn -0.548815 -0.802904 0.232695 -vn -0.471281 -0.852985 0.224299 -vn -0.429740 -0.863533 0.263883 -vn -0.980522 -0.196410 0.000078 -vn -0.924435 -0.381337 0.000965 -vn -0.841685 -0.539965 0.002116 -vn -0.746509 -0.665369 0.002926 -vn -0.650812 -0.759233 0.003080 -vn -0.561608 -0.827400 0.002443 -vn -0.481761 -0.876302 0.001023 -vn -0.443739 -0.895522 0.033718 -vn -0.939734 -0.185941 -0.286927 -vn -0.887674 -0.362290 -0.284221 -vn -0.811830 -0.515269 -0.274645 -vn -0.724356 -0.638886 -0.259100 -vn -0.635015 -0.733773 -0.241522 -vn -0.549725 -0.803823 -0.227313 -vn -0.471226 -0.853559 -0.222222 -vn -0.437015 -0.881160 -0.180485 -vn -0.780707 -0.150456 -0.606515 -vn -0.740729 -0.295103 -0.603518 -vn -0.686243 -0.424276 -0.590813 -vn -0.624479 -0.535897 -0.568190 -vn -0.558938 -0.629048 -0.540266 -vn -0.491008 -0.702141 -0.515664 -vn -0.421607 -0.752804 -0.505503 -vn -0.398274 -0.798456 -0.451493 -vn -0.457936 -0.082823 -0.885119 -vn -0.436665 -0.166017 -0.884173 -vn -0.411199 -0.242738 -0.878632 -vn -0.384790 -0.315190 -0.867521 -vn -0.356192 -0.383386 -0.852140 -vn -0.321974 -0.442806 -0.836813 -vn -0.279143 -0.484344 -0.829150 -vn -0.284632 -0.565293 -0.774228 -vn -0.001231 0.007448 -0.999971 -vn -0.000255 0.006517 -0.999979 -vn 0.001651 0.006711 -0.999976 -vn 0.003309 0.007990 -0.999963 -vn 0.003746 0.009559 -0.999947 -vn 0.001986 0.009596 -0.999952 -vn -0.002157 0.005765 -0.999981 -vn -0.049663 -0.098260 -0.993921 -vn 0.456536 0.092470 -0.884887 -vn 0.439144 0.166804 -0.882796 -vn 0.421163 0.236103 -0.875715 -vn 0.402306 0.305679 -0.862966 -vn 0.377936 0.375963 -0.846059 -vn 0.341517 0.440738 -0.830131 -vn 0.288063 0.486651 -0.824737 -vn 0.224817 0.431951 -0.873427 -vn 0.781331 0.148949 -0.606082 -vn 0.750792 0.269839 -0.602909 -vn 0.713793 0.376991 -0.590235 -vn 0.670173 0.478693 -0.567205 -vn 0.615426 0.576636 -0.537347 -vn 0.544335 0.666388 -0.509534 -vn 0.454210 0.738519 -0.498280 -vn 0.390247 0.738176 -0.550276 -vn 0.933835 0.213685 -0.286862 -vn 0.905291 0.314851 -0.285163 -vn 0.856812 0.434786 -0.277190 -vn 0.796474 0.544823 -0.262293 -vn 0.721674 0.648107 -0.243196 -vn 0.629960 0.743141 -0.225593 -vn 0.520820 0.825435 -0.217725 -vn 0.456575 0.851372 -0.258273 -vn 0.000686 -0.322637 0.946522 -vn 0.003897 -0.323446 0.946239 -vn 0.013468 -0.323971 0.945971 -vn 0.029142 -0.318723 0.947400 -vn 0.000710 -0.322492 0.946572 -vn 0.002352 -0.322662 0.946511 -vn 0.009669 -0.322606 0.946484 -vn 0.025421 -0.319236 0.947334 -vn 0.041200 -0.310575 0.949656 -vn -0.000728 0.322628 -0.946526 -vn -0.004163 0.323358 -0.946268 -vn -0.014477 0.323423 -0.946144 -vn -0.030300 0.317993 -0.947609 -vn 0.000232 -0.113012 -0.993594 -vn 0.000810 -0.000457 -1.000000 -vn 0.001947 -0.000722 -0.999998 -vn 0.003672 -0.000770 -0.999993 -vn 0.041773 -0.156892 -0.986732 -vn 0.119648 -0.265223 -0.956735 -vn 0.169138 -0.204139 -0.964220 -vn 0.001272 -0.634878 -0.772612 -vn 0.005610 -0.562429 -0.826827 -vn 0.020241 -0.562919 -0.826264 -vn 0.050528 -0.559192 -0.827497 -vn 0.105392 -0.542162 -0.833638 -vn 0.195678 -0.491703 -0.848492 -vn 0.318512 -0.375044 -0.870570 -vn 0.471537 -0.253988 -0.844478 -vn 0.001690 -0.893187 -0.449682 -vn 0.007527 -0.864690 -0.502250 -vn 0.027725 -0.864817 -0.501320 -vn 0.070087 -0.861739 -0.502487 -vn 0.148764 -0.847046 -0.510277 -vn 0.286748 -0.796752 -0.531942 -vn 0.499111 -0.651697 -0.571120 -vn 0.713084 -0.353733 -0.605297 -vn 0.828304 -0.086086 -0.553626 -vn 0.001713 -0.940241 -0.340506 -vn 0.005690 -0.940302 -0.340295 -vn 0.023554 -0.940221 -0.339750 -vn 0.062588 -0.938096 -0.340674 -vn 0.136375 -0.928168 -0.346275 -vn 0.269118 -0.892195 -0.362717 -vn 0.489302 -0.777067 -0.395918 -vn 0.755282 -0.493134 -0.431704 -vn 0.929279 -0.055888 -0.365125 -vn 0.986522 0.100169 -0.129389 -vn 0.953627 0.096822 -0.284994 -vn -0.106027 0.993098 0.050151 -vn -0.104360 0.913734 0.392682 -vn -0.227054 0.918683 0.323215 -vn -0.247581 0.968862 -0.003204 -vn -0.500604 0.809913 0.305674 -vn -0.543280 0.839548 -0.002443 -vn -0.738172 0.611760 0.284347 -vn -0.788111 0.615532 -0.001267 -vn -0.859181 0.430191 0.277027 -vn -0.908855 0.417106 0.002320 -vn -0.883747 0.357762 0.301659 -vn -0.940512 0.339678 0.007463 -vn -0.842491 0.408072 0.351690 -vn -0.915901 0.401220 0.012129 -vn -0.731153 0.558098 0.392355 -vn -0.811395 0.584396 0.010893 -vn -0.574898 0.723608 0.381947 -vn -0.638425 0.769683 0.001224 -vn -0.082324 0.687969 0.721056 -vn -0.163649 0.735593 0.657360 -vn -0.360639 0.681303 0.636998 -vn -0.556181 0.560610 0.613497 -vn -0.670121 0.434647 0.601680 -vn -0.685800 0.375761 0.623284 -vn -0.627983 0.397527 0.669036 -vn -0.523307 0.478509 0.705109 -vn -0.411083 0.591465 0.693671 -vn -0.028672 0.337043 0.941052 -vn -0.051426 0.416168 0.907832 -vn -0.117010 0.422795 0.898639 -vn -0.209048 0.401899 0.891502 -vn -0.291355 0.361653 0.885618 -vn -0.326255 0.329855 0.885863 -vn -0.310234 0.322816 0.894173 -vn -0.264574 0.332603 0.905194 -vn -0.213353 0.384050 0.898324 -vn 0.052110 -0.068860 0.996265 -vn 0.092630 0.020212 0.995495 -vn 0.175126 0.074285 0.981740 -vn 0.216550 0.138893 0.966341 -vn 0.191893 0.182726 0.964255 -vn 0.121239 0.191087 0.974057 -vn 0.049575 0.169094 0.984352 -vn 0.006512 0.111456 0.993748 -vn -0.002572 0.086468 0.996251 -vn 0.144082 -0.458276 0.877054 -vn 0.237810 -0.369765 0.898176 -vn 0.433051 -0.269028 0.860285 -vn 0.565425 -0.131688 0.814219 -vn 0.590834 -0.029037 0.806271 -vn 0.522195 0.000961 0.852825 -vn 0.400923 -0.045336 0.914989 -vn 0.281151 -0.177609 0.943085 -vn 0.212192 -0.291567 0.932718 -vn 0.223455 -0.760179 0.610079 -vn 0.351958 -0.676563 0.646830 -vn 0.605832 -0.525249 0.597562 -vn 0.773056 -0.327601 0.543196 -vn 0.824535 -0.192327 0.532121 -vn 0.790783 -0.170360 0.587911 -vn 0.685758 -0.266117 0.677435 -vn 0.519900 -0.469168 0.713852 -vn 0.380425 -0.634338 0.672973 -vn 0.269212 -0.923612 0.272884 -vn 0.415593 -0.851257 0.320380 -vn 0.689511 -0.664265 0.288666 -vn 0.864741 -0.432236 0.255727 -vn 0.926471 -0.283749 0.247263 -vn 0.920045 -0.276527 0.277579 -vn 0.845724 -0.416616 0.333441 -vn 0.659954 -0.660252 0.358509 -vn 0.462126 -0.825866 0.323085 -vn 0.278792 -0.959035 -0.050279 -vn 0.433030 -0.901375 0.002953 -vn 0.710353 -0.703842 0.002468 -vn 0.886550 -0.462632 0.000373 -vn 0.950419 -0.310949 -0.003671 -vn 0.951156 -0.308599 -0.008268 -vn 0.886624 -0.462379 -0.010140 -vn 0.696937 -0.717128 -0.002590 -vn 0.480552 -0.876965 0.001046 -vn 0.256459 -0.885700 -0.386995 -vn 0.414091 -0.854042 -0.314865 -vn 0.688784 -0.667174 -0.283647 -vn 0.864206 -0.433703 -0.255050 -vn 0.924626 -0.282661 -0.255284 -vn 0.916143 -0.272117 -0.294336 -vn 0.842019 -0.408733 -0.352054 -vn 0.661527 -0.656293 -0.362853 -vn 0.464054 -0.825436 -0.321418 -vn 0.197123 -0.671514 -0.714291 -vn 0.345150 -0.681380 -0.645440 -vn 0.601301 -0.532795 -0.595455 -vn 0.770781 -0.332598 -0.543392 -vn 0.820901 -0.191908 -0.537859 -vn 0.785884 -0.164262 -0.596158 -vn 0.685500 -0.255045 -0.681940 -vn 0.528863 -0.459863 -0.713323 -vn 0.386386 -0.629440 -0.674175 -vn 0.111200 -0.329456 -0.937600 -vn 0.222783 -0.372654 -0.900831 -vn 0.419978 -0.279867 -0.863303 -vn 0.559279 -0.142294 -0.816676 -vn 0.589839 -0.033718 -0.806817 -vn 0.528255 0.001777 -0.849084 -vn 0.416152 -0.040627 -0.908387 -vn 0.299851 -0.168687 -0.938954 -vn 0.221446 -0.281471 -0.933668 -vn 0.023152 0.074121 -0.996980 -vn 0.070667 0.019492 -0.997310 -vn 0.151681 0.062319 -0.986463 -vn 0.204238 0.122210 -0.971263 -vn 0.199072 0.169826 -0.965158 -vn 0.145220 0.185122 -0.971926 -vn 0.078457 0.168447 -0.982583 -vn 0.029858 0.117085 -0.992673 -vn 0.008247 0.093518 -0.995583 -vn -0.046332 0.467819 -0.882609 -vn -0.075240 0.413273 -0.907493 -vn -0.143789 0.409202 -0.901043 -vn -0.224630 0.382701 -0.896148 -vn -0.285317 0.347583 -0.893186 -vn -0.304125 0.325345 -0.895354 -vn -0.284172 0.324478 -0.902197 -vn -0.243300 0.339103 -0.908743 -vn -0.202720 0.387829 -0.899163 -vn -0.087039 0.780413 -0.619177 -vn -0.182827 0.729410 -0.659193 -vn -0.380315 0.668056 -0.639580 -vn -0.567399 0.545649 -0.616705 -vn -0.673272 0.425800 -0.604483 -vn -0.684306 0.374605 -0.625616 -vn -0.620774 0.403827 -0.671985 -vn -0.510726 0.490920 -0.705802 -vn -0.402008 0.596820 -0.694403 -vn -0.102139 0.954656 -0.279641 -vn -0.236975 0.914113 -0.328999 -vn -0.509738 0.802401 -0.310355 -vn -0.742954 0.604604 -0.287183 -vn -0.862537 0.425883 -0.273227 -vn -0.888452 0.356308 -0.289306 -vn -0.847178 0.412667 -0.334658 -vn -0.728847 0.570715 -0.378242 -vn -0.569092 0.728973 -0.380438 -vn -0.452274 0.830440 0.325297 -vn -0.498456 0.866910 -0.002818 -vn -0.353551 0.899372 0.257159 -vn -0.388726 0.921338 -0.005364 -vn -0.223213 0.963356 0.148732 -vn -0.240650 0.970555 -0.010497 -vn 0.012405 0.997803 -0.065077 -vn 0.046568 0.998561 -0.026598 -vn 0.366008 0.810303 -0.457653 -vn 0.242926 0.969421 0.034780 -vn 0.650351 -0.220370 -0.726967 -vn 0.778003 -0.551208 -0.301466 -vn 0.641926 -0.576842 -0.505157 -vn 0.689368 -0.712137 -0.132788 -vn 0.599836 -0.706575 -0.375430 -vn 0.645561 -0.759552 0.079577 -vn -0.333037 0.718123 0.611052 -vn -0.263595 0.832227 0.487766 -vn -0.173192 0.940262 0.293107 -vn -0.023758 0.998447 -0.050386 -vn 0.225016 0.784304 -0.578130 -vn 0.409742 0.168455 -0.896512 -vn 0.413188 -0.325215 -0.850595 -vn 0.428421 -0.515324 -0.742224 -vn -0.180712 0.533889 0.826018 -vn -0.149796 0.724188 0.673136 -vn -0.108435 0.903721 0.414161 -vn -0.040877 0.999145 -0.006235 -vn 0.061652 0.838435 -0.541504 -vn 0.151549 0.393653 -0.906681 -vn 0.185815 -0.034452 -0.981981 -vn 0.224647 -0.250663 -0.941648 -vn -0.001506 0.245390 0.969423 -vn -0.009296 0.545623 0.837979 -vn -0.026342 0.845595 0.533175 -vn -0.040573 0.997976 0.048968 -vn -0.036246 0.885149 -0.463895 -vn -0.019304 0.579127 -0.815009 -vn -0.005850 0.259459 -0.965737 -vn 0.030735 0.055902 -0.997963 -vn 0.204933 -0.181777 0.961748 -vn 0.192223 0.210277 0.958558 -vn 0.106713 0.733626 0.671123 -vn -0.020480 0.993428 0.112608 -vn -0.103276 0.924387 -0.367209 -vn -0.143075 0.735286 -0.662483 -vn -0.165102 0.541098 -0.824593 -vn -0.147060 0.387389 -0.910112 -vn 0.369412 -0.611146 0.700025 -vn 0.431497 -0.317833 0.844270 -vn 0.365055 0.495932 0.787900 -vn 0.039346 0.982540 0.181841 -vn -0.152327 0.955833 -0.251357 -vn -0.233196 0.857305 -0.458963 -vn -0.282494 0.766303 -0.577042 -vn -0.287557 0.680140 -0.674330 -vn 0.434576 -0.840976 0.322341 -vn 0.549000 -0.721348 0.422204 -vn 0.776588 0.115917 0.619252 -vn 0.186106 0.960126 0.208619 -vn -0.183748 0.975586 -0.120289 -vn -0.288103 0.930774 -0.225070 -vn -0.347557 0.894716 -0.280512 -vn -0.366822 0.859595 -0.355721 -vn 0.445538 -0.895242 -0.006129 -vn 0.565434 -0.824694 -0.012815 -vn 0.995431 -0.094540 -0.013388 -vn 0.356146 0.932652 0.057615 -vn -0.193662 0.981013 0.010379 -vn -0.306158 0.951969 0.004762 -vn -0.366582 0.930383 0.001994 -vn -0.390734 0.919264 -0.047743 -vn 0.436753 -0.833015 -0.339606 -vn 0.554791 -0.695425 -0.456717 -vn 0.783899 0.085536 -0.614968 -vn 0.280964 0.944166 -0.172073 -vn -0.180203 0.973149 0.143208 -vn -0.288541 0.927350 0.238258 -vn -0.348830 0.891875 0.287884 -vn -0.378693 0.892717 0.244230 -vn 0.369262 -0.593131 -0.715430 -vn 0.429743 -0.290680 -0.854884 -vn 0.405974 0.429319 -0.806765 -vn 0.093380 0.975169 -0.200810 -vn -0.145135 0.951230 0.272207 -vn -0.231561 0.848176 0.476422 -vn -0.282157 0.756803 0.589607 -vn -0.320101 0.759237 0.566652 -vn 0.205773 -0.175616 -0.962713 -vn 0.198765 0.198989 -0.959633 -vn 0.134018 0.697715 -0.703728 -vn 0.005283 0.991329 -0.131295 -vn -0.093193 0.919087 0.382877 -vn -0.138004 0.721069 0.678981 -vn -0.161337 0.525070 0.835627 -vn -0.198654 0.497359 0.844494 -vn 0.003687 0.236750 -0.971564 -vn -0.000526 0.531019 -0.847360 -vn -0.012242 0.832553 -0.553811 -vn -0.023879 0.997864 -0.060799 -vn -0.023080 0.879670 0.475025 -vn -0.011567 0.563682 0.825911 -vn -0.001095 0.244598 0.969624 -vn -0.029170 0.161268 0.986479 -vn -0.175140 0.525847 -0.832353 -vn -0.142623 0.716257 -0.683107 -vn -0.097890 0.898701 -0.427498 -vn -0.023852 0.999714 -0.001815 -vn 0.081625 0.831282 0.549825 -vn 0.160364 0.380236 0.910881 -vn 0.187892 -0.041850 0.981298 -vn 0.159851 -0.166488 0.973000 -vn -0.328462 0.713969 -0.618353 -vn -0.257420 0.828091 -0.497996 -vn -0.162932 0.937585 -0.307224 -vn -0.000526 0.999341 0.036308 -vn 0.263710 0.770912 0.579785 -vn 0.415816 0.157856 0.895644 -vn 0.409166 -0.323133 0.853327 -vn 0.356642 -0.447739 0.819962 -vn -0.449693 0.829139 -0.332123 -vn -0.349621 0.897585 -0.268525 -vn -0.215590 0.961836 -0.168503 -vn 0.036827 0.998957 0.026978 -vn 0.272927 0.885257 0.376604 -vn 0.544289 0.163320 0.822846 -vn 0.598082 -0.564119 0.569270 -vn 0.542654 -0.662532 0.516312 -vn 0.912912 0.166796 -0.372520 -vn 0.912809 0.167894 -0.372278 -vn 0.912809 0.167894 -0.372278 -vn 0.912706 0.168992 -0.372035 -vn 0.912553 0.169030 0.372392 -vn 0.912825 0.167842 0.372264 -vn 0.912825 0.167842 0.372264 -vn 0.913095 0.166655 0.372135 -vn 0.783156 -0.539468 0.309258 -vn 0.777478 -0.551941 0.301478 -vn 0.777478 -0.551941 0.301478 -vn 0.771606 -0.564278 0.293624 -vn 0.000000 1.000000 -0.000053 -vn 0.205012 0.977639 0.046817 -vn 0.210494 0.977577 0.006031 -vn 0.305793 0.950780 0.050086 -vn 0.309936 0.950704 -0.010103 -vn 0.191502 0.977727 0.085887 -vn 0.289530 0.950968 0.108777 -vn 0.170787 0.977791 0.121478 -vn 0.262233 0.951130 0.163053 -vn 0.143780 0.977809 0.152367 -vn 0.225239 0.951204 0.210901 -vn 0.111383 0.977779 0.177602 -vn 0.179884 0.951171 0.250830 -vn 0.074602 0.977707 0.196273 -vn 0.127576 0.951040 0.281509 -vn 0.034790 0.977623 0.207470 -vn 0.070107 0.950854 0.301598 -vn -0.006080 0.977587 0.210443 -vn 0.010053 0.950721 0.309885 -vn -0.046868 0.977647 0.204961 -vn -0.050135 0.950793 0.305745 -vn -0.085937 0.977733 0.191450 -vn -0.108827 0.950977 0.289480 -vn -0.121529 0.977793 0.170737 -vn -0.163103 0.951135 0.262183 -vn -0.152420 0.977809 0.143729 -vn -0.210952 0.951204 0.225189 -vn -0.177653 0.977775 0.111333 -vn -0.250880 0.951167 0.179833 -vn -0.196324 0.977701 0.074551 -vn -0.281559 0.951032 0.127526 -vn -0.207521 0.977613 0.034739 -vn -0.301648 0.950842 0.070057 -vn -0.210494 0.977576 -0.006131 -vn -0.309935 0.950705 0.010004 -vn -0.205013 0.977634 -0.046920 -vn -0.305794 0.950774 -0.050185 -vn -0.191502 0.977718 -0.085988 -vn -0.289531 0.950956 -0.108878 -vn -0.170788 0.977778 -0.121579 -vn -0.262234 0.951113 -0.163151 -vn -0.143780 0.977793 -0.152471 -vn -0.225239 0.951181 -0.211002 -vn -0.111382 0.977760 -0.177706 -vn -0.179884 0.951145 -0.250930 -vn -0.074601 0.977686 -0.196377 -vn -0.127576 0.951010 -0.281610 -vn -0.034792 0.977601 -0.207573 -vn -0.070108 0.950822 -0.301698 -vn 0.006080 0.977565 -0.210545 -vn -0.010055 0.950688 -0.309986 -vn 0.046869 0.977626 -0.205064 -vn 0.050137 0.950761 -0.305843 -vn 0.085937 0.977712 -0.191555 -vn 0.108828 0.950946 -0.289582 -vn 0.121528 0.977775 -0.170840 -vn 0.163103 0.951107 -0.262285 -vn 0.152419 0.977794 -0.143833 -vn 0.210951 0.951180 -0.225291 -vn 0.177654 0.977764 -0.111434 -vn 0.250880 0.951148 -0.179936 -vn 0.196325 0.977693 -0.074652 -vn 0.281560 0.951019 -0.127623 -vn 0.207522 0.977610 -0.034843 -vn 0.301649 0.950834 -0.070159 -vn 0.904021 0.372257 0.210166 -vn 0.927820 0.371813 0.030085 -vn 0.915968 0.372064 0.150236 -vn 0.927820 0.371810 -0.030118 -vn 0.845146 0.372873 0.383006 -vn 0.868601 0.372678 0.326562 -vn 0.753916 0.373313 0.540599 -vn 0.787781 0.373197 0.490026 -vn 0.634137 0.373439 0.677062 -vn 0.677083 0.373436 0.634116 -vn 0.490043 0.373212 0.787763 -vn 0.540626 0.373324 0.753892 -vn 0.326575 0.372701 0.868587 -vn 0.383036 0.372893 0.845124 -vn 0.150245 0.372103 0.915951 -vn 0.210193 0.372290 0.904001 -vn -0.030104 0.371859 0.927801 -vn 0.030099 0.371860 0.927801 -vn -0.210189 0.372290 0.904003 -vn -0.150258 0.372103 0.915949 -vn -0.383024 0.372892 0.845130 -vn -0.326582 0.372700 0.868584 -vn -0.540619 0.373324 0.753897 -vn -0.490043 0.373210 0.787764 -vn -0.677083 0.373436 0.634117 -vn -0.634136 0.373439 0.677063 -vn -0.787781 0.373199 0.490024 -vn -0.753910 0.373313 0.540608 -vn -0.868605 0.372680 0.326551 -vn -0.845142 0.372875 0.383014 -vn -0.915970 0.372064 0.150226 -vn -0.904020 0.372259 0.210170 -vn -0.927820 0.371810 -0.030123 -vn -0.927820 0.371813 0.030079 -vn -0.904021 0.372236 -0.210205 -vn -0.915968 0.372048 -0.150275 -vn -0.845145 0.372835 -0.383045 -vn -0.868601 0.372645 -0.326601 -vn -0.753916 0.373260 -0.540636 -vn -0.787779 0.373150 -0.490064 -vn -0.634136 0.373370 -0.677101 -vn -0.677085 0.373372 -0.634153 -vn -0.490039 0.373135 -0.787802 -vn -0.540623 0.373249 -0.753931 -vn -0.326574 0.372613 -0.868625 -vn -0.383032 0.372812 -0.845161 -vn -0.150248 0.371999 -0.915992 -vn -0.210194 0.372194 -0.904041 -vn 0.030104 0.371754 -0.927843 -vn -0.030099 0.371754 -0.927843 -vn 0.210189 0.372194 -0.904042 -vn 0.150256 0.371999 -0.915991 -vn 0.383025 0.372811 -0.845165 -vn 0.326582 0.372612 -0.868622 -vn 0.540615 0.373249 -0.753936 -vn 0.490043 0.373135 -0.787800 -vn 0.677081 0.373371 -0.634157 -vn 0.634134 0.373369 -0.677104 -vn 0.787781 0.373150 -0.490062 -vn 0.753911 0.373259 -0.540644 -vn 0.868605 0.372645 -0.326592 -vn 0.845141 0.372835 -0.383055 -vn 0.915970 0.372048 -0.150263 -vn 0.904020 0.372236 -0.210210 -vn 0.848541 -0.490953 0.197340 -vn 0.871057 -0.490367 0.028300 -vn 0.797722 -0.582509 0.155959 -vn 0.813154 -0.582045 -0.001996 -vn 0.740404 -0.655851 0.147178 -vn 0.755290 -0.655391 0.000387 -vn 0.835447 -0.523059 0.168635 -vn 0.852587 -0.522578 0.002656 -vn 0.908820 -0.389360 0.149817 -vn 0.920722 -0.389067 -0.029952 -vn 0.793052 -0.491780 0.359474 -vn 0.751201 -0.583337 0.308894 -vn 0.696579 -0.656688 0.289030 -vn 0.785720 -0.523959 0.328801 -vn 0.861458 -0.390246 0.324960 -vn 0.707305 -0.492370 0.507240 -vn 0.675966 -0.583985 0.449480 -vn 0.626224 -0.657349 0.419208 -vn 0.706070 -0.524682 0.475578 -vn 0.781125 -0.391063 0.486737 -vn 0.594914 -0.492520 0.635217 -vn 0.575344 -0.584215 0.572427 -vn 0.532496 -0.657586 0.532943 -vn 0.600042 -0.524947 0.603639 -vn 0.671565 -0.391457 0.629096 -vn 0.459801 -0.492184 0.739147 -vn 0.452919 -0.583961 0.673687 -vn 0.418676 -0.657331 0.626599 -vn 0.471325 -0.524674 0.708921 -vn 0.536740 -0.391300 0.747526 -vn 0.306514 -0.491459 0.815180 -vn 0.312723 -0.583292 0.749650 -vn 0.288413 -0.656657 0.696864 -vn 0.323996 -0.523940 0.787727 -vn 0.380866 -0.390627 0.838064 -vn 0.141060 -0.490635 0.859871 -vn 0.159991 -0.582455 0.796962 -vn 0.146479 -0.655814 0.740575 -vn 0.163449 -0.523033 0.836493 -vn 0.209355 -0.389683 0.896838 -vn -0.028274 -0.490322 0.871082 -vn 0.002027 -0.582002 0.813185 -vn -0.000354 -0.655351 0.755324 -vn -0.002629 -0.522533 0.852615 -vn 0.029978 -0.389015 0.920743 -vn -0.197321 -0.490918 0.848566 -vn -0.155931 -0.582476 0.797751 -vn -0.147144 -0.655820 0.740438 -vn -0.168608 -0.523023 0.835475 -vn -0.149802 -0.389317 0.908841 -vn -0.359449 -0.491758 0.793076 -vn -0.308866 -0.583313 0.751231 -vn -0.288997 -0.656665 0.696614 -vn -0.328774 -0.523936 0.785747 -vn -0.324940 -0.390217 0.861478 -vn -0.507210 -0.492361 0.707332 -vn -0.449445 -0.583973 0.675999 -vn -0.419171 -0.657338 0.626261 -vn -0.475548 -0.524671 0.706098 -vn -0.486718 -0.391052 0.781143 -vn -0.635191 -0.492521 0.594941 -vn -0.572394 -0.584215 0.575376 -vn -0.532909 -0.657586 0.532531 -vn -0.603612 -0.524946 0.600071 -vn -0.629071 -0.391456 0.671589 -vn -0.739121 -0.492196 0.459829 -vn -0.673655 -0.583973 0.452951 -vn -0.626561 -0.657344 0.418712 -vn -0.708897 -0.524684 0.471350 -vn -0.747508 -0.391307 0.536760 -vn -0.815154 -0.491487 0.306537 -vn -0.749621 -0.583314 0.312751 -vn -0.696827 -0.656680 0.288449 -vn -0.787696 -0.523966 0.324027 -vn -0.838048 -0.390647 0.380881 -vn -0.859846 -0.490674 0.141084 -vn -0.796932 -0.582489 0.160018 -vn -0.740543 -0.655844 0.146508 -vn -0.836464 -0.523071 0.163476 -vn -0.896815 -0.389722 0.209380 -vn -0.871057 -0.490370 -0.028248 -vn -0.813154 -0.582044 0.002058 -vn -0.755290 -0.655391 -0.000318 -vn -0.852587 -0.522578 -0.002602 -vn -0.920722 -0.389064 0.029996 -vn -0.848541 -0.490974 -0.197290 -vn -0.797722 -0.582526 -0.155896 -vn -0.740404 -0.655867 -0.147109 -vn -0.835447 -0.523077 -0.168581 -vn -0.908820 -0.389376 -0.149777 -vn -0.793050 -0.491820 -0.359423 -vn -0.751200 -0.583370 -0.308833 -vn -0.696578 -0.656718 -0.288963 -vn -0.785720 -0.523994 -0.328747 -vn -0.861458 -0.390281 -0.324918 -vn -0.707305 -0.492425 -0.507186 -vn -0.675967 -0.584035 -0.449414 -vn -0.626225 -0.657393 -0.419138 -vn -0.706071 -0.524731 -0.475522 -vn -0.781126 -0.391112 -0.486696 -vn -0.594914 -0.492587 -0.635166 -vn -0.575345 -0.584276 -0.572364 -vn -0.532496 -0.657643 -0.532873 -vn -0.600042 -0.525009 -0.603586 -vn -0.671566 -0.391521 -0.629055 -vn -0.459801 -0.492263 -0.739094 -vn -0.452918 -0.584032 -0.673626 -vn -0.418678 -0.657398 -0.626527 -vn -0.471325 -0.524748 -0.708867 -vn -0.536735 -0.391375 -0.747490 -vn -0.306512 -0.491542 -0.815130 -vn -0.312722 -0.583371 -0.749589 -vn -0.288412 -0.656730 -0.696795 -vn -0.324002 -0.524026 -0.787667 -vn -0.380870 -0.390716 -0.838021 -vn -0.141056 -0.490722 -0.859823 -vn -0.159988 -0.582538 -0.796902 -vn -0.146476 -0.655891 -0.740508 -vn -0.163449 -0.523121 -0.836438 -vn -0.209359 -0.389779 -0.896795 -vn 0.028272 -0.490412 -0.871032 -vn -0.002027 -0.582087 -0.813124 -vn 0.000355 -0.655430 -0.755256 -vn 0.002629 -0.522621 -0.852561 -vn -0.029978 -0.389111 -0.920703 -vn 0.197319 -0.491003 -0.848517 -vn 0.155928 -0.582559 -0.797691 -vn 0.147141 -0.655899 -0.740369 -vn 0.168610 -0.523111 -0.835420 -vn 0.149806 -0.389413 -0.908799 -vn 0.359446 -0.491841 -0.793026 -vn 0.308865 -0.583391 -0.751170 -vn 0.288997 -0.656740 -0.696544 -vn 0.328775 -0.524019 -0.785692 -vn 0.324939 -0.390311 -0.861436 -vn 0.507210 -0.492437 -0.707279 -vn 0.449445 -0.584045 -0.675937 -vn 0.419171 -0.657404 -0.626191 -vn 0.475548 -0.524744 -0.706043 -vn 0.486718 -0.391132 -0.781103 -vn 0.635192 -0.492585 -0.594888 -vn 0.572394 -0.584277 -0.575313 -vn 0.532911 -0.657642 -0.532460 -vn 0.603612 -0.525008 -0.600015 -vn 0.629068 -0.391525 -0.671551 -vn 0.739120 -0.492247 -0.459776 -vn 0.673655 -0.584021 -0.452889 -vn 0.626561 -0.657389 -0.418643 -vn 0.708899 -0.524732 -0.471294 -vn 0.747511 -0.391361 -0.536716 -vn 0.815153 -0.491520 -0.306485 -vn 0.749620 -0.583347 -0.312690 -vn 0.696827 -0.656710 -0.288381 -vn 0.787695 -0.524001 -0.323975 -vn 0.838048 -0.390687 -0.380840 -vn 0.859845 -0.490689 -0.141032 -vn 0.796932 -0.582506 -0.159957 -vn 0.740543 -0.655859 -0.146439 -vn 0.836464 -0.523088 -0.163422 -vn 0.896815 -0.389745 -0.209338 -vn 0.859586 0.469826 0.200938 -vn 0.882460 0.469501 0.028850 -vn 0.871033 0.469708 0.143792 -vn 0.882459 0.469503 -0.028851 -vn 0.803363 0.470235 0.365359 -vn 0.825674 0.470138 0.311822 -vn 0.716716 0.470507 0.514725 -vn 0.748790 0.470456 0.466889 -vn 0.603292 0.470592 0.643880 -vn 0.643926 0.470586 0.603248 -vn 0.466885 0.470480 0.748777 -vn 0.514820 0.470522 0.716638 -vn 0.311765 0.470171 0.825676 -vn 0.365478 0.470266 0.803290 -vn 0.143717 0.469748 0.871024 -vn 0.201008 0.469868 0.859546 -vn -0.028874 0.469546 0.882436 -vn 0.028826 0.469551 0.882435 -vn -0.200964 0.469861 0.859561 -vn -0.143817 0.469746 0.871008 -vn -0.365389 0.470261 0.803334 -vn -0.311848 0.470166 0.825648 -vn -0.514750 0.470520 0.716689 -vn -0.466917 0.470474 0.748761 -vn -0.643901 0.470589 0.603273 -vn -0.603269 0.470589 0.643904 -vn -0.748804 0.470463 0.466859 -vn -0.716662 0.470508 0.514799 -vn -0.825702 0.470145 0.311735 -vn -0.803319 0.470242 0.365448 -vn -0.871048 0.469710 0.143694 -vn -0.859571 0.469833 0.200982 -vn -0.882460 0.469499 -0.028898 -vn -0.882459 0.469506 0.028802 -vn -0.859585 0.469805 -0.200990 -vn -0.871033 0.469693 -0.143842 -vn -0.803364 0.470196 -0.365406 -vn -0.825674 0.470105 -0.311872 -vn -0.716716 0.470451 -0.514776 -vn -0.748790 0.470407 -0.466937 -vn -0.603296 0.470522 -0.643928 -vn -0.643928 0.470519 -0.603299 -vn -0.466878 0.470402 -0.748830 -vn -0.514820 0.470445 -0.716688 -vn -0.311767 0.470083 -0.825726 -vn -0.365471 0.470182 -0.803343 -vn -0.143723 0.469651 -0.871075 -vn -0.201015 0.469774 -0.859596 -vn 0.028874 0.469448 -0.882488 -vn -0.028826 0.469452 -0.882487 -vn 0.200970 0.469768 -0.859610 -vn 0.143818 0.469649 -0.871060 -vn 0.365386 0.470176 -0.803385 -vn 0.311850 0.470078 -0.825698 -vn 0.514750 0.470443 -0.716739 -vn 0.466912 0.470395 -0.748813 -vn 0.643900 0.470523 -0.603325 -vn 0.603272 0.470519 -0.643952 -vn 0.748805 0.470414 -0.466906 -vn 0.716662 0.470452 -0.514850 -vn 0.825702 0.470112 -0.311785 -vn 0.803319 0.470203 -0.365496 -vn 0.871048 0.469695 -0.143743 -vn 0.859570 0.469813 -0.201035 -vn 0.418067 0.903142 0.097746 -vn 0.429538 0.902940 0.014007 -vn 0.390299 0.903407 0.177547 -vn 0.347953 0.903588 0.249916 -vn 0.292863 0.903636 0.312528 -vn 0.226774 0.903543 0.363569 -vn 0.151602 0.903329 0.401265 -vn 0.069979 0.903068 0.423759 -vn -0.014055 0.902962 0.429491 -vn -0.097794 0.903158 0.418022 -vn -0.177595 0.903417 0.390253 -vn -0.249963 0.903593 0.347906 -vn -0.312575 0.903634 0.292818 -vn -0.363616 0.903536 0.226730 -vn -0.401311 0.903316 0.151558 -vn -0.423806 0.903049 0.069931 -vn -0.429538 0.902939 -0.014102 -vn -0.418067 0.903132 -0.097845 -vn -0.390297 0.903389 -0.177643 -vn -0.347951 0.903562 -0.250011 -vn -0.292864 0.903603 -0.312622 -vn -0.226774 0.903506 -0.363663 -vn -0.151602 0.903287 -0.401359 -vn -0.069979 0.903023 -0.423854 -vn 0.014054 0.902917 -0.429585 -vn 0.097795 0.903115 -0.418114 -vn 0.177594 0.903377 -0.390346 -vn 0.249964 0.903556 -0.347999 -vn 0.312575 0.903604 -0.292910 -vn 0.363615 0.903514 -0.226820 -vn 0.401311 0.903301 -0.151648 -vn 0.423806 0.903042 -0.070025 -vn 0.335437 0.939901 0.063773 -vn 0.341697 0.939805 -0.002985 -vn 0.209735 0.976920 0.040491 -vn 0.213792 0.976878 -0.001266 -vn 0.160135 0.986595 0.031415 -vn 0.163339 0.986570 -0.000482 -vn 0.150831 0.988100 0.030134 -vn 0.153961 0.988077 0.000073 -vn 0.179088 0.983156 0.036483 -vn 0.182944 0.983123 0.000769 -vn 0.274199 0.959982 0.057009 -vn 0.280315 0.959905 0.002296 -vn 0.346391 0.936348 0.057146 -vn 0.351086 0.936272 -0.011537 -vn 0.315972 0.940074 0.128154 -vn 0.197413 0.976992 0.080719 -vn 0.150624 0.986638 0.062114 -vn 0.141766 0.988138 0.059036 -vn 0.168192 0.983210 0.070783 -vn 0.257319 0.960102 0.109506 -vn 0.327966 0.936537 0.123842 -vn 0.284609 0.940205 0.187113 -vn 0.177672 0.977047 0.117527 -vn 0.135457 0.986671 0.090182 -vn 0.127385 0.988167 0.085439 -vn 0.150990 0.983249 0.102091 -vn 0.230797 0.960188 0.157389 -vn 0.297138 0.936689 0.185264 -vn 0.242822 0.940256 0.238653 -vn 0.151439 0.977068 0.149683 -vn 0.115342 0.986683 0.114686 -vn 0.108347 0.988178 0.108471 -vn 0.128276 0.983264 0.129375 -vn 0.195834 0.960218 0.199073 -vn 0.255430 0.936752 0.239273 -vn 0.192009 0.940218 0.281288 -vn 0.119583 0.977052 0.176266 -vn 0.090946 0.986673 0.134924 -vn 0.085285 0.988169 0.127470 -vn 0.100789 0.983250 0.151856 -vn 0.153563 0.960188 0.233360 -vn 0.204264 0.936725 0.284291 -vn 0.133636 0.940097 0.313624 -vn 0.083018 0.977001 0.196408 -vn 0.062963 0.986644 0.150233 -vn 0.058856 0.988142 0.141812 -vn 0.069317 0.983212 0.168787 -vn 0.105220 0.960099 0.259112 -vn 0.145129 0.936606 0.318914 -vn 0.069633 0.939929 0.334192 -vn 0.042947 0.976933 0.209184 -vn 0.032320 0.986603 0.159906 -vn 0.029939 0.988106 0.150831 -vn 0.034909 0.983162 0.179373 -vn 0.052418 0.959983 0.275109 -vn 0.079930 0.936426 0.341641 -vn 0.002935 0.939824 0.341647 -vn 0.001215 0.976890 0.213740 -vn 0.000431 0.986578 0.163287 -vn -0.000125 0.988085 0.153909 -vn -0.000821 0.983133 0.182892 -vn -0.002347 0.959920 0.280265 -vn 0.011488 0.936291 0.351037 -vn -0.063822 0.939916 0.335388 -vn -0.040543 0.976929 0.209682 -vn -0.031466 0.986602 0.160084 -vn -0.030186 0.988107 0.150779 -vn -0.036535 0.983164 0.179037 -vn -0.057061 0.959993 0.274150 -vn -0.057197 0.936363 0.346341 -vn -0.128203 0.940083 0.315924 -vn -0.080771 0.976998 0.197361 -vn -0.062166 0.986642 0.150572 -vn -0.059088 0.988142 0.141714 -vn -0.070834 0.983215 0.168140 -vn -0.109557 0.960108 0.257273 -vn -0.123895 0.936545 0.327924 -vn -0.187162 0.940211 0.284560 -vn -0.117579 0.977050 0.177621 -vn -0.090234 0.986673 0.135404 -vn -0.085491 0.988169 0.127332 -vn -0.102142 0.983252 0.150938 -vn -0.157440 0.960192 0.230747 -vn -0.185313 0.936693 0.297093 -vn -0.238702 0.940257 0.242772 -vn -0.149734 0.977068 0.151388 -vn -0.114738 0.986683 0.115289 -vn -0.108523 0.988178 0.108295 -vn -0.129427 0.983264 0.128224 -vn -0.199123 0.960218 0.195784 -vn -0.239322 0.936752 0.255381 -vn -0.281337 0.940213 0.191959 -vn -0.176318 0.977049 0.119532 -vn -0.134976 0.986671 0.090893 -vn -0.127522 0.988167 0.085233 -vn -0.151908 0.983248 0.100737 -vn -0.233408 0.960185 0.153512 -vn -0.284339 0.936721 0.204216 -vn -0.313673 0.940087 0.133587 -vn -0.196460 0.976996 0.082966 -vn -0.150285 0.986639 0.062911 -vn -0.141864 0.988138 0.058804 -vn -0.168838 0.983207 0.069265 -vn -0.259158 0.960092 0.105166 -vn -0.318954 0.936601 0.145076 -vn -0.334241 0.939915 0.069584 -vn -0.209236 0.976924 0.042896 -vn -0.159958 0.986596 0.032268 -vn -0.150883 0.988100 0.029887 -vn -0.179425 0.983154 0.034857 -vn -0.275159 0.959971 0.052367 -vn -0.341686 0.936413 0.079877 -vn -0.341697 0.939806 0.002886 -vn -0.213792 0.976879 0.001164 -vn -0.163339 0.986570 0.000379 -vn -0.153961 0.988077 -0.000178 -vn -0.182944 0.983123 -0.000873 -vn -0.280315 0.959905 -0.002397 -vn -0.351086 0.936273 0.011439 -vn -0.335438 0.939895 -0.063871 -vn -0.209734 0.976915 -0.040594 -vn -0.160136 0.986592 -0.031518 -vn -0.150831 0.988097 -0.030238 -vn -0.179088 0.983152 -0.036587 -vn -0.274198 0.959976 -0.057110 -vn -0.346391 0.936342 -0.057244 -vn -0.315972 0.940060 -0.128253 -vn -0.197413 0.976983 -0.080823 -vn -0.150624 0.986631 -0.062217 -vn -0.141766 0.988132 -0.059140 -vn -0.168192 0.983202 -0.070886 -vn -0.257319 0.960090 -0.109607 -vn -0.327965 0.936524 -0.123940 -vn -0.284608 0.940186 -0.187211 -vn -0.177672 0.977034 -0.117631 -vn -0.135457 0.986661 -0.090286 -vn -0.127385 0.988158 -0.085543 -vn -0.150989 0.983239 -0.102194 -vn -0.230797 0.960172 -0.157490 -vn -0.297138 0.936670 -0.185363 -vn -0.242821 0.940232 -0.238752 -vn -0.151438 0.977052 -0.149787 -vn -0.115342 0.986671 -0.114790 -vn -0.108347 0.988166 -0.108575 -vn -0.128276 0.983250 -0.129478 -vn -0.195834 0.960197 -0.199174 -vn -0.255431 0.936727 -0.239371 -vn -0.192010 0.940188 -0.281386 -vn -0.119584 0.977033 -0.176369 -vn -0.090945 0.986659 -0.135027 -vn -0.085286 0.988155 -0.127574 -vn -0.100789 0.983234 -0.151960 -vn -0.153563 0.960164 -0.233459 -vn -0.204266 0.936696 -0.284388 -vn -0.133635 0.940064 -0.313722 -vn -0.083018 0.976981 -0.196511 -vn -0.062962 0.986628 -0.150336 -vn -0.058855 0.988127 -0.141916 -vn -0.069318 0.983194 -0.168890 -vn -0.105217 0.960073 -0.259209 -vn -0.145126 0.936576 -0.319004 -vn -0.069633 0.939894 -0.334291 -vn -0.042948 0.976910 -0.209288 -vn -0.032320 0.986586 -0.160010 -vn -0.029937 0.988090 -0.150935 -vn -0.034908 0.983143 -0.179477 -vn -0.052417 0.959954 -0.275210 -vn -0.079926 0.936391 -0.341736 -vn -0.002935 0.939788 -0.341747 -vn -0.001215 0.976867 -0.213843 -vn -0.000431 0.986561 -0.163391 -vn 0.000125 0.988069 -0.154013 -vn 0.000821 0.983114 -0.182995 -vn 0.002347 0.959890 -0.280366 -vn -0.011488 0.936254 -0.351136 -vn 0.063822 0.939881 -0.335486 -vn 0.040542 0.976906 -0.209787 -vn 0.031466 0.986585 -0.160187 -vn 0.030184 0.988090 -0.150885 -vn 0.036534 0.983145 -0.179140 -vn 0.057059 0.959964 -0.274249 -vn 0.057195 0.936327 -0.346441 -vn 0.128204 0.940050 -0.316020 -vn 0.080771 0.976977 -0.197465 -vn 0.062166 0.986627 -0.150675 -vn 0.059087 0.988128 -0.141818 -vn 0.070834 0.983197 -0.168246 -vn 0.109556 0.960083 -0.257369 -vn 0.123891 0.936513 -0.328015 -vn 0.187162 0.940181 -0.284658 -vn 0.117579 0.977031 -0.177723 -vn 0.090234 0.986659 -0.135508 -vn 0.085492 0.988155 -0.127436 -vn 0.102144 0.983236 -0.151042 -vn 0.157440 0.960168 -0.230847 -vn 0.185313 0.936664 -0.297187 -vn 0.238702 0.940231 -0.242872 -vn 0.149734 0.977052 -0.151491 -vn 0.114737 0.986671 -0.115394 -vn 0.108523 0.988166 -0.108399 -vn 0.129427 0.983250 -0.128328 -vn 0.199123 0.960198 -0.195884 -vn 0.239322 0.936726 -0.255480 -vn 0.281336 0.940193 -0.192059 -vn 0.176317 0.977036 -0.119634 -vn 0.134976 0.986661 -0.090998 -vn 0.127522 0.988158 -0.085336 -vn 0.151908 0.983237 -0.100841 -vn 0.233408 0.960169 -0.153613 -vn 0.284339 0.936700 -0.204315 -vn 0.313673 0.940073 -0.133685 -vn 0.196460 0.976987 -0.083070 -vn 0.150285 0.986632 -0.063015 -vn 0.141864 0.988132 -0.058908 -vn 0.168838 0.983200 -0.069369 -vn 0.259158 0.960081 -0.105267 -vn 0.318954 0.936586 -0.145174 -vn 0.334241 0.939908 -0.069682 -vn 0.209236 0.976919 -0.042999 -vn 0.159958 0.986593 -0.032372 -vn 0.150883 0.988097 -0.029991 -vn 0.179424 0.983150 -0.034960 -vn 0.275159 0.959966 -0.052468 -vn 0.341686 0.936405 -0.079975 -vn 0.765973 0.617400 0.179171 -vn 0.786598 0.616930 0.025703 -vn 0.776300 0.617195 0.128179 -vn 0.786597 0.616928 -0.025773 -vn 0.715610 0.617965 0.325611 -vn 0.735613 0.617783 0.277883 -vn 0.638261 0.618382 0.458505 -vn 0.666914 0.618256 0.415916 -vn 0.537271 0.618506 0.573402 -vn 0.573431 0.618504 0.537242 -vn 0.415942 0.618285 0.666870 -vn 0.458540 0.618390 0.638228 -vn 0.277903 0.617840 0.735557 -vn 0.325634 0.618018 0.715553 -vn 0.128211 0.617229 0.776267 -vn 0.179200 0.617450 0.765926 -vn -0.025735 0.616973 0.786564 -vn 0.025740 0.616972 0.786564 -vn -0.179205 0.617450 0.765925 -vn -0.128212 0.617230 0.776266 -vn -0.325634 0.618017 0.715554 -vn -0.277910 0.617840 0.735554 -vn -0.458533 0.618391 0.638232 -vn -0.415938 0.618284 0.666873 -vn -0.573435 0.618504 0.537239 -vn -0.537274 0.618507 0.573399 -vn -0.666912 0.618255 0.415920 -vn -0.638260 0.618381 0.458508 -vn -0.735613 0.617783 0.277880 -vn -0.715608 0.617963 0.325617 -vn -0.776300 0.617195 0.128173 -vn -0.765972 0.617402 0.179166 -vn -0.786597 0.616928 -0.025768 -vn -0.786597 0.616931 0.025708 -vn -0.765972 0.617383 -0.179236 -vn -0.776299 0.617181 -0.128244 -vn -0.715610 0.617929 -0.325676 -vn -0.735612 0.617754 -0.277947 -vn -0.638262 0.618332 -0.458570 -vn -0.666914 0.618211 -0.415981 -vn -0.537272 0.618444 -0.573468 -vn -0.573432 0.618447 -0.537307 -vn -0.415953 0.618199 -0.666944 -vn -0.458540 0.618322 -0.638293 -vn -0.277913 0.617729 -0.735646 -vn -0.325649 0.617909 -0.715640 -vn -0.128205 0.617146 -0.776334 -vn -0.179199 0.617352 -0.766006 -vn 0.025735 0.616888 -0.786630 -vn -0.025740 0.616888 -0.786630 -vn 0.179204 0.617351 -0.766005 -vn 0.128211 0.617147 -0.776332 -vn 0.325643 0.617909 -0.715643 -vn 0.277915 0.617729 -0.735645 -vn 0.458538 0.618323 -0.638295 -vn 0.415949 0.618198 -0.666947 -vn 0.573436 0.618446 -0.537304 -vn 0.537275 0.618445 -0.573464 -vn 0.666911 0.618212 -0.415985 -vn 0.638261 0.618332 -0.458572 -vn 0.735612 0.617755 -0.277945 -vn 0.715607 0.617930 -0.325681 -vn 0.776301 0.617181 -0.128238 -vn 0.765972 0.617384 -0.179231 -# 2081 vertices - -# 0 vertex parms - -# 0 texture vertices - -# 2443 normals - -g Teapot01 -s 1 -f 1//65 2//66 3//67 -f 3//67 4//68 1//65 -f 4//68 3//67 5//69 -f 5//69 6//70 4//68 -f 6//70 5//69 7//71 -f 7//71 8//72 6//70 -s 2 -f 8//194 7//193 9//195 -f 9//195 10//196 8//194 -s 3 -f 10//258 9//257 11//259 -f 11//259 12//260 10//258 -f 12//260 11//259 13//261 -f 13//261 14//262 12//260 -f 14//262 13//261 15//263 -f 15//263 16//264 14//262 -f 16//264 15//263 17//265 -f 17//265 18//266 16//264 -s 1 -f 2//66 19//73 20//74 -f 20//74 3//67 2//66 -f 3//67 20//74 21//75 -f 21//75 5//69 3//67 -f 5//69 21//75 22//76 -f 22//76 7//71 5//69 -s 2 -f 7//193 22//197 23//198 -f 23//198 9//195 7//193 -s 3 -f 9//257 23//267 24//268 -f 24//268 11//259 9//257 -f 11//259 24//268 25//269 -f 25//269 13//261 11//259 -f 13//261 25//269 26//270 -f 26//270 15//263 13//261 -f 15//263 26//270 27//271 -f 27//271 17//265 15//263 -s 1 -f 19//73 28//77 29//78 -f 29//78 20//74 19//73 -f 20//74 29//78 30//79 -f 30//79 21//75 20//74 -f 21//75 30//79 31//80 -f 31//80 22//76 21//75 -s 2 -f 22//197 31//199 32//200 -f 32//200 23//198 22//197 -s 3 -f 23//267 32//272 33//273 -f 33//273 24//268 23//267 -f 24//268 33//273 34//274 -f 34//274 25//269 24//268 -f 25//269 34//274 35//275 -f 35//275 26//270 25//269 -f 26//270 35//275 36//276 -f 36//276 27//271 26//270 -s 1 -f 28//77 37//81 38//82 -f 38//82 29//78 28//77 -f 29//78 38//82 39//83 -f 39//83 30//79 29//78 -f 30//79 39//83 40//84 -f 40//84 31//80 30//79 -s 2 -f 31//199 40//201 41//202 -f 41//202 32//200 31//199 -s 3 -f 32//272 41//277 42//278 -f 42//278 33//273 32//272 -f 33//273 42//278 43//279 -f 43//279 34//274 33//273 -f 34//274 43//279 44//280 -f 44//280 35//275 34//274 -f 35//275 44//280 45//281 -f 45//281 36//276 35//275 -s 1 -f 37//81 46//85 47//86 -f 47//86 38//82 37//81 -f 38//82 47//86 48//87 -f 48//87 39//83 38//82 -f 39//83 48//87 49//88 -f 49//88 40//84 39//83 -s 2 -f 40//201 49//203 50//204 -f 50//204 41//202 40//201 -s 3 -f 41//277 50//282 51//283 -f 51//283 42//278 41//277 -f 42//278 51//283 52//284 -f 52//284 43//279 42//278 -f 43//279 52//284 53//285 -f 53//285 44//280 43//279 -f 44//280 53//285 54//286 -f 54//286 45//281 44//280 -s 1 -f 46//85 55//89 56//90 -f 56//90 47//86 46//85 -f 47//86 56//90 57//91 -f 57//91 48//87 47//86 -f 48//87 57//91 58//92 -f 58//92 49//88 48//87 -s 2 -f 49//203 58//205 59//206 -f 59//206 50//204 49//203 -s 3 -f 50//282 59//287 60//288 -f 60//288 51//283 50//282 -f 51//283 60//288 61//289 -f 61//289 52//284 51//283 -f 52//284 61//289 62//290 -f 62//290 53//285 52//284 -f 53//285 62//290 63//291 -f 63//291 54//286 53//285 -s 1 -f 55//89 64//93 65//94 -f 65//94 56//90 55//89 -f 56//90 65//94 66//95 -f 66//95 57//91 56//90 -f 57//91 66//95 67//96 -f 67//96 58//92 57//91 -s 2 -f 58//205 67//207 68//208 -f 68//208 59//206 58//205 -s 3 -f 59//287 68//292 69//293 -f 69//293 60//288 59//287 -f 60//288 69//293 70//294 -f 70//294 61//289 60//288 -f 61//289 70//294 71//295 -f 71//295 62//290 61//289 -f 62//290 71//295 72//296 -f 72//296 63//291 62//290 -s 1 -f 64//93 73//97 74//98 -f 74//98 65//94 64//93 -f 65//94 74//98 75//99 -f 75//99 66//95 65//94 -f 66//95 75//99 76//100 -f 76//100 67//96 66//95 -s 2 -f 67//207 76//209 77//210 -f 77//210 68//208 67//207 -s 3 -f 68//292 77//297 78//298 -f 78//298 69//293 68//292 -f 69//293 78//298 79//299 -f 79//299 70//294 69//293 -f 70//294 79//299 80//300 -f 80//300 71//295 70//294 -f 71//295 80//300 81//301 -f 81//301 72//296 71//295 -s 1 -f 73//97 82//101 83//102 -f 83//102 74//98 73//97 -f 74//98 83//102 84//103 -f 84//103 75//99 74//98 -f 75//99 84//103 85//104 -f 85//104 76//100 75//99 -s 2 -f 76//209 85//211 86//212 -f 86//212 77//210 76//209 -s 3 -f 77//297 86//302 87//303 -f 87//303 78//298 77//297 -f 78//298 87//303 88//304 -f 88//304 79//299 78//298 -f 79//299 88//304 89//305 -f 89//305 80//300 79//299 -f 80//300 89//305 90//306 -f 90//306 81//301 80//300 -s 1 -f 82//101 91//105 92//106 -f 92//106 83//102 82//101 -f 83//102 92//106 93//107 -f 93//107 84//103 83//102 -f 84//103 93//107 94//108 -f 94//108 85//104 84//103 -s 2 -f 85//211 94//213 95//214 -f 95//214 86//212 85//211 -s 3 -f 86//302 95//307 96//308 -f 96//308 87//303 86//302 -f 87//303 96//308 97//309 -f 97//309 88//304 87//303 -f 88//304 97//309 98//310 -f 98//310 89//305 88//304 -f 89//305 98//310 99//311 -f 99//311 90//306 89//305 -s 1 -f 91//105 100//109 101//110 -f 101//110 92//106 91//105 -f 92//106 101//110 102//111 -f 102//111 93//107 92//106 -f 93//107 102//111 103//112 -f 103//112 94//108 93//107 -s 2 -f 94//213 103//215 104//216 -f 104//216 95//214 94//213 -s 3 -f 95//307 104//312 105//313 -f 105//313 96//308 95//307 -f 96//308 105//313 106//314 -f 106//314 97//309 96//308 -f 97//309 106//314 107//315 -f 107//315 98//310 97//309 -f 98//310 107//315 108//316 -f 108//316 99//311 98//310 -s 1 -f 100//109 109//113 110//114 -f 110//114 101//110 100//109 -f 101//110 110//114 111//115 -f 111//115 102//111 101//110 -f 102//111 111//115 112//116 -f 112//116 103//112 102//111 -s 2 -f 103//215 112//217 113//218 -f 113//218 104//216 103//215 -s 3 -f 104//312 113//317 114//318 -f 114//318 105//313 104//312 -f 105//313 114//318 115//319 -f 115//319 106//314 105//313 -f 106//314 115//319 116//320 -f 116//320 107//315 106//314 -f 107//315 116//320 117//321 -f 117//321 108//316 107//315 -s 1 -f 109//113 118//117 119//118 -f 119//118 110//114 109//113 -f 110//114 119//118 120//119 -f 120//119 111//115 110//114 -f 111//115 120//119 121//120 -f 121//120 112//116 111//115 -s 2 -f 112//217 121//219 122//220 -f 122//220 113//218 112//217 -s 3 -f 113//317 122//322 123//323 -f 123//323 114//318 113//317 -f 114//318 123//323 124//324 -f 124//324 115//319 114//318 -f 115//319 124//324 125//325 -f 125//325 116//320 115//319 -f 116//320 125//325 126//326 -f 126//326 117//321 116//320 -s 1 -f 118//117 127//121 128//122 -f 128//122 119//118 118//117 -f 119//118 128//122 129//123 -f 129//123 120//119 119//118 -f 120//119 129//123 130//124 -f 130//124 121//120 120//119 -s 2 -f 121//219 130//221 131//222 -f 131//222 122//220 121//219 -s 3 -f 122//322 131//327 132//328 -f 132//328 123//323 122//322 -f 123//323 132//328 133//329 -f 133//329 124//324 123//323 -f 124//324 133//329 134//330 -f 134//330 125//325 124//324 -f 125//325 134//330 135//331 -f 135//331 126//326 125//325 -s 1 -f 127//121 136//125 137//126 -f 137//126 128//122 127//121 -f 128//122 137//126 138//127 -f 138//127 129//123 128//122 -f 129//123 138//127 139//128 -f 139//128 130//124 129//123 -s 2 -f 130//221 139//223 140//224 -f 140//224 131//222 130//221 -s 3 -f 131//327 140//332 141//333 -f 141//333 132//328 131//327 -f 132//328 141//333 142//334 -f 142//334 133//329 132//328 -f 133//329 142//334 143//335 -f 143//335 134//330 133//329 -f 134//330 143//335 144//336 -f 144//336 135//331 134//330 -s 1 -f 136//125 145//129 146//130 -f 146//130 137//126 136//125 -f 137//126 146//130 147//131 -f 147//131 138//127 137//126 -f 138//127 147//131 148//132 -f 148//132 139//128 138//127 -s 2 -f 139//223 148//225 149//226 -f 149//226 140//224 139//223 -s 3 -f 140//332 149//337 150//338 -f 150//338 141//333 140//332 -f 141//333 150//338 151//339 -f 151//339 142//334 141//333 -f 142//334 151//339 152//340 -f 152//340 143//335 142//334 -f 143//335 152//340 153//341 -f 153//341 144//336 143//335 -s 1 -f 145//129 154//133 155//134 -f 155//134 146//130 145//129 -f 146//130 155//134 156//135 -f 156//135 147//131 146//130 -f 147//131 156//135 157//136 -f 157//136 148//132 147//131 -s 2 -f 148//225 157//227 158//228 -f 158//228 149//226 148//225 -s 3 -f 149//337 158//342 159//343 -f 159//343 150//338 149//337 -f 150//338 159//343 160//344 -f 160//344 151//339 150//338 -f 151//339 160//344 161//345 -f 161//345 152//340 151//339 -f 152//340 161//345 162//346 -f 162//346 153//341 152//340 -s 1 -f 154//133 163//137 164//138 -f 164//138 155//134 154//133 -f 155//134 164//138 165//139 -f 165//139 156//135 155//134 -f 156//135 165//139 166//140 -f 166//140 157//136 156//135 -s 2 -f 157//227 166//229 167//230 -f 167//230 158//228 157//227 -s 3 -f 158//342 167//347 168//348 -f 168//348 159//343 158//342 -f 159//343 168//348 169//349 -f 169//349 160//344 159//343 -f 160//344 169//349 170//350 -f 170//350 161//345 160//344 -f 161//345 170//350 171//351 -f 171//351 162//346 161//345 -s 1 -f 163//137 172//141 173//142 -f 173//142 164//138 163//137 -f 164//138 173//142 174//143 -f 174//143 165//139 164//138 -f 165//139 174//143 175//144 -f 175//144 166//140 165//139 -s 2 -f 166//229 175//231 176//232 -f 176//232 167//230 166//229 -s 3 -f 167//347 176//352 177//353 -f 177//353 168//348 167//347 -f 168//348 177//353 178//354 -f 178//354 169//349 168//348 -f 169//349 178//354 179//355 -f 179//355 170//350 169//349 -f 170//350 179//355 180//356 -f 180//356 171//351 170//350 -s 1 -f 172//141 181//145 182//146 -f 182//146 173//142 172//141 -f 173//142 182//146 183//147 -f 183//147 174//143 173//142 -f 174//143 183//147 184//148 -f 184//148 175//144 174//143 -s 2 -f 175//231 184//233 185//234 -f 185//234 176//232 175//231 -s 3 -f 176//352 185//357 186//358 -f 186//358 177//353 176//352 -f 177//353 186//358 187//359 -f 187//359 178//354 177//353 -f 178//354 187//359 188//360 -f 188//360 179//355 178//354 -f 179//355 188//360 189//361 -f 189//361 180//356 179//355 -s 1 -f 181//145 190//149 191//150 -f 191//150 182//146 181//145 -f 182//146 191//150 192//151 -f 192//151 183//147 182//146 -f 183//147 192//151 193//152 -f 193//152 184//148 183//147 -s 2 -f 184//233 193//235 194//236 -f 194//236 185//234 184//233 -s 3 -f 185//357 194//362 195//363 -f 195//363 186//358 185//357 -f 186//358 195//363 196//364 -f 196//364 187//359 186//358 -f 187//359 196//364 197//365 -f 197//365 188//360 187//359 -f 188//360 197//365 198//366 -f 198//366 189//361 188//360 -s 1 -f 190//149 199//153 200//154 -f 200//154 191//150 190//149 -f 191//150 200//154 201//155 -f 201//155 192//151 191//150 -f 192//151 201//155 202//156 -f 202//156 193//152 192//151 -s 2 -f 193//235 202//237 203//238 -f 203//238 194//236 193//235 -s 3 -f 194//362 203//367 204//368 -f 204//368 195//363 194//362 -f 195//363 204//368 205//369 -f 205//369 196//364 195//363 -f 196//364 205//369 206//370 -f 206//370 197//365 196//364 -f 197//365 206//370 207//371 -f 207//371 198//366 197//365 -s 1 -f 199//153 208//157 209//158 -f 209//158 200//154 199//153 -f 200//154 209//158 210//159 -f 210//159 201//155 200//154 -f 201//155 210//159 211//160 -f 211//160 202//156 201//155 -s 2 -f 202//237 211//239 212//240 -f 212//240 203//238 202//237 -s 3 -f 203//367 212//372 213//373 -f 213//373 204//368 203//367 -f 204//368 213//373 214//374 -f 214//374 205//369 204//368 -f 205//369 214//374 215//375 -f 215//375 206//370 205//369 -f 206//370 215//375 216//376 -f 216//376 207//371 206//370 -s 1 -f 208//157 217//161 218//162 -f 218//162 209//158 208//157 -f 209//158 218//162 219//163 -f 219//163 210//159 209//158 -f 210//159 219//163 220//164 -f 220//164 211//160 210//159 -s 2 -f 211//239 220//241 221//242 -f 221//242 212//240 211//239 -s 3 -f 212//372 221//377 222//378 -f 222//378 213//373 212//372 -f 213//373 222//378 223//379 -f 223//379 214//374 213//373 -f 214//374 223//379 224//380 -f 224//380 215//375 214//374 -f 215//375 224//380 225//381 -f 225//381 216//376 215//375 -s 1 -f 217//161 226//165 227//166 -f 227//166 218//162 217//161 -f 218//162 227//166 228//167 -f 228//167 219//163 218//162 -f 219//163 228//167 229//168 -f 229//168 220//164 219//163 -s 2 -f 220//241 229//243 230//244 -f 230//244 221//242 220//241 -s 3 -f 221//377 230//382 231//383 -f 231//383 222//378 221//377 -f 222//378 231//383 232//384 -f 232//384 223//379 222//378 -f 223//379 232//384 233//385 -f 233//385 224//380 223//379 -f 224//380 233//385 234//386 -f 234//386 225//381 224//380 -s 1 -f 226//165 235//169 236//170 -f 236//170 227//166 226//165 -f 227//166 236//170 237//171 -f 237//171 228//167 227//166 -f 228//167 237//171 238//172 -f 238//172 229//168 228//167 -s 2 -f 229//243 238//245 239//246 -f 239//246 230//244 229//243 -s 3 -f 230//382 239//387 240//388 -f 240//388 231//383 230//382 -f 231//383 240//388 241//389 -f 241//389 232//384 231//383 -f 232//384 241//389 242//390 -f 242//390 233//385 232//384 -f 233//385 242//390 243//391 -f 243//391 234//386 233//385 -s 1 -f 235//169 244//173 245//174 -f 245//174 236//170 235//169 -f 236//170 245//174 246//175 -f 246//175 237//171 236//170 -f 237//171 246//175 247//176 -f 247//176 238//172 237//171 -s 2 -f 238//245 247//247 248//248 -f 248//248 239//246 238//245 -s 3 -f 239//387 248//392 249//393 -f 249//393 240//388 239//387 -f 240//388 249//393 250//394 -f 250//394 241//389 240//388 -f 241//389 250//394 251//395 -f 251//395 242//390 241//389 -f 242//390 251//395 252//396 -f 252//396 243//391 242//390 -s 1 -f 244//173 253//177 254//178 -f 254//178 245//174 244//173 -f 245//174 254//178 255//179 -f 255//179 246//175 245//174 -f 246//175 255//179 256//180 -f 256//180 247//176 246//175 -s 2 -f 247//247 256//249 257//250 -f 257//250 248//248 247//247 -s 3 -f 248//392 257//397 258//398 -f 258//398 249//393 248//392 -f 249//393 258//398 259//399 -f 259//399 250//394 249//393 -f 250//394 259//399 260//400 -f 260//400 251//395 250//394 -f 251//395 260//400 261//401 -f 261//401 252//396 251//395 -s 1 -f 253//177 262//181 263//182 -f 263//182 254//178 253//177 -f 254//178 263//182 264//183 -f 264//183 255//179 254//178 -f 255//179 264//183 265//184 -f 265//184 256//180 255//179 -s 2 -f 256//249 265//251 266//252 -f 266//252 257//250 256//249 -s 3 -f 257//397 266//402 267//403 -f 267//403 258//398 257//397 -f 258//398 267//403 268//404 -f 268//404 259//399 258//398 -f 259//399 268//404 269//405 -f 269//405 260//400 259//399 -f 260//400 269//405 270//406 -f 270//406 261//401 260//400 -s 1 -f 262//181 271//185 272//186 -f 272//186 263//182 262//181 -f 263//182 272//186 273//187 -f 273//187 264//183 263//182 -f 264//183 273//187 274//188 -f 274//188 265//184 264//183 -s 2 -f 265//251 274//253 275//254 -f 275//254 266//252 265//251 -s 3 -f 266//402 275//407 276//408 -f 276//408 267//403 266//402 -f 267//403 276//408 277//409 -f 277//409 268//404 267//403 -f 268//404 277//409 278//410 -f 278//410 269//405 268//404 -f 269//405 278//410 279//411 -f 279//411 270//406 269//405 -s 1 -f 271//185 280//189 281//190 -f 281//190 272//186 271//185 -f 272//186 281//190 282//191 -f 282//191 273//187 272//186 -f 273//187 282//191 283//192 -f 283//192 274//188 273//187 -s 2 -f 274//253 283//255 284//256 -f 284//256 275//254 274//253 -s 3 -f 275//407 284//412 285//413 -f 285//413 276//408 275//407 -f 276//408 285//413 286//414 -f 286//414 277//409 276//408 -f 277//409 286//414 287//415 -f 287//415 278//410 277//409 -f 278//410 287//415 288//416 -f 288//416 279//411 278//410 -s 1 -f 280//189 1//65 4//68 -f 4//68 281//190 280//189 -f 281//190 4//68 6//70 -f 6//70 282//191 281//190 -f 282//191 6//70 8//72 -f 8//72 283//192 282//191 -s 2 -f 283//255 8//194 10//196 -f 10//196 284//256 283//255 -s 3 -f 284//412 10//258 12//260 -f 12//260 285//413 284//412 -f 285//413 12//260 14//262 -f 14//262 286//414 285//413 -f 286//414 14//262 16//264 -f 16//264 287//415 286//414 -f 287//415 16//264 18//266 -f 18//266 288//416 287//415 -f 18//266 17//265 289//417 -f 289//417 290//418 18//266 -f 290//418 289//417 291//419 -f 291//419 292//420 290//418 -f 292//420 291//419 293//421 -f 293//421 294//422 292//420 -f 294//422 293//421 295//423 -f 295//423 296//424 294//422 -f 296//424 295//423 297//425 -f 297//425 298//426 296//424 -f 298//426 297//425 299//427 -f 299//427 300//428 298//426 -f 300//428 299//427 301//429 -f 301//429 302//430 300//428 -f 302//430 301//429 303//431 -f 303//431 304//432 302//430 -f 17//265 27//271 305//433 -f 305//433 289//417 17//265 -f 289//417 305//433 306//434 -f 306//434 291//419 289//417 -f 291//419 306//434 307//435 -f 307//435 293//421 291//419 -f 293//421 307//435 308//436 -f 308//436 295//423 293//421 -f 295//423 308//436 309//437 -f 309//437 297//425 295//423 -f 297//425 309//437 310//438 -f 310//438 299//427 297//425 -f 299//427 310//438 311//439 -f 311//439 301//429 299//427 -f 301//429 311//439 312//440 -f 312//440 303//431 301//429 -f 27//271 36//276 313//441 -f 313//441 305//433 27//271 -f 305//433 313//441 314//442 -f 314//442 306//434 305//433 -f 306//434 314//442 315//443 -f 315//443 307//435 306//434 -f 307//435 315//443 316//444 -f 316//444 308//436 307//435 -f 308//436 316//444 317//445 -f 317//445 309//437 308//436 -f 309//437 317//445 318//446 -f 318//446 310//438 309//437 -f 310//438 318//446 319//447 -f 319//447 311//439 310//438 -f 311//439 319//447 320//448 -f 320//448 312//440 311//439 -f 36//276 45//281 321//449 -f 321//449 313//441 36//276 -f 313//441 321//449 322//450 -f 322//450 314//442 313//441 -f 314//442 322//450 323//451 -f 323//451 315//443 314//442 -f 315//443 323//451 324//452 -f 324//452 316//444 315//443 -f 316//444 324//452 325//453 -f 325//453 317//445 316//444 -f 317//445 325//453 326//454 -f 326//454 318//446 317//445 -f 318//446 326//454 327//455 -f 327//455 319//447 318//446 -f 319//447 327//455 328//456 -f 328//456 320//448 319//447 -f 45//281 54//286 329//457 -f 329//457 321//449 45//281 -f 321//449 329//457 330//458 -f 330//458 322//450 321//449 -f 322//450 330//458 331//459 -f 331//459 323//451 322//450 -f 323//451 331//459 332//460 -f 332//460 324//452 323//451 -f 324//452 332//460 333//461 -f 333//461 325//453 324//452 -f 325//453 333//461 334//462 -f 334//462 326//454 325//453 -f 326//454 334//462 335//463 -f 335//463 327//455 326//454 -f 327//455 335//463 336//464 -f 336//464 328//456 327//455 -f 54//286 63//291 337//465 -f 337//465 329//457 54//286 -f 329//457 337//465 338//466 -f 338//466 330//458 329//457 -f 330//458 338//466 339//467 -f 339//467 331//459 330//458 -f 331//459 339//467 340//468 -f 340//468 332//460 331//459 -f 332//460 340//468 341//469 -f 341//469 333//461 332//460 -f 333//461 341//469 342//470 -f 342//470 334//462 333//461 -f 334//462 342//470 343//471 -f 343//471 335//463 334//462 -f 335//463 343//471 344//472 -f 344//472 336//464 335//463 -f 63//291 72//296 345//473 -f 345//473 337//465 63//291 -f 337//465 345//473 346//474 -f 346//474 338//466 337//465 -f 338//466 346//474 347//475 -f 347//475 339//467 338//466 -f 339//467 347//475 348//476 -f 348//476 340//468 339//467 -f 340//468 348//476 349//477 -f 349//477 341//469 340//468 -f 341//469 349//477 350//478 -f 350//478 342//470 341//469 -f 342//470 350//478 351//479 -f 351//479 343//471 342//470 -f 343//471 351//479 352//480 -f 352//480 344//472 343//471 -f 72//296 81//301 353//481 -f 353//481 345//473 72//296 -f 345//473 353//481 354//482 -f 354//482 346//474 345//473 -f 346//474 354//482 355//483 -f 355//483 347//475 346//474 -f 347//475 355//483 356//484 -f 356//484 348//476 347//475 -f 348//476 356//484 357//485 -f 357//485 349//477 348//476 -f 349//477 357//485 358//486 -f 358//486 350//478 349//477 -f 350//478 358//486 359//487 -f 359//487 351//479 350//478 -f 351//479 359//487 360//488 -f 360//488 352//480 351//479 -f 81//301 90//306 361//489 -f 361//489 353//481 81//301 -f 353//481 361//489 362//490 -f 362//490 354//482 353//481 -f 354//482 362//490 363//491 -f 363//491 355//483 354//482 -f 355//483 363//491 364//492 -f 364//492 356//484 355//483 -f 356//484 364//492 365//493 -f 365//493 357//485 356//484 -f 357//485 365//493 366//494 -f 366//494 358//486 357//485 -f 358//486 366//494 367//495 -f 367//495 359//487 358//486 -f 359//487 367//495 368//496 -f 368//496 360//488 359//487 -f 90//306 99//311 369//497 -f 369//497 361//489 90//306 -f 361//489 369//497 370//498 -f 370//498 362//490 361//489 -f 362//490 370//498 371//499 -f 371//499 363//491 362//490 -f 363//491 371//499 372//500 -f 372//500 364//492 363//491 -f 364//492 372//500 373//501 -f 373//501 365//493 364//492 -f 365//493 373//501 374//502 -f 374//502 366//494 365//493 -f 366//494 374//502 375//503 -f 375//503 367//495 366//494 -f 367//495 375//503 376//504 -f 376//504 368//496 367//495 -f 99//311 108//316 377//505 -f 377//505 369//497 99//311 -f 369//497 377//505 378//506 -f 378//506 370//498 369//497 -f 370//498 378//506 379//507 -f 379//507 371//499 370//498 -f 371//499 379//507 380//508 -f 380//508 372//500 371//499 -f 372//500 380//508 381//509 -f 381//509 373//501 372//500 -f 373//501 381//509 382//510 -f 382//510 374//502 373//501 -f 374//502 382//510 383//511 -f 383//511 375//503 374//502 -f 375//503 383//511 384//512 -f 384//512 376//504 375//503 -f 108//316 117//321 385//513 -f 385//513 377//505 108//316 -f 377//505 385//513 386//514 -f 386//514 378//506 377//505 -f 378//506 386//514 387//515 -f 387//515 379//507 378//506 -f 379//507 387//515 388//516 -f 388//516 380//508 379//507 -f 380//508 388//516 389//517 -f 389//517 381//509 380//508 -f 381//509 389//517 390//518 -f 390//518 382//510 381//509 -f 382//510 390//518 391//519 -f 391//519 383//511 382//510 -f 383//511 391//519 392//520 -f 392//520 384//512 383//511 -f 117//321 126//326 393//521 -f 393//521 385//513 117//321 -f 385//513 393//521 394//522 -f 394//522 386//514 385//513 -f 386//514 394//522 395//523 -f 395//523 387//515 386//514 -f 387//515 395//523 396//524 -f 396//524 388//516 387//515 -f 388//516 396//524 397//525 -f 397//525 389//517 388//516 -f 389//517 397//525 398//526 -f 398//526 390//518 389//517 -f 390//518 398//526 399//527 -f 399//527 391//519 390//518 -f 391//519 399//527 400//528 -f 400//528 392//520 391//519 -f 126//326 135//331 401//529 -f 401//529 393//521 126//326 -f 393//521 401//529 402//530 -f 402//530 394//522 393//521 -f 394//522 402//530 403//531 -f 403//531 395//523 394//522 -f 395//523 403//531 404//532 -f 404//532 396//524 395//523 -f 396//524 404//532 405//533 -f 405//533 397//525 396//524 -f 397//525 405//533 406//534 -f 406//534 398//526 397//525 -f 398//526 406//534 407//535 -f 407//535 399//527 398//526 -f 399//527 407//535 408//536 -f 408//536 400//528 399//527 -f 135//331 144//336 409//537 -f 409//537 401//529 135//331 -f 401//529 409//537 410//538 -f 410//538 402//530 401//529 -f 402//530 410//538 411//539 -f 411//539 403//531 402//530 -f 403//531 411//539 412//540 -f 412//540 404//532 403//531 -f 404//532 412//540 413//541 -f 413//541 405//533 404//532 -f 405//533 413//541 414//542 -f 414//542 406//534 405//533 -f 406//534 414//542 415//543 -f 415//543 407//535 406//534 -f 407//535 415//543 416//544 -f 416//544 408//536 407//535 -f 144//336 153//341 417//545 -f 417//545 409//537 144//336 -f 409//537 417//545 418//546 -f 418//546 410//538 409//537 -f 410//538 418//546 419//547 -f 419//547 411//539 410//538 -f 411//539 419//547 420//548 -f 420//548 412//540 411//539 -f 412//540 420//548 421//549 -f 421//549 413//541 412//540 -f 413//541 421//549 422//550 -f 422//550 414//542 413//541 -f 414//542 422//550 423//551 -f 423//551 415//543 414//542 -f 415//543 423//551 424//552 -f 424//552 416//544 415//543 -f 153//341 162//346 425//553 -f 425//553 417//545 153//341 -f 417//545 425//553 426//554 -f 426//554 418//546 417//545 -f 418//546 426//554 427//555 -f 427//555 419//547 418//546 -f 419//547 427//555 428//556 -f 428//556 420//548 419//547 -f 420//548 428//556 429//557 -f 429//557 421//549 420//548 -f 421//549 429//557 430//558 -f 430//558 422//550 421//549 -f 422//550 430//558 431//559 -f 431//559 423//551 422//550 -f 423//551 431//559 432//560 -f 432//560 424//552 423//551 -f 162//346 171//351 433//561 -f 433//561 425//553 162//346 -f 425//553 433//561 434//562 -f 434//562 426//554 425//553 -f 426//554 434//562 435//563 -f 435//563 427//555 426//554 -f 427//555 435//563 436//564 -f 436//564 428//556 427//555 -f 428//556 436//564 437//565 -f 437//565 429//557 428//556 -f 429//557 437//565 438//566 -f 438//566 430//558 429//557 -f 430//558 438//566 439//567 -f 439//567 431//559 430//558 -f 431//559 439//567 440//568 -f 440//568 432//560 431//559 -f 171//351 180//356 441//569 -f 441//569 433//561 171//351 -f 433//561 441//569 442//570 -f 442//570 434//562 433//561 -f 434//562 442//570 443//571 -f 443//571 435//563 434//562 -f 435//563 443//571 444//572 -f 444//572 436//564 435//563 -f 436//564 444//572 445//573 -f 445//573 437//565 436//564 -f 437//565 445//573 446//574 -f 446//574 438//566 437//565 -f 438//566 446//574 447//575 -f 447//575 439//567 438//566 -f 439//567 447//575 448//576 -f 448//576 440//568 439//567 -f 180//356 189//361 449//577 -f 449//577 441//569 180//356 -f 441//569 449//577 450//578 -f 450//578 442//570 441//569 -f 442//570 450//578 451//579 -f 451//579 443//571 442//570 -f 443//571 451//579 452//580 -f 452//580 444//572 443//571 -f 444//572 452//580 453//581 -f 453//581 445//573 444//572 -f 445//573 453//581 454//582 -f 454//582 446//574 445//573 -f 446//574 454//582 455//583 -f 455//583 447//575 446//574 -f 447//575 455//583 456//584 -f 456//584 448//576 447//575 -f 189//361 198//366 457//585 -f 457//585 449//577 189//361 -f 449//577 457//585 458//586 -f 458//586 450//578 449//577 -f 450//578 458//586 459//587 -f 459//587 451//579 450//578 -f 451//579 459//587 460//588 -f 460//588 452//580 451//579 -f 452//580 460//588 461//589 -f 461//589 453//581 452//580 -f 453//581 461//589 462//590 -f 462//590 454//582 453//581 -f 454//582 462//590 463//591 -f 463//591 455//583 454//582 -f 455//583 463//591 464//592 -f 464//592 456//584 455//583 -f 198//366 207//371 465//593 -f 465//593 457//585 198//366 -f 457//585 465//593 466//594 -f 466//594 458//586 457//585 -f 458//586 466//594 467//595 -f 467//595 459//587 458//586 -f 459//587 467//595 468//596 -f 468//596 460//588 459//587 -f 460//588 468//596 469//597 -f 469//597 461//589 460//588 -f 461//589 469//597 470//598 -f 470//598 462//590 461//589 -f 462//590 470//598 471//599 -f 471//599 463//591 462//590 -f 463//591 471//599 472//600 -f 472//600 464//592 463//591 -f 207//371 216//376 473//601 -f 473//601 465//593 207//371 -f 465//593 473//601 474//602 -f 474//602 466//594 465//593 -f 466//594 474//602 475//603 -f 475//603 467//595 466//594 -f 467//595 475//603 476//604 -f 476//604 468//596 467//595 -f 468//596 476//604 477//605 -f 477//605 469//597 468//596 -f 469//597 477//605 478//606 -f 478//606 470//598 469//597 -f 470//598 478//606 479//607 -f 479//607 471//599 470//598 -f 471//599 479//607 480//608 -f 480//608 472//600 471//599 -f 216//376 225//381 481//609 -f 481//609 473//601 216//376 -f 473//601 481//609 482//610 -f 482//610 474//602 473//601 -f 474//602 482//610 483//611 -f 483//611 475//603 474//602 -f 475//603 483//611 484//612 -f 484//612 476//604 475//603 -f 476//604 484//612 485//613 -f 485//613 477//605 476//604 -f 477//605 485//613 486//614 -f 486//614 478//606 477//605 -f 478//606 486//614 487//615 -f 487//615 479//607 478//606 -f 479//607 487//615 488//616 -f 488//616 480//608 479//607 -f 225//381 234//386 489//617 -f 489//617 481//609 225//381 -f 481//609 489//617 490//618 -f 490//618 482//610 481//609 -f 482//610 490//618 491//619 -f 491//619 483//611 482//610 -f 483//611 491//619 492//620 -f 492//620 484//612 483//611 -f 484//612 492//620 493//621 -f 493//621 485//613 484//612 -f 485//613 493//621 494//622 -f 494//622 486//614 485//613 -f 486//614 494//622 495//623 -f 495//623 487//615 486//614 -f 487//615 495//623 496//624 -f 496//624 488//616 487//615 -f 234//386 243//391 497//625 -f 497//625 489//617 234//386 -f 489//617 497//625 498//626 -f 498//626 490//618 489//617 -f 490//618 498//626 499//627 -f 499//627 491//619 490//618 -f 491//619 499//627 500//628 -f 500//628 492//620 491//619 -f 492//620 500//628 501//629 -f 501//629 493//621 492//620 -f 493//621 501//629 502//630 -f 502//630 494//622 493//621 -f 494//622 502//630 503//631 -f 503//631 495//623 494//622 -f 495//623 503//631 504//632 -f 504//632 496//624 495//623 -f 243//391 252//396 505//633 -f 505//633 497//625 243//391 -f 497//625 505//633 506//634 -f 506//634 498//626 497//625 -f 498//626 506//634 507//635 -f 507//635 499//627 498//626 -f 499//627 507//635 508//636 -f 508//636 500//628 499//627 -f 500//628 508//636 509//637 -f 509//637 501//629 500//628 -f 501//629 509//637 510//638 -f 510//638 502//630 501//629 -f 502//630 510//638 511//639 -f 511//639 503//631 502//630 -f 503//631 511//639 512//640 -f 512//640 504//632 503//631 -f 252//396 261//401 513//641 -f 513//641 505//633 252//396 -f 505//633 513//641 514//642 -f 514//642 506//634 505//633 -f 506//634 514//642 515//643 -f 515//643 507//635 506//634 -f 507//635 515//643 516//644 -f 516//644 508//636 507//635 -f 508//636 516//644 517//645 -f 517//645 509//637 508//636 -f 509//637 517//645 518//646 -f 518//646 510//638 509//637 -f 510//638 518//646 519//647 -f 519//647 511//639 510//638 -f 511//639 519//647 520//648 -f 520//648 512//640 511//639 -f 261//401 270//406 521//649 -f 521//649 513//641 261//401 -f 513//641 521//649 522//650 -f 522//650 514//642 513//641 -f 514//642 522//650 523//651 -f 523//651 515//643 514//642 -f 515//643 523//651 524//652 -f 524//652 516//644 515//643 -f 516//644 524//652 525//653 -f 525//653 517//645 516//644 -f 517//645 525//653 526//654 -f 526//654 518//646 517//645 -f 518//646 526//654 527//655 -f 527//655 519//647 518//646 -f 519//647 527//655 528//656 -f 528//656 520//648 519//647 -f 270//406 279//411 529//657 -f 529//657 521//649 270//406 -f 521//649 529//657 530//658 -f 530//658 522//650 521//649 -f 522//650 530//658 531//659 -f 531//659 523//651 522//650 -f 523//651 531//659 532//660 -f 532//660 524//652 523//651 -f 524//652 532//660 533//661 -f 533//661 525//653 524//652 -f 525//653 533//661 534//662 -f 534//662 526//654 525//653 -f 526//654 534//662 535//663 -f 535//663 527//655 526//654 -f 527//655 535//663 536//664 -f 536//664 528//656 527//655 -f 279//411 288//416 537//665 -f 537//665 529//657 279//411 -f 529//657 537//665 538//666 -f 538//666 530//658 529//657 -f 530//658 538//666 539//667 -f 539//667 531//659 530//658 -f 531//659 539//667 540//668 -f 540//668 532//660 531//659 -f 532//660 540//668 541//669 -f 541//669 533//661 532//660 -f 533//661 541//669 542//670 -f 542//670 534//662 533//661 -f 534//662 542//670 543//671 -f 543//671 535//663 534//662 -f 535//663 543//671 544//672 -f 544//672 536//664 535//663 -f 288//416 18//266 290//418 -f 290//418 537//665 288//416 -f 537//665 290//418 292//420 -f 292//420 538//666 537//665 -f 538//666 292//420 294//422 -f 294//422 539//667 538//666 -f 539//667 294//422 296//424 -f 296//424 540//668 539//667 -f 540//668 296//424 298//426 -f 298//426 541//669 540//668 -f 541//669 298//426 300//428 -f 300//428 542//670 541//669 -f 542//670 300//428 302//430 -f 302//430 543//671 542//670 -f 543//671 302//430 304//432 -f 304//432 544//672 543//671 -f 304//432 303//431 545//673 -f 545//673 546//674 304//432 -f 546//674 545//673 547//675 -f 547//675 548//676 546//674 -f 548//676 547//675 549//677 -f 549//677 550//678 548//676 -f 550//678 549//677 551//679 -f 551//679 552//680 550//678 -f 552//680 551//679 553//681 -f 553//681 554//682 552//680 -f 554//682 553//681 555//683 -f 555//683 556//684 554//682 -f 556//684 555//683 557//685 -f 557//685 558//686 556//684 -f 558//686 557//685 559//687 -f 559//687 560//688 558//686 -f 303//431 312//440 561//689 -f 561//689 545//673 303//431 -f 545//673 561//689 562//690 -f 562//690 547//675 545//673 -f 547//675 562//690 563//691 -f 563//691 549//677 547//675 -f 549//677 563//691 564//692 -f 564//692 551//679 549//677 -f 551//679 564//692 565//693 -f 565//693 553//681 551//679 -f 553//681 565//693 566//694 -f 566//694 555//683 553//681 -f 555//683 566//694 567//695 -f 567//695 557//685 555//683 -f 557//685 567//695 568//696 -f 568//696 559//687 557//685 -f 312//440 320//448 569//697 -f 569//697 561//689 312//440 -f 561//689 569//697 570//698 -f 570//698 562//690 561//689 -f 562//690 570//698 571//699 -f 571//699 563//691 562//690 -f 563//691 571//699 572//700 -f 572//700 564//692 563//691 -f 564//692 572//700 573//701 -f 573//701 565//693 564//692 -f 565//693 573//701 574//702 -f 574//702 566//694 565//693 -f 566//694 574//702 575//703 -f 575//703 567//695 566//694 -f 567//695 575//703 576//704 -f 576//704 568//696 567//695 -f 320//448 328//456 577//705 -f 577//705 569//697 320//448 -f 569//697 577//705 578//706 -f 578//706 570//698 569//697 -f 570//698 578//706 579//707 -f 579//707 571//699 570//698 -f 571//699 579//707 580//708 -f 580//708 572//700 571//699 -f 572//700 580//708 581//709 -f 581//709 573//701 572//700 -f 573//701 581//709 582//710 -f 582//710 574//702 573//701 -f 574//702 582//710 583//711 -f 583//711 575//703 574//702 -f 575//703 583//711 584//712 -f 584//712 576//704 575//703 -f 328//456 336//464 585//713 -f 585//713 577//705 328//456 -f 577//705 585//713 586//714 -f 586//714 578//706 577//705 -f 578//706 586//714 587//715 -f 587//715 579//707 578//706 -f 579//707 587//715 588//716 -f 588//716 580//708 579//707 -f 580//708 588//716 589//717 -f 589//717 581//709 580//708 -f 581//709 589//717 590//718 -f 590//718 582//710 581//709 -f 582//710 590//718 591//719 -f 591//719 583//711 582//710 -f 583//711 591//719 592//720 -f 592//720 584//712 583//711 -f 336//464 344//472 593//721 -f 593//721 585//713 336//464 -f 585//713 593//721 594//722 -f 594//722 586//714 585//713 -f 586//714 594//722 595//723 -f 595//723 587//715 586//714 -f 587//715 595//723 596//724 -f 596//724 588//716 587//715 -f 588//716 596//724 597//725 -f 597//725 589//717 588//716 -f 589//717 597//725 598//726 -f 598//726 590//718 589//717 -f 590//718 598//726 599//727 -f 599//727 591//719 590//718 -f 591//719 599//727 600//728 -f 600//728 592//720 591//719 -f 344//472 352//480 601//729 -f 601//729 593//721 344//472 -f 593//721 601//729 602//730 -f 602//730 594//722 593//721 -f 594//722 602//730 603//731 -f 603//731 595//723 594//722 -f 595//723 603//731 604//732 -f 604//732 596//724 595//723 -f 596//724 604//732 605//733 -f 605//733 597//725 596//724 -f 597//725 605//733 606//734 -f 606//734 598//726 597//725 -f 598//726 606//734 607//735 -f 607//735 599//727 598//726 -f 599//727 607//735 608//736 -f 608//736 600//728 599//727 -f 352//480 360//488 609//737 -f 609//737 601//729 352//480 -f 601//729 609//737 610//738 -f 610//738 602//730 601//729 -f 602//730 610//738 611//739 -f 611//739 603//731 602//730 -f 603//731 611//739 612//740 -f 612//740 604//732 603//731 -f 604//732 612//740 613//741 -f 613//741 605//733 604//732 -f 605//733 613//741 614//742 -f 614//742 606//734 605//733 -f 606//734 614//742 615//743 -f 615//743 607//735 606//734 -f 607//735 615//743 616//744 -f 616//744 608//736 607//735 -f 360//488 368//496 617//745 -f 617//745 609//737 360//488 -f 609//737 617//745 618//746 -f 618//746 610//738 609//737 -f 610//738 618//746 619//747 -f 619//747 611//739 610//738 -f 611//739 619//747 620//748 -f 620//748 612//740 611//739 -f 612//740 620//748 621//749 -f 621//749 613//741 612//740 -f 613//741 621//749 622//750 -f 622//750 614//742 613//741 -f 614//742 622//750 623//751 -f 623//751 615//743 614//742 -f 615//743 623//751 624//752 -f 624//752 616//744 615//743 -f 368//496 376//504 625//753 -f 625//753 617//745 368//496 -f 617//745 625//753 626//754 -f 626//754 618//746 617//745 -f 618//746 626//754 627//755 -f 627//755 619//747 618//746 -f 619//747 627//755 628//756 -f 628//756 620//748 619//747 -f 620//748 628//756 629//757 -f 629//757 621//749 620//748 -f 621//749 629//757 630//758 -f 630//758 622//750 621//749 -f 622//750 630//758 631//759 -f 631//759 623//751 622//750 -f 623//751 631//759 632//760 -f 632//760 624//752 623//751 -f 376//504 384//512 633//761 -f 633//761 625//753 376//504 -f 625//753 633//761 634//762 -f 634//762 626//754 625//753 -f 626//754 634//762 635//763 -f 635//763 627//755 626//754 -f 627//755 635//763 636//764 -f 636//764 628//756 627//755 -f 628//756 636//764 637//765 -f 637//765 629//757 628//756 -f 629//757 637//765 638//766 -f 638//766 630//758 629//757 -f 630//758 638//766 639//767 -f 639//767 631//759 630//758 -f 631//759 639//767 640//768 -f 640//768 632//760 631//759 -f 384//512 392//520 641//769 -f 641//769 633//761 384//512 -f 633//761 641//769 642//770 -f 642//770 634//762 633//761 -f 634//762 642//770 643//771 -f 643//771 635//763 634//762 -f 635//763 643//771 644//772 -f 644//772 636//764 635//763 -f 636//764 644//772 645//773 -f 645//773 637//765 636//764 -f 637//765 645//773 646//774 -f 646//774 638//766 637//765 -f 638//766 646//774 647//775 -f 647//775 639//767 638//766 -f 639//767 647//775 648//776 -f 648//776 640//768 639//767 -f 392//520 400//528 649//777 -f 649//777 641//769 392//520 -f 641//769 649//777 650//778 -f 650//778 642//770 641//769 -f 642//770 650//778 651//779 -f 651//779 643//771 642//770 -f 643//771 651//779 652//780 -f 652//780 644//772 643//771 -f 644//772 652//780 653//781 -f 653//781 645//773 644//772 -f 645//773 653//781 654//782 -f 654//782 646//774 645//773 -f 646//774 654//782 655//783 -f 655//783 647//775 646//774 -f 647//775 655//783 656//784 -f 656//784 648//776 647//775 -f 400//528 408//536 657//785 -f 657//785 649//777 400//528 -f 649//777 657//785 658//786 -f 658//786 650//778 649//777 -f 650//778 658//786 659//787 -f 659//787 651//779 650//778 -f 651//779 659//787 660//788 -f 660//788 652//780 651//779 -f 652//780 660//788 661//789 -f 661//789 653//781 652//780 -f 653//781 661//789 662//790 -f 662//790 654//782 653//781 -f 654//782 662//790 663//791 -f 663//791 655//783 654//782 -f 655//783 663//791 664//792 -f 664//792 656//784 655//783 -f 408//536 416//544 665//793 -f 665//793 657//785 408//536 -f 657//785 665//793 666//794 -f 666//794 658//786 657//785 -f 658//786 666//794 667//795 -f 667//795 659//787 658//786 -f 659//787 667//795 668//796 -f 668//796 660//788 659//787 -f 660//788 668//796 669//797 -f 669//797 661//789 660//788 -f 661//789 669//797 670//798 -f 670//798 662//790 661//789 -f 662//790 670//798 671//799 -f 671//799 663//791 662//790 -f 663//791 671//799 672//800 -f 672//800 664//792 663//791 -f 416//544 424//552 673//801 -f 673//801 665//793 416//544 -f 665//793 673//801 674//802 -f 674//802 666//794 665//793 -f 666//794 674//802 675//803 -f 675//803 667//795 666//794 -f 667//795 675//803 676//804 -f 676//804 668//796 667//795 -f 668//796 676//804 677//805 -f 677//805 669//797 668//796 -f 669//797 677//805 678//806 -f 678//806 670//798 669//797 -f 670//798 678//806 679//807 -f 679//807 671//799 670//798 -f 671//799 679//807 680//808 -f 680//808 672//800 671//799 -f 424//552 432//560 681//809 -f 681//809 673//801 424//552 -f 673//801 681//809 682//810 -f 682//810 674//802 673//801 -f 674//802 682//810 683//811 -f 683//811 675//803 674//802 -f 675//803 683//811 684//812 -f 684//812 676//804 675//803 -f 676//804 684//812 685//813 -f 685//813 677//805 676//804 -f 677//805 685//813 686//814 -f 686//814 678//806 677//805 -f 678//806 686//814 687//815 -f 687//815 679//807 678//806 -f 679//807 687//815 688//816 -f 688//816 680//808 679//807 -f 432//560 440//568 689//817 -f 689//817 681//809 432//560 -f 681//809 689//817 690//818 -f 690//818 682//810 681//809 -f 682//810 690//818 691//819 -f 691//819 683//811 682//810 -f 683//811 691//819 692//820 -f 692//820 684//812 683//811 -f 684//812 692//820 693//821 -f 693//821 685//813 684//812 -f 685//813 693//821 694//822 -f 694//822 686//814 685//813 -f 686//814 694//822 695//823 -f 695//823 687//815 686//814 -f 687//815 695//823 696//824 -f 696//824 688//816 687//815 -f 440//568 448//576 697//825 -f 697//825 689//817 440//568 -f 689//817 697//825 698//826 -f 698//826 690//818 689//817 -f 690//818 698//826 699//827 -f 699//827 691//819 690//818 -f 691//819 699//827 700//828 -f 700//828 692//820 691//819 -f 692//820 700//828 701//829 -f 701//829 693//821 692//820 -f 693//821 701//829 702//830 -f 702//830 694//822 693//821 -f 694//822 702//830 703//831 -f 703//831 695//823 694//822 -f 695//823 703//831 704//832 -f 704//832 696//824 695//823 -f 448//576 456//584 705//833 -f 705//833 697//825 448//576 -f 697//825 705//833 706//834 -f 706//834 698//826 697//825 -f 698//826 706//834 707//835 -f 707//835 699//827 698//826 -f 699//827 707//835 708//836 -f 708//836 700//828 699//827 -f 700//828 708//836 709//837 -f 709//837 701//829 700//828 -f 701//829 709//837 710//838 -f 710//838 702//830 701//829 -f 702//830 710//838 711//839 -f 711//839 703//831 702//830 -f 703//831 711//839 712//840 -f 712//840 704//832 703//831 -f 456//584 464//592 713//841 -f 713//841 705//833 456//584 -f 705//833 713//841 714//842 -f 714//842 706//834 705//833 -f 706//834 714//842 715//843 -f 715//843 707//835 706//834 -f 707//835 715//843 716//844 -f 716//844 708//836 707//835 -f 708//836 716//844 717//845 -f 717//845 709//837 708//836 -f 709//837 717//845 718//846 -f 718//846 710//838 709//837 -f 710//838 718//846 719//847 -f 719//847 711//839 710//838 -f 711//839 719//847 720//848 -f 720//848 712//840 711//839 -f 464//592 472//600 721//849 -f 721//849 713//841 464//592 -f 713//841 721//849 722//850 -f 722//850 714//842 713//841 -f 714//842 722//850 723//851 -f 723//851 715//843 714//842 -f 715//843 723//851 724//852 -f 724//852 716//844 715//843 -f 716//844 724//852 725//853 -f 725//853 717//845 716//844 -f 717//845 725//853 726//854 -f 726//854 718//846 717//845 -f 718//846 726//854 727//855 -f 727//855 719//847 718//846 -f 719//847 727//855 728//856 -f 728//856 720//848 719//847 -f 472//600 480//608 729//857 -f 729//857 721//849 472//600 -f 721//849 729//857 730//858 -f 730//858 722//850 721//849 -f 722//850 730//858 731//859 -f 731//859 723//851 722//850 -f 723//851 731//859 732//860 -f 732//860 724//852 723//851 -f 724//852 732//860 733//861 -f 733//861 725//853 724//852 -f 725//853 733//861 734//862 -f 734//862 726//854 725//853 -f 726//854 734//862 735//863 -f 735//863 727//855 726//854 -f 727//855 735//863 736//864 -f 736//864 728//856 727//855 -f 480//608 488//616 737//865 -f 737//865 729//857 480//608 -f 729//857 737//865 738//866 -f 738//866 730//858 729//857 -f 730//858 738//866 739//867 -f 739//867 731//859 730//858 -f 731//859 739//867 740//868 -f 740//868 732//860 731//859 -f 732//860 740//868 741//869 -f 741//869 733//861 732//860 -f 733//861 741//869 742//870 -f 742//870 734//862 733//861 -f 734//862 742//870 743//871 -f 743//871 735//863 734//862 -f 735//863 743//871 744//872 -f 744//872 736//864 735//863 -f 488//616 496//624 745//873 -f 745//873 737//865 488//616 -f 737//865 745//873 746//874 -f 746//874 738//866 737//865 -f 738//866 746//874 747//875 -f 747//875 739//867 738//866 -f 739//867 747//875 748//876 -f 748//876 740//868 739//867 -f 740//868 748//876 749//877 -f 749//877 741//869 740//868 -f 741//869 749//877 750//878 -f 750//878 742//870 741//869 -f 742//870 750//878 751//879 -f 751//879 743//871 742//870 -f 743//871 751//879 752//880 -f 752//880 744//872 743//871 -f 496//624 504//632 753//881 -f 753//881 745//873 496//624 -f 745//873 753//881 754//882 -f 754//882 746//874 745//873 -f 746//874 754//882 755//883 -f 755//883 747//875 746//874 -f 747//875 755//883 756//884 -f 756//884 748//876 747//875 -f 748//876 756//884 757//885 -f 757//885 749//877 748//876 -f 749//877 757//885 758//886 -f 758//886 750//878 749//877 -f 750//878 758//886 759//887 -f 759//887 751//879 750//878 -f 751//879 759//887 760//888 -f 760//888 752//880 751//879 -f 504//632 512//640 761//889 -f 761//889 753//881 504//632 -f 753//881 761//889 762//890 -f 762//890 754//882 753//881 -f 754//882 762//890 763//891 -f 763//891 755//883 754//882 -f 755//883 763//891 764//892 -f 764//892 756//884 755//883 -f 756//884 764//892 765//893 -f 765//893 757//885 756//884 -f 757//885 765//893 766//894 -f 766//894 758//886 757//885 -f 758//886 766//894 767//895 -f 767//895 759//887 758//886 -f 759//887 767//895 768//896 -f 768//896 760//888 759//887 -f 512//640 520//648 769//897 -f 769//897 761//889 512//640 -f 761//889 769//897 770//898 -f 770//898 762//890 761//889 -f 762//890 770//898 771//899 -f 771//899 763//891 762//890 -f 763//891 771//899 772//900 -f 772//900 764//892 763//891 -f 764//892 772//900 773//901 -f 773//901 765//893 764//892 -f 765//893 773//901 774//902 -f 774//902 766//894 765//893 -f 766//894 774//902 775//903 -f 775//903 767//895 766//894 -f 767//895 775//903 776//904 -f 776//904 768//896 767//895 -f 520//648 528//656 777//905 -f 777//905 769//897 520//648 -f 769//897 777//905 778//906 -f 778//906 770//898 769//897 -f 770//898 778//906 779//907 -f 779//907 771//899 770//898 -f 771//899 779//907 780//908 -f 780//908 772//900 771//899 -f 772//900 780//908 781//909 -f 781//909 773//901 772//900 -f 773//901 781//909 782//910 -f 782//910 774//902 773//901 -f 774//902 782//910 783//911 -f 783//911 775//903 774//902 -f 775//903 783//911 784//912 -f 784//912 776//904 775//903 -f 528//656 536//664 785//913 -f 785//913 777//905 528//656 -f 777//905 785//913 786//914 -f 786//914 778//906 777//905 -f 778//906 786//914 787//915 -f 787//915 779//907 778//906 -f 779//907 787//915 788//916 -f 788//916 780//908 779//907 -f 780//908 788//916 789//917 -f 789//917 781//909 780//908 -f 781//909 789//917 790//918 -f 790//918 782//910 781//909 -f 782//910 790//918 791//919 -f 791//919 783//911 782//910 -f 783//911 791//919 792//920 -f 792//920 784//912 783//911 -f 536//664 544//672 793//921 -f 793//921 785//913 536//664 -f 785//913 793//921 794//922 -f 794//922 786//914 785//913 -f 786//914 794//922 795//923 -f 795//923 787//915 786//914 -f 787//915 795//923 796//924 -f 796//924 788//916 787//915 -f 788//916 796//924 797//925 -f 797//925 789//917 788//916 -f 789//917 797//925 798//926 -f 798//926 790//918 789//917 -f 790//918 798//926 799//927 -f 799//927 791//919 790//918 -f 791//919 799//927 800//928 -f 800//928 792//920 791//919 -f 544//672 304//432 546//674 -f 546//674 793//921 544//672 -f 793//921 546//674 548//676 -f 548//676 794//922 793//921 -f 794//922 548//676 550//678 -f 550//678 795//923 794//922 -f 795//923 550//678 552//680 -f 552//680 796//924 795//923 -f 796//924 552//680 554//682 -f 554//682 797//925 796//924 -f 797//925 554//682 556//684 -f 556//684 798//926 797//925 -f 798//926 556//684 558//686 -f 558//686 799//927 798//926 -f 799//927 558//686 560//688 -f 560//688 800//928 799//927 -f 560//688 559//687 801//929 -f 801//929 802//930 560//688 -s 5 -f 802//962 801//961 803//963 -f 803//963 804//964 802//962 -f 804//964 803//963 805//965 -f 805//965 806//966 804//964 -f 806//966 805//965 807//967 -f 807//967 808//968 806//966 -f 808//968 807//967 809//969 -f 809//969 810//970 808//968 -f 810//970 809//969 811//971 -f 811//971 812//972 810//970 -f 812//972 811//971 813//973 -f 813//973 814//974 812//972 -f 814//974 813//973 815//975 -s off -f 815//1 815//1 814//1 -s 3 -f 559//687 568//696 816//931 -f 816//931 801//929 559//687 -s 5 -f 801//961 816//976 817//977 -f 817//977 803//963 801//961 -f 803//963 817//977 818//978 -f 818//978 805//965 803//963 -f 805//965 818//978 819//979 -f 819//979 807//967 805//965 -f 807//967 819//979 820//980 -f 820//980 809//969 807//967 -f 809//969 820//980 821//981 -f 821//981 811//971 809//969 -f 811//971 821//981 822//982 -f 822//982 813//973 811//971 -f 813//973 822//982 815//975 -s off -f 815//2 815//2 813//2 -s 3 -f 568//696 576//704 823//932 -f 823//932 816//931 568//696 -s 5 -f 816//976 823//983 824//984 -f 824//984 817//977 816//976 -f 817//977 824//984 825//985 -f 825//985 818//978 817//977 -f 818//978 825//985 826//986 -f 826//986 819//979 818//978 -f 819//979 826//986 827//987 -f 827//987 820//980 819//979 -f 820//980 827//987 828//988 -f 828//988 821//981 820//980 -f 821//981 828//988 829//989 -f 829//989 822//982 821//981 -f 822//982 829//989 815//975 -s off -f 815//3 815//3 822//3 -s 3 -f 576//704 584//712 830//933 -f 830//933 823//932 576//704 -s 5 -f 823//983 830//990 831//991 -f 831//991 824//984 823//983 -f 824//984 831//991 832//992 -f 832//992 825//985 824//984 -f 825//985 832//992 833//993 -f 833//993 826//986 825//985 -f 826//986 833//993 834//994 -f 834//994 827//987 826//986 -f 827//987 834//994 835//995 -f 835//995 828//988 827//987 -f 828//988 835//995 836//996 -f 836//996 829//989 828//988 -f 829//989 836//996 815//975 -s off -f 815//4 815//4 829//4 -s 3 -f 584//712 592//720 837//934 -f 837//934 830//933 584//712 -s 5 -f 830//990 837//997 838//998 -f 838//998 831//991 830//990 -f 831//991 838//998 839//999 -f 839//999 832//992 831//991 -f 832//992 839//999 840//1000 -f 840//1000 833//993 832//992 -f 833//993 840//1000 841//1001 -f 841//1001 834//994 833//993 -f 834//994 841//1001 842//1002 -f 842//1002 835//995 834//994 -f 835//995 842//1002 843//1003 -f 843//1003 836//996 835//995 -f 836//996 843//1003 815//975 -s off -f 815//5 815//5 836//5 -s 3 -f 592//720 600//728 844//935 -f 844//935 837//934 592//720 -s 5 -f 837//997 844//1004 845//1005 -f 845//1005 838//998 837//997 -f 838//998 845//1005 846//1006 -f 846//1006 839//999 838//998 -f 839//999 846//1006 847//1007 -f 847//1007 840//1000 839//999 -f 840//1000 847//1007 848//1008 -f 848//1008 841//1001 840//1000 -f 841//1001 848//1008 849//1009 -f 849//1009 842//1002 841//1001 -f 842//1002 849//1009 850//1010 -f 850//1010 843//1003 842//1002 -f 843//1003 850//1010 815//975 -s off -f 815//6 815//6 843//6 -s 3 -f 600//728 608//736 851//936 -f 851//936 844//935 600//728 -s 5 -f 844//1004 851//1011 852//1012 -f 852//1012 845//1005 844//1004 -f 845//1005 852//1012 853//1013 -f 853//1013 846//1006 845//1005 -f 846//1006 853//1013 854//1014 -f 854//1014 847//1007 846//1006 -f 847//1007 854//1014 855//1015 -f 855//1015 848//1008 847//1007 -f 848//1008 855//1015 856//1016 -f 856//1016 849//1009 848//1008 -f 849//1009 856//1016 857//1017 -f 857//1017 850//1010 849//1009 -f 850//1010 857//1017 815//975 -s off -f 815//7 815//7 850//7 -s 3 -f 608//736 616//744 858//937 -f 858//937 851//936 608//736 -s 5 -f 851//1011 858//1018 859//1019 -f 859//1019 852//1012 851//1011 -f 852//1012 859//1019 860//1020 -f 860//1020 853//1013 852//1012 -f 853//1013 860//1020 861//1021 -f 861//1021 854//1014 853//1013 -f 854//1014 861//1021 862//1022 -f 862//1022 855//1015 854//1014 -f 855//1015 862//1022 863//1023 -f 863//1023 856//1016 855//1015 -f 856//1016 863//1023 864//1024 -f 864//1024 857//1017 856//1016 -f 857//1017 864//1024 815//975 -s off -f 815//8 815//8 857//8 -s 3 -f 616//744 624//752 865//938 -f 865//938 858//937 616//744 -s 5 -f 858//1018 865//1025 866//1026 -f 866//1026 859//1019 858//1018 -f 859//1019 866//1026 867//1027 -f 867//1027 860//1020 859//1019 -f 860//1020 867//1027 868//1028 -f 868//1028 861//1021 860//1020 -f 861//1021 868//1028 869//1029 -f 869//1029 862//1022 861//1021 -f 862//1022 869//1029 870//1030 -f 870//1030 863//1023 862//1022 -f 863//1023 870//1030 871//1031 -f 871//1031 864//1024 863//1023 -f 864//1024 871//1031 815//975 -s off -f 815//9 815//9 864//9 -s 3 -f 624//752 632//760 872//939 -f 872//939 865//938 624//752 -s 5 -f 865//1025 872//1032 873//1033 -f 873//1033 866//1026 865//1025 -f 866//1026 873//1033 874//1034 -f 874//1034 867//1027 866//1026 -f 867//1027 874//1034 875//1035 -f 875//1035 868//1028 867//1027 -f 868//1028 875//1035 876//1036 -f 876//1036 869//1029 868//1028 -f 869//1029 876//1036 877//1037 -f 877//1037 870//1030 869//1029 -f 870//1030 877//1037 878//1038 -f 878//1038 871//1031 870//1030 -f 871//1031 878//1038 815//975 -s off -f 815//10 815//10 871//10 -s 3 -f 632//760 640//768 879//940 -f 879//940 872//939 632//760 -s 5 -f 872//1032 879//1039 880//1040 -f 880//1040 873//1033 872//1032 -f 873//1033 880//1040 881//1041 -f 881//1041 874//1034 873//1033 -f 874//1034 881//1041 882//1042 -f 882//1042 875//1035 874//1034 -f 875//1035 882//1042 883//1043 -f 883//1043 876//1036 875//1035 -f 876//1036 883//1043 884//1044 -f 884//1044 877//1037 876//1036 -f 877//1037 884//1044 885//1045 -f 885//1045 878//1038 877//1037 -f 878//1038 885//1045 815//975 -s off -f 815//11 815//11 878//11 -s 3 -f 640//768 648//776 886//941 -f 886//941 879//940 640//768 -s 5 -f 879//1039 886//1046 887//1047 -f 887//1047 880//1040 879//1039 -f 880//1040 887//1047 888//1048 -f 888//1048 881//1041 880//1040 -f 881//1041 888//1048 889//1049 -f 889//1049 882//1042 881//1041 -f 882//1042 889//1049 890//1050 -f 890//1050 883//1043 882//1042 -f 883//1043 890//1050 891//1051 -f 891//1051 884//1044 883//1043 -f 884//1044 891//1051 892//1052 -f 892//1052 885//1045 884//1044 -f 885//1045 892//1052 815//975 -s off -f 815//12 815//12 885//12 -s 3 -f 648//776 656//784 893//942 -f 893//942 886//941 648//776 -s 5 -f 886//1046 893//1053 894//1054 -f 894//1054 887//1047 886//1046 -f 887//1047 894//1054 895//1055 -f 895//1055 888//1048 887//1047 -f 888//1048 895//1055 896//1056 -f 896//1056 889//1049 888//1048 -f 889//1049 896//1056 897//1057 -f 897//1057 890//1050 889//1049 -f 890//1050 897//1057 898//1058 -f 898//1058 891//1051 890//1050 -f 891//1051 898//1058 899//1059 -f 899//1059 892//1052 891//1051 -f 892//1052 899//1059 815//975 -s off -f 815//13 815//13 892//13 -s 3 -f 656//784 664//792 900//943 -f 900//943 893//942 656//784 -s 5 -f 893//1053 900//1060 901//1061 -f 901//1061 894//1054 893//1053 -f 894//1054 901//1061 902//1062 -f 902//1062 895//1055 894//1054 -f 895//1055 902//1062 903//1063 -f 903//1063 896//1056 895//1055 -f 896//1056 903//1063 904//1064 -f 904//1064 897//1057 896//1056 -f 897//1057 904//1064 905//1065 -f 905//1065 898//1058 897//1057 -f 898//1058 905//1065 906//1066 -f 906//1066 899//1059 898//1058 -f 899//1059 906//1066 815//975 -s off -f 815//14 815//14 899//14 -s 3 -f 664//792 672//800 907//944 -f 907//944 900//943 664//792 -s 5 -f 900//1060 907//1067 908//1068 -f 908//1068 901//1061 900//1060 -f 901//1061 908//1068 909//1069 -f 909//1069 902//1062 901//1061 -f 902//1062 909//1069 910//1070 -f 910//1070 903//1063 902//1062 -f 903//1063 910//1070 911//1071 -f 911//1071 904//1064 903//1063 -f 904//1064 911//1071 912//1072 -f 912//1072 905//1065 904//1064 -f 905//1065 912//1072 913//1073 -f 913//1073 906//1066 905//1065 -f 906//1066 913//1073 815//975 -s off -f 815//15 815//15 906//15 -s 3 -f 672//800 680//808 914//945 -f 914//945 907//944 672//800 -s 5 -f 907//1067 914//1074 915//1075 -f 915//1075 908//1068 907//1067 -f 908//1068 915//1075 916//1076 -f 916//1076 909//1069 908//1068 -f 909//1069 916//1076 917//1077 -f 917//1077 910//1070 909//1069 -f 910//1070 917//1077 918//1078 -f 918//1078 911//1071 910//1070 -f 911//1071 918//1078 919//1079 -f 919//1079 912//1072 911//1071 -f 912//1072 919//1079 920//1080 -f 920//1080 913//1073 912//1072 -f 913//1073 920//1080 815//975 -s off -f 815//16 815//16 913//16 -s 3 -f 680//808 688//816 921//946 -f 921//946 914//945 680//808 -s 5 -f 914//1074 921//1081 922//1082 -f 922//1082 915//1075 914//1074 -f 915//1075 922//1082 923//1083 -f 923//1083 916//1076 915//1075 -f 916//1076 923//1083 924//1084 -f 924//1084 917//1077 916//1076 -f 917//1077 924//1084 925//1085 -f 925//1085 918//1078 917//1077 -f 918//1078 925//1085 926//1086 -f 926//1086 919//1079 918//1078 -f 919//1079 926//1086 927//1087 -f 927//1087 920//1080 919//1079 -f 920//1080 927//1087 815//975 -s off -f 815//17 815//17 920//17 -s 3 -f 688//816 696//824 928//947 -f 928//947 921//946 688//816 -s 5 -f 921//1081 928//1088 929//1089 -f 929//1089 922//1082 921//1081 -f 922//1082 929//1089 930//1090 -f 930//1090 923//1083 922//1082 -f 923//1083 930//1090 931//1091 -f 931//1091 924//1084 923//1083 -f 924//1084 931//1091 932//1092 -f 932//1092 925//1085 924//1084 -f 925//1085 932//1092 933//1093 -f 933//1093 926//1086 925//1085 -f 926//1086 933//1093 934//1094 -f 934//1094 927//1087 926//1086 -f 927//1087 934//1094 815//975 -s off -f 815//18 815//18 927//18 -s 3 -f 696//824 704//832 935//948 -f 935//948 928//947 696//824 -s 5 -f 928//1088 935//1095 936//1096 -f 936//1096 929//1089 928//1088 -f 929//1089 936//1096 937//1097 -f 937//1097 930//1090 929//1089 -f 930//1090 937//1097 938//1098 -f 938//1098 931//1091 930//1090 -f 931//1091 938//1098 939//1099 -f 939//1099 932//1092 931//1091 -f 932//1092 939//1099 940//1100 -f 940//1100 933//1093 932//1092 -f 933//1093 940//1100 941//1101 -f 941//1101 934//1094 933//1093 -f 934//1094 941//1101 815//975 -s off -f 815//19 815//19 934//19 -s 3 -f 704//832 712//840 942//949 -f 942//949 935//948 704//832 -s 5 -f 935//1095 942//1102 943//1103 -f 943//1103 936//1096 935//1095 -f 936//1096 943//1103 944//1104 -f 944//1104 937//1097 936//1096 -f 937//1097 944//1104 945//1105 -f 945//1105 938//1098 937//1097 -f 938//1098 945//1105 946//1106 -f 946//1106 939//1099 938//1098 -f 939//1099 946//1106 947//1107 -f 947//1107 940//1100 939//1099 -f 940//1100 947//1107 948//1108 -f 948//1108 941//1101 940//1100 -f 941//1101 948//1108 815//975 -s off -f 815//20 815//20 941//20 -s 3 -f 712//840 720//848 949//950 -f 949//950 942//949 712//840 -s 5 -f 942//1102 949//1109 950//1110 -f 950//1110 943//1103 942//1102 -f 943//1103 950//1110 951//1111 -f 951//1111 944//1104 943//1103 -f 944//1104 951//1111 952//1112 -f 952//1112 945//1105 944//1104 -f 945//1105 952//1112 953//1113 -f 953//1113 946//1106 945//1105 -f 946//1106 953//1113 954//1114 -f 954//1114 947//1107 946//1106 -f 947//1107 954//1114 955//1115 -f 955//1115 948//1108 947//1107 -f 948//1108 955//1115 815//975 -s off -f 815//21 815//21 948//21 -s 3 -f 720//848 728//856 956//951 -f 956//951 949//950 720//848 -s 5 -f 949//1109 956//1116 957//1117 -f 957//1117 950//1110 949//1109 -f 950//1110 957//1117 958//1118 -f 958//1118 951//1111 950//1110 -f 951//1111 958//1118 959//1119 -f 959//1119 952//1112 951//1111 -f 952//1112 959//1119 960//1120 -f 960//1120 953//1113 952//1112 -f 953//1113 960//1120 961//1121 -f 961//1121 954//1114 953//1113 -f 954//1114 961//1121 962//1122 -f 962//1122 955//1115 954//1114 -f 955//1115 962//1122 815//975 -s off -f 815//22 815//22 955//22 -s 3 -f 728//856 736//864 963//952 -f 963//952 956//951 728//856 -s 5 -f 956//1116 963//1123 964//1124 -f 964//1124 957//1117 956//1116 -f 957//1117 964//1124 965//1125 -f 965//1125 958//1118 957//1117 -f 958//1118 965//1125 966//1126 -f 966//1126 959//1119 958//1118 -f 959//1119 966//1126 967//1127 -f 967//1127 960//1120 959//1119 -f 960//1120 967//1127 968//1128 -f 968//1128 961//1121 960//1120 -f 961//1121 968//1128 969//1129 -f 969//1129 962//1122 961//1121 -f 962//1122 969//1129 815//975 -s off -f 815//23 815//23 962//23 -s 3 -f 736//864 744//872 970//953 -f 970//953 963//952 736//864 -s 5 -f 963//1123 970//1130 971//1131 -f 971//1131 964//1124 963//1123 -f 964//1124 971//1131 972//1132 -f 972//1132 965//1125 964//1124 -f 965//1125 972//1132 973//1133 -f 973//1133 966//1126 965//1125 -f 966//1126 973//1133 974//1134 -f 974//1134 967//1127 966//1126 -f 967//1127 974//1134 975//1135 -f 975//1135 968//1128 967//1127 -f 968//1128 975//1135 976//1136 -f 976//1136 969//1129 968//1128 -f 969//1129 976//1136 815//975 -s off -f 815//24 815//24 969//24 -s 3 -f 744//872 752//880 977//954 -f 977//954 970//953 744//872 -s 5 -f 970//1130 977//1137 978//1138 -f 978//1138 971//1131 970//1130 -f 971//1131 978//1138 979//1139 -f 979//1139 972//1132 971//1131 -f 972//1132 979//1139 980//1140 -f 980//1140 973//1133 972//1132 -f 973//1133 980//1140 981//1141 -f 981//1141 974//1134 973//1133 -f 974//1134 981//1141 982//1142 -f 982//1142 975//1135 974//1134 -f 975//1135 982//1142 983//1143 -f 983//1143 976//1136 975//1135 -f 976//1136 983//1143 815//975 -s off -f 815//25 815//25 976//25 -s 3 -f 752//880 760//888 984//955 -f 984//955 977//954 752//880 -s 5 -f 977//1137 984//1144 985//1145 -f 985//1145 978//1138 977//1137 -f 978//1138 985//1145 986//1146 -f 986//1146 979//1139 978//1138 -f 979//1139 986//1146 987//1147 -f 987//1147 980//1140 979//1139 -f 980//1140 987//1147 988//1148 -f 988//1148 981//1141 980//1140 -f 981//1141 988//1148 989//1149 -f 989//1149 982//1142 981//1141 -f 982//1142 989//1149 990//1150 -f 990//1150 983//1143 982//1142 -f 983//1143 990//1150 815//975 -s off -f 815//26 815//26 983//26 -s 3 -f 760//888 768//896 991//956 -f 991//956 984//955 760//888 -s 5 -f 984//1144 991//1151 992//1152 -f 992//1152 985//1145 984//1144 -f 985//1145 992//1152 993//1153 -f 993//1153 986//1146 985//1145 -f 986//1146 993//1153 994//1154 -f 994//1154 987//1147 986//1146 -f 987//1147 994//1154 995//1155 -f 995//1155 988//1148 987//1147 -f 988//1148 995//1155 996//1156 -f 996//1156 989//1149 988//1148 -f 989//1149 996//1156 997//1157 -f 997//1157 990//1150 989//1149 -f 990//1150 997//1157 815//975 -s off -f 815//27 815//27 990//27 -s 3 -f 768//896 776//904 998//957 -f 998//957 991//956 768//896 -s 5 -f 991//1151 998//1158 999//1159 -f 999//1159 992//1152 991//1151 -f 992//1152 999//1159 1000//1160 -f 1000//1160 993//1153 992//1152 -f 993//1153 1000//1160 1001//1161 -f 1001//1161 994//1154 993//1153 -f 994//1154 1001//1161 1002//1162 -f 1002//1162 995//1155 994//1154 -f 995//1155 1002//1162 1003//1163 -f 1003//1163 996//1156 995//1155 -f 996//1156 1003//1163 1004//1164 -f 1004//1164 997//1157 996//1156 -f 997//1157 1004//1164 815//975 -s off -f 815//28 815//28 997//28 -s 3 -f 776//904 784//912 1005//958 -f 1005//958 998//957 776//904 -s 5 -f 998//1158 1005//1165 1006//1166 -f 1006//1166 999//1159 998//1158 -f 999//1159 1006//1166 1007//1167 -f 1007//1167 1000//1160 999//1159 -f 1000//1160 1007//1167 1008//1168 -f 1008//1168 1001//1161 1000//1160 -f 1001//1161 1008//1168 1009//1169 -f 1009//1169 1002//1162 1001//1161 -f 1002//1162 1009//1169 1010//1170 -f 1010//1170 1003//1163 1002//1162 -f 1003//1163 1010//1170 1011//1171 -f 1011//1171 1004//1164 1003//1163 -f 1004//1164 1011//1171 815//975 -s off -f 815//29 815//29 1004//29 -s 3 -f 784//912 792//920 1012//959 -f 1012//959 1005//958 784//912 -s 5 -f 1005//1165 1012//1172 1013//1173 -f 1013//1173 1006//1166 1005//1165 -f 1006//1166 1013//1173 1014//1174 -f 1014//1174 1007//1167 1006//1166 -f 1007//1167 1014//1174 1015//1175 -f 1015//1175 1008//1168 1007//1167 -f 1008//1168 1015//1175 1016//1176 -f 1016//1176 1009//1169 1008//1168 -f 1009//1169 1016//1176 1017//1177 -f 1017//1177 1010//1170 1009//1169 -f 1010//1170 1017//1177 1018//1178 -f 1018//1178 1011//1171 1010//1170 -f 1011//1171 1018//1178 815//975 -s off -f 815//30 815//30 1011//30 -s 3 -f 792//920 800//928 1019//960 -f 1019//960 1012//959 792//920 -s 5 -f 1012//1172 1019//1179 1020//1180 -f 1020//1180 1013//1173 1012//1172 -f 1013//1173 1020//1180 1021//1181 -f 1021//1181 1014//1174 1013//1173 -f 1014//1174 1021//1181 1022//1182 -f 1022//1182 1015//1175 1014//1174 -f 1015//1175 1022//1182 1023//1183 -f 1023//1183 1016//1176 1015//1175 -f 1016//1176 1023//1183 1024//1184 -f 1024//1184 1017//1177 1016//1176 -f 1017//1177 1024//1184 1025//1185 -f 1025//1185 1018//1178 1017//1177 -f 1018//1178 1025//1185 815//975 -s off -f 815//31 815//31 1018//31 -s 3 -f 800//928 560//688 802//930 -f 802//930 1019//960 800//928 -s 5 -f 1019//1179 802//962 804//964 -f 804//964 1020//1180 1019//1179 -f 1020//1180 804//964 806//966 -f 806//966 1021//1181 1020//1180 -f 1021//1181 806//966 808//968 -f 808//968 1022//1182 1021//1181 -f 1022//1182 808//968 810//970 -f 810//970 1023//1183 1022//1182 -f 1023//1183 810//970 812//972 -f 812//972 1024//1184 1023//1183 -f 1024//1184 812//972 814//974 -f 814//974 1025//1185 1024//1184 -f 1025//1185 814//974 815//975 -s off -f 815//32 815//32 1025//32 -s 4 -f 1026//1187 1027//1188 1028//1189 -f 1028//1189 1029//1190 1026//1187 -f 1029//1190 1028//1189 1030//1191 -f 1030//1191 1031//1192 1029//1190 -f 1031//1192 1030//1191 1032//1193 -f 1032//1193 1033//1194 1031//1192 -f 1033//1194 1032//1193 1034//1195 -f 1034//1195 1035//1196 1033//1194 -f 1035//1196 1034//1195 1036//1197 -f 1036//1197 1037//1198 1035//1196 -f 1037//1198 1036//1197 1038//1199 -f 1038//1199 1039//1200 1037//1198 -f 1039//1200 1038//1199 1040//1201 -f 1040//1201 1041//1202 1039//1200 -f 1041//1202 1040//1201 1042//1203 -f 1042//1203 1043//1204 1041//1202 -f 1027//1188 1044//1205 1045//1206 -f 1045//1206 1028//1189 1027//1188 -f 1028//1189 1045//1206 1046//1207 -f 1046//1207 1030//1191 1028//1189 -f 1030//1191 1046//1207 1047//1208 -f 1047//1208 1032//1193 1030//1191 -f 1032//1193 1047//1208 1048//1209 -f 1048//1209 1034//1195 1032//1193 -f 1034//1195 1048//1209 1049//1210 -f 1049//1210 1036//1197 1034//1195 -f 1036//1197 1049//1210 1050//1211 -f 1050//1211 1038//1199 1036//1197 -f 1038//1199 1050//1211 1051//1212 -f 1051//1212 1040//1201 1038//1199 -f 1040//1201 1051//1212 1052//1213 -f 1052//1213 1042//1203 1040//1201 -f 1044//1205 1053//1214 1054//1215 -f 1054//1215 1045//1206 1044//1205 -f 1045//1206 1054//1215 1055//1216 -f 1055//1216 1046//1207 1045//1206 -f 1046//1207 1055//1216 1056//1217 -f 1056//1217 1047//1208 1046//1207 -f 1047//1208 1056//1217 1057//1218 -f 1057//1218 1048//1209 1047//1208 -f 1048//1209 1057//1218 1058//1219 -f 1058//1219 1049//1210 1048//1209 -f 1049//1210 1058//1219 1059//1220 -f 1059//1220 1050//1211 1049//1210 -f 1050//1211 1059//1220 1060//1221 -f 1060//1221 1051//1212 1050//1211 -f 1051//1212 1060//1221 1061//1222 -f 1061//1222 1052//1213 1051//1212 -s 6 -f 1053//1439 1062//1443 1063//1444 -f 1063//1444 1054//1440 1053//1439 -f 1054//1440 1063//1444 1064//1445 -f 1064//1445 1055//1441 1054//1440 -f 1055//1441 1064//1445 1065//1446 -f 1065//1446 1056//1442 1055//1441 -f 1056//1442 1065//1446 1066//1447 -s 4 -f 1066//1227 1057//1218 1056//1217 -f 1057//1218 1066//1227 1067//1228 -f 1067//1228 1058//1219 1057//1218 -f 1058//1219 1067//1228 1068//1229 -f 1068//1229 1059//1220 1058//1219 -f 1059//1220 1068//1229 1069//1230 -f 1069//1230 1060//1221 1059//1220 -f 1060//1221 1069//1230 1070//1231 -f 1070//1231 1061//1222 1060//1221 -f 1062//1223 1071//1232 1072//1233 -f 1072//1233 1063//1224 1062//1223 -f 1063//1224 1072//1233 1073//1234 -f 1073//1234 1064//1225 1063//1224 -f 1064//1225 1073//1234 1074//1235 -f 1074//1235 1065//1226 1064//1225 -f 1065//1226 1074//1235 1075//1236 -f 1075//1236 1066//1227 1065//1226 -f 1066//1227 1075//1236 1076//1237 -f 1076//1237 1067//1228 1066//1227 -f 1067//1228 1076//1237 1077//1238 -f 1077//1238 1068//1229 1067//1228 -f 1068//1229 1077//1238 1078//1239 -f 1078//1239 1069//1230 1068//1229 -f 1069//1230 1078//1239 1079//1240 -f 1079//1240 1070//1231 1069//1230 -f 1071//1232 1080//1241 1081//1242 -f 1081//1242 1072//1233 1071//1232 -f 1072//1233 1081//1242 1082//1243 -f 1082//1243 1073//1234 1072//1233 -f 1073//1234 1082//1243 1083//1244 -f 1083//1244 1074//1235 1073//1234 -f 1074//1235 1083//1244 1084//1245 -f 1084//1245 1075//1236 1074//1235 -f 1075//1236 1084//1245 1085//1246 -f 1085//1246 1076//1237 1075//1236 -f 1076//1237 1085//1246 1086//1247 -f 1086//1247 1077//1238 1076//1237 -f 1077//1238 1086//1247 1087//1248 -f 1087//1248 1078//1239 1077//1238 -f 1078//1239 1087//1248 1088//1249 -f 1088//1249 1079//1240 1078//1239 -f 1080//1241 1089//1250 1090//1251 -f 1090//1251 1081//1242 1080//1241 -f 1081//1242 1090//1251 1091//1252 -f 1091//1252 1082//1243 1081//1242 -f 1082//1243 1091//1252 1092//1253 -f 1092//1253 1083//1244 1082//1243 -f 1083//1244 1092//1253 1093//1254 -f 1093//1254 1084//1245 1083//1244 -f 1084//1245 1093//1254 1094//1255 -f 1094//1255 1085//1246 1084//1245 -f 1085//1246 1094//1255 1095//1256 -f 1095//1256 1086//1247 1085//1246 -f 1086//1247 1095//1256 1096//1257 -f 1096//1257 1087//1248 1086//1247 -f 1087//1248 1096//1257 1097//1258 -f 1097//1258 1088//1249 1087//1248 -f 1089//1250 1098//1259 1099//1260 -f 1099//1260 1090//1251 1089//1250 -f 1090//1251 1099//1260 1100//1261 -f 1100//1261 1091//1252 1090//1251 -f 1091//1252 1100//1261 1101//1262 -f 1101//1262 1092//1253 1091//1252 -f 1092//1253 1101//1262 1102//1263 -f 1102//1263 1093//1254 1092//1253 -f 1093//1254 1102//1263 1103//1264 -f 1103//1264 1094//1255 1093//1254 -f 1094//1255 1103//1264 1104//1265 -f 1104//1265 1095//1256 1094//1255 -f 1095//1256 1104//1265 1105//1266 -f 1105//1266 1096//1257 1095//1256 -f 1096//1257 1105//1266 1106//1267 -f 1106//1267 1097//1258 1096//1257 -f 1098//1259 1107//1268 1108//1269 -f 1108//1269 1099//1260 1098//1259 -f 1099//1260 1108//1269 1109//1270 -f 1109//1270 1100//1261 1099//1260 -f 1100//1261 1109//1270 1110//1271 -f 1110//1271 1101//1262 1100//1261 -f 1101//1262 1110//1271 1111//1272 -f 1111//1272 1102//1263 1101//1262 -f 1102//1263 1111//1272 1112//1273 -f 1112//1273 1103//1264 1102//1263 -f 1103//1264 1112//1273 1113//1274 -f 1113//1274 1104//1265 1103//1264 -f 1104//1265 1113//1274 1114//1275 -f 1114//1275 1105//1266 1104//1265 -f 1105//1266 1114//1275 1115//1276 -f 1115//1276 1106//1267 1105//1266 -f 1107//1268 1116//1277 1117//1278 -f 1117//1278 1108//1269 1107//1268 -f 1108//1269 1117//1278 1118//1279 -f 1118//1279 1109//1270 1108//1269 -f 1109//1270 1118//1279 1119//1280 -f 1119//1280 1110//1271 1109//1270 -f 1110//1271 1119//1280 1120//1281 -f 1120//1281 1111//1272 1110//1271 -f 1111//1272 1120//1281 1121//1282 -f 1121//1282 1112//1273 1111//1272 -f 1112//1273 1121//1282 1122//1283 -f 1122//1283 1113//1274 1112//1273 -f 1113//1274 1122//1283 1123//1284 -f 1123//1284 1114//1275 1113//1274 -f 1114//1275 1123//1284 1124//1285 -f 1124//1285 1115//1276 1114//1275 -f 1116//1277 1125//1286 1126//1287 -f 1126//1287 1117//1278 1116//1277 -f 1117//1278 1126//1287 1127//1288 -f 1127//1288 1118//1279 1117//1278 -f 1118//1279 1127//1288 1128//1289 -f 1128//1289 1119//1280 1118//1279 -f 1119//1280 1128//1289 1129//1290 -f 1129//1290 1120//1281 1119//1280 -f 1120//1281 1129//1290 1130//1291 -f 1130//1291 1121//1282 1120//1281 -f 1121//1282 1130//1291 1131//1292 -f 1131//1292 1122//1283 1121//1282 -f 1122//1283 1131//1292 1132//1293 -f 1132//1293 1123//1284 1122//1283 -f 1123//1284 1132//1293 1133//1294 -f 1133//1294 1124//1285 1123//1284 -s 6 -f 1125//1448 1134//1452 1135//1453 -f 1135//1453 1126//1449 1125//1448 -f 1126//1449 1135//1453 1136//1454 -f 1136//1454 1127//1450 1126//1449 -f 1127//1450 1136//1454 1137//1455 -f 1137//1455 1128//1451 1127//1450 -f 1128//1451 1137//1455 1138//1456 -s 4 -f 1138//1295 1129//1290 1128//1289 -f 1129//1290 1138//1295 1139//1296 -f 1139//1296 1130//1291 1129//1290 -f 1130//1291 1139//1296 1140//1297 -f 1140//1297 1131//1292 1130//1291 -f 1131//1292 1140//1297 1141//1298 -f 1141//1298 1132//1293 1131//1292 -f 1132//1293 1141//1298 1142//1299 -f 1142//1299 1133//1294 1132//1293 -s 6 -f 1134//1452 1143//1459 1144//1460 -f 1144//1460 1135//1453 1134//1452 -f 1135//1453 1144//1460 1145//1461 -f 1145//1461 1136//1454 1135//1453 -f 1136//1454 1145//1461 1146//1462 -f 1146//1462 1137//1455 1136//1454 -f 1137//1455 1146//1462 1147//1463 -f 1147//1463 1138//1456 1137//1455 -f 1138//1456 1147//1463 1148//1464 -f 1148//1464 1139//1457 1138//1456 -f 1139//1457 1148//1464 1149//1465 -f 1149//1465 1140//1458 1139//1457 -f 1140//1458 1149//1465 1150//1466 -s 4 -f 1150//1300 1141//1298 1140//1297 -f 1141//1298 1150//1300 1151//1301 -f 1151//1301 1142//1299 1141//1298 -s 6 -f 1143//1459 1152//1467 1153//1468 -f 1153//1468 1144//1460 1143//1459 -f 1144//1460 1153//1468 1154//1469 -f 1154//1469 1145//1461 1144//1460 -f 1145//1461 1154//1469 1155//1470 -f 1155//1470 1146//1462 1145//1461 -f 1146//1462 1155//1470 1156//1471 -f 1156//1471 1147//1463 1146//1462 -f 1147//1463 1156//1471 1157//1472 -f 1157//1472 1148//1464 1147//1463 -f 1148//1464 1157//1472 1158//1473 -f 1158//1473 1149//1465 1148//1464 -f 1149//1465 1158//1473 1159//1474 -f 1159//1474 1150//1466 1149//1465 -f 1150//1466 1159//1474 1160//1475 -s 4 -f 1160//1302 1151//1301 1150//1300 -s 6 -f 1152//1467 1161//1476 1162//1477 -f 1162//1477 1153//1468 1152//1467 -f 1153//1468 1162//1477 1163//1478 -f 1163//1478 1154//1469 1153//1468 -f 1154//1469 1163//1478 1164//1479 -f 1164//1479 1155//1470 1154//1469 -f 1155//1470 1164//1479 1165//1480 -f 1165//1480 1156//1471 1155//1470 -f 1156//1471 1165//1480 1166//1481 -f 1166//1481 1157//1472 1156//1471 -f 1157//1472 1166//1481 1167//1482 -f 1167//1482 1158//1473 1157//1472 -f 1158//1473 1167//1482 1168//1483 -f 1168//1483 1159//1474 1158//1473 -f 1159//1474 1168//1483 1169//1484 -f 1169//1484 1160//1475 1159//1474 -s 4 -f 1161//1303 1026//1187 1029//1190 -f 1029//1190 1162//1304 1161//1303 -f 1162//1304 1029//1190 1031//1192 -f 1031//1192 1163//1305 1162//1304 -f 1163//1305 1031//1192 1033//1194 -f 1033//1194 1164//1306 1163//1305 -f 1164//1306 1033//1194 1035//1196 -f 1035//1196 1165//1307 1164//1306 -f 1165//1307 1035//1196 1037//1198 -f 1037//1198 1166//1308 1165//1307 -f 1166//1308 1037//1198 1039//1200 -f 1039//1200 1167//1309 1166//1308 -f 1167//1309 1039//1200 1041//1202 -f 1041//1202 1168//1310 1167//1309 -f 1168//1310 1041//1202 1043//1204 -f 1043//1204 1169//1311 1168//1310 -f 1043//1204 1042//1203 1170//1312 -f 1170//1312 1171//1313 1043//1204 -f 1171//1313 1170//1312 1172//1314 -f 1172//1314 1173//1315 1171//1313 -f 1173//1315 1172//1314 1174//1316 -f 1174//1316 1175//1317 1173//1315 -f 1175//1317 1174//1316 1176//1318 -f 1176//1318 1177//1319 1175//1317 -f 1177//1319 1176//1318 1178//1320 -f 1178//1320 1179//1321 1177//1319 -f 1179//1321 1178//1320 1180//1322 -f 1180//1322 1181//1323 1179//1321 -f 1181//1323 1180//1322 1182//1324 -f 1182//1324 1183//1325 1181//1323 -f 1183//1325 1182//1324 1184//1326 -f 1184//1326 424//1186 1183//1325 -f 1042//1203 1052//1213 1185//1327 -f 1185//1327 1170//1312 1042//1203 -f 1170//1312 1185//1327 1186//1328 -f 1186//1328 1172//1314 1170//1312 -f 1172//1314 1186//1328 1187//1329 -f 1187//1329 1174//1316 1172//1314 -f 1174//1316 1187//1329 1188//1330 -f 1188//1330 1176//1318 1174//1316 -f 1176//1318 1188//1330 1189//1331 -f 1189//1331 1178//1320 1176//1318 -f 1178//1320 1189//1331 1190//1332 -f 1190//1332 1180//1322 1178//1320 -f 1180//1322 1190//1332 1191//1333 -f 1191//1333 1182//1324 1180//1322 -f 1182//1324 1191//1333 1192//1334 -f 1192//1334 1184//1326 1182//1324 -f 1052//1213 1061//1222 1193//1335 -f 1193//1335 1185//1327 1052//1213 -f 1185//1327 1193//1335 1194//1336 -f 1194//1336 1186//1328 1185//1327 -f 1186//1328 1194//1336 1195//1337 -f 1195//1337 1187//1329 1186//1328 -f 1187//1329 1195//1337 1196//1338 -f 1196//1338 1188//1330 1187//1329 -f 1188//1330 1196//1338 1197//1339 -f 1197//1339 1189//1331 1188//1330 -f 1189//1331 1197//1339 1198//1340 -f 1198//1340 1190//1332 1189//1331 -f 1190//1332 1198//1340 1199//1341 -f 1199//1341 1191//1333 1190//1332 -f 1191//1333 1199//1341 1200//1342 -f 1200//1342 1192//1334 1191//1333 -f 1061//1222 1070//1231 1201//1343 -f 1201//1343 1193//1335 1061//1222 -f 1193//1335 1201//1343 1202//1344 -f 1202//1344 1194//1336 1193//1335 -f 1194//1336 1202//1344 1203//1345 -f 1203//1345 1195//1337 1194//1336 -f 1195//1337 1203//1345 1204//1346 -f 1204//1346 1196//1338 1195//1337 -f 1196//1338 1204//1346 1205//1347 -f 1205//1347 1197//1339 1196//1338 -f 1197//1339 1205//1347 1206//1348 -f 1206//1348 1198//1340 1197//1339 -f 1198//1340 1206//1348 1207//1349 -f 1207//1349 1199//1341 1198//1340 -f 1199//1341 1207//1349 1208//1350 -f 1208//1350 1200//1342 1199//1341 -f 1070//1231 1079//1240 1209//1351 -f 1209//1351 1201//1343 1070//1231 -f 1201//1343 1209//1351 1210//1352 -f 1210//1352 1202//1344 1201//1343 -f 1202//1344 1210//1352 1211//1353 -f 1211//1353 1203//1345 1202//1344 -f 1203//1345 1211//1353 1212//1354 -f 1212//1354 1204//1346 1203//1345 -f 1204//1346 1212//1354 1213//1355 -f 1213//1355 1205//1347 1204//1346 -f 1205//1347 1213//1355 1214//1356 -f 1214//1356 1206//1348 1205//1347 -f 1206//1348 1214//1356 1215//1357 -f 1215//1357 1207//1349 1206//1348 -f 1207//1349 1215//1357 1216//1358 -f 1216//1358 1208//1350 1207//1349 -f 1079//1240 1088//1249 1217//1359 -f 1217//1359 1209//1351 1079//1240 -f 1209//1351 1217//1359 1218//1360 -f 1218//1360 1210//1352 1209//1351 -f 1210//1352 1218//1360 1219//1361 -f 1219//1361 1211//1353 1210//1352 -f 1211//1353 1219//1361 1220//1362 -f 1220//1362 1212//1354 1211//1353 -f 1212//1354 1220//1362 1221//1363 -f 1221//1363 1213//1355 1212//1354 -f 1213//1355 1221//1363 1222//1364 -f 1222//1364 1214//1356 1213//1355 -f 1214//1356 1222//1364 1223//1365 -f 1223//1365 1215//1357 1214//1356 -f 1215//1357 1223//1365 1224//1366 -f 1224//1366 1216//1358 1215//1357 -f 1088//1249 1097//1258 1225//1367 -f 1225//1367 1217//1359 1088//1249 -f 1217//1359 1225//1367 1226//1368 -f 1226//1368 1218//1360 1217//1359 -f 1218//1360 1226//1368 1227//1369 -f 1227//1369 1219//1361 1218//1360 -f 1219//1361 1227//1369 1228//1370 -f 1228//1370 1220//1362 1219//1361 -f 1220//1362 1228//1370 1229//1371 -f 1229//1371 1221//1363 1220//1362 -f 1221//1363 1229//1371 1230//1372 -f 1230//1372 1222//1364 1221//1363 -f 1222//1364 1230//1372 1231//1373 -f 1231//1373 1223//1365 1222//1364 -f 1223//1365 1231//1373 1232//1374 -f 1232//1374 1224//1366 1223//1365 -f 1097//1258 1106//1267 1233//1375 -f 1233//1375 1225//1367 1097//1258 -f 1225//1367 1233//1375 1234//1376 -f 1234//1376 1226//1368 1225//1367 -f 1226//1368 1234//1376 1235//1377 -f 1235//1377 1227//1369 1226//1368 -f 1227//1369 1235//1377 1236//1378 -f 1236//1378 1228//1370 1227//1369 -f 1228//1370 1236//1378 1237//1379 -f 1237//1379 1229//1371 1228//1370 -f 1229//1371 1237//1379 1238//1380 -f 1238//1380 1230//1372 1229//1371 -f 1230//1372 1238//1380 1239//1381 -f 1239//1381 1231//1373 1230//1372 -f 1231//1373 1239//1381 1240//1382 -f 1240//1382 1232//1374 1231//1373 -f 1106//1267 1115//1276 1241//1383 -f 1241//1383 1233//1375 1106//1267 -f 1233//1375 1241//1383 1242//1384 -f 1242//1384 1234//1376 1233//1375 -f 1234//1376 1242//1384 1243//1385 -f 1243//1385 1235//1377 1234//1376 -f 1235//1377 1243//1385 1244//1386 -f 1244//1386 1236//1378 1235//1377 -f 1236//1378 1244//1386 1245//1387 -f 1245//1387 1237//1379 1236//1378 -f 1237//1379 1245//1387 1246//1388 -f 1246//1388 1238//1380 1237//1379 -f 1238//1380 1246//1388 1247//1389 -f 1247//1389 1239//1381 1238//1380 -f 1239//1381 1247//1389 1248//1390 -f 1248//1390 1240//1382 1239//1381 -f 1115//1276 1124//1285 1249//1391 -f 1249//1391 1241//1383 1115//1276 -f 1241//1383 1249//1391 1250//1392 -f 1250//1392 1242//1384 1241//1383 -f 1242//1384 1250//1392 1251//1393 -f 1251//1393 1243//1385 1242//1384 -f 1243//1385 1251//1393 1252//1394 -f 1252//1394 1244//1386 1243//1385 -f 1244//1386 1252//1394 1253//1395 -f 1253//1395 1245//1387 1244//1386 -f 1245//1387 1253//1395 1254//1396 -f 1254//1396 1246//1388 1245//1387 -f 1246//1388 1254//1396 1255//1397 -f 1255//1397 1247//1389 1246//1388 -f 1247//1389 1255//1397 1256//1398 -f 1256//1398 1248//1390 1247//1389 -f 1124//1285 1133//1294 1257//1399 -f 1257//1399 1249//1391 1124//1285 -f 1249//1391 1257//1399 1258//1400 -f 1258//1400 1250//1392 1249//1391 -f 1250//1392 1258//1400 1259//1401 -f 1259//1401 1251//1393 1250//1392 -f 1251//1393 1259//1401 1260//1402 -f 1260//1402 1252//1394 1251//1393 -f 1252//1394 1260//1402 1261//1403 -f 1261//1403 1253//1395 1252//1394 -f 1253//1395 1261//1403 1262//1404 -f 1262//1404 1254//1396 1253//1395 -f 1254//1396 1262//1404 1263//1405 -f 1263//1405 1255//1397 1254//1396 -f 1255//1397 1263//1405 1264//1406 -f 1264//1406 1256//1398 1255//1397 -f 1133//1294 1142//1299 1265//1407 -f 1265//1407 1257//1399 1133//1294 -f 1257//1399 1265//1407 1266//1408 -f 1266//1408 1258//1400 1257//1399 -f 1258//1400 1266//1408 1267//1409 -f 1267//1409 1259//1401 1258//1400 -f 1259//1401 1267//1409 1268//1410 -f 1268//1410 1260//1402 1259//1401 -f 1260//1402 1268//1410 1269//1411 -f 1269//1411 1261//1403 1260//1402 -f 1261//1403 1269//1411 1270//1412 -f 1270//1412 1262//1404 1261//1403 -f 1262//1404 1270//1412 1271//1413 -f 1271//1413 1263//1405 1262//1404 -f 1263//1405 1271//1413 1272//1414 -f 1272//1414 1264//1406 1263//1405 -f 1142//1299 1151//1301 1273//1415 -f 1273//1415 1265//1407 1142//1299 -f 1265//1407 1273//1415 1274//1416 -f 1274//1416 1266//1408 1265//1407 -f 1266//1408 1274//1416 1275//1417 -f 1275//1417 1267//1409 1266//1408 -f 1267//1409 1275//1417 1276//1418 -f 1276//1418 1268//1410 1267//1409 -f 1268//1410 1276//1418 1277//1419 -f 1277//1419 1269//1411 1268//1410 -f 1269//1411 1277//1419 1278//1420 -f 1278//1420 1270//1412 1269//1411 -f 1270//1412 1278//1420 1279//1421 -f 1279//1421 1271//1413 1270//1412 -f 1271//1413 1279//1421 1280//1422 -f 1280//1422 1272//1414 1271//1413 -f 1151//1301 1160//1302 1281//1423 -f 1281//1423 1273//1415 1151//1301 -f 1273//1415 1281//1423 1282//1424 -f 1282//1424 1274//1416 1273//1415 -f 1274//1416 1282//1424 1283//1425 -f 1283//1425 1275//1417 1274//1416 -f 1275//1417 1283//1425 1284//1426 -f 1284//1426 1276//1418 1275//1417 -f 1276//1418 1284//1426 1285//1427 -f 1285//1427 1277//1419 1276//1418 -f 1277//1419 1285//1427 1286//1428 -f 1286//1428 1278//1420 1277//1419 -f 1278//1420 1286//1428 1287//1429 -f 1287//1429 1279//1421 1278//1420 -f 1279//1421 1287//1429 1288//1430 -f 1288//1430 1280//1422 1279//1421 -s 6 -f 1160//1475 1169//1484 1289//1486 -s 4 -f 1289//1431 1281//1423 1160//1302 -f 1281//1423 1289//1431 1290//1432 -f 1290//1432 1282//1424 1281//1423 -f 1282//1424 1290//1432 1291//1433 -f 1291//1433 1283//1425 1282//1424 -f 1283//1425 1291//1433 1292//1434 -f 1292//1434 1284//1426 1283//1425 -f 1284//1426 1292//1434 1293//1435 -f 1293//1435 1285//1427 1284//1426 -f 1285//1427 1293//1435 1294//1436 -f 1294//1436 1286//1428 1285//1427 -f 1286//1428 1294//1436 1295//1437 -f 1295//1437 1287//1429 1286//1428 -f 1287//1429 1295//1437 1296//1438 -f 1296//1438 1288//1430 1287//1429 -f 1169//1311 1043//1204 1171//1313 -s 6 -f 1171//1485 1289//1486 1169//1484 -s 4 -f 1289//1431 1171//1313 1173//1315 -f 1173//1315 1290//1432 1289//1431 -f 1290//1432 1173//1315 1175//1317 -f 1175//1317 1291//1433 1290//1432 -f 1291//1433 1175//1317 1177//1319 -f 1177//1319 1292//1434 1291//1433 -f 1292//1434 1177//1319 1179//1321 -f 1179//1321 1293//1435 1292//1434 -f 1293//1435 1179//1321 1181//1323 -f 1181//1323 1294//1436 1293//1435 -f 1294//1436 1181//1323 1183//1325 -f 1183//1325 1295//1437 1294//1436 -f 1295//1437 1183//1325 424//1186 -f 424//1186 1296//1438 1295//1437 -s 14 -f 1297//1487 1298//1488 1299//1489 -f 1299//1489 1300//1490 1297//1487 -f 1300//1490 1299//1489 1301//1491 -f 1301//1491 1302//1492 1300//1490 -f 1302//1492 1301//1491 1303//1493 -f 1303//1493 1304//1494 1302//1492 -f 1304//1494 1303//1493 1305//1495 -f 1305//1495 1306//1496 1304//1494 -f 1306//1496 1305//1495 1307//1497 -f 1307//1497 1308//1498 1306//1496 -f 1308//1498 1307//1497 1309//1499 -f 1309//1499 1310//1500 1308//1498 -f 1310//1500 1309//1499 1311//1501 -f 1311//1501 1312//1502 1310//1500 -f 1312//1502 1311//1501 1313//1503 -f 1313//1503 1314//1504 1312//1502 -f 1298//1488 1315//1505 1316//1506 -f 1316//1506 1299//1489 1298//1488 -f 1299//1489 1316//1506 1317//1507 -f 1317//1507 1301//1491 1299//1489 -f 1301//1491 1317//1507 1318//1508 -f 1318//1508 1303//1493 1301//1491 -f 1303//1493 1318//1508 1319//1509 -f 1319//1509 1305//1495 1303//1493 -f 1305//1495 1319//1509 1320//1510 -f 1320//1510 1307//1497 1305//1495 -f 1307//1497 1320//1510 1321//1511 -f 1321//1511 1309//1499 1307//1497 -f 1309//1499 1321//1511 1322//1512 -f 1322//1512 1311//1501 1309//1499 -f 1311//1501 1322//1512 1323//1513 -f 1323//1513 1313//1503 1311//1501 -f 1315//1505 1324//1514 1325//1515 -f 1325//1515 1316//1506 1315//1505 -f 1316//1506 1325//1515 1326//1516 -f 1326//1516 1317//1507 1316//1506 -f 1317//1507 1326//1516 1327//1517 -f 1327//1517 1318//1508 1317//1507 -f 1318//1508 1327//1517 1328//1518 -f 1328//1518 1319//1509 1318//1508 -f 1319//1509 1328//1518 1329//1519 -f 1329//1519 1320//1510 1319//1509 -f 1320//1510 1329//1519 1330//1520 -f 1330//1520 1321//1511 1320//1510 -f 1321//1511 1330//1520 1331//1521 -f 1331//1521 1322//1512 1321//1511 -f 1322//1512 1331//1521 1332//1522 -f 1332//1522 1323//1513 1322//1512 -f 1324//1514 1333//1523 1334//1524 -f 1334//1524 1325//1515 1324//1514 -f 1325//1515 1334//1524 1335//1525 -f 1335//1525 1326//1516 1325//1515 -f 1326//1516 1335//1525 1336//1526 -f 1336//1526 1327//1517 1326//1516 -f 1327//1517 1336//1526 1337//1527 -f 1337//1527 1328//1518 1327//1517 -f 1328//1518 1337//1527 1338//1528 -f 1338//1528 1329//1519 1328//1518 -f 1329//1519 1338//1528 1339//1529 -f 1339//1529 1330//1520 1329//1519 -f 1330//1520 1339//1529 1340//1530 -f 1340//1530 1331//1521 1330//1520 -f 1331//1521 1340//1530 1341//1531 -f 1341//1531 1332//1522 1331//1521 -f 1333//1523 1342//1532 1343//1533 -f 1343//1533 1334//1524 1333//1523 -f 1334//1524 1343//1533 1344//1534 -f 1344//1534 1335//1525 1334//1524 -f 1335//1525 1344//1534 1345//1535 -f 1345//1535 1336//1526 1335//1525 -f 1336//1526 1345//1535 1346//1536 -f 1346//1536 1337//1527 1336//1526 -f 1337//1527 1346//1536 1347//1537 -f 1347//1537 1338//1528 1337//1527 -f 1338//1528 1347//1537 1348//1538 -f 1348//1538 1339//1529 1338//1528 -f 1339//1529 1348//1538 1349//1539 -f 1349//1539 1340//1530 1339//1529 -f 1340//1530 1349//1539 1350//1540 -f 1350//1540 1341//1531 1340//1530 -f 1342//1532 1351//1541 1352//1542 -f 1352//1542 1343//1533 1342//1532 -f 1343//1533 1352//1542 1353//1543 -f 1353//1543 1344//1534 1343//1533 -f 1344//1534 1353//1543 1354//1544 -f 1354//1544 1345//1535 1344//1534 -f 1345//1535 1354//1544 1355//1545 -f 1355//1545 1346//1536 1345//1535 -f 1346//1536 1355//1545 1356//1546 -f 1356//1546 1347//1537 1346//1536 -f 1347//1537 1356//1546 1357//1547 -f 1357//1547 1348//1538 1347//1537 -f 1348//1538 1357//1547 1358//1548 -f 1358//1548 1349//1539 1348//1538 -f 1349//1539 1358//1548 1359//1549 -f 1359//1549 1350//1540 1349//1539 -f 1351//1541 1360//1550 1361//1551 -f 1361//1551 1352//1542 1351//1541 -f 1352//1542 1361//1551 1362//1552 -f 1362//1552 1353//1543 1352//1542 -f 1353//1543 1362//1552 1363//1553 -f 1363//1553 1354//1544 1353//1543 -f 1354//1544 1363//1553 1364//1554 -f 1364//1554 1355//1545 1354//1544 -f 1355//1545 1364//1554 1365//1555 -f 1365//1555 1356//1546 1355//1545 -f 1356//1546 1365//1555 1366//1556 -f 1366//1556 1357//1547 1356//1546 -f 1357//1547 1366//1556 1367//1557 -f 1367//1557 1358//1548 1357//1547 -f 1358//1548 1367//1557 1368//1558 -f 1368//1558 1359//1549 1358//1548 -f 1360//1550 1369//1559 1370//1560 -f 1370//1560 1361//1551 1360//1550 -f 1361//1551 1370//1560 1371//1561 -f 1371//1561 1362//1552 1361//1551 -f 1362//1552 1371//1561 1372//1562 -f 1372//1562 1363//1553 1362//1552 -f 1363//1553 1372//1562 1373//1563 -f 1373//1563 1364//1554 1363//1553 -f 1364//1554 1373//1563 1374//1564 -f 1374//1564 1365//1555 1364//1554 -f 1365//1555 1374//1564 1375//1565 -f 1375//1565 1366//1556 1365//1555 -f 1366//1556 1375//1565 1376//1566 -f 1376//1566 1367//1557 1366//1556 -f 1367//1557 1376//1566 1377//1567 -f 1377//1567 1368//1558 1367//1557 -f 1369//1559 1378//1568 1379//1569 -f 1379//1569 1370//1560 1369//1559 -f 1370//1560 1379//1569 1380//1570 -f 1380//1570 1371//1561 1370//1560 -f 1371//1561 1380//1570 1381//1571 -f 1381//1571 1372//1562 1371//1561 -f 1372//1562 1381//1571 1382//1572 -f 1382//1572 1373//1563 1372//1562 -f 1373//1563 1382//1572 1383//1573 -f 1383//1573 1374//1564 1373//1563 -f 1374//1564 1383//1573 1384//1574 -f 1384//1574 1375//1565 1374//1564 -f 1375//1565 1384//1574 1385//1575 -f 1385//1575 1376//1566 1375//1565 -f 1376//1566 1385//1575 1386//1576 -f 1386//1576 1377//1567 1376//1566 -f 1378//1568 1387//1577 1388//1578 -f 1388//1578 1379//1569 1378//1568 -f 1379//1569 1388//1578 1389//1579 -f 1389//1579 1380//1570 1379//1569 -f 1380//1570 1389//1579 1390//1580 -f 1390//1580 1381//1571 1380//1570 -f 1381//1571 1390//1580 1391//1581 -f 1391//1581 1382//1572 1381//1571 -f 1382//1572 1391//1581 1392//1582 -f 1392//1582 1383//1573 1382//1572 -f 1383//1573 1392//1582 1393//1583 -f 1393//1583 1384//1574 1383//1573 -f 1384//1574 1393//1583 1394//1584 -f 1394//1584 1385//1575 1384//1574 -f 1385//1575 1394//1584 1395//1585 -f 1395//1585 1386//1576 1385//1575 -f 1387//1577 1396//1586 1397//1587 -f 1397//1587 1388//1578 1387//1577 -f 1388//1578 1397//1587 1398//1588 -f 1398//1588 1389//1579 1388//1578 -f 1389//1579 1398//1588 1399//1589 -f 1399//1589 1390//1580 1389//1579 -f 1390//1580 1399//1589 1400//1590 -f 1400//1590 1391//1581 1390//1580 -f 1391//1581 1400//1590 1401//1591 -f 1401//1591 1392//1582 1391//1581 -f 1392//1582 1401//1591 1402//1592 -f 1402//1592 1393//1583 1392//1582 -f 1393//1583 1402//1592 1403//1593 -f 1403//1593 1394//1584 1393//1583 -f 1394//1584 1403//1593 1404//1594 -f 1404//1594 1395//1585 1394//1584 -f 1396//1586 1405//1595 1406//1596 -f 1406//1596 1397//1587 1396//1586 -f 1397//1587 1406//1596 1407//1597 -f 1407//1597 1398//1588 1397//1587 -f 1398//1588 1407//1597 1408//1598 -f 1408//1598 1399//1589 1398//1588 -f 1399//1589 1408//1598 1409//1599 -f 1409//1599 1400//1590 1399//1589 -f 1400//1590 1409//1599 1410//1600 -f 1410//1600 1401//1591 1400//1590 -f 1401//1591 1410//1600 1411//1601 -f 1411//1601 1402//1592 1401//1591 -f 1402//1592 1411//1601 1412//1602 -f 1412//1602 1403//1593 1402//1592 -f 1403//1593 1412//1602 1413//1603 -f 1413//1603 1404//1594 1403//1593 -f 1405//1595 1414//1604 1415//1605 -f 1415//1605 1406//1596 1405//1595 -f 1406//1596 1415//1605 1416//1606 -f 1416//1606 1407//1597 1406//1596 -f 1407//1597 1416//1606 1417//1607 -f 1417//1607 1408//1598 1407//1597 -f 1408//1598 1417//1607 1418//1608 -f 1418//1608 1409//1599 1408//1598 -f 1409//1599 1418//1608 1419//1609 -f 1419//1609 1410//1600 1409//1599 -f 1410//1600 1419//1609 1420//1610 -f 1420//1610 1411//1601 1410//1600 -f 1411//1601 1420//1610 1421//1611 -f 1421//1611 1412//1602 1411//1601 -f 1412//1602 1421//1611 1422//1612 -f 1422//1612 1413//1603 1412//1602 -f 1414//1604 1423//1613 1424//1614 -f 1424//1614 1415//1605 1414//1604 -f 1415//1605 1424//1614 1425//1615 -f 1425//1615 1416//1606 1415//1605 -f 1416//1606 1425//1615 1426//1616 -f 1426//1616 1417//1607 1416//1606 -f 1417//1607 1426//1616 1427//1617 -f 1427//1617 1418//1608 1417//1607 -f 1418//1608 1427//1617 1428//1618 -f 1428//1618 1419//1609 1418//1608 -f 1419//1609 1428//1618 1429//1619 -f 1429//1619 1420//1610 1419//1609 -f 1420//1610 1429//1619 1430//1620 -f 1430//1620 1421//1611 1420//1610 -f 1421//1611 1430//1620 1431//1621 -f 1431//1621 1422//1612 1421//1611 -f 1423//1613 1432//1622 1433//1623 -f 1433//1623 1424//1614 1423//1613 -f 1424//1614 1433//1623 1434//1624 -f 1434//1624 1425//1615 1424//1614 -f 1425//1615 1434//1624 1435//1625 -f 1435//1625 1426//1616 1425//1615 -f 1426//1616 1435//1625 1436//1626 -f 1436//1626 1427//1617 1426//1616 -f 1427//1617 1436//1626 1437//1627 -f 1437//1627 1428//1618 1427//1617 -f 1428//1618 1437//1627 1438//1628 -f 1438//1628 1429//1619 1428//1618 -f 1429//1619 1438//1628 1439//1629 -f 1439//1629 1430//1620 1429//1619 -f 1430//1620 1439//1629 1440//1630 -f 1440//1630 1431//1621 1430//1620 -f 1432//1622 1297//1487 1300//1490 -f 1300//1490 1433//1623 1432//1622 -f 1433//1623 1300//1490 1302//1492 -f 1302//1492 1434//1624 1433//1623 -f 1434//1624 1302//1492 1304//1494 -f 1304//1494 1435//1625 1434//1624 -f 1435//1625 1304//1494 1306//1496 -f 1306//1496 1436//1626 1435//1625 -f 1436//1626 1306//1496 1308//1498 -f 1308//1498 1437//1627 1436//1626 -f 1437//1627 1308//1498 1310//1500 -f 1310//1500 1438//1628 1437//1627 -f 1438//1628 1310//1500 1312//1502 -f 1312//1502 1439//1629 1438//1628 -f 1439//1629 1312//1502 1314//1504 -f 1314//1504 1440//1630 1439//1629 -f 1314//1504 1313//1503 1441//1631 -f 1441//1631 1442//1632 1314//1504 -f 1442//1632 1441//1631 1443//1633 -f 1443//1633 1444//1634 1442//1632 -f 1444//1634 1443//1633 1445//1635 -f 1445//1635 1446//1636 1444//1634 -f 1446//1636 1445//1635 1447//1637 -f 1447//1637 1448//1638 1446//1636 -f 1448//1638 1447//1637 1449//1639 -f 1449//1639 1450//1640 1448//1638 -s 16 -f 1450//1760 1449//1759 1451//1761 -f 1451//1761 1452//1762 1450//1760 -s 14 -f 1452//1642 1451//1641 1453//1643 -f 1453//1643 1454//1644 1452//1642 -f 1454//1644 1453//1643 1455//1645 -f 1455//1645 1456//1646 1454//1644 -f 1313//1503 1323//1513 1457//1647 -f 1457//1647 1441//1631 1313//1503 -f 1441//1631 1457//1647 1458//1648 -f 1458//1648 1443//1633 1441//1631 -f 1443//1633 1458//1648 1459//1649 -f 1459//1649 1445//1635 1443//1633 -f 1445//1635 1459//1649 1460//1650 -f 1460//1650 1447//1637 1445//1635 -f 1447//1637 1460//1650 1461//1651 -f 1461//1651 1449//1639 1447//1637 -f 1449//1639 1461//1651 1462//1652 -f 1462//1652 1451//1641 1449//1639 -f 1451//1641 1462//1652 1463//1653 -f 1463//1653 1453//1643 1451//1641 -f 1453//1643 1463//1653 1464//1654 -f 1464//1654 1455//1645 1453//1643 -f 1323//1513 1332//1522 1465//1655 -f 1465//1655 1457//1647 1323//1513 -f 1457//1647 1465//1655 1466//1656 -f 1466//1656 1458//1648 1457//1647 -f 1458//1648 1466//1656 1467//1657 -f 1467//1657 1459//1649 1458//1648 -f 1459//1649 1467//1657 1468//1658 -f 1468//1658 1460//1650 1459//1649 -f 1460//1650 1468//1658 1469//1659 -f 1469//1659 1461//1651 1460//1650 -f 1461//1651 1469//1659 1470//1660 -f 1470//1660 1462//1652 1461//1651 -f 1462//1652 1470//1660 1471//1661 -f 1471//1661 1463//1653 1462//1652 -f 1463//1653 1471//1661 1472//1662 -f 1472//1662 1464//1654 1463//1653 -f 1332//1522 1341//1531 1473//1663 -f 1473//1663 1465//1655 1332//1522 -f 1465//1655 1473//1663 1474//1664 -f 1474//1664 1466//1656 1465//1655 -f 1466//1656 1474//1664 1475//1665 -f 1475//1665 1467//1657 1466//1656 -f 1467//1657 1475//1665 1476//1666 -f 1476//1666 1468//1658 1467//1657 -f 1468//1658 1476//1666 1477//1667 -f 1477//1667 1469//1659 1468//1658 -f 1469//1659 1477//1667 1478//1668 -f 1478//1668 1470//1660 1469//1659 -f 1470//1660 1478//1668 1479//1669 -f 1479//1669 1471//1661 1470//1660 -f 1471//1661 1479//1669 1480//1670 -f 1480//1670 1472//1662 1471//1661 -f 1341//1531 1350//1540 1481//1671 -f 1481//1671 1473//1663 1341//1531 -f 1473//1663 1481//1671 1482//1672 -f 1482//1672 1474//1664 1473//1663 -f 1474//1664 1482//1672 1483//1673 -f 1483//1673 1475//1665 1474//1664 -f 1475//1665 1483//1673 1484//1674 -f 1484//1674 1476//1666 1475//1665 -f 1476//1666 1484//1674 1485//1675 -f 1485//1675 1477//1667 1476//1666 -f 1477//1667 1485//1675 1486//1676 -f 1486//1676 1478//1668 1477//1667 -f 1478//1668 1486//1676 1487//1677 -f 1487//1677 1479//1669 1478//1668 -f 1479//1669 1487//1677 1488//1678 -f 1488//1678 1480//1670 1479//1669 -f 1350//1540 1359//1549 1489//1679 -f 1489//1679 1481//1671 1350//1540 -f 1481//1671 1489//1679 1490//1680 -f 1490//1680 1482//1672 1481//1671 -f 1482//1672 1490//1680 1491//1681 -f 1491//1681 1483//1673 1482//1672 -f 1483//1673 1491//1681 1492//1682 -f 1492//1682 1484//1674 1483//1673 -f 1484//1674 1492//1682 1493//1683 -f 1493//1683 1485//1675 1484//1674 -f 1485//1675 1493//1683 1494//1684 -f 1494//1684 1486//1676 1485//1675 -f 1486//1676 1494//1684 1495//1685 -f 1495//1685 1487//1677 1486//1676 -f 1487//1677 1495//1685 1496//1686 -f 1496//1686 1488//1678 1487//1677 -f 1359//1549 1368//1558 1497//1687 -f 1497//1687 1489//1679 1359//1549 -f 1489//1679 1497//1687 1498//1688 -f 1498//1688 1490//1680 1489//1679 -f 1490//1680 1498//1688 1499//1689 -f 1499//1689 1491//1681 1490//1680 -f 1491//1681 1499//1689 1500//1690 -f 1500//1690 1492//1682 1491//1681 -f 1492//1682 1500//1690 1501//1691 -f 1501//1691 1493//1683 1492//1682 -f 1493//1683 1501//1691 1502//1692 -f 1502//1692 1494//1684 1493//1683 -f 1494//1684 1502//1692 1503//1693 -f 1503//1693 1495//1685 1494//1684 -f 1495//1685 1503//1693 1504//1694 -f 1504//1694 1496//1686 1495//1685 -f 1368//1558 1377//1567 1505//1695 -f 1505//1695 1497//1687 1368//1558 -f 1497//1687 1505//1695 1506//1696 -f 1506//1696 1498//1688 1497//1687 -f 1498//1688 1506//1696 1507//1697 -f 1507//1697 1499//1689 1498//1688 -f 1499//1689 1507//1697 1508//1698 -f 1508//1698 1500//1690 1499//1689 -f 1500//1690 1508//1698 1509//1699 -f 1509//1699 1501//1691 1500//1690 -f 1501//1691 1509//1699 1510//1700 -f 1510//1700 1502//1692 1501//1691 -f 1502//1692 1510//1700 1511//1701 -f 1511//1701 1503//1693 1502//1692 -f 1503//1693 1511//1701 1512//1702 -f 1512//1702 1504//1694 1503//1693 -f 1377//1567 1386//1576 1513//1703 -f 1513//1703 1505//1695 1377//1567 -f 1505//1695 1513//1703 1514//1704 -f 1514//1704 1506//1696 1505//1695 -f 1506//1696 1514//1704 1515//1705 -f 1515//1705 1507//1697 1506//1696 -f 1507//1697 1515//1705 1516//1706 -f 1516//1706 1508//1698 1507//1697 -f 1508//1698 1516//1706 1517//1707 -f 1517//1707 1509//1699 1508//1698 -f 1509//1699 1517//1707 1518//1708 -f 1518//1708 1510//1700 1509//1699 -f 1510//1700 1518//1708 1519//1709 -f 1519//1709 1511//1701 1510//1700 -f 1511//1701 1519//1709 1520//1710 -f 1520//1710 1512//1702 1511//1701 -f 1386//1576 1395//1585 1521//1711 -f 1521//1711 1513//1703 1386//1576 -f 1513//1703 1521//1711 1522//1712 -f 1522//1712 1514//1704 1513//1703 -f 1514//1704 1522//1712 1523//1713 -f 1523//1713 1515//1705 1514//1704 -f 1515//1705 1523//1713 1524//1714 -f 1524//1714 1516//1706 1515//1705 -f 1516//1706 1524//1714 1525//1715 -f 1525//1715 1517//1707 1516//1706 -f 1517//1707 1525//1715 1526//1716 -f 1526//1716 1518//1708 1517//1707 -f 1518//1708 1526//1716 1527//1717 -f 1527//1717 1519//1709 1518//1708 -f 1519//1709 1527//1717 1528//1718 -f 1528//1718 1520//1710 1519//1709 -f 1395//1585 1404//1594 1529//1719 -f 1529//1719 1521//1711 1395//1585 -f 1521//1711 1529//1719 1530//1720 -f 1530//1720 1522//1712 1521//1711 -f 1522//1712 1530//1720 1531//1721 -f 1531//1721 1523//1713 1522//1712 -f 1523//1713 1531//1721 1532//1722 -f 1532//1722 1524//1714 1523//1713 -f 1524//1714 1532//1722 1533//1723 -f 1533//1723 1525//1715 1524//1714 -f 1525//1715 1533//1723 1534//1724 -f 1534//1724 1526//1716 1525//1715 -f 1526//1716 1534//1724 1535//1725 -f 1535//1725 1527//1717 1526//1716 -f 1527//1717 1535//1725 1536//1726 -f 1536//1726 1528//1718 1527//1717 -f 1404//1594 1413//1603 1537//1727 -f 1537//1727 1529//1719 1404//1594 -f 1529//1719 1537//1727 1538//1728 -f 1538//1728 1530//1720 1529//1719 -f 1530//1720 1538//1728 1539//1729 -f 1539//1729 1531//1721 1530//1720 -f 1531//1721 1539//1729 1540//1730 -f 1540//1730 1532//1722 1531//1721 -f 1532//1722 1540//1730 1541//1731 -f 1541//1731 1533//1723 1532//1722 -f 1533//1723 1541//1731 1542//1732 -f 1542//1732 1534//1724 1533//1723 -f 1534//1724 1542//1732 1543//1733 -f 1543//1733 1535//1725 1534//1724 -f 1535//1725 1543//1733 1544//1734 -f 1544//1734 1536//1726 1535//1725 -f 1413//1603 1422//1612 1545//1735 -f 1545//1735 1537//1727 1413//1603 -f 1537//1727 1545//1735 1546//1736 -f 1546//1736 1538//1728 1537//1727 -f 1538//1728 1546//1736 1547//1737 -f 1547//1737 1539//1729 1538//1728 -f 1539//1729 1547//1737 1548//1738 -f 1548//1738 1540//1730 1539//1729 -f 1540//1730 1548//1738 1549//1739 -f 1549//1739 1541//1731 1540//1730 -f 1541//1731 1549//1739 1550//1740 -f 1550//1740 1542//1732 1541//1731 -f 1542//1732 1550//1740 1551//1741 -f 1551//1741 1543//1733 1542//1732 -f 1543//1733 1551//1741 1552//1742 -f 1552//1742 1544//1734 1543//1733 -f 1422//1612 1431//1621 1553//1743 -f 1553//1743 1545//1735 1422//1612 -f 1545//1735 1553//1743 1554//1744 -f 1554//1744 1546//1736 1545//1735 -f 1546//1736 1554//1744 1555//1745 -f 1555//1745 1547//1737 1546//1736 -f 1547//1737 1555//1745 1556//1746 -f 1556//1746 1548//1738 1547//1737 -f 1548//1738 1556//1746 1557//1747 -f 1557//1747 1549//1739 1548//1738 -f 1549//1739 1557//1747 1558//1748 -f 1558//1748 1550//1740 1549//1739 -f 1550//1740 1558//1748 1559//1749 -f 1559//1749 1551//1741 1550//1740 -f 1551//1741 1559//1749 1560//1750 -f 1560//1750 1552//1742 1551//1741 -f 1431//1621 1440//1630 1561//1751 -f 1561//1751 1553//1743 1431//1621 -f 1553//1743 1561//1751 1562//1752 -f 1562//1752 1554//1744 1553//1743 -f 1554//1744 1562//1752 1563//1753 -f 1563//1753 1555//1745 1554//1744 -f 1555//1745 1563//1753 1564//1754 -f 1564//1754 1556//1746 1555//1745 -f 1556//1746 1564//1754 1565//1755 -f 1565//1755 1557//1747 1556//1746 -f 1557//1747 1565//1755 1566//1756 -f 1566//1756 1558//1748 1557//1747 -f 1558//1748 1566//1756 1567//1757 -f 1567//1757 1559//1749 1558//1748 -f 1559//1749 1567//1757 1568//1758 -f 1568//1758 1560//1750 1559//1749 -f 1440//1630 1314//1504 1442//1632 -f 1442//1632 1561//1751 1440//1630 -f 1561//1751 1442//1632 1444//1634 -f 1444//1634 1562//1752 1561//1751 -f 1562//1752 1444//1634 1446//1636 -f 1446//1636 1563//1753 1562//1752 -f 1563//1753 1446//1636 1448//1638 -f 1448//1638 1564//1754 1563//1753 -f 1564//1754 1448//1638 1450//1640 -f 1450//1640 1565//1755 1564//1754 -s 19 -f 1565//1765 1450//1763 1452//1764 -f 1452//1764 1566//1766 1565//1765 -s 17 -f 1566//1769 1452//1767 1454//1768 -f 1454//1768 1567//1770 1566//1769 -s 14 -f 1567//1757 1454//1644 1456//1646 -f 1456//1646 1568//1758 1567//1757 -s off -f 1569//33 1569//33 1570//33 -s 23 -f 1570//1772 1571//1773 1569//1771 -f 1571//1773 1570//1772 1572//1774 -f 1572//1774 1573//1775 1571//1773 -s 24 -f 1573//1837 1572//1836 1574//1838 -f 1574//1838 1575//1839 1573//1837 -s 25 -f 1575//1901 1574//1900 1576//1902 -f 1576//1902 1577//1903 1575//1901 -f 1577//1903 1576//1902 1578//1904 -f 1578//1904 1579//1905 1577//1903 -f 1579//1905 1578//1904 1580//1906 -f 1580//1906 1581//1907 1579//1905 -f 1581//1907 1580//1906 1582//1908 -f 1582//1908 1583//1909 1581//1907 -s 26 -f 1583//2061 1582//2060 1584//2062 -f 1584//2062 1585//2063 1583//2061 -s off -f 1569//34 1569//34 1586//34 -s 23 -f 1586//1776 1570//1772 1569//1771 -f 1570//1772 1586//1776 1587//1777 -f 1587//1777 1572//1774 1570//1772 -s 24 -f 1572//1836 1587//1840 1588//1841 -f 1588//1841 1574//1838 1572//1836 -s 25 -f 1574//1900 1588//1910 1589//1911 -f 1589//1911 1576//1902 1574//1900 -f 1576//1902 1589//1911 1590//1912 -f 1590//1912 1578//1904 1576//1902 -f 1578//1904 1590//1912 1591//1913 -f 1591//1913 1580//1906 1578//1904 -f 1580//1906 1591//1913 1592//1914 -f 1592//1914 1582//1908 1580//1906 -s 26 -f 1582//2060 1592//2064 1593//2065 -f 1593//2065 1584//2062 1582//2060 -s off -f 1569//35 1569//35 1594//35 -s 23 -f 1594//1778 1586//1776 1569//1771 -f 1586//1776 1594//1778 1595//1779 -f 1595//1779 1587//1777 1586//1776 -s 24 -f 1587//1840 1595//1842 1596//1843 -f 1596//1843 1588//1841 1587//1840 -s 25 -f 1588//1910 1596//1915 1597//1916 -f 1597//1916 1589//1911 1588//1910 -f 1589//1911 1597//1916 1598//1917 -f 1598//1917 1590//1912 1589//1911 -f 1590//1912 1598//1917 1599//1918 -f 1599//1918 1591//1913 1590//1912 -f 1591//1913 1599//1918 1600//1919 -f 1600//1919 1592//1914 1591//1913 -s 26 -f 1592//2064 1600//2066 1601//2067 -f 1601//2067 1593//2065 1592//2064 -s off -f 1569//36 1569//36 1602//36 -s 23 -f 1602//1780 1594//1778 1569//1771 -f 1594//1778 1602//1780 1603//1781 -f 1603//1781 1595//1779 1594//1778 -s 24 -f 1595//1842 1603//1844 1604//1845 -f 1604//1845 1596//1843 1595//1842 -s 25 -f 1596//1915 1604//1920 1605//1921 -f 1605//1921 1597//1916 1596//1915 -f 1597//1916 1605//1921 1606//1922 -f 1606//1922 1598//1917 1597//1916 -f 1598//1917 1606//1922 1607//1923 -f 1607//1923 1599//1918 1598//1917 -f 1599//1918 1607//1923 1608//1924 -f 1608//1924 1600//1919 1599//1918 -s 26 -f 1600//2066 1608//2068 1609//2069 -f 1609//2069 1601//2067 1600//2066 -s off -f 1569//37 1569//37 1610//37 -s 23 -f 1610//1782 1602//1780 1569//1771 -f 1602//1780 1610//1782 1611//1783 -f 1611//1783 1603//1781 1602//1780 -s 24 -f 1603//1844 1611//1846 1612//1847 -f 1612//1847 1604//1845 1603//1844 -s 25 -f 1604//1920 1612//1925 1613//1926 -f 1613//1926 1605//1921 1604//1920 -f 1605//1921 1613//1926 1614//1927 -f 1614//1927 1606//1922 1605//1921 -f 1606//1922 1614//1927 1615//1928 -f 1615//1928 1607//1923 1606//1922 -f 1607//1923 1615//1928 1616//1929 -f 1616//1929 1608//1924 1607//1923 -s 26 -f 1608//2068 1616//2070 1617//2071 -f 1617//2071 1609//2069 1608//2068 -s off -f 1569//38 1569//38 1618//38 -s 23 -f 1618//1784 1610//1782 1569//1771 -f 1610//1782 1618//1784 1619//1785 -f 1619//1785 1611//1783 1610//1782 -s 24 -f 1611//1846 1619//1848 1620//1849 -f 1620//1849 1612//1847 1611//1846 -s 25 -f 1612//1925 1620//1930 1621//1931 -f 1621//1931 1613//1926 1612//1925 -f 1613//1926 1621//1931 1622//1932 -f 1622//1932 1614//1927 1613//1926 -f 1614//1927 1622//1932 1623//1933 -f 1623//1933 1615//1928 1614//1927 -f 1615//1928 1623//1933 1624//1934 -f 1624//1934 1616//1929 1615//1928 -s 26 -f 1616//2070 1624//2072 1625//2073 -f 1625//2073 1617//2071 1616//2070 -s off -f 1569//39 1569//39 1626//39 -s 23 -f 1626//1786 1618//1784 1569//1771 -f 1618//1784 1626//1786 1627//1787 -f 1627//1787 1619//1785 1618//1784 -s 24 -f 1619//1848 1627//1850 1628//1851 -f 1628//1851 1620//1849 1619//1848 -s 25 -f 1620//1930 1628//1935 1629//1936 -f 1629//1936 1621//1931 1620//1930 -f 1621//1931 1629//1936 1630//1937 -f 1630//1937 1622//1932 1621//1931 -f 1622//1932 1630//1937 1631//1938 -f 1631//1938 1623//1933 1622//1932 -f 1623//1933 1631//1938 1632//1939 -f 1632//1939 1624//1934 1623//1933 -s 26 -f 1624//2072 1632//2074 1633//2075 -f 1633//2075 1625//2073 1624//2072 -s off -f 1569//40 1569//40 1634//40 -s 23 -f 1634//1788 1626//1786 1569//1771 -f 1626//1786 1634//1788 1635//1789 -f 1635//1789 1627//1787 1626//1786 -s 24 -f 1627//1850 1635//1852 1636//1853 -f 1636//1853 1628//1851 1627//1850 -s 25 -f 1628//1935 1636//1940 1637//1941 -f 1637//1941 1629//1936 1628//1935 -f 1629//1936 1637//1941 1638//1942 -f 1638//1942 1630//1937 1629//1936 -f 1630//1937 1638//1942 1639//1943 -f 1639//1943 1631//1938 1630//1937 -f 1631//1938 1639//1943 1640//1944 -f 1640//1944 1632//1939 1631//1938 -s 26 -f 1632//2074 1640//2076 1641//2077 -f 1641//2077 1633//2075 1632//2074 -s off -f 1569//41 1569//41 1642//41 -s 23 -f 1642//1790 1634//1788 1569//1771 -f 1634//1788 1642//1790 1643//1791 -f 1643//1791 1635//1789 1634//1788 -s 24 -f 1635//1852 1643//1854 1644//1855 -f 1644//1855 1636//1853 1635//1852 -s 25 -f 1636//1940 1644//1945 1645//1946 -f 1645//1946 1637//1941 1636//1940 -f 1637//1941 1645//1946 1646//1947 -f 1646//1947 1638//1942 1637//1941 -f 1638//1942 1646//1947 1647//1948 -f 1647//1948 1639//1943 1638//1942 -f 1639//1943 1647//1948 1648//1949 -f 1648//1949 1640//1944 1639//1943 -s 26 -f 1640//2076 1648//2078 1649//2079 -f 1649//2079 1641//2077 1640//2076 -s off -f 1569//42 1569//42 1650//42 -s 23 -f 1650//1792 1642//1790 1569//1771 -f 1642//1790 1650//1792 1651//1793 -f 1651//1793 1643//1791 1642//1790 -s 24 -f 1643//1854 1651//1856 1652//1857 -f 1652//1857 1644//1855 1643//1854 -s 25 -f 1644//1945 1652//1950 1653//1951 -f 1653//1951 1645//1946 1644//1945 -f 1645//1946 1653//1951 1654//1952 -f 1654//1952 1646//1947 1645//1946 -f 1646//1947 1654//1952 1655//1953 -f 1655//1953 1647//1948 1646//1947 -f 1647//1948 1655//1953 1656//1954 -f 1656//1954 1648//1949 1647//1948 -s 26 -f 1648//2078 1656//2080 1657//2081 -f 1657//2081 1649//2079 1648//2078 -s off -f 1569//43 1569//43 1658//43 -s 23 -f 1658//1794 1650//1792 1569//1771 -f 1650//1792 1658//1794 1659//1795 -f 1659//1795 1651//1793 1650//1792 -s 24 -f 1651//1856 1659//1858 1660//1859 -f 1660//1859 1652//1857 1651//1856 -s 25 -f 1652//1950 1660//1955 1661//1956 -f 1661//1956 1653//1951 1652//1950 -f 1653//1951 1661//1956 1662//1957 -f 1662//1957 1654//1952 1653//1951 -f 1654//1952 1662//1957 1663//1958 -f 1663//1958 1655//1953 1654//1952 -f 1655//1953 1663//1958 1664//1959 -f 1664//1959 1656//1954 1655//1953 -s 26 -f 1656//2080 1664//2082 1665//2083 -f 1665//2083 1657//2081 1656//2080 -s off -f 1569//44 1569//44 1666//44 -s 23 -f 1666//1796 1658//1794 1569//1771 -f 1658//1794 1666//1796 1667//1797 -f 1667//1797 1659//1795 1658//1794 -s 24 -f 1659//1858 1667//1860 1668//1861 -f 1668//1861 1660//1859 1659//1858 -s 25 -f 1660//1955 1668//1960 1669//1961 -f 1669//1961 1661//1956 1660//1955 -f 1661//1956 1669//1961 1670//1962 -f 1670//1962 1662//1957 1661//1956 -f 1662//1957 1670//1962 1671//1963 -f 1671//1963 1663//1958 1662//1957 -f 1663//1958 1671//1963 1672//1964 -f 1672//1964 1664//1959 1663//1958 -s 26 -f 1664//2082 1672//2084 1673//2085 -f 1673//2085 1665//2083 1664//2082 -s off -f 1569//45 1569//45 1674//45 -s 23 -f 1674//1798 1666//1796 1569//1771 -f 1666//1796 1674//1798 1675//1799 -f 1675//1799 1667//1797 1666//1796 -s 24 -f 1667//1860 1675//1862 1676//1863 -f 1676//1863 1668//1861 1667//1860 -s 25 -f 1668//1960 1676//1965 1677//1966 -f 1677//1966 1669//1961 1668//1960 -f 1669//1961 1677//1966 1678//1967 -f 1678//1967 1670//1962 1669//1961 -f 1670//1962 1678//1967 1679//1968 -f 1679//1968 1671//1963 1670//1962 -f 1671//1963 1679//1968 1680//1969 -f 1680//1969 1672//1964 1671//1963 -s 26 -f 1672//2084 1680//2086 1681//2087 -f 1681//2087 1673//2085 1672//2084 -s off -f 1569//46 1569//46 1682//46 -s 23 -f 1682//1800 1674//1798 1569//1771 -f 1674//1798 1682//1800 1683//1801 -f 1683//1801 1675//1799 1674//1798 -s 24 -f 1675//1862 1683//1864 1684//1865 -f 1684//1865 1676//1863 1675//1862 -s 25 -f 1676//1965 1684//1970 1685//1971 -f 1685//1971 1677//1966 1676//1965 -f 1677//1966 1685//1971 1686//1972 -f 1686//1972 1678//1967 1677//1966 -f 1678//1967 1686//1972 1687//1973 -f 1687//1973 1679//1968 1678//1967 -f 1679//1968 1687//1973 1688//1974 -f 1688//1974 1680//1969 1679//1968 -s 26 -f 1680//2086 1688//2088 1689//2089 -f 1689//2089 1681//2087 1680//2086 -s off -f 1569//47 1569//47 1690//47 -s 23 -f 1690//1802 1682//1800 1569//1771 -f 1682//1800 1690//1802 1691//1803 -f 1691//1803 1683//1801 1682//1800 -s 24 -f 1683//1864 1691//1866 1692//1867 -f 1692//1867 1684//1865 1683//1864 -s 25 -f 1684//1970 1692//1975 1693//1976 -f 1693//1976 1685//1971 1684//1970 -f 1685//1971 1693//1976 1694//1977 -f 1694//1977 1686//1972 1685//1971 -f 1686//1972 1694//1977 1695//1978 -f 1695//1978 1687//1973 1686//1972 -f 1687//1973 1695//1978 1696//1979 -f 1696//1979 1688//1974 1687//1973 -s 26 -f 1688//2088 1696//2090 1697//2091 -f 1697//2091 1689//2089 1688//2088 -s off -f 1569//48 1569//48 1698//48 -s 23 -f 1698//1804 1690//1802 1569//1771 -f 1690//1802 1698//1804 1699//1805 -f 1699//1805 1691//1803 1690//1802 -s 24 -f 1691//1866 1699//1868 1700//1869 -f 1700//1869 1692//1867 1691//1866 -s 25 -f 1692//1975 1700//1980 1701//1981 -f 1701//1981 1693//1976 1692//1975 -f 1693//1976 1701//1981 1702//1982 -f 1702//1982 1694//1977 1693//1976 -f 1694//1977 1702//1982 1703//1983 -f 1703//1983 1695//1978 1694//1977 -f 1695//1978 1703//1983 1704//1984 -f 1704//1984 1696//1979 1695//1978 -s 26 -f 1696//2090 1704//2092 1705//2093 -f 1705//2093 1697//2091 1696//2090 -s off -f 1569//49 1569//49 1706//49 -s 23 -f 1706//1806 1698//1804 1569//1771 -f 1698//1804 1706//1806 1707//1807 -f 1707//1807 1699//1805 1698//1804 -s 24 -f 1699//1868 1707//1870 1708//1871 -f 1708//1871 1700//1869 1699//1868 -s 25 -f 1700//1980 1708//1985 1709//1986 -f 1709//1986 1701//1981 1700//1980 -f 1701//1981 1709//1986 1710//1987 -f 1710//1987 1702//1982 1701//1981 -f 1702//1982 1710//1987 1711//1988 -f 1711//1988 1703//1983 1702//1982 -f 1703//1983 1711//1988 1712//1989 -f 1712//1989 1704//1984 1703//1983 -s 26 -f 1704//2092 1712//2094 1713//2095 -f 1713//2095 1705//2093 1704//2092 -s off -f 1569//50 1569//50 1714//50 -s 23 -f 1714//1808 1706//1806 1569//1771 -f 1706//1806 1714//1808 1715//1809 -f 1715//1809 1707//1807 1706//1806 -s 24 -f 1707//1870 1715//1872 1716//1873 -f 1716//1873 1708//1871 1707//1870 -s 25 -f 1708//1985 1716//1990 1717//1991 -f 1717//1991 1709//1986 1708//1985 -f 1709//1986 1717//1991 1718//1992 -f 1718//1992 1710//1987 1709//1986 -f 1710//1987 1718//1992 1719//1993 -f 1719//1993 1711//1988 1710//1987 -f 1711//1988 1719//1993 1720//1994 -f 1720//1994 1712//1989 1711//1988 -s 26 -f 1712//2094 1720//2096 1721//2097 -f 1721//2097 1713//2095 1712//2094 -s off -f 1569//51 1569//51 1722//51 -s 23 -f 1722//1810 1714//1808 1569//1771 -f 1714//1808 1722//1810 1723//1811 -f 1723//1811 1715//1809 1714//1808 -s 24 -f 1715//1872 1723//1874 1724//1875 -f 1724//1875 1716//1873 1715//1872 -s 25 -f 1716//1990 1724//1995 1725//1996 -f 1725//1996 1717//1991 1716//1990 -f 1717//1991 1725//1996 1726//1997 -f 1726//1997 1718//1992 1717//1991 -f 1718//1992 1726//1997 1727//1998 -f 1727//1998 1719//1993 1718//1992 -f 1719//1993 1727//1998 1728//1999 -f 1728//1999 1720//1994 1719//1993 -s 26 -f 1720//2096 1728//2098 1729//2099 -f 1729//2099 1721//2097 1720//2096 -s off -f 1569//52 1569//52 1730//52 -s 23 -f 1730//1812 1722//1810 1569//1771 -f 1722//1810 1730//1812 1731//1813 -f 1731//1813 1723//1811 1722//1810 -s 24 -f 1723//1874 1731//1876 1732//1877 -f 1732//1877 1724//1875 1723//1874 -s 25 -f 1724//1995 1732//2000 1733//2001 -f 1733//2001 1725//1996 1724//1995 -f 1725//1996 1733//2001 1734//2002 -f 1734//2002 1726//1997 1725//1996 -f 1726//1997 1734//2002 1735//2003 -f 1735//2003 1727//1998 1726//1997 -f 1727//1998 1735//2003 1736//2004 -f 1736//2004 1728//1999 1727//1998 -s 26 -f 1728//2098 1736//2100 1737//2101 -f 1737//2101 1729//2099 1728//2098 -s off -f 1569//53 1569//53 1738//53 -s 23 -f 1738//1814 1730//1812 1569//1771 -f 1730//1812 1738//1814 1739//1815 -f 1739//1815 1731//1813 1730//1812 -s 24 -f 1731//1876 1739//1878 1740//1879 -f 1740//1879 1732//1877 1731//1876 -s 25 -f 1732//2000 1740//2005 1741//2006 -f 1741//2006 1733//2001 1732//2000 -f 1733//2001 1741//2006 1742//2007 -f 1742//2007 1734//2002 1733//2001 -f 1734//2002 1742//2007 1743//2008 -f 1743//2008 1735//2003 1734//2002 -f 1735//2003 1743//2008 1744//2009 -f 1744//2009 1736//2004 1735//2003 -s 26 -f 1736//2100 1744//2102 1745//2103 -f 1745//2103 1737//2101 1736//2100 -s off -f 1569//54 1569//54 1746//54 -s 23 -f 1746//1816 1738//1814 1569//1771 -f 1738//1814 1746//1816 1747//1817 -f 1747//1817 1739//1815 1738//1814 -s 24 -f 1739//1878 1747//1880 1748//1881 -f 1748//1881 1740//1879 1739//1878 -s 25 -f 1740//2005 1748//2010 1749//2011 -f 1749//2011 1741//2006 1740//2005 -f 1741//2006 1749//2011 1750//2012 -f 1750//2012 1742//2007 1741//2006 -f 1742//2007 1750//2012 1751//2013 -f 1751//2013 1743//2008 1742//2007 -f 1743//2008 1751//2013 1752//2014 -f 1752//2014 1744//2009 1743//2008 -s 26 -f 1744//2102 1752//2104 1753//2105 -f 1753//2105 1745//2103 1744//2102 -s off -f 1569//55 1569//55 1754//55 -s 23 -f 1754//1818 1746//1816 1569//1771 -f 1746//1816 1754//1818 1755//1819 -f 1755//1819 1747//1817 1746//1816 -s 24 -f 1747//1880 1755//1882 1756//1883 -f 1756//1883 1748//1881 1747//1880 -s 25 -f 1748//2010 1756//2015 1757//2016 -f 1757//2016 1749//2011 1748//2010 -f 1749//2011 1757//2016 1758//2017 -f 1758//2017 1750//2012 1749//2011 -f 1750//2012 1758//2017 1759//2018 -f 1759//2018 1751//2013 1750//2012 -f 1751//2013 1759//2018 1760//2019 -f 1760//2019 1752//2014 1751//2013 -s 26 -f 1752//2104 1760//2106 1761//2107 -f 1761//2107 1753//2105 1752//2104 -s off -f 1569//56 1569//56 1762//56 -s 23 -f 1762//1820 1754//1818 1569//1771 -f 1754//1818 1762//1820 1763//1821 -f 1763//1821 1755//1819 1754//1818 -s 24 -f 1755//1882 1763//1884 1764//1885 -f 1764//1885 1756//1883 1755//1882 -s 25 -f 1756//2015 1764//2020 1765//2021 -f 1765//2021 1757//2016 1756//2015 -f 1757//2016 1765//2021 1766//2022 -f 1766//2022 1758//2017 1757//2016 -f 1758//2017 1766//2022 1767//2023 -f 1767//2023 1759//2018 1758//2017 -f 1759//2018 1767//2023 1768//2024 -f 1768//2024 1760//2019 1759//2018 -s 26 -f 1760//2106 1768//2108 1769//2109 -f 1769//2109 1761//2107 1760//2106 -s off -f 1569//57 1569//57 1770//57 -s 23 -f 1770//1822 1762//1820 1569//1771 -f 1762//1820 1770//1822 1771//1823 -f 1771//1823 1763//1821 1762//1820 -s 24 -f 1763//1884 1771//1886 1772//1887 -f 1772//1887 1764//1885 1763//1884 -s 25 -f 1764//2020 1772//2025 1773//2026 -f 1773//2026 1765//2021 1764//2020 -f 1765//2021 1773//2026 1774//2027 -f 1774//2027 1766//2022 1765//2021 -f 1766//2022 1774//2027 1775//2028 -f 1775//2028 1767//2023 1766//2022 -f 1767//2023 1775//2028 1776//2029 -f 1776//2029 1768//2024 1767//2023 -s 26 -f 1768//2108 1776//2110 1777//2111 -f 1777//2111 1769//2109 1768//2108 -s off -f 1569//58 1569//58 1778//58 -s 23 -f 1778//1824 1770//1822 1569//1771 -f 1770//1822 1778//1824 1779//1825 -f 1779//1825 1771//1823 1770//1822 -s 24 -f 1771//1886 1779//1888 1780//1889 -f 1780//1889 1772//1887 1771//1886 -s 25 -f 1772//2025 1780//2030 1781//2031 -f 1781//2031 1773//2026 1772//2025 -f 1773//2026 1781//2031 1782//2032 -f 1782//2032 1774//2027 1773//2026 -f 1774//2027 1782//2032 1783//2033 -f 1783//2033 1775//2028 1774//2027 -f 1775//2028 1783//2033 1784//2034 -f 1784//2034 1776//2029 1775//2028 -s 26 -f 1776//2110 1784//2112 1785//2113 -f 1785//2113 1777//2111 1776//2110 -s off -f 1569//59 1569//59 1786//59 -s 23 -f 1786//1826 1778//1824 1569//1771 -f 1778//1824 1786//1826 1787//1827 -f 1787//1827 1779//1825 1778//1824 -s 24 -f 1779//1888 1787//1890 1788//1891 -f 1788//1891 1780//1889 1779//1888 -s 25 -f 1780//2030 1788//2035 1789//2036 -f 1789//2036 1781//2031 1780//2030 -f 1781//2031 1789//2036 1790//2037 -f 1790//2037 1782//2032 1781//2031 -f 1782//2032 1790//2037 1791//2038 -f 1791//2038 1783//2033 1782//2032 -f 1783//2033 1791//2038 1792//2039 -f 1792//2039 1784//2034 1783//2033 -s 26 -f 1784//2112 1792//2114 1793//2115 -f 1793//2115 1785//2113 1784//2112 -s off -f 1569//60 1569//60 1794//60 -s 23 -f 1794//1828 1786//1826 1569//1771 -f 1786//1826 1794//1828 1795//1829 -f 1795//1829 1787//1827 1786//1826 -s 24 -f 1787//1890 1795//1892 1796//1893 -f 1796//1893 1788//1891 1787//1890 -s 25 -f 1788//2035 1796//2040 1797//2041 -f 1797//2041 1789//2036 1788//2035 -f 1789//2036 1797//2041 1798//2042 -f 1798//2042 1790//2037 1789//2036 -f 1790//2037 1798//2042 1799//2043 -f 1799//2043 1791//2038 1790//2037 -f 1791//2038 1799//2043 1800//2044 -f 1800//2044 1792//2039 1791//2038 -s 26 -f 1792//2114 1800//2116 1801//2117 -f 1801//2117 1793//2115 1792//2114 -s off -f 1569//61 1569//61 1802//61 -s 23 -f 1802//1830 1794//1828 1569//1771 -f 1794//1828 1802//1830 1803//1831 -f 1803//1831 1795//1829 1794//1828 -s 24 -f 1795//1892 1803//1894 1804//1895 -f 1804//1895 1796//1893 1795//1892 -s 25 -f 1796//2040 1804//2045 1805//2046 -f 1805//2046 1797//2041 1796//2040 -f 1797//2041 1805//2046 1806//2047 -f 1806//2047 1798//2042 1797//2041 -f 1798//2042 1806//2047 1807//2048 -f 1807//2048 1799//2043 1798//2042 -f 1799//2043 1807//2048 1808//2049 -f 1808//2049 1800//2044 1799//2043 -s 26 -f 1800//2116 1808//2118 1809//2119 -f 1809//2119 1801//2117 1800//2116 -s off -f 1569//62 1569//62 1810//62 -s 23 -f 1810//1832 1802//1830 1569//1771 -f 1802//1830 1810//1832 1811//1833 -f 1811//1833 1803//1831 1802//1830 -s 24 -f 1803//1894 1811//1896 1812//1897 -f 1812//1897 1804//1895 1803//1894 -s 25 -f 1804//2045 1812//2050 1813//2051 -f 1813//2051 1805//2046 1804//2045 -f 1805//2046 1813//2051 1814//2052 -f 1814//2052 1806//2047 1805//2046 -f 1806//2047 1814//2052 1815//2053 -f 1815//2053 1807//2048 1806//2047 -f 1807//2048 1815//2053 1816//2054 -f 1816//2054 1808//2049 1807//2048 -s 26 -f 1808//2118 1816//2120 1817//2121 -f 1817//2121 1809//2119 1808//2118 -s off -f 1569//63 1569//63 1818//63 -s 23 -f 1818//1834 1810//1832 1569//1771 -f 1810//1832 1818//1834 1819//1835 -f 1819//1835 1811//1833 1810//1832 -s 24 -f 1811//1896 1819//1898 1820//1899 -f 1820//1899 1812//1897 1811//1896 -s 25 -f 1812//2050 1820//2055 1821//2056 -f 1821//2056 1813//2051 1812//2050 -f 1813//2051 1821//2056 1822//2057 -f 1822//2057 1814//2052 1813//2051 -f 1814//2052 1822//2057 1823//2058 -f 1823//2058 1815//2053 1814//2052 -f 1815//2053 1823//2058 1824//2059 -f 1824//2059 1816//2054 1815//2053 -s 26 -f 1816//2120 1824//2122 1825//2123 -f 1825//2123 1817//2121 1816//2120 -s off -f 1569//64 1569//64 1571//64 -s 23 -f 1571//1773 1818//1834 1569//1771 -f 1818//1834 1571//1773 1573//1775 -f 1573//1775 1819//1835 1818//1834 -s 24 -f 1819//1898 1573//1837 1575//1839 -f 1575//1839 1820//1899 1819//1898 -s 25 -f 1820//2055 1575//1901 1577//1903 -f 1577//1903 1821//2056 1820//2055 -f 1821//2056 1577//1903 1579//1905 -f 1579//1905 1822//2057 1821//2056 -f 1822//2057 1579//1905 1581//1907 -f 1581//1907 1823//2058 1822//2057 -f 1823//2058 1581//1907 1583//1909 -f 1583//1909 1824//2059 1823//2058 -s 26 -f 1824//2122 1583//2061 1585//2063 -f 1585//2063 1825//2123 1824//2122 -s 27 -f 1585//2125 1584//2124 1826//2156 -f 1826//2156 1827//2157 1585//2125 -f 1827//2157 1826//2156 1828//2158 -f 1828//2158 1829//2159 1827//2157 -f 1829//2159 1828//2158 1830//2160 -f 1830//2160 1831//2161 1829//2159 -f 1831//2161 1830//2160 1832//2162 -f 1832//2162 1833//2163 1831//2161 -f 1833//2163 1832//2162 1834//2164 -f 1834//2164 1835//2165 1833//2163 -f 1835//2165 1834//2164 1836//2166 -f 1836//2166 1837//2167 1835//2165 -f 1837//2167 1836//2166 1838//2168 -f 1838//2168 1839//2169 1837//2167 -s 28 -f 1839//2381 1838//2380 1840//2382 -f 1840//2382 1841//2383 1839//2381 -s 27 -f 1584//2124 1593//2126 1842//2170 -f 1842//2170 1826//2156 1584//2124 -f 1826//2156 1842//2170 1843//2171 -f 1843//2171 1828//2158 1826//2156 -f 1828//2158 1843//2171 1844//2172 -f 1844//2172 1830//2160 1828//2158 -f 1830//2160 1844//2172 1845//2173 -f 1845//2173 1832//2162 1830//2160 -f 1832//2162 1845//2173 1846//2174 -f 1846//2174 1834//2164 1832//2162 -f 1834//2164 1846//2174 1847//2175 -f 1847//2175 1836//2166 1834//2164 -f 1836//2166 1847//2175 1848//2176 -f 1848//2176 1838//2168 1836//2166 -s 28 -f 1838//2380 1848//2384 1849//2385 -f 1849//2385 1840//2382 1838//2380 -s 27 -f 1593//2126 1601//2127 1850//2177 -f 1850//2177 1842//2170 1593//2126 -f 1842//2170 1850//2177 1851//2178 -f 1851//2178 1843//2171 1842//2170 -f 1843//2171 1851//2178 1852//2179 -f 1852//2179 1844//2172 1843//2171 -f 1844//2172 1852//2179 1853//2180 -f 1853//2180 1845//2173 1844//2172 -f 1845//2173 1853//2180 1854//2181 -f 1854//2181 1846//2174 1845//2173 -f 1846//2174 1854//2181 1855//2182 -f 1855//2182 1847//2175 1846//2174 -f 1847//2175 1855//2182 1856//2183 -f 1856//2183 1848//2176 1847//2175 -s 28 -f 1848//2384 1856//2386 1857//2387 -f 1857//2387 1849//2385 1848//2384 -s 27 -f 1601//2127 1609//2128 1858//2184 -f 1858//2184 1850//2177 1601//2127 -f 1850//2177 1858//2184 1859//2185 -f 1859//2185 1851//2178 1850//2177 -f 1851//2178 1859//2185 1860//2186 -f 1860//2186 1852//2179 1851//2178 -f 1852//2179 1860//2186 1861//2187 -f 1861//2187 1853//2180 1852//2179 -f 1853//2180 1861//2187 1862//2188 -f 1862//2188 1854//2181 1853//2180 -f 1854//2181 1862//2188 1863//2189 -f 1863//2189 1855//2182 1854//2181 -f 1855//2182 1863//2189 1864//2190 -f 1864//2190 1856//2183 1855//2182 -s 28 -f 1856//2386 1864//2388 1865//2389 -f 1865//2389 1857//2387 1856//2386 -s 27 -f 1609//2128 1617//2129 1866//2191 -f 1866//2191 1858//2184 1609//2128 -f 1858//2184 1866//2191 1867//2192 -f 1867//2192 1859//2185 1858//2184 -f 1859//2185 1867//2192 1868//2193 -f 1868//2193 1860//2186 1859//2185 -f 1860//2186 1868//2193 1869//2194 -f 1869//2194 1861//2187 1860//2186 -f 1861//2187 1869//2194 1870//2195 -f 1870//2195 1862//2188 1861//2187 -f 1862//2188 1870//2195 1871//2196 -f 1871//2196 1863//2189 1862//2188 -f 1863//2189 1871//2196 1872//2197 -f 1872//2197 1864//2190 1863//2189 -s 28 -f 1864//2388 1872//2390 1873//2391 -f 1873//2391 1865//2389 1864//2388 -s 27 -f 1617//2129 1625//2130 1874//2198 -f 1874//2198 1866//2191 1617//2129 -f 1866//2191 1874//2198 1875//2199 -f 1875//2199 1867//2192 1866//2191 -f 1867//2192 1875//2199 1876//2200 -f 1876//2200 1868//2193 1867//2192 -f 1868//2193 1876//2200 1877//2201 -f 1877//2201 1869//2194 1868//2193 -f 1869//2194 1877//2201 1878//2202 -f 1878//2202 1870//2195 1869//2194 -f 1870//2195 1878//2202 1879//2203 -f 1879//2203 1871//2196 1870//2195 -f 1871//2196 1879//2203 1880//2204 -f 1880//2204 1872//2197 1871//2196 -s 28 -f 1872//2390 1880//2392 1881//2393 -f 1881//2393 1873//2391 1872//2390 -s 27 -f 1625//2130 1633//2131 1882//2205 -f 1882//2205 1874//2198 1625//2130 -f 1874//2198 1882//2205 1883//2206 -f 1883//2206 1875//2199 1874//2198 -f 1875//2199 1883//2206 1884//2207 -f 1884//2207 1876//2200 1875//2199 -f 1876//2200 1884//2207 1885//2208 -f 1885//2208 1877//2201 1876//2200 -f 1877//2201 1885//2208 1886//2209 -f 1886//2209 1878//2202 1877//2201 -f 1878//2202 1886//2209 1887//2210 -f 1887//2210 1879//2203 1878//2202 -f 1879//2203 1887//2210 1888//2211 -f 1888//2211 1880//2204 1879//2203 -s 28 -f 1880//2392 1888//2394 1889//2395 -f 1889//2395 1881//2393 1880//2392 -s 27 -f 1633//2131 1641//2132 1890//2212 -f 1890//2212 1882//2205 1633//2131 -f 1882//2205 1890//2212 1891//2213 -f 1891//2213 1883//2206 1882//2205 -f 1883//2206 1891//2213 1892//2214 -f 1892//2214 1884//2207 1883//2206 -f 1884//2207 1892//2214 1893//2215 -f 1893//2215 1885//2208 1884//2207 -f 1885//2208 1893//2215 1894//2216 -f 1894//2216 1886//2209 1885//2208 -f 1886//2209 1894//2216 1895//2217 -f 1895//2217 1887//2210 1886//2209 -f 1887//2210 1895//2217 1896//2218 -f 1896//2218 1888//2211 1887//2210 -s 28 -f 1888//2394 1896//2396 1897//2397 -f 1897//2397 1889//2395 1888//2394 -s 27 -f 1641//2132 1649//2133 1898//2219 -f 1898//2219 1890//2212 1641//2132 -f 1890//2212 1898//2219 1899//2220 -f 1899//2220 1891//2213 1890//2212 -f 1891//2213 1899//2220 1900//2221 -f 1900//2221 1892//2214 1891//2213 -f 1892//2214 1900//2221 1901//2222 -f 1901//2222 1893//2215 1892//2214 -f 1893//2215 1901//2222 1902//2223 -f 1902//2223 1894//2216 1893//2215 -f 1894//2216 1902//2223 1903//2224 -f 1903//2224 1895//2217 1894//2216 -f 1895//2217 1903//2224 1904//2225 -f 1904//2225 1896//2218 1895//2217 -s 28 -f 1896//2396 1904//2398 1905//2399 -f 1905//2399 1897//2397 1896//2396 -s 27 -f 1649//2133 1657//2134 1906//2226 -f 1906//2226 1898//2219 1649//2133 -f 1898//2219 1906//2226 1907//2227 -f 1907//2227 1899//2220 1898//2219 -f 1899//2220 1907//2227 1908//2228 -f 1908//2228 1900//2221 1899//2220 -f 1900//2221 1908//2228 1909//2229 -f 1909//2229 1901//2222 1900//2221 -f 1901//2222 1909//2229 1910//2230 -f 1910//2230 1902//2223 1901//2222 -f 1902//2223 1910//2230 1911//2231 -f 1911//2231 1903//2224 1902//2223 -f 1903//2224 1911//2231 1912//2232 -f 1912//2232 1904//2225 1903//2224 -s 28 -f 1904//2398 1912//2400 1913//2401 -f 1913//2401 1905//2399 1904//2398 -s 27 -f 1657//2134 1665//2135 1914//2233 -f 1914//2233 1906//2226 1657//2134 -f 1906//2226 1914//2233 1915//2234 -f 1915//2234 1907//2227 1906//2226 -f 1907//2227 1915//2234 1916//2235 -f 1916//2235 1908//2228 1907//2227 -f 1908//2228 1916//2235 1917//2236 -f 1917//2236 1909//2229 1908//2228 -f 1909//2229 1917//2236 1918//2237 -f 1918//2237 1910//2230 1909//2229 -f 1910//2230 1918//2237 1919//2238 -f 1919//2238 1911//2231 1910//2230 -f 1911//2231 1919//2238 1920//2239 -f 1920//2239 1912//2232 1911//2231 -s 28 -f 1912//2400 1920//2402 1921//2403 -f 1921//2403 1913//2401 1912//2400 -s 27 -f 1665//2135 1673//2136 1922//2240 -f 1922//2240 1914//2233 1665//2135 -f 1914//2233 1922//2240 1923//2241 -f 1923//2241 1915//2234 1914//2233 -f 1915//2234 1923//2241 1924//2242 -f 1924//2242 1916//2235 1915//2234 -f 1916//2235 1924//2242 1925//2243 -f 1925//2243 1917//2236 1916//2235 -f 1917//2236 1925//2243 1926//2244 -f 1926//2244 1918//2237 1917//2236 -f 1918//2237 1926//2244 1927//2245 -f 1927//2245 1919//2238 1918//2237 -f 1919//2238 1927//2245 1928//2246 -f 1928//2246 1920//2239 1919//2238 -s 28 -f 1920//2402 1928//2404 1929//2405 -f 1929//2405 1921//2403 1920//2402 -s 27 -f 1673//2136 1681//2137 1930//2247 -f 1930//2247 1922//2240 1673//2136 -f 1922//2240 1930//2247 1931//2248 -f 1931//2248 1923//2241 1922//2240 -f 1923//2241 1931//2248 1932//2249 -f 1932//2249 1924//2242 1923//2241 -f 1924//2242 1932//2249 1933//2250 -f 1933//2250 1925//2243 1924//2242 -f 1925//2243 1933//2250 1934//2251 -f 1934//2251 1926//2244 1925//2243 -f 1926//2244 1934//2251 1935//2252 -f 1935//2252 1927//2245 1926//2244 -f 1927//2245 1935//2252 1936//2253 -f 1936//2253 1928//2246 1927//2245 -s 28 -f 1928//2404 1936//2406 1937//2407 -f 1937//2407 1929//2405 1928//2404 -s 27 -f 1681//2137 1689//2138 1938//2254 -f 1938//2254 1930//2247 1681//2137 -f 1930//2247 1938//2254 1939//2255 -f 1939//2255 1931//2248 1930//2247 -f 1931//2248 1939//2255 1940//2256 -f 1940//2256 1932//2249 1931//2248 -f 1932//2249 1940//2256 1941//2257 -f 1941//2257 1933//2250 1932//2249 -f 1933//2250 1941//2257 1942//2258 -f 1942//2258 1934//2251 1933//2250 -f 1934//2251 1942//2258 1943//2259 -f 1943//2259 1935//2252 1934//2251 -f 1935//2252 1943//2259 1944//2260 -f 1944//2260 1936//2253 1935//2252 -s 28 -f 1936//2406 1944//2408 1945//2409 -f 1945//2409 1937//2407 1936//2406 -s 27 -f 1689//2138 1697//2139 1946//2261 -f 1946//2261 1938//2254 1689//2138 -f 1938//2254 1946//2261 1947//2262 -f 1947//2262 1939//2255 1938//2254 -f 1939//2255 1947//2262 1948//2263 -f 1948//2263 1940//2256 1939//2255 -f 1940//2256 1948//2263 1949//2264 -f 1949//2264 1941//2257 1940//2256 -f 1941//2257 1949//2264 1950//2265 -f 1950//2265 1942//2258 1941//2257 -f 1942//2258 1950//2265 1951//2266 -f 1951//2266 1943//2259 1942//2258 -f 1943//2259 1951//2266 1952//2267 -f 1952//2267 1944//2260 1943//2259 -s 28 -f 1944//2408 1952//2410 1953//2411 -f 1953//2411 1945//2409 1944//2408 -s 27 -f 1697//2139 1705//2140 1954//2268 -f 1954//2268 1946//2261 1697//2139 -f 1946//2261 1954//2268 1955//2269 -f 1955//2269 1947//2262 1946//2261 -f 1947//2262 1955//2269 1956//2270 -f 1956//2270 1948//2263 1947//2262 -f 1948//2263 1956//2270 1957//2271 -f 1957//2271 1949//2264 1948//2263 -f 1949//2264 1957//2271 1958//2272 -f 1958//2272 1950//2265 1949//2264 -f 1950//2265 1958//2272 1959//2273 -f 1959//2273 1951//2266 1950//2265 -f 1951//2266 1959//2273 1960//2274 -f 1960//2274 1952//2267 1951//2266 -s 28 -f 1952//2410 1960//2412 1961//2413 -f 1961//2413 1953//2411 1952//2410 -s 27 -f 1705//2140 1713//2141 1962//2275 -f 1962//2275 1954//2268 1705//2140 -f 1954//2268 1962//2275 1963//2276 -f 1963//2276 1955//2269 1954//2268 -f 1955//2269 1963//2276 1964//2277 -f 1964//2277 1956//2270 1955//2269 -f 1956//2270 1964//2277 1965//2278 -f 1965//2278 1957//2271 1956//2270 -f 1957//2271 1965//2278 1966//2279 -f 1966//2279 1958//2272 1957//2271 -f 1958//2272 1966//2279 1967//2280 -f 1967//2280 1959//2273 1958//2272 -f 1959//2273 1967//2280 1968//2281 -f 1968//2281 1960//2274 1959//2273 -s 28 -f 1960//2412 1968//2414 1969//2415 -f 1969//2415 1961//2413 1960//2412 -s 27 -f 1713//2141 1721//2142 1970//2282 -f 1970//2282 1962//2275 1713//2141 -f 1962//2275 1970//2282 1971//2283 -f 1971//2283 1963//2276 1962//2275 -f 1963//2276 1971//2283 1972//2284 -f 1972//2284 1964//2277 1963//2276 -f 1964//2277 1972//2284 1973//2285 -f 1973//2285 1965//2278 1964//2277 -f 1965//2278 1973//2285 1974//2286 -f 1974//2286 1966//2279 1965//2278 -f 1966//2279 1974//2286 1975//2287 -f 1975//2287 1967//2280 1966//2279 -f 1967//2280 1975//2287 1976//2288 -f 1976//2288 1968//2281 1967//2280 -s 28 -f 1968//2414 1976//2416 1977//2417 -f 1977//2417 1969//2415 1968//2414 -s 27 -f 1721//2142 1729//2143 1978//2289 -f 1978//2289 1970//2282 1721//2142 -f 1970//2282 1978//2289 1979//2290 -f 1979//2290 1971//2283 1970//2282 -f 1971//2283 1979//2290 1980//2291 -f 1980//2291 1972//2284 1971//2283 -f 1972//2284 1980//2291 1981//2292 -f 1981//2292 1973//2285 1972//2284 -f 1973//2285 1981//2292 1982//2293 -f 1982//2293 1974//2286 1973//2285 -f 1974//2286 1982//2293 1983//2294 -f 1983//2294 1975//2287 1974//2286 -f 1975//2287 1983//2294 1984//2295 -f 1984//2295 1976//2288 1975//2287 -s 28 -f 1976//2416 1984//2418 1985//2419 -f 1985//2419 1977//2417 1976//2416 -s 27 -f 1729//2143 1737//2144 1986//2296 -f 1986//2296 1978//2289 1729//2143 -f 1978//2289 1986//2296 1987//2297 -f 1987//2297 1979//2290 1978//2289 -f 1979//2290 1987//2297 1988//2298 -f 1988//2298 1980//2291 1979//2290 -f 1980//2291 1988//2298 1989//2299 -f 1989//2299 1981//2292 1980//2291 -f 1981//2292 1989//2299 1990//2300 -f 1990//2300 1982//2293 1981//2292 -f 1982//2293 1990//2300 1991//2301 -f 1991//2301 1983//2294 1982//2293 -f 1983//2294 1991//2301 1992//2302 -f 1992//2302 1984//2295 1983//2294 -s 28 -f 1984//2418 1992//2420 1993//2421 -f 1993//2421 1985//2419 1984//2418 -s 27 -f 1737//2144 1745//2145 1994//2303 -f 1994//2303 1986//2296 1737//2144 -f 1986//2296 1994//2303 1995//2304 -f 1995//2304 1987//2297 1986//2296 -f 1987//2297 1995//2304 1996//2305 -f 1996//2305 1988//2298 1987//2297 -f 1988//2298 1996//2305 1997//2306 -f 1997//2306 1989//2299 1988//2298 -f 1989//2299 1997//2306 1998//2307 -f 1998//2307 1990//2300 1989//2299 -f 1990//2300 1998//2307 1999//2308 -f 1999//2308 1991//2301 1990//2300 -f 1991//2301 1999//2308 2000//2309 -f 2000//2309 1992//2302 1991//2301 -s 28 -f 1992//2420 2000//2422 2001//2423 -f 2001//2423 1993//2421 1992//2420 -s 27 -f 1745//2145 1753//2146 2002//2310 -f 2002//2310 1994//2303 1745//2145 -f 1994//2303 2002//2310 2003//2311 -f 2003//2311 1995//2304 1994//2303 -f 1995//2304 2003//2311 2004//2312 -f 2004//2312 1996//2305 1995//2304 -f 1996//2305 2004//2312 2005//2313 -f 2005//2313 1997//2306 1996//2305 -f 1997//2306 2005//2313 2006//2314 -f 2006//2314 1998//2307 1997//2306 -f 1998//2307 2006//2314 2007//2315 -f 2007//2315 1999//2308 1998//2307 -f 1999//2308 2007//2315 2008//2316 -f 2008//2316 2000//2309 1999//2308 -s 28 -f 2000//2422 2008//2424 2009//2425 -f 2009//2425 2001//2423 2000//2422 -s 27 -f 1753//2146 1761//2147 2010//2317 -f 2010//2317 2002//2310 1753//2146 -f 2002//2310 2010//2317 2011//2318 -f 2011//2318 2003//2311 2002//2310 -f 2003//2311 2011//2318 2012//2319 -f 2012//2319 2004//2312 2003//2311 -f 2004//2312 2012//2319 2013//2320 -f 2013//2320 2005//2313 2004//2312 -f 2005//2313 2013//2320 2014//2321 -f 2014//2321 2006//2314 2005//2313 -f 2006//2314 2014//2321 2015//2322 -f 2015//2322 2007//2315 2006//2314 -f 2007//2315 2015//2322 2016//2323 -f 2016//2323 2008//2316 2007//2315 -s 28 -f 2008//2424 2016//2426 2017//2427 -f 2017//2427 2009//2425 2008//2424 -s 27 -f 1761//2147 1769//2148 2018//2324 -f 2018//2324 2010//2317 1761//2147 -f 2010//2317 2018//2324 2019//2325 -f 2019//2325 2011//2318 2010//2317 -f 2011//2318 2019//2325 2020//2326 -f 2020//2326 2012//2319 2011//2318 -f 2012//2319 2020//2326 2021//2327 -f 2021//2327 2013//2320 2012//2319 -f 2013//2320 2021//2327 2022//2328 -f 2022//2328 2014//2321 2013//2320 -f 2014//2321 2022//2328 2023//2329 -f 2023//2329 2015//2322 2014//2321 -f 2015//2322 2023//2329 2024//2330 -f 2024//2330 2016//2323 2015//2322 -s 28 -f 2016//2426 2024//2428 2025//2429 -f 2025//2429 2017//2427 2016//2426 -s 27 -f 1769//2148 1777//2149 2026//2331 -f 2026//2331 2018//2324 1769//2148 -f 2018//2324 2026//2331 2027//2332 -f 2027//2332 2019//2325 2018//2324 -f 2019//2325 2027//2332 2028//2333 -f 2028//2333 2020//2326 2019//2325 -f 2020//2326 2028//2333 2029//2334 -f 2029//2334 2021//2327 2020//2326 -f 2021//2327 2029//2334 2030//2335 -f 2030//2335 2022//2328 2021//2327 -f 2022//2328 2030//2335 2031//2336 -f 2031//2336 2023//2329 2022//2328 -f 2023//2329 2031//2336 2032//2337 -f 2032//2337 2024//2330 2023//2329 -s 28 -f 2024//2428 2032//2430 2033//2431 -f 2033//2431 2025//2429 2024//2428 -s 27 -f 1777//2149 1785//2150 2034//2338 -f 2034//2338 2026//2331 1777//2149 -f 2026//2331 2034//2338 2035//2339 -f 2035//2339 2027//2332 2026//2331 -f 2027//2332 2035//2339 2036//2340 -f 2036//2340 2028//2333 2027//2332 -f 2028//2333 2036//2340 2037//2341 -f 2037//2341 2029//2334 2028//2333 -f 2029//2334 2037//2341 2038//2342 -f 2038//2342 2030//2335 2029//2334 -f 2030//2335 2038//2342 2039//2343 -f 2039//2343 2031//2336 2030//2335 -f 2031//2336 2039//2343 2040//2344 -f 2040//2344 2032//2337 2031//2336 -s 28 -f 2032//2430 2040//2432 2041//2433 -f 2041//2433 2033//2431 2032//2430 -s 27 -f 1785//2150 1793//2151 2042//2345 -f 2042//2345 2034//2338 1785//2150 -f 2034//2338 2042//2345 2043//2346 -f 2043//2346 2035//2339 2034//2338 -f 2035//2339 2043//2346 2044//2347 -f 2044//2347 2036//2340 2035//2339 -f 2036//2340 2044//2347 2045//2348 -f 2045//2348 2037//2341 2036//2340 -f 2037//2341 2045//2348 2046//2349 -f 2046//2349 2038//2342 2037//2341 -f 2038//2342 2046//2349 2047//2350 -f 2047//2350 2039//2343 2038//2342 -f 2039//2343 2047//2350 2048//2351 -f 2048//2351 2040//2344 2039//2343 -s 28 -f 2040//2432 2048//2434 2049//2435 -f 2049//2435 2041//2433 2040//2432 -s 27 -f 1793//2151 1801//2152 2050//2352 -f 2050//2352 2042//2345 1793//2151 -f 2042//2345 2050//2352 2051//2353 -f 2051//2353 2043//2346 2042//2345 -f 2043//2346 2051//2353 2052//2354 -f 2052//2354 2044//2347 2043//2346 -f 2044//2347 2052//2354 2053//2355 -f 2053//2355 2045//2348 2044//2347 -f 2045//2348 2053//2355 2054//2356 -f 2054//2356 2046//2349 2045//2348 -f 2046//2349 2054//2356 2055//2357 -f 2055//2357 2047//2350 2046//2349 -f 2047//2350 2055//2357 2056//2358 -f 2056//2358 2048//2351 2047//2350 -s 28 -f 2048//2434 2056//2436 2057//2437 -f 2057//2437 2049//2435 2048//2434 -s 27 -f 1801//2152 1809//2153 2058//2359 -f 2058//2359 2050//2352 1801//2152 -f 2050//2352 2058//2359 2059//2360 -f 2059//2360 2051//2353 2050//2352 -f 2051//2353 2059//2360 2060//2361 -f 2060//2361 2052//2354 2051//2353 -f 2052//2354 2060//2361 2061//2362 -f 2061//2362 2053//2355 2052//2354 -f 2053//2355 2061//2362 2062//2363 -f 2062//2363 2054//2356 2053//2355 -f 2054//2356 2062//2363 2063//2364 -f 2063//2364 2055//2357 2054//2356 -f 2055//2357 2063//2364 2064//2365 -f 2064//2365 2056//2358 2055//2357 -s 28 -f 2056//2436 2064//2438 2065//2439 -f 2065//2439 2057//2437 2056//2436 -s 27 -f 1809//2153 1817//2154 2066//2366 -f 2066//2366 2058//2359 1809//2153 -f 2058//2359 2066//2366 2067//2367 -f 2067//2367 2059//2360 2058//2359 -f 2059//2360 2067//2367 2068//2368 -f 2068//2368 2060//2361 2059//2360 -f 2060//2361 2068//2368 2069//2369 -f 2069//2369 2061//2362 2060//2361 -f 2061//2362 2069//2369 2070//2370 -f 2070//2370 2062//2363 2061//2362 -f 2062//2363 2070//2370 2071//2371 -f 2071//2371 2063//2364 2062//2363 -f 2063//2364 2071//2371 2072//2372 -f 2072//2372 2064//2365 2063//2364 -s 28 -f 2064//2438 2072//2440 2073//2441 -f 2073//2441 2065//2439 2064//2438 -s 27 -f 1817//2154 1825//2155 2074//2373 -f 2074//2373 2066//2366 1817//2154 -f 2066//2366 2074//2373 2075//2374 -f 2075//2374 2067//2367 2066//2366 -f 2067//2367 2075//2374 2076//2375 -f 2076//2375 2068//2368 2067//2367 -f 2068//2368 2076//2375 2077//2376 -f 2077//2376 2069//2369 2068//2368 -f 2069//2369 2077//2376 2078//2377 -f 2078//2377 2070//2370 2069//2369 -f 2070//2370 2078//2377 2079//2378 -f 2079//2378 2071//2371 2070//2370 -f 2071//2371 2079//2378 2080//2379 -f 2080//2379 2072//2372 2071//2371 -s 28 -f 2072//2440 2080//2442 2081//2443 -f 2081//2443 2073//2441 2072//2440 -s 27 -f 1825//2155 1585//2125 1827//2157 -f 1827//2157 2074//2373 1825//2155 -f 2074//2373 1827//2157 1829//2159 -f 1829//2159 2075//2374 2074//2373 -f 2075//2374 1829//2159 1831//2161 -f 1831//2161 2076//2375 2075//2374 -f 2076//2375 1831//2161 1833//2163 -f 1833//2163 2077//2376 2076//2375 -f 2077//2376 1833//2163 1835//2165 -f 1835//2165 2078//2377 2077//2376 -f 2078//2377 1835//2165 1837//2167 -f 1837//2167 2079//2378 2078//2377 -f 2079//2378 1837//2167 1839//2169 -f 1839//2169 2080//2379 2079//2378 -s 28 -f 2080//2442 1839//2381 1841//2383 -f 1841//2383 2081//2443 2080//2442 -# 4096 elements diff --git a/src/demos/data/models/triceratops.txt b/src/demos/data/models/triceratops.txt deleted file mode 100644 index f49e821..0000000 --- a/src/demos/data/models/triceratops.txt +++ /dev/null @@ -1,31872 +0,0 @@ -// Vertices -7966 - 4.406272f, -0.315266f, 0.124801f , - 4.482103f, -0.198120f, 0.309294f , - 4.086014f, -0.088778f, 0.423154f , - 4.046357f, -0.236326f, 0.146846f , - 5.120363f, -0.486831f, 0.095683f , - 5.184177f, -0.452696f, 0.253328f , - 4.846126f, -0.316477f, 0.262566f , - 4.769850f, -0.415431f, 0.100778f , - 5.617051f, -0.698283f, 0.074927f , - 5.656448f, -0.671785f, 0.191186f , - 5.463286f, -0.565674f, 0.233119f , - 5.399789f, -0.587780f, 0.086940f , - 5.944407f, -0.895415f, 0.015712f , - 5.815899f, -0.780673f, 0.141840f , - 5.774727f, -0.794513f, 0.015712f , - 5.710089f, -0.453847f, 0.377915f , - 5.562883f, -0.520183f, 0.330707f , - 5.743761f, -0.634347f, 0.278951f , - 5.872340f, -0.582928f, 0.341457f , - 5.283686f, -0.139161f, 0.554115f , - 5.141130f, -0.210823f, 0.557193f , - 5.359108f, -0.375199f, 0.422003f , - 5.511547f, -0.306691f, 0.452290f , - 5.080963f, 0.153372f, 0.774825f , - 4.903198f, 0.204823f, 0.868037f , - 4.843973f, 0.074504f, 0.798890f , - 4.973191f, -0.048842f, 0.688301f , - 5.121394f, 0.023036f, 0.676365f , - 4.731442f, 0.020714f, 0.730659f , - 4.587136f, 0.038266f, 0.644123f , - 4.716858f, -0.109542f, 0.500349f , - 4.841794f, -0.102281f, 0.620061f , - 4.704987f, 0.277382f, 0.909302f , - 4.486618f, 0.315899f, 0.872056f , - 4.517654f, 0.173316f, 0.760663f , - 4.679939f, 0.142457f, 0.828996f , - 4.335400f, 0.165727f, 0.705573f , - 4.285273f, 0.293151f, 0.805508f , - 4.114922f, 0.163686f, 0.698061f , - 4.189191f, 0.029996f, 0.576195f , - 4.505620f, -0.077075f, 0.465452f , - 4.405499f, 0.054661f, 0.602299f , - 5.281720f, 0.315030f, 0.834328f , - 5.101425f, 0.485529f, 1.020794f , - 4.979540f, 0.346287f, 0.947110f , - 5.145713f, 0.263800f, 0.834511f , - 5.494526f, 0.582089f, 0.830219f , - 5.302628f, 0.733126f, 0.969494f , - 5.214069f, 0.609333f, 1.024948f , - 5.411745f, 0.417189f, 0.831125f , - 5.937433f, -0.065149f, 0.561666f , - 6.159642f, -0.024189f, 0.565046f , - 6.213893f, 0.113930f, 0.568785f , - 6.033021f, 0.458698f, 0.627237f , - 5.766847f, 0.428872f, 0.699013f , - 5.695933f, 0.209690f, 0.675359f , - 5.441650f, -0.043404f, 0.551885f , - 5.711245f, -0.198253f, 0.496402f , - 5.559211f, 0.063634f, 0.623744f , - 6.537378f, -0.195711f, 0.475351f , - 5.975130f, -0.352036f, 0.449784f , - 6.106493f, -0.502081f, 0.408781f , - 6.383080f, -0.778023f, 0.382548f , - 6.514288f, -0.769155f, 0.379441f , - 6.483538f, -0.573587f, 0.432330f , - 6.307806f, -0.613098f, 0.429081f , - 6.392118f, -1.106835f, 0.012926f , - 6.536470f, -0.937659f, 0.254402f , - 6.308329f, -0.939829f, 0.223618f , - 6.659239f, -0.972657f, 0.082108f , - 6.789495f, -0.543390f, 0.120271f , - 6.708954f, -0.462302f, 0.305194f , - 6.634132f, -0.556605f, 0.355112f , - 6.643347f, -0.758299f, 0.293837f , - 6.753801f, -0.773758f, 0.118372f , - 6.219697f, -0.818373f, 0.292992f , - 6.105978f, -0.669568f, 0.339032f , - 5.908451f, -0.757072f, 0.225908f , - 6.051686f, -0.893207f, 0.134765f , - 5.285191f, 0.090070f, 0.631294f , - 5.223113f, 0.174461f, 0.723494f , - 5.368849f, 0.188053f, 0.700056f , - 6.261643f, -0.979871f, 0.015200f , - 6.162514f, -0.962607f, 0.081439f , - 5.003373f, -0.233986f, 0.517047f , - 4.905457f, -0.248264f, 0.401515f , - 5.177607f, -0.370646f, 0.391117f , - 6.863233f, -0.347666f, 0.108819f , - 6.863445f, -0.260135f, 0.248099f , - 6.768305f, -0.334723f, 0.280958f , - 7.044443f, 0.127508f, 0.107191f , - 6.938261f, -0.109904f, 0.234812f , - 6.968269f, -0.158719f, 0.078973f , - 6.822412f, 0.084142f, 0.280683f , - 6.807573f, 0.208482f, 0.090641f , - 6.633389f, 0.269584f, 0.107440f , - 6.635517f, 0.190924f, 0.293060f , - 6.217716f, 0.845227f, 0.151643f , - 6.223317f, 0.674987f, 0.424751f , - 6.455813f, 0.416271f, 0.327605f , - 6.443117f, 0.486276f, 0.130736f , - 6.395839f, 0.146168f, 0.518871f , - 6.494336f, 0.092970f, 0.476950f , - 6.480483f, 0.234738f, 0.449500f , - 6.265296f, 0.453368f, 0.544715f , - 5.743652f, 0.844935f, 0.757542f , - 5.729638f, 0.677878f, 0.734400f , - 5.976808f, 0.838755f, 0.677047f , - 5.450265f, 1.048061f, 0.912887f , - 5.378715f, 0.881094f, 0.937694f , - 5.546621f, 0.746930f, 0.820663f , - 5.585794f, 0.884475f, 0.824198f , - 5.166313f, 1.125889f, 1.026187f , - 5.249742f, 0.994522f, 1.007122f , - 5.316698f, 1.149555f, 0.978884f , - 5.325364f, 1.299352f, 0.975428f , - 5.361722f, 1.420649f, 0.962266f , - 5.119498f, 1.504179f, 1.047835f , - 5.137568f, 1.293420f, 1.038561f , - 5.660381f, 1.555678f, 0.873104f , - 5.540176f, 1.673662f, 0.894829f , - 5.255864f, 1.627524f, 0.994196f , - 5.472538f, 1.509166f, 0.927856f , - 5.976451f, 1.276897f, 0.713420f , - 6.036539f, 1.275505f, 0.555902f , - 5.971128f, 1.394974f, 0.539372f , - 5.916991f, 1.421157f, 0.719782f , - 6.066162f, 1.115091f, 0.581252f , - 5.974405f, 1.120075f, 0.738361f , - 6.093942f, 1.071658f, 0.238023f , - 6.087954f, 1.113147f, 0.426362f , - 6.091997f, 0.900693f, 0.482529f , - 5.914155f, 1.438768f, 0.143558f , - 5.961876f, 1.407830f, 0.344509f , - 6.036235f, 1.279656f, 0.360005f , - 6.021585f, 1.263305f, 0.134102f , - 5.812866f, 1.225586f, 0.832767f , - 5.845799f, 1.390394f, 0.815248f , - 5.846627f, 0.983627f, 0.762456f , - 5.549150f, 1.153021f, 0.896092f , - 5.648196f, 0.981139f, 0.822425f , - 5.756275f, 1.070162f, 0.814826f , - 5.554941f, 1.389716f, 0.912399f , - 5.493356f, 1.278494f, 0.932127f , - 5.671640f, 1.310509f, 0.890526f , - 5.741135f, 1.431624f, 0.860926f , - 4.824494f, 0.862063f, 1.140630f , - 5.029501f, 0.754586f, 1.120153f , - 5.139723f, 0.876416f, 1.056660f , - 5.017707f, 1.015263f, 1.086376f , - 4.112327f, 0.923733f, 1.074921f , - 4.309067f, 0.637923f, 0.992350f , - 4.416126f, 0.815599f, 1.107589f , - 4.773448f, 0.434643f, 1.007945f , - 4.896345f, 0.600255f, 1.101922f , - 4.666303f, 0.697306f, 1.107092f , - 4.541321f, 0.494781f, 0.987388f , - 3.958716f, 0.778745f, 0.978355f , - 3.976004f, 0.366167f, 0.795580f , - 4.170842f, 0.493820f, 0.887311f , - 5.771082f, 2.106874f, 0.623196f , - 5.567624f, 2.093883f, 0.536367f , - 5.520551f, 2.088668f, 0.756576f , - 5.720298f, 2.108784f, 0.776932f , - 4.879097f, 2.279873f, 0.631671f , - 4.950296f, 2.186980f, 0.885525f , - 5.275214f, 2.118495f, 0.794772f , - 5.272814f, 2.149363f, 0.535939f , - 5.649650f, 1.864969f, 0.224114f , - 5.582611f, 1.819109f, 0.084824f , - 5.368263f, 2.038648f, 0.090717f , - 5.490383f, 2.020789f, 0.246416f , - 6.804945f, -0.192131f, 0.336391f , - 5.327162f, 1.999222f, 0.927664f , - 5.016499f, 2.033079f, 1.022324f , - 5.098627f, 1.809400f, 1.037930f , - 5.419995f, 1.826963f, 0.921369f , - 4.661634f, 1.662203f, 1.425984f , - 4.713443f, 1.485503f, 1.445337f , - 4.783179f, 1.309608f, 1.384303f , - 4.928803f, 1.317576f, 1.190022f , - 4.875454f, 1.575753f, 1.211858f , - 4.756676f, 1.119449f, 1.364167f , - 4.628488f, 1.008865f, 1.362604f , - 4.689338f, 0.952877f, 1.222521f , - 4.882730f, 1.102203f, 1.182983f , - 4.626109f, 1.123972f, 1.710536f , - 4.592118f, 1.048679f, 1.533807f , - 4.694057f, 1.131654f, 1.542164f , - 4.588575f, 1.423359f, 1.775352f , - 4.652446f, 1.260718f, 1.741919f , - 4.711138f, 1.266107f, 1.560252f , - 4.664555f, 1.423780f, 1.585876f , - 4.592074f, 1.576056f, 1.608369f , - 4.505432f, 1.746112f, 1.625553f , - 4.388901f, 1.771918f, 1.813364f , - 4.507821f, 1.580423f, 1.798664f , - 4.294323f, 2.148462f, 1.645084f , - 4.144448f, 2.161292f, 1.844584f , - 4.272610f, 1.959940f, 1.827244f , - 4.397840f, 1.946354f, 1.638205f , - 4.163217f, 2.525980f, 1.591986f , - 3.991798f, 2.679569f, 1.787002f , - 4.050506f, 2.399055f, 1.831399f , - 4.216998f, 2.341098f, 1.633234f , - 4.056324f, 2.935472f, 1.403550f , - 3.902050f, 3.094224f, 1.583215f , - 3.941230f, 2.903699f, 1.708833f , - 4.108269f, 2.738370f, 1.509501f , - 4.006637f, 3.167986f, 1.119941f , - 3.846214f, 3.400740f, 1.295183f , - 3.872439f, 3.242389f, 1.455761f , - 4.025661f, 3.074317f, 1.280081f , - 3.910021f, 3.356153f, 0.705592f , - 3.796395f, 3.645067f, 0.799805f , - 3.819988f, 3.525169f, 1.072927f , - 3.969275f, 3.273784f, 0.913462f , - 3.884315f, 3.400215f, 0.173158f , - 3.752149f, 3.736432f, 0.178118f , - 3.771091f, 3.709099f, 0.507739f , - 3.885084f, 3.401860f, 0.461390f , - 4.444488f, 2.626828f, 0.492732f , - 4.399031f, 2.679369f, 0.193826f , - 4.090939f, 3.050200f, 0.200975f , - 4.048024f, 3.117336f, 0.505075f , - 4.160501f, 2.978847f, 0.698752f , - 4.224950f, 2.863348f, 0.979115f , - 4.205222f, 2.820887f, 1.189729f , - 4.310448f, 2.576906f, 1.272221f , - 4.600390f, 2.377701f, 1.053836f , - 4.515991f, 2.516813f, 0.794503f , - 4.779963f, 1.869987f, 1.219790f , - 4.690773f, 2.138385f, 1.195782f , - 4.394941f, 2.328799f, 1.395975f , - 4.411215f, 2.171618f, 1.479011f , - 4.551239f, 1.937048f, 1.437174f , - 5.207691f, 2.179878f, 0.296413f , - 5.093387f, 2.214576f, 0.112596f , - 4.760847f, 2.383533f, 0.134010f , - 4.813098f, 2.340260f, 0.378311f , - 5.838113f, 1.750679f, 0.303284f , - 5.822825f, 1.584996f, 0.152318f , - 5.721474f, 1.670305f, 0.089372f , - 5.859259f, 1.779656f, 0.835821f , - 5.728247f, 1.718596f, 0.843186f , - 5.820722f, 1.613362f, 0.816281f , - 5.928551f, 1.703581f, 0.781175f , - 5.727616f, 2.038748f, 0.858942f , - 5.552817f, 2.003974f, 0.876580f , - 5.638240f, 1.849910f, 0.868171f , - 5.793098f, 1.901521f, 0.861534f , - 5.788238f, 1.917221f, 0.358621f , - 5.654045f, 2.024757f, 0.395245f , - 5.819865f, 2.043152f, 0.491835f , - 5.992162f, 1.655337f, 0.677897f , - 5.902946f, 1.544198f, 0.708295f , - 5.951763f, 1.512047f, 0.532864f , - 6.016121f, 1.641046f, 0.528552f , - 6.155657f, 1.950299f, 0.812072f , - 6.208957f, 1.891506f, 0.761721f , - 6.643003f, 2.207930f, 0.750466f , - 6.684434f, 2.385189f, 0.741677f , - 6.077760f, 2.194658f, 0.806354f , - 6.163900f, 2.073922f, 0.828879f , - 6.142308f, 2.216088f, 0.661042f , - 6.689061f, 2.280603f, 0.592392f , - 6.237720f, 1.925987f, 0.487930f , - 6.080553f, 1.990665f, 0.450309f , - 6.145469f, 2.126721f, 0.548769f , - 6.969660f, 2.438475f, 0.659316f , - 5.983244f, 1.695436f, 0.419271f , - 5.917274f, 1.561846f, 0.378085f , - 4.154058f, 1.045691f, 1.197654f , - 4.446344f, 0.932072f, 1.208099f , - 4.418114f, 0.994108f, 1.328324f , - 4.091937f, 1.462722f, 1.756068f , - 3.952436f, 1.715870f, 1.818954f , - 3.741389f, 1.575690f, 1.576835f , - 3.893260f, 1.339752f, 1.411205f , - 3.795439f, 2.076226f, 1.844239f , - 3.567655f, 1.990447f, 1.612525f , - 3.629480f, 1.792455f, 1.640802f , - 3.859441f, 1.907019f, 1.856707f , - 3.566883f, 2.956072f, 1.601169f , - 3.403840f, 2.585172f, 1.277008f , - 3.424209f, 2.460952f, 1.387357f , - 3.570179f, 2.752137f, 1.700195f , - 3.522325f, 3.292019f, 1.272911f , - 3.387057f, 2.798404f, 1.012760f , - 3.397070f, 2.716105f, 1.146983f , - 3.553540f, 3.105394f, 1.476792f , - 3.516221f, 3.493856f, 0.788436f , - 3.373879f, 2.942716f, 0.633995f , - 3.378708f, 2.881461f, 0.833604f , - 3.513663f, 3.406661f, 1.057526f , - 3.467330f, 3.591557f, 0.172015f , - 3.319755f, 3.046926f, 0.154091f , - 3.351933f, 3.001242f, 0.392313f , - 3.497516f, 3.556181f, 0.504758f , - 4.546196f, 1.247835f, 1.898785f , - 4.285720f, 1.670305f, 2.036261f , - 4.036854f, 2.051225f, 2.020081f , - 3.848044f, 2.612471f, 2.034064f , - 3.718296f, 2.289909f, 1.809555f , - 3.614860f, 2.546548f, 1.774634f , - 3.466906f, 2.301024f, 1.478163f , - 3.509344f, 2.167244f, 1.563616f , - 3.727489f, 3.197693f, 1.806091f , - 3.631638f, 4.006712f, 0.351620f , - 3.636794f, 4.001050f, 0.412393f , - 3.698681f, 3.825644f, 1.084819f , - 3.746655f, 3.516679f, 1.525198f , - 4.114754f, 1.160354f, 1.377681f , - 4.406322f, 1.063004f, 1.493100f , - 4.457831f, 1.132828f, 1.704684f , - 4.270722f, 1.272298f, 1.717373f , - 6.303564f, 1.892076f, 0.675155f , - 6.319493f, 1.886632f, 0.552131f , - 6.795448f, 2.235533f, 0.647216f , - 2.193935f, 2.731007f, 0.661893f , - 2.272175f, 2.886290f, 0.231250f , - 1.655580f, 3.103526f, 0.239591f , - 1.597221f, 2.885139f, 0.692978f , - 0.859554f, 3.102729f, 0.674796f , - 0.901653f, 3.327618f, 0.229935f , - 0.018482f, 3.546754f, 0.214664f , - 0.010082f, 3.360112f, 0.599348f , - -0.777411f, 3.537465f, 0.547171f , - -0.785132f, 3.717833f, 0.187596f , - -1.489883f, 3.815386f, 0.174604f , - -1.464617f, 3.631719f, 0.491690f , - -2.040955f, 3.657389f, 0.452480f , - -2.077211f, 3.829663f, 0.158423f , - -2.578857f, 3.752836f, 0.150507f , - -2.524337f, 3.597862f, 0.423946f , - -3.043038f, 3.426356f, 0.403995f , - -3.127732f, 3.573815f, 0.134343f , - -3.774132f, 3.268468f, 0.121301f , - -3.610878f, 3.170903f, 0.352673f , - -4.290358f, 2.796327f, 0.275732f , - -4.438234f, 2.894237f, 0.093193f , - -5.124368f, 2.498307f, 0.071509f , - -5.018747f, 2.301678f, 0.180777f , - -5.739048f, 1.941001f, 0.132709f , - -5.788766f, 2.162018f, 0.011986f , - -6.535425f, 1.883381f, 0.011671f , - -6.466287f, 1.710027f, 0.122610f , - -7.189725f, 1.553493f, 0.132609f , - -7.252352f, 1.713830f, 0.010745f , - -7.966625f, 1.588281f, 0.010564f , - -7.920510f, 1.474369f, 0.167909f , - -8.652985f, 1.402303f, 0.167742f , - -8.696911f, 1.503645f, 0.010405f , - -9.408607f, 1.430438f, 0.010704f , - -9.358753f, 1.335728f, 0.136086f , - -9.827502f, 1.178786f, 0.113072f , - -9.909744f, 1.290734f, 0.012750f , - -10.108200f, 1.032276f, 0.014116f , - 2.071338f, 1.995671f, 1.434784f , - 2.127500f, 2.425170f, 1.071837f , - 1.532557f, 2.557409f, 1.105713f , - 1.452927f, 2.122814f, 1.469543f , - 0.800640f, 2.314903f, 1.460610f , - 0.841428f, 2.760278f, 1.088830f , - 0.037733f, 3.016565f, 1.011131f , - 0.149552f, 2.537484f, 1.430067f , - -0.536042f, 2.708737f, 1.392118f , - -0.691274f, 3.196085f, 0.955093f , - -1.359823f, 3.301829f, 0.889235f , - -1.198541f, 2.824829f, 1.359668f , - -1.790082f, 2.999857f, 1.192273f , - -1.896274f, 3.387868f, 0.795190f , - -2.313669f, 3.341573f, 0.768525f , - -2.172694f, 2.714350f, 1.343136f , - -2.733263f, 3.146320f, 0.818026f , - -3.286697f, 2.904807f, 0.788593f , - -2.887189f, 2.458296f, 1.406969f , - -3.492712f, 2.216835f, 1.352527f , - -3.802065f, 2.584768f, 0.810312f , - -4.100559f, 2.066954f, 1.035732f , - -4.532761f, 2.051008f, 0.711406f , - -4.266538f, 2.540744f, 0.490590f , - -4.859942f, 2.122931f, 0.379755f , - -4.827311f, 1.737034f, 0.717431f , - -5.163006f, 1.809785f, 0.409116f , - -5.176254f, 1.595863f, 0.543144f , - -5.678032f, 1.468737f, 0.409982f , - -5.693686f, 1.696034f, 0.257916f , - -6.401522f, 1.494727f, 0.229861f , - -6.365739f, 1.288597f, 0.339866f , - -7.100245f, 1.178944f, 0.314418f , - -7.134171f, 1.366632f, 0.224479f , - -7.871750f, 1.309416f, 0.252671f , - -7.848615f, 1.153816f, 0.295037f , - -8.570552f, 1.124617f, 0.266999f , - -8.606584f, 1.263606f, 0.238281f , - -9.314091f, 1.211247f, 0.190319f , - -9.255020f, 1.062127f, 0.196077f , - -9.752537f, 0.892018f, 0.014937f , - 2.647003f, 1.434554f, 1.557574f , - 2.836853f, 1.135648f, 1.551477f , - 2.992845f, 1.237744f, 1.438538f , - 1.924015f, 1.502625f, 1.706208f , - 1.394147f, 1.626714f, 1.733497f , - 1.349540f, 1.109940f, 1.874183f , - 1.643073f, 0.992843f, 1.879343f , - 1.116172f, 1.122923f, 1.864881f , - 1.079248f, 1.557534f, 1.769510f , - 0.969184f, 1.167947f, 1.813285f , - 1.412969f, 0.494507f, 1.908711f , - 1.186239f, 0.598139f, 1.884870f , - 1.008792f, 0.072626f, 1.774443f , - 1.173121f, 0.043649f, 1.828131f , - 0.842612f, 0.126936f, 1.719384f , - 1.012617f, 0.654050f, 1.844754f , - 0.860969f, 0.702747f, 1.787468f , - 0.684828f, 0.206992f, 1.686348f , - 0.381720f, 0.270103f, 1.687660f , - 0.549121f, 0.788889f, 1.786223f , - 0.059776f, 0.910234f, 1.844520f , - -0.081196f, 0.297317f, 1.712468f , - -1.121290f, 1.589253f, 1.861024f , - -0.456332f, 1.589825f, 1.866813f , - -0.457528f, 2.162651f, 1.706110f , - -1.120559f, 2.239916f, 1.698091f , - 0.174205f, 2.028256f, 1.707453f , - 0.153882f, 1.486059f, 1.851938f , - 0.661820f, 1.325806f, 1.800545f , - 0.748903f, 1.823982f, 1.715678f , - -0.584583f, -0.059003f, 1.589706f , - -0.993500f, -0.010307f, 1.569504f , - -0.585515f, -0.280381f, 1.435631f , - -0.188201f, -0.305414f, 1.443488f , - 0.186296f, -0.105086f, 1.563645f , - -0.200412f, -0.096358f, 1.581685f , - -0.765432f, -0.622958f, 0.998657f , - -0.680819f, -0.448624f, 1.250317f , - -1.192204f, -0.199773f, 1.390265f , - -1.303238f, -0.551342f, 1.052810f , - -0.178562f, -0.550112f, 1.204674f , - -0.263839f, -0.692806f, 0.975381f , - 0.155926f, -0.718635f, 1.010485f , - 0.251614f, -0.565518f, 1.208816f , - 0.432464f, -0.160009f, 1.545178f , - 0.049694f, -0.389512f, 1.387416f , - 0.419302f, -0.417721f, 1.389720f , - 0.611742f, -0.245021f, 1.567874f , - 3.091152f, 0.461843f, 1.369845f , - 3.139527f, 0.915305f, 1.369240f , - 2.981041f, 0.821730f, 1.493507f , - 2.771235f, 0.559207f, 1.622689f , - 2.446238f, 0.199782f, 1.797972f , - 2.635163f, -0.154454f, 1.639590f , - 2.897734f, 0.137019f, 1.475322f , - 3.035426f, -0.380584f, 0.973736f , - 2.993750f, -0.177356f, 1.254897f , - 2.733326f, -0.438382f, 1.422202f , - 2.757657f, -0.623038f, 1.135537f , - 2.446884f, -0.857467f, 1.269954f , - 2.418753f, -0.683456f, 1.554983f , - 2.054094f, -0.897293f, 1.643282f , - 2.100770f, -1.076377f, 1.389763f , - 1.952377f, -0.679463f, 1.824796f , - 2.314309f, -0.443133f, 1.755505f , - 2.119772f, -0.131276f, 1.902643f , - 1.798277f, -0.453137f, 1.925912f , - 1.598366f, -0.235148f, 1.950145f , - 1.901181f, 0.127672f, 1.952343f , - 1.651223f, 0.348541f, 1.941074f , - 1.375112f, -0.072491f, 1.881451f , - 1.962884f, 0.792574f, 1.880074f , - 2.229379f, 0.532836f, 1.872440f , - 2.573233f, 0.918195f, 1.697105f , - 2.307276f, 1.256925f, 1.707261f , - 3.000473f, -0.705698f, 0.231226f , - 3.040552f, -0.548327f, 0.624129f , - 2.766977f, -0.782954f, 0.754738f , - 2.778454f, -0.899933f, 0.259521f , - 2.500281f, -1.099876f, 0.305956f , - 2.474600f, -0.997197f, 0.849486f , - 2.143423f, -1.203227f, 0.942798f , - 2.189487f, -1.275629f, 0.320256f , - 1.918850f, -1.411704f, 0.287465f , - 1.869786f, -1.375084f, 0.864776f , - 1.664604f, -1.503425f, 0.601880f , - 1.675908f, -1.470811f, 0.238905f , - 1.383789f, -1.491154f, 0.170168f , - 1.382380f, -1.523891f, 0.464974f , - 1.023795f, -1.441809f, 0.411888f , - 1.030793f, -1.463359f, 0.157639f , - 0.696421f, -1.342022f, 0.182953f , - 0.702276f, -1.289538f, 0.464902f , - 0.431656f, -1.042195f, 0.625126f , - 0.371776f, -1.202696f, 0.211407f , - 0.032073f, -1.088068f, 0.237128f , - 0.098569f, -0.898140f, 0.681067f , - -0.327037f, -0.868292f, 0.649895f , - -0.351948f, -1.031020f, 0.235418f , - -0.891374f, -1.004158f, 0.229291f , - -0.851029f, -0.838588f, 0.643857f , - -1.419401f, -0.807055f, 0.674566f , - -1.580339f, -0.987626f, 0.241152f , - -2.088879f, -0.954360f, 0.368578f , - -1.864124f, -0.763819f, 0.784052f , - -2.088316f, -0.730586f, 0.959568f , - -2.441770f, -0.895999f, 0.590617f , - -2.371862f, -1.026526f, 0.124903f , - -2.679826f, -0.964206f, 0.317273f , - -2.717693f, -0.976573f, 0.105303f , - -4.115814f, -0.417339f, 0.518554f , - -4.253201f, -0.257898f, 0.697250f , - -4.364851f, -0.153565f, 0.475262f , - -3.993821f, -0.506674f, 0.324879f , - -4.327162f, -0.223409f, 0.275148f , - -4.188850f, -0.375497f, 0.099382f , - -3.872800f, -0.582071f, 0.115774f , - -4.550785f, -0.200505f, 0.011134f , - -4.697851f, -0.036184f, 0.204091f , - -5.066940f, -0.000971f, 0.012767f , - -5.135229f, 0.242057f, 0.262239f , - -4.765151f, 0.200848f, 0.407042f , - -4.804031f, 0.516168f, 0.646606f , - -5.110466f, 0.532292f, 0.480530f , - -4.528252f, 0.369777f, 0.864537f , - -4.492818f, 0.089915f, 0.619421f , - -4.317962f, -0.070285f, 0.875886f , - -4.262148f, 0.099299f, 1.123099f , - -4.210104f, 0.295864f, 1.308265f , - -4.247049f, 0.569567f, 1.343853f , - -4.458861f, 0.552265f, 1.083183f , - -4.559468f, 0.888804f, 1.008249f , - -4.323808f, 0.905014f, 1.265874f , - -4.477377f, 1.322497f, 1.066743f , - -3.088598f, -0.885230f, 0.128384f , - -3.090128f, -0.876619f, 0.368098f , - -3.592278f, -0.722769f, 0.355382f , - -3.492049f, -0.769588f, 0.128254f , - -1.955466f, -0.457870f, 1.357488f , - -1.721169f, -0.476614f, 1.186558f , - -1.647083f, -0.089672f, 1.549828f , - -2.068760f, -0.113972f, 1.744873f , - -2.116477f, 0.197663f, 1.954300f , - -1.725683f, 0.213841f, 1.798014f , - -1.990584f, 0.430201f, 1.965094f , - -1.813739f, 0.668369f, 1.936750f , - -1.534415f, 0.459527f, 1.793123f , - -1.560045f, 0.930127f, 1.896181f , - -3.014130f, 0.807926f, 2.043412f , - -2.534165f, 0.460659f, 2.046100f , - -2.361193f, 0.792829f, 2.007207f , - -2.862814f, 1.413487f, 1.906586f , - -3.984627f, 1.000720f, 1.530696f , - -3.524525f, 1.011392f, 1.848321f , - -3.452769f, 1.661440f, 1.669775f , - -4.100611f, 1.546579f, 1.305428f , - -3.547052f, 0.504756f, 1.951310f , - -3.948340f, 0.532373f, 1.632497f , - -3.921076f, 0.184230f, 1.627914f , - -3.587431f, 0.097693f, 1.998204f , - -3.379503f, -0.399447f, 2.246252f , - -3.418626f, -0.657343f, 2.289124f , - -3.230639f, -0.740107f, 2.294632f , - -3.219168f, -0.361007f, 2.240881f , - -3.073241f, -0.683793f, 2.259813f , - -2.941366f, -0.523426f, 2.226459f , - -2.203210f, -0.548940f, 1.534095f , - -2.369595f, -0.238465f, 1.903080f , - -2.573066f, -0.501567f, 2.005122f , - -2.430403f, -0.695909f, 1.718073f , - -2.849102f, -0.263263f, 2.175520f , - -2.684579f, 0.064063f, 2.104249f , - -3.126410f, 0.346617f, 2.128152f , - -3.207926f, -0.047470f, 2.181260f , - -2.059665f, 1.148269f, 1.941722f , - -1.690151f, 1.464071f, 1.887859f , - -1.786278f, 2.127444f, 1.722765f , - -2.479776f, 1.855796f, 1.801131f , - -0.503039f, 0.976779f, 1.867225f , - -1.126662f, 0.980664f, 1.864160f , - -1.115684f, 0.415526f, 1.730367f , - -0.596324f, 0.351473f, 1.730222f , - -5.103825f, 0.904165f, 0.609685f , - -4.801017f, 0.921953f, 0.788768f , - -4.752501f, 1.417340f, 0.836389f , - -5.128316f, 1.306310f, 0.625255f , - -5.623837f, 0.820226f, 0.489730f , - -5.651505f, 1.186072f, 0.490695f , - -6.344623f, 1.028428f, 0.414266f , - -6.339428f, 0.737514f, 0.437789f , - -7.082887f, 0.715474f, 0.393550f , - -7.083652f, 0.967911f, 0.367146f , - -7.822424f, 0.973109f, 0.332228f , - -7.817561f, 0.790948f, 0.343274f , - -5.669204f, 0.256849f, 0.213293f , - -5.630895f, 0.516830f, 0.402859f , - -6.349174f, 0.474931f, 0.378356f , - -6.375740f, 0.288178f, 0.273297f , - -7.131155f, 0.344394f, 0.286755f , - -7.101557f, 0.508715f, 0.365993f , - -7.850936f, 0.612499f, 0.323213f , - -7.902206f, 0.452733f, 0.277182f , - -8.626949f, 0.597545f, 0.238974f , - -8.566601f, 0.731232f, 0.275738f , - -9.228981f, 0.800343f, 0.188010f , - -9.259829f, 0.643502f, 0.012678f , - -8.613688f, 0.394328f, 0.010847f , - -8.653753f, 0.483054f, 0.156154f , - -7.934957f, 0.320841f, 0.189807f , - -7.942729f, 0.229299f, 0.070244f , - -7.203098f, 0.090384f, 0.070247f , - -7.165138f, 0.202909f, 0.189233f , - -6.416686f, 0.126510f, 0.152967f , - -6.499986f, 0.022812f, 0.012128f , - -5.761276f, 0.061006f, 0.013361f , - -8.473654f, 0.993305f, 0.289588f , - -9.040927f, 0.947902f, 0.235144f , - -8.468863f, 0.853356f, 0.295132f , - -3.288408f, -1.295189f, 2.349119f , - -3.502925f, -1.203056f, 2.362626f , - -3.683628f, -2.016112f, 2.472527f , - -3.455534f, -2.061843f, 2.441477f , - -3.923017f, -1.968274f, 2.380297f , - -3.754008f, -1.140108f, 2.251239f , - -4.039607f, -1.106230f, 2.009422f , - -4.142122f, -1.927016f, 2.200795f , - -4.273333f, -1.928017f, 1.981823f , - -4.192321f, -1.110050f, 1.769499f , - -4.213390f, -1.150782f, 1.537507f , - -4.287672f, -1.968170f, 1.762430f , - -4.211967f, -2.035357f, 1.568287f , - -4.142153f, -1.223074f, 1.332766f , - -3.986260f, -1.310203f, 1.163714f , - -4.043270f, -2.131129f, 1.418741f , - -3.803594f, -2.210210f, 1.371665f , - -3.718670f, -1.407655f, 1.114467f , - -3.345086f, -1.520078f, 1.203907f , - -3.539748f, -2.262316f, 1.443421f , - -3.128302f, -1.612806f, 1.451239f , - -3.080088f, -1.707980f, 1.815868f , - -3.233681f, -2.290199f, 1.950780f , - -3.336088f, -2.302994f, 1.648940f , - -2.953364f, -1.097543f, 2.141256f , - -2.924097f, -1.301267f, 1.992620f , - -2.779253f, -1.170187f, 1.969827f , - -2.769337f, -1.221695f, 1.746715f , - -2.915686f, -1.349225f, 1.767212f , - -2.925111f, -1.246959f, 1.453855f , - -2.809931f, -1.107342f, 1.382716f , - -2.600621f, -0.987207f, 1.595080f , - -2.676139f, -1.119195f, 1.702190f , - -2.688355f, -1.033339f, 1.945883f , - -2.588787f, -0.870742f, 1.848660f , - -2.733792f, -0.711671f, 2.099164f , - -2.879865f, -0.891269f, 2.149168f , - -3.901326f, -3.297181f, 2.604424f , - -3.973436f, -2.714283f, 2.511172f , - -4.161819f, -2.679196f, 2.338034f , - -4.030904f, -3.290701f, 2.406546f , - -4.100389f, -3.289512f, 2.223356f , - -4.255399f, -2.677477f, 2.135424f , - -4.262414f, -2.710688f, 1.926738f , - -4.094449f, -3.297892f, 2.038005f , - -4.039809f, -3.323336f, 1.896769f , - -4.193622f, -2.756548f, 1.756780f , - -4.038920f, -2.836074f, 1.620230f , - -3.944064f, -3.341063f, 1.805945f , - -3.782654f, -3.367285f, 1.755393f , - -3.842344f, -2.883743f, 1.568937f , - -3.608724f, -2.913016f, 1.608575f , - -3.568774f, -3.377413f, 1.726369f , - -3.413395f, -3.365766f, 1.717738f , - -3.440593f, -3.007460f, 1.671279f , - -3.318416f, -3.221641f, 1.745880f , - -3.303603f, -3.544290f, 1.800072f , - -3.206110f, -3.401528f, 1.806627f , - -3.101405f, -3.563582f, 1.924522f , - -3.160492f, -3.628861f, 2.127455f , - -3.112424f, -3.629761f, 2.264090f , - -3.119240f, -3.630091f, 2.358281f , - -3.146413f, -3.629937f, 2.457288f , - -3.215369f, -3.628082f, 2.542212f , - -3.432098f, -3.602263f, 2.670449f , - -3.651045f, -3.576948f, 2.568358f , - -3.788021f, -3.575063f, 2.339287f , - -3.784066f, -3.579412f, 2.128433f , - -3.674768f, -3.587205f, 2.022457f , - -3.423853f, -3.608855f, 1.988169f , - -3.174588f, -3.363929f, 2.788042f , - -3.306485f, -3.539434f, 2.833510f , - -2.897362f, -3.562220f, 2.393736f , - -3.982984f, -0.599527f, 0.691276f , - -3.956278f, -0.788592f, 0.919502f , - -4.116044f, -0.684652f, 1.097851f , - -4.155362f, -0.433871f, 0.884140f , - -4.127983f, -0.180839f, 1.365332f , - -4.206485f, -0.301554f, 1.103937f , - -4.172639f, -0.583979f, 1.317588f , - -4.137323f, -0.528001f, 1.562734f , - -3.213154f, -1.046286f, 0.934837f , - -3.642200f, -0.922257f, 0.855040f , - -3.635809f, -0.762303f, 0.607925f , - -3.129942f, -0.906822f, 0.642028f , - -3.924541f, -0.155918f, 1.688846f , - -3.956527f, -0.516416f, 1.847519f , - -3.658725f, -0.558635f, 2.127034f , - -3.624830f, -0.234518f, 2.054688f , - -3.224094f, -2.237249f, 2.198967f , - -3.081585f, -1.648583f, 2.077208f , - -3.138091f, -1.439135f, 2.252491f , - -3.297505f, -2.149003f, 2.342761f , - -3.238136f, -3.122248f, 1.840099f , - -3.359652f, -2.824556f, 1.774326f , - -3.256510f, -2.791855f, 2.036060f , - -3.132685f, -3.128356f, 1.998425f , - -2.797915f, -1.013343f, 1.120180f , - -2.677373f, -0.911135f, 0.835620f , - -2.303890f, -0.767895f, 1.178363f , - -2.506966f, -0.877396f, 1.399702f , - -3.064314f, -3.178899f, 2.368996f , - -3.080750f, -3.142317f, 2.198686f , - -3.218511f, -2.782982f, 2.258852f , - -3.276496f, -2.734152f, 2.413111f , - -3.116415f, -3.111364f, 2.496968f , - -3.242680f, -3.121724f, 2.708895f , - -3.160444f, -3.110942f, 2.619188f , - -3.315027f, -2.823695f, 2.565071f , - -3.415509f, -3.322013f, 2.830773f , - -3.313083f, -3.187307f, 2.770646f , - -3.406341f, -2.892109f, 2.641670f , - -3.769954f, -2.738681f, 2.611397f , - -3.735296f, -3.309936f, 2.713337f , - -3.551739f, -3.320329f, 2.786841f , - -3.550179f, -2.763924f, 2.602654f , - 1.527637f, -1.529087f, 1.563016f , - 1.767668f, -1.294923f, 1.495104f , - 1.703653f, -1.114315f, 1.730703f , - 1.352688f, -1.335682f, 1.817887f , - 1.246399f, -1.135366f, 1.969001f , - 1.606403f, -0.922189f, 1.886151f , - 1.484085f, -0.726143f, 1.964819f , - 1.226037f, -0.965997f, 2.007230f , - 1.012489f, -0.309100f, 1.797789f , - 0.883530f, -0.310747f, 1.735645f , - 0.876144f, -0.559849f, 1.813586f , - 1.121045f, -0.818129f, 1.984056f , - 1.341953f, -0.557691f, 1.954180f , - 1.148969f, -0.414876f, 1.869767f , - 0.978259f, -0.692727f, 1.904149f , - 0.716920f, -0.714484f, 1.694219f , - 0.720619f, -0.445048f, 1.609448f , - 0.569652f, -0.584261f, 1.422355f , - 0.530596f, -0.889095f, 1.449798f , - 0.384022f, -0.814276f, 1.084891f , - 0.432153f, -0.953177f, 1.243016f , - 0.452257f, -0.677515f, 1.245661f , - 0.440737f, -1.170559f, 1.543156f , - 0.470472f, -1.229859f, 1.749933f , - 0.509579f, -1.078708f, 1.733399f , - 0.763853f, -1.344361f, 2.014305f , - 0.753071f, -1.153387f, 2.012200f , - 0.617092f, -1.097293f, 1.889127f , - 0.584605f, -1.274045f, 1.907828f , - 0.999208f, -1.272002f, 2.034895f , - 0.884273f, -1.167443f, 2.060534f , - 0.891529f, -1.367062f, 2.058563f , - 1.026580f, -1.090861f, 2.044270f , - 0.676696f, -0.887954f, 1.754644f , - 0.510173f, -1.039360f, 1.541389f , - 0.575514f, -0.982535f, 1.737023f , - 0.814630f, -1.045951f, 2.011421f , - 0.948966f, -0.978438f, 2.003646f , - 0.818067f, -0.877155f, 1.911305f , - 0.690493f, -0.979315f, 1.890716f , - 1.120057f, -1.744442f, 1.988467f , - 1.145346f, -2.157060f, 2.012605f , - 1.221243f, -2.097705f, 1.938365f , - 1.287745f, -2.055998f, 1.813589f , - 1.351591f, -2.096541f, 1.606740f , - 1.393410f, -1.806221f, 1.596017f , - 1.218400f, -1.656746f, 1.844349f , - 1.364960f, -2.151979f, 1.354461f , - 1.278260f, -2.156339f, 1.115384f , - 1.325722f, -1.931930f, 1.038234f , - 1.422910f, -1.896317f, 1.324925f , - 1.001274f, -2.528113f, 2.029104f , - 0.758494f, -2.573050f, 1.993410f , - 1.018380f, -2.712357f, 2.029373f , - 1.223103f, -2.401841f, 1.912239f , - 1.318991f, -2.477945f, 1.715902f , - 1.340423f, -2.330349f, 1.641883f , - 1.290298f, -2.285613f, 1.837677f , - 1.280755f, -2.618380f, 1.772495f , - 1.178597f, -2.561671f, 1.959253f , - 1.180726f, -2.765400f, 1.971314f , - 1.236271f, -2.770259f, 1.821259f , - 1.338558f, -2.349409f, 1.403452f , - 1.322460f, -2.491266f, 1.472451f , - 1.245413f, -2.469973f, 1.198534f , - 1.254265f, -2.346254f, 1.167972f , - 1.211959f, -2.583012f, 1.239178f , - 1.284332f, -2.621245f, 1.525769f , - 1.238795f, -2.766897f, 1.576931f , - 1.166282f, -2.723966f, 1.280077f , - 1.573304f, -1.585723f, 0.859211f , - 1.735235f, -1.457976f, 1.183412f , - 1.544012f, -1.665537f, 1.271499f , - 1.431047f, -1.728041f, 0.965365f , - 0.986956f, -1.494551f, 0.605864f , - 1.326514f, -1.592553f, 0.666172f , - 1.211075f, -1.717920f, 0.774145f , - 0.932747f, -1.617859f, 0.726270f , - 0.674690f, -1.442384f, 0.833834f , - 0.492028f, -1.211509f, 1.086037f , - 0.477747f, -1.039137f, 0.901722f , - 0.703737f, -1.310732f, 0.697368f , - 0.886914f, -1.786040f, 0.854892f , - 1.141834f, -1.889213f, 0.884445f , - 1.107479f, -2.104461f, 0.984856f , - 0.879239f, -1.975054f, 1.012832f , - 0.869391f, -2.220894f, 1.065675f , - 1.095268f, -2.327865f, 1.041792f , - 1.119418f, -2.480035f, 1.077992f , - 1.033382f, -2.617859f, 1.085224f , - 0.838125f, -2.510969f, 1.002144f , - 0.658529f, -1.654472f, 0.972750f , - 0.656621f, -1.874626f, 1.127290f , - 0.473245f, -1.858879f, 1.311441f , - 0.484993f, -1.479306f, 1.230424f , - 0.441939f, -2.430325f, 1.315950f , - 0.458856f, -2.160962f, 1.339125f , - 0.643210f, -2.150513f, 1.162186f , - 0.620909f, -2.452884f, 1.090358f , - 0.399048f, -2.160872f, 1.576753f , - 0.387048f, -2.424987f, 1.562710f , - 0.464442f, -2.420719f, 1.812521f , - 0.466003f, -2.165468f, 1.827212f , - 0.417752f, -1.436398f, 1.500017f , - 0.407961f, -1.840164f, 1.554691f , - 0.470014f, -1.854143f, 1.808638f , - 0.458474f, -1.490032f, 1.758224f , - 0.904993f, -2.080471f, 2.032627f , - 0.809198f, -1.649438f, 2.028332f , - 0.606499f, -1.569296f, 1.931042f , - 0.635514f, -1.937067f, 1.975227f , - 0.433501f, -2.822208f, 1.574982f , - 0.557222f, -3.325948f, 1.628191f , - 0.606372f, -3.328506f, 1.866310f , - 0.505369f, -2.817529f, 1.827044f , - 0.589687f, -3.333327f, 1.387702f , - 0.476182f, -2.833380f, 1.313426f , - 0.638662f, -2.851808f, 1.072160f , - 0.704462f, -3.338927f, 1.129364f , - 0.618384f, -2.903987f, 2.008267f , - 0.685640f, -3.326941f, 2.040644f , - 0.784535f, -3.196875f, 2.138489f , - 0.719796f, -2.752348f, 2.027166f , - 0.874744f, -3.052907f, 2.143721f , - 0.974420f, -2.876711f, 2.072863f , - 1.112016f, -3.042962f, 2.115428f , - 1.007149f, -3.212223f, 2.191460f , - 1.133365f, -3.250576f, 2.170792f , - 1.205301f, -2.983473f, 2.025106f , - 1.239495f, -3.221672f, 2.095679f , - 1.343402f, -3.195851f, 1.992537f , - 1.262594f, -2.975389f, 1.897462f , - 1.006748f, -3.584065f, 2.156112f , - 1.165181f, -3.583966f, 2.134568f , - 1.146766f, -3.477332f, 2.177293f , - 1.276202f, -3.418137f, 2.128734f , - 1.279441f, -3.560007f, 2.095093f , - 1.404946f, -3.559286f, 1.976722f , - 1.398084f, -3.393188f, 2.026501f , - 1.657483f, -3.597281f, 1.460327f , - 0.624509f, -2.209194f, 1.980802f , - 0.630053f, -2.412090f, 1.966057f , - 0.870735f, -2.354706f, 2.024869f , - 1.049265f, -2.006890f, 2.051490f , - 1.032823f, -1.589329f, 2.032779f , - 0.945998f, -1.630581f, 2.058106f , - 1.349813f, -3.052736f, 1.801885f , - 1.433256f, -3.228895f, 1.903311f , - 1.497830f, -3.266718f, 1.781812f , - 1.433755f, -3.248069f, 1.323481f , - 1.251303f, -2.967379f, 1.314319f , - 1.318570f, -2.998535f, 1.601540f , - 1.491339f, -3.261473f, 1.622916f , - 1.496839f, -3.295152f, 1.474402f , - 1.208707f, -3.187405f, 1.022945f , - 1.182522f, -2.998825f, 1.119259f , - 1.353272f, -3.230194f, 1.149995f , - 1.008534f, -2.903876f, 1.042186f , - 1.043501f, -3.178905f, 0.968033f , - 0.862550f, -3.301492f, 0.980690f , - 0.818451f, -2.856576f, 0.970147f , - 0.911246f, -3.374652f, 2.188971f , - 0.804588f, -3.530956f, 2.090068f , - 0.907630f, -3.560412f, 2.148421f , - 1.046929f, -3.422408f, 2.184185f , - 1.204033f, -3.635377f, 1.843763f , - 1.114415f, -3.630724f, 1.989832f , - 0.918423f, -3.630823f, 2.011626f , - 0.788169f, -3.601605f, 1.906492f , - 0.732807f, -3.582077f, 1.631048f , - 0.891632f, -3.612314f, 1.416722f , - 1.147144f, -3.401372f, 0.962120f , - 1.288360f, -3.569186f, 1.050626f , - 1.008490f, -3.539521f, 0.989325f , - 1.561894f, -3.637840f, 1.447620f , - 1.559274f, -3.637809f, 1.542685f , - 1.427243f, -3.639574f, 1.635794f , - 1.137202f, -3.631776f, 1.240792f , - 1.419610f, -3.633162f, 1.225370f , - 1.532214f, -3.637559f, 1.356522f , - 3.300445f, -0.492739f, 0.193852f , - 3.672486f, -0.292044f, 0.178128f , - 3.699367f, -0.137733f, 0.495115f , - 3.342547f, -0.334643f, 0.545702f , - 3.155020f, 2.587474f, 0.747557f , - 3.146479f, 2.634246f, 0.592524f , - 2.817170f, 2.575431f, 0.750027f , - 3.117762f, 2.223538f, 1.252354f , - 3.105492f, 2.359931f, 1.110921f , - 2.660785f, 2.367910f, 1.060402f , - 2.633194f, 2.021919f, 1.361075f , - 3.249553f, 1.561628f, 1.499670f , - 2.792834f, 1.583848f, 1.534346f , - 3.120980f, 1.372315f, 1.423452f , - 3.670537f, 1.238775f, 1.245583f , - 3.536106f, 1.456826f, 1.417376f , - 3.402297f, 1.248795f, 1.316396f , - 3.694190f, 0.359350f, 0.899537f , - 3.687056f, 0.862817f, 1.086952f , - 3.376757f, 0.880898f, 1.221574f , - 3.331293f, 0.363135f, 1.175239f , - 3.597076f, 0.003558f, 0.791635f , - 3.279894f, -0.007591f, 1.071377f , - 3.310391f, -0.195315f, 0.837458f , - 3.292684f, 1.731098f, 1.539956f , - 3.254208f, 1.897157f, 1.510262f , - 2.838486f, 1.757104f, 1.551034f , - 3.220499f, 2.011557f, 1.457860f , - 3.189019f, 2.101871f, 1.369130f , - 2.803802f, 1.887154f, 1.488528f , - 3.156747f, 2.486969f, 0.970228f , - 3.158992f, 2.544217f, 0.863168f , - 2.818815f, 2.519485f, 0.887027f , - 3.099999f, 2.694567f, 0.403003f , - 3.077067f, 2.750653f, 0.164405f , - 2.750212f, 2.768410f, 0.192649f , - 2.693558f, 2.655639f, 0.565101f , - 4.469476f, 1.491924f, 1.931031f , - 4.356696f, 1.400284f, 1.936034f , - 4.214867f, 1.897147f, 1.972518f , - 4.326625f, 1.749293f, 1.951771f , - 4.214965f, 1.574141f, 1.963497f , - 3.735565f, 2.649665f, 1.972881f , - 3.892277f, 2.431842f, 1.996250f , - 3.808868f, 2.733664f, 2.009171f , - 3.825084f, 2.830143f, 1.942110f , - 3.732124f, 2.797201f, 1.966568f , - 3.892898f, 2.707462f, 1.941530f , - 3.794423f, 3.267784f, 1.664724f , - 3.819224f, 2.999153f, 1.860540f , - 3.692566f, 2.932273f, 1.897055f , - 3.640973f, 3.555237f, 1.449770f , - 3.737400f, 3.716493f, 1.134797f , - 3.680249f, 3.836618f, 0.917875f , - 3.653079f, 3.760558f, 1.177318f , - 3.646262f, 3.689508f, 1.298004f , - 3.708785f, 3.681351f, 1.280104f , - 3.661390f, 3.839875f, 0.742795f , - 3.618277f, 3.952944f, 0.223692f , - 3.643293f, 3.924569f, 0.526286f , - 3.609769f, 3.916118f, 0.046454f , - 3.656609f, 3.853255f, 0.686030f , - 1.561523f, -3.441083f, 1.273046f , - 1.607049f, -3.445298f, 1.475882f , - 1.621075f, -3.437438f, 1.725756f , - 1.527297f, -3.406287f, 1.902864f , - -3.018126f, -3.335564f, 2.617948f , - -2.957963f, -3.365542f, 2.387366f , - -2.942814f, -3.381498f, 2.150450f , - -3.096238f, -3.350138f, 1.896090f , - -3.000555f, -3.353245f, 2.013783f , - 1.576699f, -3.505508f, 1.262170f , - 1.324693f, -3.375654f, 1.028890f , - 1.476336f, -3.408089f, 1.136867f , - 1.663300f, -3.595804f, -1.456449f , - 1.561625f, -3.442286f, -1.242509f , - 1.325628f, -3.375558f, -1.001187f , - 1.580188f, -3.505397f, -1.245629f , - 1.476960f, -3.408136f, -1.108152f , - -2.897362f, -3.562221f, -2.362310f , - -2.942814f, -3.381498f, -2.119025f , - -3.096238f, -3.350138f, -1.864666f , - -3.000556f, -3.353245f, -1.982358f , - -2.957963f, -3.365542f, -2.355941f , - -3.018126f, -3.335564f, -2.586523f , - -3.174588f, -3.363929f, -2.756618f , - 1.527903f, -3.405983f, -1.875192f , - 1.621613f, -3.437440f, -1.696863f , - 1.609024f, -3.447270f, -1.450305f , - 3.643292f, 3.924569f, -0.494861f , - 3.656609f, 3.853256f, -0.654605f , - 3.636794f, 4.001050f, -0.380968f , - 3.631638f, 4.006712f, -0.320195f , - 3.618277f, 3.952944f, -0.192267f , - 3.609769f, 3.916118f, -0.015029f , - 3.680249f, 3.836618f, -0.886450f , - 3.661390f, 3.839875f, -0.711370f , - 3.698681f, 3.825644f, -1.053394f , - 3.653079f, 3.760558f, -1.145893f , - 3.708785f, 3.681351f, -1.248679f , - 3.646261f, 3.689508f, -1.266579f , - 3.737400f, 3.716493f, -1.103372f , - 3.746655f, 3.516679f, -1.493773f , - 3.640973f, 3.555237f, -1.418345f , - 3.727489f, 3.197694f, -1.774666f , - 3.794423f, 3.267784f, -1.633299f , - 3.692566f, 2.932273f, -1.865630f , - 3.819224f, 2.999153f, -1.829115f , - 3.892277f, 2.431842f, -1.964825f , - 4.036855f, 2.051225f, -1.988656f , - 3.848044f, 2.612471f, -2.002639f , - 3.892898f, 2.707462f, -1.910106f , - 3.808868f, 2.733664f, -1.977746f , - 3.732124f, 2.797201f, -1.935143f , - 3.825084f, 2.830143f, -1.910685f , - 3.735565f, 2.649665f, -1.941456f , - 4.214867f, 1.897147f, -1.941094f , - 4.285721f, 1.670305f, -2.004836f , - 4.214965f, 1.574141f, -1.932072f , - 4.469477f, 1.491924f, -1.899606f , - 4.356696f, 1.400284f, -1.904609f , - 4.326625f, 1.749293f, -1.920346f , - 4.546196f, 1.247835f, -1.867360f , - 3.077067f, 2.750653f, -0.132980f , - 3.099999f, 2.694567f, -0.371579f , - 2.693558f, 2.655640f, -0.533676f , - 2.750212f, 2.768410f, -0.161224f , - 3.156747f, 2.486969f, -0.938803f , - 2.818815f, 2.519485f, -0.855602f , - 3.158992f, 2.544217f, -0.831743f , - 3.220499f, 2.011557f, -1.426436f , - 2.803802f, 1.887154f, -1.457103f , - 3.189019f, 2.101871f, -1.337706f , - 3.292684f, 1.731098f, -1.508531f , - 2.838486f, 1.757104f, -1.519609f , - 3.254208f, 1.897157f, -1.478837f , - 3.597076f, 0.003558f, -0.760210f , - 3.310391f, -0.195315f, -0.806033f , - 3.279894f, -0.007591f, -1.039953f , - 3.687056f, 0.862817f, -1.055527f , - 3.694191f, 0.359350f, -0.868112f , - 3.331293f, 0.363135f, -1.143815f , - 3.376757f, 0.880898f, -1.190149f , - 3.670537f, 1.238775f, -1.214159f , - 3.402297f, 1.248795f, -1.284971f , - 3.536106f, 1.456826f, -1.385951f , - 3.249553f, 1.561628f, -1.468245f , - 3.120981f, 1.372315f, -1.392028f , - 2.792834f, 1.583848f, -1.502921f , - 3.105492f, 2.359931f, -1.079497f , - 3.117762f, 2.223538f, -1.220929f , - 2.633194f, 2.021919f, -1.329650f , - 2.660785f, 2.367910f, -1.028978f , - 3.155020f, 2.587474f, -0.716133f , - 2.817170f, 2.575431f, -0.718603f , - 3.146479f, 2.634246f, -0.561099f , - 3.672486f, -0.292044f, -0.146703f , - 3.300445f, -0.492739f, -0.162427f , - 3.342547f, -0.334643f, -0.514277f , - 3.699366f, -0.137733f, -0.463690f , - 1.137202f, -3.631776f, -1.209367f , - 1.427664f, -3.639426f, -1.607862f , - 1.560235f, -3.637524f, -1.517027f , - 1.563208f, -3.637472f, -1.421854f , - 1.533852f, -3.637141f, -1.331490f , - 1.420569f, -3.632958f, -1.197696f , - 1.147422f, -3.401380f, -0.931567f , - 1.008490f, -3.539521f, -0.957900f , - 1.289325f, -3.569051f, -1.022920f , - 0.788169f, -3.601605f, -1.875068f , - 0.918423f, -3.630823f, -1.980201f , - 1.114415f, -3.630724f, -1.958407f , - 1.204003f, -3.635357f, -1.813081f , - 0.891632f, -3.612314f, -1.385298f , - 0.732807f, -3.582077f, -1.599623f , - 0.804588f, -3.530956f, -2.058644f , - 0.911246f, -3.374652f, -2.157547f , - 1.046929f, -3.422408f, -2.152761f , - 0.907630f, -3.560412f, -2.116996f , - 1.043501f, -3.178905f, -0.936608f , - 1.008534f, -2.903876f, -1.010762f , - 0.818451f, -2.856576f, -0.938723f , - 0.862550f, -3.301492f, -0.949265f , - 1.208707f, -3.187405f, -0.991520f , - 1.353237f, -3.230196f, -1.118514f , - 1.182522f, -2.998825f, -1.087835f , - 1.318570f, -2.998535f, -1.570115f , - 1.251303f, -2.967378f, -1.282894f , - 1.433673f, -3.248317f, -1.291660f , - 1.497263f, -3.295848f, -1.443758f , - 1.491350f, -3.261496f, -1.591552f , - 1.349812f, -3.052736f, -1.770461f , - 1.497830f, -3.266718f, -1.750388f , - 1.433255f, -3.228895f, -1.871886f , - 1.049265f, -2.006890f, -2.020065f , - 0.945998f, -1.630581f, -2.026681f , - 1.032823f, -1.589329f, -2.001354f , - 0.624509f, -2.209194f, -1.949378f , - 0.870735f, -2.354706f, -1.993445f , - 0.630053f, -2.412090f, -1.934633f , - 1.279441f, -3.560007f, -2.063668f , - 1.276201f, -3.418137f, -2.097309f , - 1.398180f, -3.393106f, -1.995972f , - 1.405422f, -3.559076f, -1.948876f , - 1.006748f, -3.584065f, -2.124687f , - 1.146766f, -3.477332f, -2.145868f , - 1.165181f, -3.583966f, -2.103143f , - 1.239495f, -3.221672f, -2.064254f , - 1.205301f, -2.983473f, -1.993682f , - 1.262594f, -2.975389f, -1.866037f , - 1.343402f, -3.195851f, -1.961112f , - 1.112016f, -3.042962f, -2.084003f , - 1.133365f, -3.250576f, -2.139368f , - 1.007149f, -3.212223f, -2.160035f , - 0.719796f, -2.752348f, -1.995741f , - 0.974420f, -2.876711f, -2.041439f , - 0.874744f, -3.052907f, -2.112296f , - 0.618384f, -2.903987f, -1.976843f , - 0.784535f, -3.196875f, -2.107064f , - 0.685640f, -3.326941f, -2.009219f , - 0.476182f, -2.833381f, -1.282001f , - 0.589687f, -3.333327f, -1.356277f , - 0.704462f, -3.338927f, -1.097939f , - 0.638662f, -2.851809f, -1.040736f , - 0.557221f, -3.325948f, -1.596766f , - 0.433501f, -2.822209f, -1.543557f , - 0.505369f, -2.817529f, -1.795619f , - 0.606372f, -3.328506f, -1.834885f , - 0.809198f, -1.649438f, -1.996907f , - 0.904993f, -2.080471f, -2.001202f , - 0.635514f, -1.937067f, -1.943802f , - 0.606499f, -1.569296f, -1.899618f , - 0.407961f, -1.840164f, -1.523266f , - 0.417752f, -1.436398f, -1.468592f , - 0.458474f, -1.490032f, -1.726799f , - 0.470014f, -1.854143f, -1.777213f , - 0.387048f, -2.424987f, -1.531285f , - 0.399048f, -2.160872f, -1.545328f , - 0.466003f, -2.165468f, -1.795788f , - 0.464442f, -2.420719f, -1.781096f , - 0.458856f, -2.160962f, -1.307701f , - 0.441939f, -2.430325f, -1.284525f , - 0.620909f, -2.452884f, -1.058933f , - 0.643210f, -2.150513f, -1.130761f , - 0.656621f, -1.874626f, -1.095865f , - 0.658529f, -1.654472f, -0.941325f , - 0.484993f, -1.479306f, -1.198999f , - 0.473245f, -1.858879f, -1.280017f , - 1.119418f, -2.480035f, -1.046567f , - 1.095268f, -2.327865f, -1.010367f , - 0.869391f, -2.220894f, -1.034250f , - 0.838125f, -2.510969f, -0.970720f , - 1.033382f, -2.617859f, -1.053799f , - 1.141834f, -1.889213f, -0.853021f , - 0.886914f, -1.786040f, -0.823468f , - 0.879239f, -1.975054f, -0.981407f , - 1.107479f, -2.104461f, -0.953431f , - 0.492028f, -1.211509f, -1.054613f , - 0.674690f, -1.442384f, -0.802409f , - 0.703737f, -1.310732f, -0.665943f , - 0.477747f, -1.039137f, -0.870297f , - 1.326514f, -1.592553f, -0.634747f , - 0.986956f, -1.494551f, -0.574440f , - 0.932747f, -1.617859f, -0.694846f , - 1.211075f, -1.717920f, -0.742720f , - 1.735235f, -1.457976f, -1.151987f , - 1.573304f, -1.585723f, -0.827786f , - 1.431047f, -1.728041f, -0.933940f , - 1.544012f, -1.665537f, -1.240074f , - 1.284332f, -2.621245f, -1.494345f , - 1.211959f, -2.583012f, -1.207754f , - 1.166282f, -2.723966f, -1.248652f , - 1.238795f, -2.766897f, -1.545506f , - 1.322460f, -2.491266f, -1.441027f , - 1.338558f, -2.349409f, -1.372028f , - 1.254265f, -2.346254f, -1.136547f , - 1.245413f, -2.469973f, -1.167109f , - 1.178597f, -2.561671f, -1.927829f , - 1.280755f, -2.618380f, -1.741071f , - 1.236271f, -2.770259f, -1.789834f , - 1.180726f, -2.765400f, -1.939890f , - 1.318991f, -2.477945f, -1.684478f , - 1.223103f, -2.401841f, -1.880815f , - 1.290298f, -2.285613f, -1.806252f , - 1.340423f, -2.330349f, -1.610459f , - 1.001274f, -2.528113f, -1.997680f , - 1.018380f, -2.712357f, -1.997949f , - 0.758494f, -2.573050f, -1.961985f , - 1.278260f, -2.156339f, -1.083959f , - 1.364960f, -2.151979f, -1.323036f , - 1.422910f, -1.896317f, -1.293501f , - 1.325722f, -1.931930f, -1.006809f , - 1.351591f, -2.096541f, -1.575315f , - 1.287745f, -2.055997f, -1.782164f , - 1.218400f, -1.656746f, -1.812924f , - 1.393410f, -1.806221f, -1.564592f , - 1.120057f, -1.744442f, -1.957042f , - 1.221243f, -2.097705f, -1.906940f , - 1.145346f, -2.157060f, -1.981180f , - 0.948966f, -0.978438f, -1.972221f , - 0.814630f, -1.045951f, -1.979996f , - 0.690493f, -0.979315f, -1.859291f , - 0.818067f, -0.877155f, -1.879881f , - 0.676696f, -0.887954f, -1.723219f , - 0.575514f, -0.982535f, -1.705598f , - 0.510173f, -1.039360f, -1.509964f , - 1.026580f, -1.090861f, -2.012845f , - 0.999208f, -1.272002f, -2.003470f , - 0.884273f, -1.167443f, -2.029110f , - 0.891529f, -1.367062f, -2.027139f , - 0.753071f, -1.153387f, -1.980775f , - 0.763853f, -1.344361f, -1.982880f , - 0.584605f, -1.274045f, -1.876403f , - 0.617092f, -1.097293f, -1.857703f , - 0.440737f, -1.170559f, -1.511731f , - 0.509579f, -1.078708f, -1.701974f , - 0.470472f, -1.229859f, -1.718508f , - 0.384022f, -0.814276f, -1.053466f , - 0.452257f, -0.677515f, -1.214236f , - 0.432153f, -0.953177f, -1.211591f , - 0.720619f, -0.445048f, -1.578024f , - 0.716920f, -0.714484f, -1.662795f , - 0.530596f, -0.889095f, -1.418373f , - 0.569652f, -0.584261f, -1.390930f , - 1.341953f, -0.557691f, -1.922756f , - 1.121045f, -0.818129f, -1.952631f , - 0.978259f, -0.692727f, -1.872724f , - 1.148969f, -0.414876f, -1.838342f , - 1.012489f, -0.309100f, -1.766364f , - 0.876144f, -0.559849f, -1.782161f , - 0.883530f, -0.310747f, -1.704221f , - 1.606403f, -0.922189f, -1.854726f , - 1.246399f, -1.135366f, -1.937577f , - 1.226037f, -0.965997f, -1.975805f , - 1.484085f, -0.726143f, -1.933394f , - 1.767668f, -1.294923f, -1.463679f , - 1.527637f, -1.529087f, -1.531591f , - 1.352688f, -1.335681f, -1.786462f , - 1.703653f, -1.114315f, -1.699278f , - -3.735296f, -3.309936f, -2.681912f , - -3.769954f, -2.738681f, -2.579972f , - -3.550179f, -2.763924f, -2.571229f , - -3.551739f, -3.320329f, -2.755417f , - -3.415509f, -3.322013f, -2.799348f , - -3.406341f, -2.892109f, -2.610245f , - -3.313083f, -3.187307f, -2.739221f , - -3.242680f, -3.121724f, -2.677470f , - -3.315027f, -2.823695f, -2.533646f , - -3.160444f, -3.110942f, -2.587763f , - -3.218511f, -2.782982f, -2.227427f , - -3.080750f, -3.142317f, -2.167261f , - -3.064314f, -3.178899f, -2.337572f , - -3.116415f, -3.111364f, -2.465543f , - -3.276496f, -2.734152f, -2.381686f , - -2.677373f, -0.911135f, -0.804195f , - -2.797915f, -1.013343f, -1.088755f , - -2.506966f, -0.877396f, -1.368277f , - -2.303890f, -0.767895f, -1.146938f , - -3.359652f, -2.824556f, -1.742901f , - -3.238136f, -3.122248f, -1.808675f , - -3.132685f, -3.128356f, -1.967000f , - -3.256510f, -2.791855f, -2.004635f , - -3.081585f, -1.648583f, -2.045783f , - -3.224094f, -2.237249f, -2.167542f , - -3.297505f, -2.149003f, -2.311336f , - -3.138091f, -1.439135f, -2.221067f , - -3.956527f, -0.516416f, -1.816094f , - -3.924541f, -0.155918f, -1.657422f , - -3.624830f, -0.234518f, -2.023263f , - -3.658725f, -0.558635f, -2.095609f , - -3.642200f, -0.922257f, -0.823616f , - -3.213154f, -1.046286f, -0.903412f , - -3.129942f, -0.906822f, -0.610603f , - -3.635809f, -0.762303f, -0.576500f , - -4.206485f, -0.301554f, -1.072512f , - -4.127983f, -0.180839f, -1.333907f , - -4.137323f, -0.528001f, -1.531310f , - -4.172639f, -0.583979f, -1.286163f , - -3.956278f, -0.788592f, -0.888078f , - -3.982984f, -0.599527f, -0.659851f , - -4.155362f, -0.433871f, -0.852715f , - -4.116044f, -0.684652f, -1.066426f , - -3.306485f, -3.539434f, -2.802085f , - -3.784066f, -3.579412f, -2.097009f , - -3.788021f, -3.575063f, -2.307862f , - -3.651045f, -3.576948f, -2.536933f , - -3.432098f, -3.602263f, -2.639024f , - -3.215369f, -3.628083f, -2.510787f , - -3.146413f, -3.629937f, -2.425863f , - -3.119241f, -3.630091f, -2.326856f , - -3.112424f, -3.629761f, -2.232665f , - -3.160492f, -3.628861f, -2.096030f , - -3.423854f, -3.608855f, -1.956744f , - -3.674768f, -3.587205f, -1.991032f , - -3.303603f, -3.544290f, -1.768648f , - -3.101405f, -3.563582f, -1.893097f , - -3.206110f, -3.401528f, -1.775203f , - -3.413395f, -3.365766f, -1.686313f , - -3.318416f, -3.221641f, -1.714456f , - -3.440593f, -3.007460f, -1.639854f , - -3.842344f, -2.883743f, -1.537513f , - -3.782653f, -3.367285f, -1.723968f , - -3.568774f, -3.377412f, -1.694944f , - -3.608724f, -2.913016f, -1.577150f , - -4.193622f, -2.756548f, -1.725355f , - -4.039809f, -3.323336f, -1.865344f , - -3.944064f, -3.341063f, -1.774520f , - -4.038920f, -2.836074f, -1.588805f , - -4.255399f, -2.677477f, -2.103999f , - -4.100389f, -3.289512f, -2.191931f , - -4.094449f, -3.297892f, -2.006580f , - -4.262414f, -2.710688f, -1.895313f , - -3.973436f, -2.714283f, -2.479747f , - -3.901326f, -3.297181f, -2.572999f , - -4.030904f, -3.290701f, -2.375122f , - -4.161819f, -2.679195f, -2.306610f , - -2.588787f, -0.870742f, -1.817235f , - -2.688355f, -1.033339f, -1.914458f , - -2.879865f, -0.891269f, -2.117743f , - -2.733792f, -0.711671f, -2.067740f , - -2.809931f, -1.107342f, -1.351291f , - -2.676139f, -1.119195f, -1.670765f , - -2.600621f, -0.987207f, -1.563654f , - -2.769337f, -1.221695f, -1.715290f , - -2.925111f, -1.246959f, -1.422430f , - -2.915686f, -1.349225f, -1.735787f , - -2.953364f, -1.097543f, -2.109831f , - -2.779253f, -1.170187f, -1.938402f , - -2.924097f, -1.301267f, -1.961195f , - -3.080088f, -1.707980f, -1.784443f , - -3.128302f, -1.612806f, -1.419814f , - -3.336088f, -2.302994f, -1.617515f , - -3.233681f, -2.290199f, -1.919355f , - -3.718670f, -1.407655f, -1.083042f , - -3.803594f, -2.210210f, -1.340241f , - -3.539748f, -2.262316f, -1.411996f , - -3.345086f, -1.520078f, -1.172482f , - -4.142153f, -1.223074f, -1.301342f , - -4.211967f, -2.035357f, -1.536862f , - -4.043270f, -2.131129f, -1.387316f , - -3.986260f, -1.310203f, -1.132290f , - -4.192321f, -1.110050f, -1.738074f , - -4.273333f, -1.928017f, -1.950398f , - -4.287672f, -1.968170f, -1.731005f , - -4.213390f, -1.150782f, -1.506083f , - -3.754008f, -1.140108f, -2.219815f , - -3.923017f, -1.968274f, -2.348872f , - -4.142122f, -1.927016f, -2.169370f , - -4.039607f, -1.106230f, -1.977998f , - -3.502925f, -1.203056f, -2.331202f , - -3.288408f, -1.295189f, -2.317694f , - -3.455534f, -2.061843f, -2.410052f , - -3.683628f, -2.016112f, -2.441102f , - -8.473654f, 0.993305f, -0.258164f , - -8.468863f, 0.853356f, -0.263707f , - -9.040923f, 0.947903f, -0.203758f , - -6.416727f, 0.126524f, -0.123114f , - -7.942585f, 0.229266f, -0.040318f , - -7.934812f, 0.320809f, -0.158615f , - -7.165230f, 0.202920f, -0.157977f , - -7.203190f, 0.090395f, -0.039924f , - -8.653687f, 0.483049f, -0.126866f , - -8.566601f, 0.731232f, -0.244313f , - -8.626893f, 0.597532f, -0.207688f , - -9.228973f, 0.800344f, -0.157169f , - -7.101557f, 0.508715f, -0.334568f , - -7.131156f, 0.344394f, -0.255330f , - -7.902206f, 0.452733f, -0.245758f , - -7.850936f, 0.612499f, -0.291788f , - -5.630895f, 0.516830f, -0.371434f , - -5.669249f, 0.256854f, -0.182514f , - -6.375777f, 0.288185f, -0.241970f , - -6.349174f, 0.474931f, -0.346931f , - -7.083652f, 0.967911f, -0.335722f , - -7.082887f, 0.715474f, -0.362126f , - -7.817561f, 0.790948f, -0.311850f , - -7.822424f, 0.973109f, -0.300803f , - -5.651505f, 1.186073f, -0.459270f , - -5.623837f, 0.820226f, -0.458305f , - -6.339428f, 0.737514f, -0.406364f , - -6.344623f, 1.028428f, -0.382841f , - -4.801017f, 0.921953f, -0.757344f , - -5.103825f, 0.904165f, -0.578260f , - -5.128317f, 1.306310f, -0.593830f , - -4.752501f, 1.417340f, -0.804964f , - -1.126662f, 0.980664f, -1.832735f , - -0.503039f, 0.976779f, -1.835800f , - -0.596324f, 0.351473f, -1.698797f , - -1.115684f, 0.415526f, -1.698942f , - -1.690151f, 1.464071f, -1.856435f , - -2.059665f, 1.148269f, -1.910298f , - -2.479776f, 1.855796f, -1.769707f , - -1.786279f, 2.127444f, -1.691340f , - -2.684580f, 0.064063f, -2.072824f , - -2.849102f, -0.263263f, -2.144095f , - -3.207926f, -0.047470f, -2.149835f , - -3.126410f, 0.346617f, -2.096728f , - -2.369595f, -0.238465f, -1.871656f , - -2.203210f, -0.548940f, -1.502671f , - -2.430403f, -0.695909f, -1.686647f , - -2.573066f, -0.501567f, -1.973698f , - -3.219169f, -0.361007f, -2.209456f , - -2.941366f, -0.523426f, -2.195034f , - -3.073241f, -0.683793f, -2.228389f , - -3.379503f, -0.399447f, -2.214827f , - -3.230640f, -0.740107f, -2.263207f , - -3.418626f, -0.657343f, -2.257700f , - -3.948340f, 0.532373f, -1.601072f , - -3.547052f, 0.504756f, -1.919885f , - -3.587431f, 0.097693f, -1.966779f , - -3.921076f, 0.184230f, -1.596489f , - -3.524525f, 1.011392f, -1.816896f , - -3.984627f, 1.000720f, -1.499271f , - -4.100611f, 1.546579f, -1.274003f , - -3.452769f, 1.661440f, -1.638350f , - -2.534165f, 0.460659f, -2.014675f , - -3.014130f, 0.807926f, -2.011987f , - -2.862814f, 1.413487f, -1.875162f , - -2.361193f, 0.792829f, -1.975783f , - -1.813739f, 0.668369f, -1.905325f , - -1.560045f, 0.930127f, -1.864757f , - -1.534415f, 0.459527f, -1.761698f , - -2.116477f, 0.197663f, -1.922875f , - -1.990584f, 0.430201f, -1.933669f , - -1.725683f, 0.213841f, -1.766589f , - -1.721169f, -0.476614f, -1.155133f , - -1.955465f, -0.457870f, -1.326064f , - -2.068760f, -0.113972f, -1.713448f , - -1.647083f, -0.089672f, -1.518403f , - -3.090128f, -0.876619f, -0.336674f , - -3.088598f, -0.885230f, -0.096959f , - -3.492049f, -0.769588f, -0.096829f , - -3.592278f, -0.722769f, -0.323957f , - -4.559468f, 0.888804f, -0.976824f , - -4.477377f, 1.322498f, -1.035318f , - -4.323808f, 0.905014f, -1.234450f , - -4.210104f, 0.295864f, -1.276840f , - -4.458861f, 0.552265f, -1.051758f , - -4.247049f, 0.569567f, -1.312429f , - -4.492818f, 0.089915f, -0.587996f , - -4.528252f, 0.369777f, -0.833112f , - -4.262148f, 0.099299f, -1.091674f , - -4.317962f, -0.070285f, -0.844462f , - -4.765120f, 0.200862f, -0.375765f , - -5.135206f, 0.242071f, -0.231605f , - -5.110466f, 0.532293f, -0.449105f , - -4.804031f, 0.516168f, -0.615182f , - -4.697814f, -0.036186f, -0.174721f , - -4.327108f, -0.223426f, -0.243954f , - -3.993820f, -0.506674f, -0.293454f , - -3.872800f, -0.582071f, -0.084350f , - -4.188797f, -0.375515f, -0.069325f , - -4.115814f, -0.417339f, -0.487129f , - -4.364851f, -0.153565f, -0.443837f , - -4.253201f, -0.257898f, -0.665825f , - -2.371862f, -1.026526f, -0.093478f , - -2.717693f, -0.976573f, -0.073878f , - -2.679826f, -0.964206f, -0.285849f , - -1.864124f, -0.763819f, -0.752627f , - -2.088879f, -0.954360f, -0.337153f , - -2.441770f, -0.895999f, -0.559193f , - -2.088316f, -0.730586f, -0.928143f , - -0.851029f, -0.838588f, -0.612432f , - -0.891374f, -1.004158f, -0.197866f , - -1.580339f, -0.987626f, -0.209728f , - -1.419401f, -0.807055f, -0.643142f , - 0.098569f, -0.898140f, -0.649642f , - 0.032073f, -1.088068f, -0.205704f , - -0.351948f, -1.031020f, -0.203994f , - -0.327037f, -0.868292f, -0.618471f , - 0.702276f, -1.289538f, -0.433477f , - 0.696421f, -1.342022f, -0.151528f , - 0.371776f, -1.202696f, -0.179982f , - 0.431656f, -1.042195f, -0.593701f , - 1.382380f, -1.523891f, -0.433550f , - 1.383789f, -1.491154f, -0.138743f , - 1.030793f, -1.463359f, -0.126214f , - 1.023795f, -1.441809f, -0.380464f , - 1.869786f, -1.375084f, -0.833351f , - 1.918850f, -1.411704f, -0.256040f , - 1.675908f, -1.470811f, -0.207480f , - 1.664604f, -1.503425f, -0.570455f , - 2.474600f, -0.997197f, -0.818061f , - 2.500281f, -1.099876f, -0.274532f , - 2.189487f, -1.275629f, -0.288831f , - 2.143423f, -1.203227f, -0.911373f , - 3.040552f, -0.548327f, -0.592704f , - 3.000473f, -0.705698f, -0.199801f , - 2.778454f, -0.899933f, -0.228097f , - 2.766977f, -0.782954f, -0.723314f , - 2.229379f, 0.532836f, -1.841015f , - 1.962884f, 0.792574f, -1.848650f , - 2.307276f, 1.256925f, -1.675837f , - 2.573233f, 0.918195f, -1.665680f , - 1.901181f, 0.127672f, -1.920919f , - 1.598366f, -0.235148f, -1.918720f , - 1.375112f, -0.072491f, -1.850026f , - 1.651223f, 0.348541f, -1.909649f , - 2.314309f, -0.443133f, -1.724081f , - 1.952377f, -0.679463f, -1.793371f , - 1.798277f, -0.453136f, -1.894488f , - 2.119772f, -0.131276f, -1.871218f , - 2.418753f, -0.683456f, -1.523559f , - 2.446884f, -0.857467f, -1.238529f , - 2.100770f, -1.076377f, -1.358338f , - 2.054094f, -0.897293f, -1.611858f , - 2.993750f, -0.177356f, -1.223472f , - 3.035426f, -0.380584f, -0.942311f , - 2.757657f, -0.623038f, -1.104112f , - 2.733326f, -0.438382f, -1.390778f , - 2.446238f, 0.199782f, -1.766547f , - 2.771235f, 0.559207f, -1.591264f , - 2.897734f, 0.137019f, -1.443897f , - 2.635163f, -0.154454f, -1.608165f , - 3.091152f, 0.461843f, -1.338421f , - 2.981041f, 0.821730f, -1.462082f , - 3.139527f, 0.915305f, -1.337815f , - 0.049694f, -0.389512f, -1.355991f , - 0.432464f, -0.160009f, -1.513753f , - 0.611742f, -0.245021f, -1.536449f , - 0.419302f, -0.417721f, -1.358296f , - -0.263839f, -0.692806f, -0.943957f , - -0.178562f, -0.550112f, -1.173249f , - 0.251614f, -0.565518f, -1.177391f , - 0.155926f, -0.718635f, -0.979060f , - -0.680819f, -0.448624f, -1.218892f , - -0.765432f, -0.622958f, -0.967233f , - -1.303238f, -0.551342f, -1.021385f , - -1.192204f, -0.199773f, -1.358841f , - -0.188201f, -0.305414f, -1.412063f , - -0.200412f, -0.096358f, -1.550260f , - 0.186296f, -0.105086f, -1.532220f , - -0.584583f, -0.059003f, -1.558281f , - -0.585515f, -0.280381f, -1.404207f , - -0.993500f, -0.010307f, -1.538080f , - 0.153882f, 1.486059f, -1.820513f , - 0.174205f, 2.028256f, -1.676028f , - 0.748903f, 1.823982f, -1.684254f , - 0.661820f, 1.325806f, -1.769120f , - -0.456332f, 1.589825f, -1.835388f , - -1.121290f, 1.589253f, -1.829600f , - -1.120559f, 2.239916f, -1.666666f , - -0.457528f, 2.162651f, -1.674685f , - 0.549121f, 0.788889f, -1.754798f , - 0.381720f, 0.270103f, -1.656235f , - -0.081196f, 0.297317f, -1.681043f , - 0.059776f, 0.910234f, -1.813095f , - 1.012617f, 0.654050f, -1.813329f , - 0.842612f, 0.126936f, -1.687960f , - 0.684828f, 0.206992f, -1.654923f , - 0.860969f, 0.702746f, -1.756043f , - 1.186239f, 0.598139f, -1.853445f , - 1.412969f, 0.494507f, -1.877287f , - 1.173121f, 0.043649f, -1.796707f , - 1.008792f, 0.072626f, -1.743019f , - 1.116172f, 1.122923f, -1.833456f , - 0.969184f, 1.167947f, -1.781860f , - 1.079248f, 1.557534f, -1.738085f , - 1.394147f, 1.626714f, -1.702073f , - 1.924015f, 1.502625f, -1.674783f , - 1.643073f, 0.992843f, -1.847918f , - 1.349540f, 1.109940f, -1.842759f , - 2.647003f, 1.434554f, -1.526150f , - 2.992845f, 1.237744f, -1.407113f , - 2.836853f, 1.135648f, -1.520052f , - -9.827560f, 1.178760f, -0.082616f , - -8.606584f, 1.263606f, -0.206857f , - -8.570552f, 1.124617f, -0.235575f , - -9.255013f, 1.062131f, -0.164821f , - -9.314088f, 1.211250f, -0.158925f , - -7.134171f, 1.366632f, -0.193054f , - -7.100245f, 1.178944f, -0.282993f , - -7.848615f, 1.153816f, -0.263612f , - -7.871750f, 1.309416f, -0.221247f , - -5.693686f, 1.696034f, -0.226492f , - -5.678032f, 1.468737f, -0.378557f , - -6.365739f, 1.288597f, -0.308441f , - -6.401522f, 1.494727f, -0.198437f , - -4.827311f, 1.737034f, -0.686007f , - -5.176254f, 1.595863f, -0.511719f , - -5.163006f, 1.809785f, -0.377692f , - -4.532761f, 2.051008f, -0.679982f , - -4.859941f, 2.122931f, -0.348330f , - -4.266538f, 2.540744f, -0.459165f , - -3.492712f, 2.216835f, -1.321102f , - -4.100559f, 2.066954f, -1.004308f , - -3.802065f, 2.584768f, -0.778887f , - -2.733263f, 3.146320f, -0.786601f , - -2.172694f, 2.714350f, -1.311711f , - -2.887189f, 2.458296f, -1.375544f , - -3.286697f, 2.904807f, -0.757168f , - -1.790082f, 2.999857f, -1.160848f , - -2.313669f, 3.341573f, -0.737100f , - -1.896274f, 3.387868f, -0.763765f , - -0.691274f, 3.196085f, -0.923668f , - -0.536042f, 2.708737f, -1.360693f , - -1.198541f, 2.824829f, -1.328244f , - -1.359823f, 3.301829f, -0.857811f , - 0.841428f, 2.760278f, -1.057406f , - 0.800640f, 2.314903f, -1.429185f , - 0.149552f, 2.537484f, -1.398642f , - 0.037733f, 3.016565f, -0.979706f , - 2.127500f, 2.425170f, -1.040412f , - 2.071338f, 1.995671f, -1.403359f , - 1.452927f, 2.122814f, -1.438119f , - 1.532557f, 2.557409f, -1.074288f , - -8.652988f, 1.402303f, -0.138087f , - -9.358827f, 1.335711f, -0.106330f , - -7.189649f, 1.553505f, -0.102836f , - -7.920448f, 1.474377f, -0.138196f , - -5.739004f, 1.941018f, -0.102420f , - -6.466265f, 1.710031f, -0.092530f , - -4.438234f, 2.894237f, -0.061769f , - -4.290358f, 2.796327f, -0.244307f , - -5.018705f, 2.301694f, -0.149520f , - -5.124327f, 2.498323f, -0.041197f , - -3.127732f, 3.573815f, -0.102918f , - -3.043038f, 3.426356f, -0.372570f , - -3.610878f, 3.170903f, -0.321248f , - -3.774132f, 3.268468f, -0.089877f , - -2.077211f, 3.829663f, -0.126998f , - -2.040955f, 3.657389f, -0.421055f , - -2.524337f, 3.597862f, -0.392521f , - -2.578857f, 3.752836f, -0.119082f , - -0.785132f, 3.717833f, -0.156171f , - -0.777411f, 3.537465f, -0.515746f , - -1.464617f, 3.631718f, -0.460265f , - -1.489883f, 3.815385f, -0.143179f , - 0.901653f, 3.327618f, -0.198510f , - 0.859554f, 3.102729f, -0.643371f , - 0.010082f, 3.360112f, -0.567923f , - 0.018482f, 3.546754f, -0.183239f , - 2.272175f, 2.886290f, -0.199825f , - 2.193935f, 2.731007f, -0.630468f , - 1.597221f, 2.885139f, -0.661553f , - 1.655580f, 3.103526f, -0.208166f , - 6.969660f, 2.438476f, -0.627891f , - 6.319492f, 1.886632f, -0.520706f , - 6.303564f, 1.892076f, -0.643731f , - 6.795448f, 2.235533f, -0.615791f , - 4.406322f, 1.063004f, -1.461676f , - 4.114754f, 1.160354f, -1.346257f , - 4.270722f, 1.272298f, -1.685948f , - 4.457831f, 1.132828f, -1.673259f , - 3.614860f, 2.546548f, -1.743209f , - 3.718296f, 2.289909f, -1.778130f , - 3.509344f, 2.167244f, -1.532191f , - 3.466906f, 2.301024f, -1.446738f , - 3.319755f, 3.046926f, -0.122667f , - 3.467330f, 3.591557f, -0.140590f , - 3.497516f, 3.556181f, -0.473334f , - 3.351933f, 3.001242f, -0.360889f , - 3.373879f, 2.942716f, -0.602571f , - 3.516221f, 3.493856f, -0.757012f , - 3.513663f, 3.406661f, -1.026101f , - 3.378708f, 2.881461f, -0.802179f , - 3.387058f, 2.798404f, -0.981335f , - 3.522325f, 3.292019f, -1.241486f , - 3.553540f, 3.105394f, -1.445367f , - 3.397070f, 2.716105f, -1.115558f , - 3.403840f, 2.585172f, -1.245583f , - 3.566883f, 2.956072f, -1.569744f , - 3.570179f, 2.752137f, -1.668771f , - 3.424209f, 2.460952f, -1.355932f , - 3.567655f, 1.990447f, -1.581100f , - 3.795439f, 2.076226f, -1.812814f , - 3.859441f, 1.907019f, -1.825282f , - 3.629480f, 1.792455f, -1.609377f , - 3.952436f, 1.715870f, -1.787529f , - 4.091937f, 1.462722f, -1.724643f , - 3.893260f, 1.339752f, -1.379780f , - 3.741389f, 1.575690f, -1.545411f , - 4.154058f, 1.045691f, -1.166230f , - 4.418114f, 0.994108f, -1.296900f , - 4.446344f, 0.932072f, -1.176674f , - 5.822875f, 1.584949f, -0.120504f , - 5.917289f, 1.561822f, -0.346603f , - 5.838113f, 1.750679f, -0.271860f , - 5.983244f, 1.695436f, -0.387847f , - 5.567623f, 2.093883f, -0.504942f , - 5.520552f, 2.088668f, -0.725151f , - 6.080553f, 1.990665f, -0.418884f , - 6.237720f, 1.925987f, -0.456505f , - 6.689061f, 2.280603f, -0.560967f , - 6.145469f, 2.126721f, -0.517344f , - 6.142308f, 2.216088f, -0.629617f , - 6.684434f, 2.385189f, -0.710252f , - 6.077760f, 2.194658f, -0.774930f , - 6.163900f, 2.073922f, -0.797454f , - 6.155657f, 1.950299f, -0.780647f , - 6.643003f, 2.207930f, -0.719041f , - 6.208957f, 1.891506f, -0.730297f , - 5.902946f, 1.544198f, -0.676871f , - 5.992162f, 1.655336f, -0.646473f , - 6.016121f, 1.641046f, -0.497128f , - 5.951763f, 1.512047f, -0.501439f , - 5.654045f, 2.024757f, -0.363821f , - 5.788238f, 1.917221f, -0.327197f , - 5.819864f, 2.043152f, -0.460410f , - 5.552817f, 2.003974f, -0.845155f , - 5.727616f, 2.038748f, -0.827518f , - 5.793098f, 1.901521f, -0.830110f , - 5.638239f, 1.849910f, -0.836747f , - 5.728247f, 1.718596f, -0.811761f , - 5.859259f, 1.779656f, -0.804396f , - 5.928551f, 1.703581f, -0.749751f , - 5.820722f, 1.613362f, -0.784856f , - 5.721474f, 1.670305f, -0.057947f , - 5.093387f, 2.214576f, -0.081171f , - 5.207691f, 2.179878f, -0.264988f , - 4.813098f, 2.340260f, -0.346887f , - 4.760847f, 2.383533f, -0.102585f , - 4.394941f, 2.328799f, -1.364551f , - 4.690773f, 2.138385f, -1.164357f , - 4.779963f, 1.869987f, -1.188365f , - 4.551239f, 1.937048f, -1.405750f , - 4.411215f, 2.171618f, -1.447587f , - 4.310448f, 2.576906f, -1.240796f , - 4.205222f, 2.820887f, -1.158304f , - 4.224950f, 2.863348f, -0.947691f , - 4.515991f, 2.516813f, -0.763078f , - 4.600390f, 2.377701f, -1.022411f , - 4.090939f, 3.050200f, -0.169550f , - 4.399031f, 2.679368f, -0.162401f , - 4.444488f, 2.626828f, -0.461307f , - 4.160501f, 2.978848f, -0.667328f , - 4.048024f, 3.117336f, -0.473650f , - 3.752149f, 3.736432f, -0.146693f , - 3.884315f, 3.400215f, -0.141733f , - 3.885084f, 3.401860f, -0.429965f , - 3.771091f, 3.709099f, -0.476314f , - 3.796395f, 3.645067f, -0.768381f , - 3.910021f, 3.356153f, -0.674167f , - 3.969275f, 3.273784f, -0.882037f , - 3.819988f, 3.525169f, -1.041502f , - 3.846214f, 3.400740f, -1.263758f , - 4.006637f, 3.167986f, -1.088517f , - 4.025661f, 3.074317f, -1.248656f , - 3.872439f, 3.242389f, -1.424336f , - 3.902050f, 3.094224f, -1.551790f , - 4.056324f, 2.935472f, -1.372125f , - 4.108269f, 2.738370f, -1.478076f , - 3.941230f, 2.903699f, -1.677408f , - 3.991798f, 2.679569f, -1.755577f , - 4.163217f, 2.525980f, -1.560561f , - 4.216998f, 2.341098f, -1.601809f , - 4.050506f, 2.399055f, -1.799974f , - 4.144448f, 2.161292f, -1.813159f , - 4.294324f, 2.148462f, -1.613659f , - 4.397840f, 1.946354f, -1.606781f , - 4.272610f, 1.959940f, -1.795820f , - 4.505432f, 1.746112f, -1.594128f , - 4.592074f, 1.576056f, -1.576943f , - 4.507821f, 1.580423f, -1.767239f , - 4.388901f, 1.771918f, -1.781939f , - 4.652446f, 1.260718f, -1.710494f , - 4.588575f, 1.423359f, -1.743927f , - 4.664555f, 1.423780f, -1.554451f , - 4.711138f, 1.266107f, -1.528827f , - 4.626109f, 1.123972f, -1.679111f , - 4.694057f, 1.131654f, -1.510740f , - 4.592118f, 1.048679f, -1.502382f , - 4.628488f, 1.008865f, -1.331179f , - 4.756676f, 1.119449f, -1.332743f , - 4.882730f, 1.102203f, -1.151558f , - 4.689338f, 0.952877f, -1.191096f , - 4.783179f, 1.309608f, -1.352878f , - 4.713443f, 1.485503f, -1.413912f , - 4.661634f, 1.662203f, -1.394560f , - 4.875454f, 1.575753f, -1.180433f , - 4.928803f, 1.317577f, -1.158597f , - 5.016499f, 2.033079f, -0.990899f , - 5.327162f, 1.999222f, -0.896239f , - 5.419995f, 1.826963f, -0.889945f , - 5.098627f, 1.809400f, -1.006506f , - 5.756276f, 1.070162f, -0.783401f , - 5.812866f, 1.225586f, -0.801342f , - 6.537373f, -0.195709f, -0.443933f , - 6.804547f, -0.191606f, -0.305766f , - 5.582611f, 1.819109f, -0.053399f , - 5.649649f, 1.864969f, -0.192690f , - 5.490383f, 2.020789f, -0.214991f , - 5.368263f, 2.038648f, -0.059293f , - 4.950296f, 2.186980f, -0.854101f , - 4.879098f, 2.279873f, -0.600247f , - 5.272814f, 2.149363f, -0.504514f , - 5.275214f, 2.118495f, -0.763347f , - 5.771082f, 2.106874f, -0.591771f , - 5.720299f, 2.108784f, -0.745507f , - 3.958716f, 0.778745f, -0.946930f , - 4.170842f, 0.493820f, -0.855886f , - 3.976004f, 0.366167f, -0.764155f , - 4.896345f, 0.600255f, -1.070497f , - 4.773448f, 0.434643f, -0.976520f , - 4.541320f, 0.494781f, -0.955963f , - 4.666303f, 0.697306f, -1.075668f , - 4.112327f, 0.923733f, -1.043496f , - 4.416126f, 0.815599f, -1.076165f , - 4.309067f, 0.637923f, -0.960925f , - 5.029501f, 0.754586f, -1.088729f , - 4.824494f, 0.862063f, -1.109206f , - 5.017707f, 1.015263f, -1.054951f , - 5.139723f, 0.876416f, -1.025236f , - 5.671640f, 1.310509f, -0.859101f , - 5.554941f, 1.389716f, -0.880974f , - 5.741135f, 1.431624f, -0.829502f , - 5.493356f, 1.278494f, -0.900702f , - 5.549150f, 1.153021f, -0.864667f , - 5.648196f, 0.981139f, -0.791001f , - 5.743652f, 0.844935f, -0.726117f , - 5.846627f, 0.983627f, -0.731031f , - 5.976808f, 0.838755f, -0.645622f , - 5.974405f, 1.120075f, -0.706936f , - 5.845799f, 1.390394f, -0.783823f , - 5.961950f, 1.407775f, -0.312571f , - 5.914549f, 1.438499f, -0.108424f , - 6.021636f, 1.263287f, -0.102033f , - 6.036233f, 1.279674f, -0.328507f , - 6.093942f, 1.071658f, -0.206599f , - 6.091997f, 0.900693f, -0.451104f , - 6.087954f, 1.113147f, -0.394937f , - 6.066162f, 1.115091f, -0.549827f , - 6.036539f, 1.275505f, -0.524477f , - 5.976450f, 1.276897f, -0.681996f , - 5.916991f, 1.421157f, -0.688357f , - 5.971128f, 1.394974f, -0.507947f , - 5.540177f, 1.673662f, -0.863404f , - 5.660381f, 1.555678f, -0.841679f , - 5.472538f, 1.509166f, -0.896431f , - 5.255864f, 1.627524f, -0.962771f , - 5.361722f, 1.420649f, -0.930841f , - 5.325364f, 1.299352f, -0.944003f , - 5.137568f, 1.293420f, -1.007136f , - 5.119498f, 1.504179f, -1.016410f , - 5.166313f, 1.125889f, -0.994762f , - 5.316698f, 1.149555f, -0.947460f , - 5.249742f, 0.994522f, -0.975697f , - 5.378716f, 0.881094f, -0.906269f , - 5.450265f, 1.048061f, -0.881462f , - 5.585794f, 0.884475f, -0.792773f , - 5.546621f, 0.746930f, -0.789238f , - 5.729638f, 0.677878f, -0.702976f , - 6.494336f, 0.092970f, -0.445526f , - 6.395839f, 0.146168f, -0.487447f , - 6.265296f, 0.453368f, -0.513290f , - 6.480483f, 0.234738f, -0.418075f , - 6.223317f, 0.674987f, -0.393326f , - 6.217716f, 0.845227f, -0.120218f , - 6.442832f, 0.486502f, -0.099276f , - 6.455762f, 0.416308f, -0.296208f , - 6.635171f, 0.191206f, -0.261628f , - 6.631640f, 0.271000f, -0.076008f , - 6.807333f, 0.208706f, -0.058722f , - 7.044639f, 0.127605f, -0.072772f , - 6.822291f, 0.084373f, -0.249202f , - 6.937057f, -0.107733f, -0.206040f , - 6.968131f, -0.158414f, -0.047462f , - 6.863282f, -0.259770f, -0.217126f , - 6.863227f, -0.347606f, -0.077447f , - 6.768305f, -0.334723f, -0.249534f , - 5.003373f, -0.233986f, -0.485622f , - 5.177607f, -0.370646f, -0.359693f , - 4.905457f, -0.248264f, -0.370091f , - 6.308758f, -0.938499f, -0.195233f , - 6.162579f, -0.962437f, -0.050387f , - 6.219750f, -0.818197f, -0.261923f , - 6.105978f, -0.669568f, -0.307607f , - 6.106493f, -0.502081f, -0.377356f , - 5.975130f, -0.352036f, -0.418359f , - 5.441650f, -0.043404f, -0.520460f , - 5.711246f, -0.198253f, -0.464977f , - 5.223113f, 0.174461f, -0.692069f , - 5.368849f, 0.188053f, -0.668631f , - 5.285191f, 0.090070f, -0.599870f , - 6.051689f, -0.893199f, -0.103372f , - 5.908451f, -0.757072f, -0.194483f , - 6.634132f, -0.556605f, -0.323687f , - 6.708954f, -0.462302f, -0.273769f , - 6.789495f, -0.543390f, -0.088846f , - 6.753801f, -0.773758f, -0.086947f , - 6.643347f, -0.758299f, -0.262412f , - 6.659260f, -0.972651f, -0.051457f , - 6.536530f, -0.937533f, -0.223703f , - 6.483538f, -0.573587f, -0.400906f , - 6.514324f, -0.769118f, -0.348092f , - 6.383166f, -0.777820f, -0.351523f , - 6.307806f, -0.613098f, -0.397657f , - 5.559211f, 0.063634f, -0.592319f , - 6.033021f, 0.458698f, -0.595812f , - 6.213893f, 0.113930f, -0.537360f , - 6.159642f, -0.024189f, -0.533621f , - 5.937433f, -0.065149f, -0.530241f , - 5.695933f, 0.209690f, -0.643934f , - 5.766847f, 0.428871f, -0.667589f , - 5.302628f, 0.733126f, -0.938069f , - 5.494526f, 0.582089f, -0.798795f , - 5.411745f, 0.417189f, -0.799700f , - 5.214069f, 0.609333f, -0.993523f , - 5.101425f, 0.485529f, -0.989369f , - 5.281720f, 0.315030f, -0.802903f , - 5.145713f, 0.263800f, -0.803087f , - 4.979540f, 0.346287f, -0.915685f , - 4.189191f, 0.029996f, -0.544770f , - 4.405499f, 0.054661f, -0.570874f , - 4.505620f, -0.077075f, -0.434027f , - 4.335400f, 0.165727f, -0.674148f , - 4.114922f, 0.163686f, -0.666636f , - 4.285273f, 0.293151f, -0.774083f , - 4.486618f, 0.315899f, -0.840631f , - 4.704987f, 0.277382f, -0.877877f , - 4.679939f, 0.142457f, -0.797571f , - 4.517654f, 0.173316f, -0.729238f , - 4.587136f, 0.038266f, -0.612698f , - 4.731443f, 0.020714f, -0.699234f , - 4.841794f, -0.102281f, -0.588637f , - 4.716858f, -0.109542f, -0.468924f , - 4.843973f, 0.074504f, -0.767466f , - 4.903198f, 0.204823f, -0.836613f , - 5.080963f, 0.153372f, -0.743401f , - 5.121394f, 0.023036f, -0.644941f , - 4.973191f, -0.048842f, -0.656877f , - 5.141129f, -0.210823f, -0.525769f , - 5.283686f, -0.139162f, -0.522691f , - 5.511547f, -0.306691f, -0.420865f , - 5.359108f, -0.375199f, -0.390579f , - 5.562883f, -0.520184f, -0.299282f , - 5.710089f, -0.453847f, -0.346491f , - 5.872341f, -0.582928f, -0.310032f , - 5.743761f, -0.634347f, -0.247526f , - 5.815899f, -0.780673f, -0.110415f , - 5.656448f, -0.671785f, -0.159761f , - 5.617051f, -0.698283f, -0.043502f , - 5.399789f, -0.587780f, -0.055515f , - 5.463286f, -0.565674f, -0.201695f , - 5.184177f, -0.452696f, -0.221904f , - 5.120363f, -0.486831f, -0.064258f , - 4.769850f, -0.415431f, -0.069353f , - 4.846126f, -0.316477f, -0.231141f , - 4.482103f, -0.198120f, -0.277869f , - 4.406272f, -0.315266f, -0.093376f , - 4.046357f, -0.236326f, -0.115421f , - 4.086014f, -0.088778f, -0.391729f , - 4.240345f, -0.199022f, 0.264289f , - 4.438715f, -0.261648f, 0.223888f , - 4.284085f, -0.135566f, 0.363519f , - 4.062236f, -0.171213f, 0.289869f , - 4.225110f, -0.264040f, 0.137239f , - 4.976593f, -0.420095f, 0.179163f , - 5.148806f, -0.473793f, 0.176293f , - 5.018350f, -0.385098f, 0.255857f , - 4.805220f, -0.370380f, 0.183904f , - 4.949652f, -0.450844f, 0.097255f , - 5.527715f, -0.630721f, 0.148627f , - 5.630956f, -0.687675f, 0.134112f , - 5.565908f, -0.618871f, 0.212432f , - 5.424744f, -0.579348f, 0.161824f , - 5.514725f, -0.643048f, 0.082786f , - 5.860065f, -0.840564f, 0.063387f , - 5.891222f, -0.846694f, 0.092222f , - 5.792674f, -0.790204f, 0.088096f , - 5.866161f, -0.852964f, 0.015712f , - 5.708567f, -0.550049f, 0.330870f , - 5.626966f, -0.488616f, 0.355972f , - 5.655228f, -0.578308f, 0.302738f , - 5.805809f, -0.612046f, 0.311962f , - 5.787647f, -0.521313f, 0.355668f , - 5.318226f, -0.264939f, 0.494860f , - 5.210274f, -0.179951f, 0.558713f , - 5.248755f, -0.294278f, 0.487613f , - 5.430707f, -0.345135f, 0.438240f , - 5.397171f, -0.224610f, 0.499547f , - 4.976962f, 0.082751f, 0.771915f , - 4.994501f, 0.167497f, 0.819778f , - 4.880657f, 0.132803f, 0.829654f , - 4.912252f, 0.021866f, 0.749670f , - 5.040389f, -0.007010f, 0.696367f , - 5.081504f, 0.090466f, 0.730867f , - 4.711264f, -0.042762f, 0.616415f , - 4.661244f, 0.025428f, 0.685059f , - 4.645610f, -0.035081f, 0.571723f , - 4.781493f, -0.109877f, 0.558883f , - 4.779911f, -0.040308f, 0.674130f , - 4.585539f, 0.235768f, 0.850987f , - 4.595365f, 0.301902f, 0.897009f , - 4.494823f, 0.242280f, 0.816657f , - 4.598038f, 0.163150f, 0.800307f , - 4.685109f, 0.208352f, 0.869361f , - 4.226521f, 0.199014f, 0.731440f , - 4.316949f, 0.226154f, 0.757939f , - 4.183139f, 0.236357f, 0.754760f , - 4.221457f, 0.151025f, 0.690077f , - 4.360845f, -0.000476f, 0.542870f , - 4.341715f, -0.032365f, 0.506927f , - 4.469965f, -0.012404f, 0.534896f , - 4.286893f, 0.052106f, 0.596720f , - 5.133508f, 0.365824f, 0.926738f , - 5.196199f, 0.403455f, 0.933340f , - 5.038720f, 0.419082f, 0.990353f , - 5.071199f, 0.306496f, 0.895364f , - 5.209039f, 0.293369f, 0.840531f , - 5.350015f, 0.577186f, 0.917620f , - 5.390765f, 0.659450f, 0.902832f , - 5.260954f, 0.667894f, 0.998686f , - 5.305307f, 0.514986f, 0.931823f , - 5.456587f, 0.495703f, 0.832151f , - 5.952336f, 0.207748f, 0.624356f , - 6.051035f, -0.013296f, 0.574193f , - 6.136258f, 0.064453f, 0.583952f , - 6.093668f, 0.274989f, 0.601893f , - 5.909991f, 0.417224f, 0.656633f , - 5.759337f, 0.303203f, 0.684647f , - 5.842959f, 0.089155f, 0.614117f , - 5.587502f, -0.076736f, 0.545630f , - 5.560471f, -0.131005f, 0.515976f , - 5.654927f, -0.059073f, 0.562402f , - 5.498655f, 0.011810f, 0.585142f , - 6.247064f, -0.339113f, 0.451375f , - 6.235770f, -0.280383f, 0.471437f , - 6.044518f, -0.429824f, 0.422687f , - 6.306938f, -0.370959f, 0.447948f , - 6.427977f, -0.681389f, 0.427807f , - 6.448363f, -0.775683f, 0.388602f , - 6.497189f, -0.681145f, 0.411487f , - 6.395537f, -0.579202f, 0.443245f , - 6.359509f, -0.693755f, 0.416646f , - 6.407838f, -1.020449f, 0.169389f , - 6.463156f, -1.038641f, 0.144447f , - 6.423961f, -0.945524f, 0.251762f , - 6.346848f, -1.033859f, 0.128922f , - 6.529842f, -1.034884f, 0.115634f , - 6.613809f, -0.959280f, 0.166660f , - 6.539710f, -1.056481f, 0.054061f , - 6.728163f, -0.641695f, 0.226563f , - 6.758153f, -0.526623f, 0.215480f , - 6.682763f, -0.529001f, 0.317024f , - 6.654020f, -0.664348f, 0.311120f , - 6.707250f, -0.762650f, 0.213917f , - 6.770227f, -0.657625f, 0.124949f , - 6.064276f, -0.795037f, 0.242659f , - 6.170745f, -0.749523f, 0.316072f , - 6.000674f, -0.725198f, 0.276659f , - 5.982319f, -0.829826f, 0.179379f , - 6.128450f, -0.858485f, 0.214670f , - 5.300044f, 0.157530f, 0.675873f , - 5.245008f, 0.131905f, 0.673456f , - 5.346236f, 0.135095f, 0.652101f , - 5.292852f, 0.192826f, 0.716110f , - 6.242599f, -0.961059f, 0.121007f , - 6.280687f, -0.973926f, 0.117693f , - 6.217445f, -0.946383f, 0.157569f , - 6.210069f, -0.971025f, 0.057921f , - 6.313160f, -1.022915f, 0.095382f , - 6.314200f, -1.042007f, 0.013876f , - 5.047621f, -0.299406f, 0.430933f , - 4.944099f, -0.235471f, 0.466493f , - 5.047727f, -0.321437f, 0.383686f , - 5.109134f, -0.309105f, 0.457336f , - 6.842516f, -0.323066f, 0.201330f , - 6.875552f, -0.294343f, 0.177405f , - 6.805756f, -0.294061f, 0.273488f , - 6.821221f, -0.361510f, 0.193912f , - 7.017323f, -0.025161f, 0.132450f , - 7.011500f, 0.019705f, 0.172042f , - 6.962752f, -0.143049f, 0.150850f , - 7.031726f, -0.009179f, 0.079271f , - 6.970848f, 0.054480f, 0.209990f , - 6.879455f, -0.017453f, 0.278773f , - 6.955697f, 0.123035f, 0.192923f , - 6.914572f, 0.165222f, 0.158164f , - 6.816041f, 0.170064f, 0.183659f , - 6.938782f, 0.190250f, 0.087708f , - 6.314290f, 0.643104f, 0.259626f , - 6.217627f, 0.774980f, 0.295278f , - 6.335321f, 0.554842f, 0.371787f , - 6.444435f, 0.470968f, 0.234940f , - 6.324431f, 0.668256f, 0.139042f , - 6.393013f, 0.298613f, 0.509932f , - 6.456949f, 0.137044f, 0.493826f , - 6.487412f, 0.170297f, 0.469936f , - 6.378385f, 0.377554f, 0.492425f , - 6.320150f, 0.313808f, 0.541994f , - 5.824450f, 0.776768f, 0.718851f , - 5.728460f, 0.762783f, 0.746343f , - 5.849524f, 0.718944f, 0.704259f , - 5.854378f, 0.830769f, 0.720747f , - 5.481714f, 0.897700f, 0.878050f , - 5.414250f, 0.968009f, 0.924710f , - 5.458230f, 0.815378f, 0.881338f , - 5.565425f, 0.821953f, 0.822199f , - 5.515584f, 0.963318f, 0.869466f , - 5.247341f, 1.094697f, 1.004042f , - 5.199012f, 1.053618f, 1.020567f , - 5.294712f, 1.068266f, 0.989124f , - 5.242848f, 1.154559f, 1.001404f , - 5.214813f, 1.394358f, 1.006216f , - 5.334493f, 1.366856f, 0.971841f , - 5.242869f, 1.461317f, 0.998151f , - 5.119555f, 1.401978f, 1.046379f , - 5.231915f, 1.300628f, 1.000925f , - 5.450085f, 1.598130f, 0.931285f , - 5.594906f, 1.613759f, 0.886188f , - 5.391997f, 1.654248f, 0.944568f , - 5.364664f, 1.565154f, 0.959514f , - 5.557338f, 1.535794f, 0.903867f , - 5.979266f, 1.350668f, 0.641193f , - 6.015608f, 1.277907f, 0.641320f , - 6.001807f, 1.338163f, 0.548159f , - 5.949938f, 1.409144f, 0.635701f , - 5.948522f, 1.347405f, 0.715731f , - 6.022947f, 1.019583f, 0.665155f , - 6.042510f, 0.991332f, 0.617393f , - 6.034344f, 1.121679f, 0.658067f , - 5.986839f, 0.991556f, 0.707019f , - 6.090182f, 1.029858f, 0.379559f , - 6.085008f, 1.111491f, 0.323693f , - 6.085432f, 1.005911f, 0.472325f , - 6.101574f, 0.976856f, 0.354761f , - 5.983277f, 1.347463f, 0.232518f , - 5.936976f, 1.424981f, 0.247466f , - 5.998451f, 1.343851f, 0.343657f , - 6.027135f, 1.274370f, 0.247968f , - 5.966749f, 1.356938f, 0.133074f , - 5.944093f, 0.981775f, 0.730805f , - 5.907863f, 0.920852f, 0.727393f , - 5.906204f, 1.054284f, 0.761165f , - 5.861445f, 0.881043f, 0.730948f , - 5.794267f, 0.917003f, 0.760499f , - 5.669003f, 1.122429f, 0.854031f , - 5.660153f, 1.187667f, 0.873248f , - 5.595111f, 1.069250f, 0.861662f , - 5.700558f, 1.034487f, 0.821406f , - 5.773170f, 1.135639f, 0.827430f , - 5.571598f, 1.315565f, 0.915602f , - 5.508031f, 1.332192f, 0.928203f , - 5.589888f, 1.280385f, 0.910619f , - 5.620294f, 1.345608f, 0.901921f , - 5.671717f, 1.381366f, 0.885797f , - 5.728396f, 1.364259f, 0.871908f , - 5.656537f, 1.421891f, 0.885087f , - 4.985360f, 0.885811f, 1.109150f , - 4.922390f, 0.812075f, 1.131650f , - 5.083056f, 0.818943f, 1.093126f , - 5.073188f, 0.948481f, 1.072087f , - 4.920831f, 0.940036f, 1.118954f , - 4.255872f, 0.811456f, 1.056107f , - 4.188424f, 0.780747f, 1.022401f , - 4.373532f, 0.722295f, 1.049832f , - 4.255585f, 0.891741f, 1.097270f , - 4.710067f, 0.558700f, 1.060645f , - 4.829288f, 0.517901f, 1.059912f , - 4.781749f, 0.648315f, 1.108286f , - 4.598615f, 0.597280f, 1.051991f , - 4.658179f, 0.464171f, 1.002446f , - 4.025856f, 0.567815f, 0.882293f , - 3.944844f, 0.582959f, 0.886995f , - 4.083306f, 0.414694f, 0.828259f , - 4.072985f, 0.655673f, 0.933903f , - 5.625454f, 2.098108f, 0.664742f , - 5.664105f, 2.090404f, 0.578471f , - 5.537058f, 2.099988f, 0.646303f , - 5.610177f, 2.090028f, 0.760695f , - 5.741541f, 2.116260f, 0.701376f , - 5.098030f, 2.180384f, 0.698464f , - 4.915140f, 2.239027f, 0.763440f , - 5.120131f, 2.141893f, 0.829479f , - 5.273013f, 2.140668f, 0.669396f , - 5.080374f, 2.203951f, 0.572680f , - 5.507857f, 1.938701f, 0.147336f , - 5.609499f, 1.839172f, 0.155302f , - 5.481501f, 1.928649f, 0.084088f , - 5.418130f, 2.029980f, 0.165590f , - 5.574058f, 1.941178f, 0.225492f , - 5.211490f, 1.909892f, 0.981498f , - 5.177836f, 2.008146f, 0.967214f , - 5.052853f, 1.922693f, 1.040516f , - 5.265608f, 1.812644f, 0.971661f , - 5.368309f, 1.914317f, 0.935011f , - 4.804447f, 1.472997f, 1.312680f , - 4.705023f, 1.554145f, 1.418007f , - 4.763161f, 1.409715f, 1.398700f , - 4.840918f, 1.329590f, 1.289651f , - 4.907992f, 1.443027f, 1.203787f , - 4.763126f, 1.610828f, 1.318474f , - 4.761423f, 1.043007f, 1.264590f , - 4.706771f, 1.053641f, 1.361129f , - 4.657486f, 0.986164f, 1.284928f , - 4.799860f, 1.017854f, 1.201265f , - 4.816619f, 1.115153f, 1.266552f , - 4.644890f, 1.090246f, 1.605157f , - 4.600842f, 1.075767f, 1.620699f , - 4.652927f, 1.079820f, 1.534177f , - 4.669533f, 1.129693f, 1.628247f , - 4.660648f, 1.341115f, 1.667321f , - 4.624963f, 1.341179f, 1.761285f , - 4.683423f, 1.260492f, 1.651147f , - 4.693406f, 1.344718f, 1.572601f , - 4.627789f, 1.419343f, 1.681821f , - 4.491249f, 1.676901f, 1.720616f , - 4.550822f, 1.657701f, 1.617974f , - 4.440621f, 1.766306f, 1.724206f , - 4.449285f, 1.673317f, 1.809939f , - 4.543343f, 1.587896f, 1.707886f , - 4.268752f, 2.059264f, 1.744065f , - 4.216459f, 2.159753f, 1.744598f , - 4.205775f, 2.059375f, 1.838375f , - 4.329477f, 1.956922f, 1.736586f , - 4.343832f, 2.048404f, 1.643125f , - 4.084691f, 2.509477f, 1.728158f , - 4.067038f, 2.615016f, 1.694716f , - 4.016480f, 2.541440f, 1.815500f , - 4.126858f, 2.382308f, 1.733960f , - 4.187082f, 2.433941f, 1.619038f , - 3.997608f, 2.919502f, 1.562537f , - 3.974790f, 3.013724f, 1.501779f , - 3.918623f, 3.006305f, 1.650660f , - 4.019643f, 2.824624f, 1.615117f , - 4.081383f, 2.840812f, 1.458473f , - 3.924516f, 3.244653f, 1.287843f , - 3.917490f, 3.296718f, 1.201420f , - 3.857472f, 3.326670f, 1.382205f , - 3.940148f, 3.172811f, 1.364144f , - 4.016019f, 3.123893f, 1.205960f , - 3.863416f, 3.470166f, 0.890139f , - 3.848907f, 3.506474f, 0.760020f , - 3.807433f, 3.591246f, 0.939117f , - 3.886955f, 3.408831f, 1.001379f , - 3.938267f, 3.320342f, 0.812260f , - 3.814914f, 3.579076f, 0.324538f , - 3.813391f, 3.576526f, 0.171192f , - 3.759698f, 3.727973f, 0.344193f , - 3.823976f, 3.561820f, 0.479843f , - 3.883339f, 3.404751f, 0.321169f , - 4.236374f, 2.867307f, 0.410120f , - 4.413595f, 2.665276f, 0.349575f , - 4.233634f, 2.864482f, 0.215056f , - 4.090267f, 3.054804f, 0.365032f , - 4.120264f, 3.025741f, 0.575946f , - 4.286176f, 2.808434f, 0.578016f , - 4.389850f, 2.608345f, 1.037632f , - 4.242423f, 2.813320f, 1.086618f , - 4.273145f, 2.689326f, 1.201498f , - 4.441959f, 2.487833f, 1.152390f , - 4.555299f, 2.458945f, 0.935261f , - 4.361118f, 2.680348f, 0.895029f , - 4.578647f, 2.083829f, 1.332303f , - 4.731317f, 2.009566f, 1.219668f , - 4.537971f, 2.221041f, 1.297455f , - 4.427462f, 2.225272f, 1.427529f , - 4.494610f, 2.062289f, 1.440978f , - 4.648559f, 1.918885f, 1.328675f , - 4.969134f, 2.274104f, 0.233062f , - 5.145488f, 2.199407f, 0.203543f , - 4.933844f, 2.290055f, 0.122041f , - 4.783548f, 2.364747f, 0.256561f , - 5.015544f, 2.251426f, 0.334474f , - 5.787404f, 1.668480f, 0.183228f , - 5.822680f, 1.655977f, 0.230379f , - 5.771851f, 1.626323f, 0.103654f , - 5.759299f, 1.705528f, 0.182994f , - 5.826548f, 1.690034f, 0.822406f , - 5.787752f, 1.741141f, 0.837700f , - 5.774945f, 1.662240f, 0.834248f , - 5.867225f, 1.651647f, 0.796502f , - 5.892943f, 1.736062f, 0.813489f , - 5.660006f, 1.943580f, 0.874016f , - 5.629216f, 2.012289f, 0.866379f , - 5.592031f, 1.929895f, 0.881777f , - 5.705047f, 1.866634f, 0.863500f , - 5.757418f, 1.974249f, 0.866907f , - 5.750314f, 1.991221f, 0.414037f , - 5.705851f, 1.968045f, 0.362903f , - 5.730216f, 2.033167f, 0.452648f , - 5.819733f, 1.987375f, 0.429724f , - 5.949999f, 1.569868f, 0.612223f , - 5.928656f, 1.591686f, 0.691298f , - 5.934597f, 1.521079f, 0.622141f , - 5.963057f, 1.568286f, 0.529279f , - 6.009645f, 1.640730f, 0.603639f , - 6.421364f, 2.063167f, 0.775776f , - 6.168714f, 1.909094f, 0.791491f , - 6.465112f, 2.062320f, 0.752676f , - 6.429911f, 2.103872f, 0.786221f , - 6.397022f, 2.262803f, 0.796339f , - 6.402082f, 2.303755f, 0.778559f , - 6.135796f, 2.139781f, 0.826895f , - 6.437086f, 2.227039f, 0.795273f , - 6.385387f, 2.310337f, 0.742656f , - 6.423939f, 2.307992f, 0.693201f , - 6.120286f, 2.224004f, 0.732039f , - 6.388140f, 2.123779f, 0.536020f , - 6.462032f, 2.098500f, 0.538967f , - 6.187326f, 1.974095f, 0.472942f , - 6.142025f, 2.072110f, 0.501679f , - 6.414055f, 2.200605f, 0.574506f , - 5.903301f, 1.664420f, 0.366217f , - 5.933744f, 1.735049f, 0.373544f , - 5.939087f, 1.621992f, 0.407778f , - 5.878470f, 1.647773f, 0.337408f , - 5.856700f, 1.624751f, 0.282822f , - 5.872524f, 1.565627f, 0.272074f , - 4.298954f, 1.001083f, 1.227980f , - 4.281353f, 0.986020f, 1.185674f , - 4.438500f, 0.963881f, 1.265500f , - 4.268743f, 1.029646f, 1.267700f , - 3.920238f, 1.502663f, 1.624174f , - 4.016574f, 1.597111f, 1.789979f , - 3.855655f, 1.628922f, 1.691802f , - 3.813650f, 1.457308f, 1.492739f , - 3.997241f, 1.399853f, 1.580842f , - 3.716023f, 1.940767f, 1.738338f , - 3.685668f, 2.035754f, 1.722857f , - 3.595701f, 1.893550f, 1.632602f , - 3.754031f, 1.844906f, 1.745826f , - 3.821588f, 1.989102f, 1.851801f , - 3.503378f, 2.712683f, 1.498492f , - 3.494521f, 2.778251f, 1.435932f , - 3.412251f, 2.528652f, 1.336874f , - 3.508969f, 2.612877f, 1.541321f , - 3.568476f, 2.863049f, 1.655559f , - 3.473908f, 3.009130f, 1.237240f , - 3.460353f, 3.047334f, 1.143439f , - 3.393183f, 2.765316f, 1.085136f , - 3.479407f, 2.924640f, 1.304465f , - 3.542220f, 3.207367f, 1.389591f , - 3.453170f, 3.199157f, 0.836649f , - 3.448576f, 3.218511f, 0.709761f , - 3.377406f, 2.917125f, 0.739210f , - 3.450398f, 3.143936f, 0.944354f , - 3.516575f, 3.456321f, 0.928992f , - 3.418871f, 3.321940f, 0.310958f , - 3.400251f, 3.319478f, 0.161704f , - 3.335389f, 3.032413f, 0.276946f , - 3.431028f, 3.278667f, 0.447138f , - 3.481825f, 3.581521f, 0.341102f , - 3.590790f, 2.351957f, 1.671509f , - 3.666166f, 2.422099f, 1.797545f , - 3.551592f, 2.431402f, 1.625152f , - 3.488377f, 2.238645f, 1.527089f , - 3.620293f, 2.235054f, 1.683884f , - 4.277409f, 1.154156f, 1.544221f , - 4.258663f, 1.106636f, 1.429497f , - 4.420116f, 1.096756f, 1.591072f , - 4.360798f, 1.192959f, 1.704148f , - 4.184283f, 1.219980f, 1.543386f , - 6.553776f, 2.048271f, 0.626732f , - 6.318590f, 1.884147f, 0.611669f , - 6.566823f, 2.065358f, 0.591325f , - 6.557728f, 2.065412f, 0.670090f , - 1.942574f, 2.919558f, 0.457096f , - 2.235829f, 2.828861f, 0.446347f , - 1.979388f, 2.988794f, 0.238021f , - 1.628619f, 3.015476f, 0.467377f , - 1.909402f, 2.801327f, 0.681106f , - 0.468885f, 3.354543f, 0.430550f , - 0.884546f, 3.235625f, 0.452744f , - 0.466283f, 3.439552f, 0.223387f , - 0.016563f, 3.474120f, 0.406480f , - 0.441620f, 3.233010f, 0.639112f , - -1.140818f, 3.706099f, 0.343773f , - -0.785416f, 3.648833f, 0.363141f , - -1.149957f, 3.776572f, 0.180048f , - -1.482844f, 3.743961f, 0.328431f , - -1.132920f, 3.593517f, 0.519006f , - -2.313254f, 3.739231f, 0.290840f , - -2.068209f, 3.759797f, 0.302325f , - -2.330246f, 3.803472f, 0.153942f , - -2.561171f, 3.691091f, 0.283412f , - -2.284671f, 3.640995f, 0.436448f , - -3.399700f, 3.396337f, 0.234211f , - -3.103209f, 3.518502f, 0.256630f , - -3.444040f, 3.434852f, 0.127160f , - -3.712423f, 3.237889f, 0.222351f , - -3.317030f, 3.312127f, 0.379368f , - -4.718667f, 2.627829f, 0.154907f , - -4.372642f, 2.857060f, 0.179374f , - -4.778538f, 2.692736f, 0.084183f , - -5.077625f, 2.411355f, 0.122939f , - -4.654264f, 2.548061f, 0.224977f , - -6.146947f, 1.932001f, 0.068170f , - -5.792061f, 2.061770f, 0.075363f , - -6.176222f, 1.991932f, 0.011835f , - -6.510658f, 1.824783f, 0.067128f , - -6.102179f, 1.814101f, 0.124022f , - -7.581445f, 1.599870f, 0.084635f , - -7.229005f, 1.658714f, 0.073724f , - -7.605035f, 1.645871f, 0.010609f , - -7.949637f, 1.551242f, 0.094236f , - -7.553327f, 1.508630f, 0.150841f , - -9.044850f, 1.438039f, 0.086754f , - -8.680923f, 1.470164f, 0.095170f , - -9.064447f, 1.469806f, 0.010377f , - -9.391199f, 1.398297f, 0.077791f , - -9.020905f, 1.372367f, 0.152720f , - -10.057396f, 1.144435f, 0.047510f , - -9.888027f, 1.259915f, 0.066341f , - -10.084199f, 1.149519f, 0.013388f , - -10.046369f, 1.073207f, 0.061416f , - 1.804230f, 2.272517f, 1.286114f , - 2.100453f, 2.221990f, 1.262560f , - 1.838660f, 2.480112f, 1.093233f , - 1.494875f, 2.349305f, 1.297571f , - 1.767656f, 2.049643f, 1.456450f , - 0.444336f, 2.693651f, 1.240167f , - 0.818677f, 2.552134f, 1.280599f , - 0.438753f, 2.894475f, 1.048900f , - 0.091310f, 2.791568f, 1.226098f , - 0.474744f, 2.432329f, 1.443731f , - -0.958576f, 3.028370f, 1.156337f , - -0.613409f, 2.965290f, 1.179450f , - -1.038528f, 3.253992f, 0.925485f , - -1.274420f, 3.079778f, 1.128051f , - -0.873735f, 2.772139f, 1.379632f , - -1.986417f, 3.227601f, 0.955340f , - -1.792787f, 3.187126f, 1.019348f , - -2.123281f, 3.392982f, 0.760330f , - -2.076479f, 3.156045f, 1.002926f , - -2.743414f, 2.814898f, 1.121168f , - -2.457638f, 2.946620f, 1.087307f , - -2.994761f, 3.027278f, 0.814412f , - -3.083028f, 2.701798f, 1.105002f , - -2.520352f, 2.588306f, 1.384900f , - -3.803275f, 2.315169f, 1.072602f , - -3.609388f, 2.447482f, 1.085330f , - -3.996436f, 2.343493f, 0.893337f , - -3.805716f, 2.116922f, 1.225635f , - -4.543111f, 2.267507f, 0.506773f , - -4.368028f, 2.313397f, 0.614724f , - -4.569728f, 2.359629f, 0.404714f , - -4.723027f, 2.066505f, 0.538881f , - -5.022689f, 1.731091f, 0.573822f , - -4.964220f, 1.803309f, 0.565901f , - -5.195258f, 1.702092f, 0.467004f , - -4.982205f, 1.654756f, 0.645899f , - -6.009877f, 1.492690f, 0.304193f , - -5.685774f, 1.583488f, 0.336080f , - -6.034914f, 1.593455f, 0.237056f , - -6.379871f, 1.395379f, 0.286674f , - -6.005401f, 1.379078f, 0.368058f , - -7.472871f, 1.248089f, 0.274375f , - -7.112772f, 1.274159f, 0.271689f , - -7.500615f, 1.332833f, 0.238990f , - -7.856287f, 1.232358f, 0.276206f , - -7.473108f, 1.161075f, 0.305037f , - -8.955361f, 1.171073f, 0.231674f , - -8.593510f, 1.193440f, 0.254917f , - -8.974131f, 1.238729f, 0.218108f , - -9.297959f, 1.134512f, 0.192669f , - -8.924916f, 1.103276f, 0.240963f , - -9.993049f, 1.003030f, 0.052020f , - -9.817541f, 1.036191f, 0.082274f , - -10.013889f, 0.956479f, 0.014556f , - 2.810134f, 1.318240f, 1.514578f , - 2.719226f, 1.296038f, 1.565499f , - 2.928935f, 1.189125f, 1.486638f , - 2.826087f, 1.371110f, 1.494532f , - 1.601844f, 1.359179f, 1.801106f , - 1.659276f, 1.581936f, 1.718266f , - 1.386323f, 1.374079f, 1.817366f , - 1.494817f, 1.070825f, 1.874347f , - 1.789695f, 1.254745f, 1.805691f , - 1.071903f, 1.347368f, 1.813915f , - 1.126749f, 1.365309f, 1.822576f , - 1.012828f, 1.401004f, 1.792573f , - 1.046266f, 1.127905f, 1.841213f , - 1.192249f, 0.317457f, 1.856802f , - 1.295688f, 0.554761f, 1.897631f , - 1.096609f, 0.331287f, 1.834781f , - 1.090143f, 0.067789f, 1.803185f , - 1.289365f, 0.262604f, 1.872727f , - 0.868432f, 0.412542f, 1.764003f , - 0.935429f, 0.385487f, 1.789376f , - 0.945532f, 0.674811f, 1.813882f , - 0.781189f, 0.447764f, 1.744025f , - 0.772324f, 0.166968f, 1.699495f , - 0.231780f, 0.565952f, 1.766600f , - 0.466709f, 0.520425f, 1.744413f , - 0.317654f, 0.852138f, 1.814641f , - -0.011202f, 0.593101f, 1.785976f , - 0.160954f, 0.285526f, 1.699342f , - -0.796432f, 1.911885f, 1.802675f , - -0.793591f, 1.602192f, 1.862775f , - -0.452001f, 1.879349f, 1.806333f , - -0.789520f, 2.214674f, 1.702254f , - -1.114879f, 1.914435f, 1.801218f , - 0.450895f, 1.687866f, 1.782721f , - 0.169685f, 1.763240f, 1.796914f , - 0.425806f, 1.412028f, 1.824141f , - 0.705766f, 1.580460f, 1.775129f , - 0.475926f, 1.932478f, 1.710286f , - -0.764848f, -0.124779f, 1.536562f , - -0.811918f, -0.012817f, 1.594834f , - -0.818015f, -0.168021f, 1.490385f , - -0.568855f, -0.189527f, 1.513329f , - -0.045029f, -0.193949f, 1.523901f , - 0.023587f, -0.231314f, 1.495271f , - 0.012160f, -0.092540f, 1.578550f , - -0.224432f, -0.222580f, 1.507181f , - -1.027847f, -0.436941f, 1.188199f , - -0.732909f, -0.528415f, 1.137913f , - -0.948430f, -0.326081f, 1.313714f , - -1.255823f, -0.372128f, 1.233865f , - -1.045190f, -0.583956f, 1.021222f , - -0.001850f, -0.628650f, 1.105585f , - -0.228935f, -0.620115f, 1.099236f , - -0.037940f, -0.703613f, 0.989445f , - 0.194466f, -0.639259f, 1.119591f , - 0.054751f, -0.557139f, 1.202031f , - 0.327301f, -0.323494f, 1.453106f , - 0.231568f, -0.291313f, 1.464941f , - 0.233597f, -0.400430f, 1.380900f , - 0.500349f, -0.347921f, 1.477241f , - 0.517031f, -0.198437f, 1.548760f , - 3.081374f, 0.702091f, 1.403760f , - 3.138451f, 0.677126f, 1.354521f , - 3.058101f, 0.896768f, 1.433953f , - 3.028264f, 0.613416f, 1.440593f , - 2.700326f, 0.204599f, 1.646934f , - 2.616436f, 0.386695f, 1.711726f , - 2.547353f, 0.022724f, 1.728365f , - 2.772461f, -0.003974f, 1.559092f , - 2.839185f, 0.349096f, 1.559362f , - 2.889414f, -0.408959f, 1.205984f , - 3.019428f, -0.289069f, 1.123071f , - 2.866246f, -0.305277f, 1.339779f , - 2.751060f, -0.538586f, 1.288489f , - 2.900035f, -0.497697f, 1.054835f , - 2.265559f, -0.882953f, 1.481704f , - 2.438211f, -0.776189f, 1.426291f , - 2.238389f, -0.791908f, 1.602042f , - 2.082783f, -0.991572f, 1.532328f , - 2.276964f, -0.967209f, 1.332571f , - 2.068743f, -0.415033f, 1.864947f , - 2.136876f, -0.561517f, 1.793670f , - 2.226775f, -0.285791f, 1.838481f , - 1.961492f, -0.293432f, 1.918086f , - 1.883988f, -0.563911f, 1.885023f , - 1.628129f, 0.053732f, 1.941129f , - 1.745023f, -0.057744f, 1.955956f , - 1.777485f, 0.246335f, 1.951859f , - 1.507848f, 0.133147f, 1.915864f , - 1.486650f, -0.145869f, 1.920715f , - 2.281345f, 0.909301f, 1.795318f , - 2.103851f, 0.673193f, 1.880048f , - 2.405755f, 0.740727f, 1.787902f , - 2.448631f, 1.093392f, 1.707759f , - 2.135415f, 1.036082f, 1.800300f , - 2.888781f, -0.745853f, 0.494837f , - 3.020228f, -0.636843f, 0.437523f , - 2.902035f, -0.665634f, 0.692874f , - 2.772190f, -0.851606f, 0.517548f , - 2.887427f, -0.803190f, 0.249124f , - 2.318644f, -1.159662f, 0.633657f , - 2.487809f, -1.057739f, 0.590012f , - 2.307432f, -1.103676f, 0.905271f , - 2.167633f, -1.247417f, 0.642297f , - 2.342120f, -1.192241f, 0.321587f , - 1.808884f, -1.433672f, 0.555910f , - 1.904709f, -1.388268f, 0.594928f , - 1.771780f, -1.447148f, 0.741731f , - 1.679102f, -1.480059f, 0.441098f , - 1.801510f, -1.447145f, 0.274219f , - 1.218777f, -1.487203f, 0.302339f , - 1.387064f, -1.503757f, 0.324817f , - 1.207036f, -1.493049f, 0.428782f , - 1.031925f, -1.449553f, 0.291418f , - 1.211080f, -1.487256f, 0.157938f , - 0.528337f, -1.197415f, 0.396128f , - 0.694975f, -1.310678f, 0.334317f , - 0.563376f, -1.162705f, 0.547518f , - 0.396176f, -1.119720f, 0.427853f , - 0.530952f, -1.267626f, 0.200837f , - -0.119926f, -0.972845f, 0.469819f , - 0.063639f, -1.002606f, 0.467392f , - -0.100140f, -0.876264f, 0.669581f , - -0.341780f, -0.960291f, 0.451746f , - -0.145970f, -1.053003f, 0.240375f , - -1.209211f, -0.931980f, 0.427931f , - -0.880020f, -0.937018f, 0.437765f , - -1.141655f, -0.825034f, 0.648701f , - -1.506346f, -0.913420f, 0.459926f , - -1.239998f, -0.997781f, 0.226394f , - -2.150996f, -0.854237f, 0.641719f , - -1.975439f, -0.874103f, 0.567452f , - -1.995594f, -0.743898f, 0.861110f , - -2.260361f, -0.828250f, 0.762668f , - -2.282532f, -0.924491f, 0.473233f , - -2.562316f, -1.006915f, 0.170096f , - -2.499444f, -1.002167f, 0.233178f , - -2.719326f, -0.972831f, 0.207045f , - -2.534217f, -1.014681f, 0.093864f , - -4.253864f, -0.272652f, 0.543595f , - -4.182242f, -0.350430f, 0.611999f , - -4.323358f, -0.183949f, 0.588272f , - -4.241615f, -0.288477f, 0.469898f , - -4.100720f, -0.417828f, 0.212574f , - -4.162736f, -0.363208f, 0.300376f , - -4.256860f, -0.303980f, 0.186410f , - -4.034097f, -0.475547f, 0.112429f , - -3.930115f, -0.546275f, 0.221118f , - -4.798970f, -0.087818f, 0.070656f , - -4.624057f, -0.132119f, 0.113226f , - -4.885232f, -0.007729f, 0.128983f , - -4.809014f, -0.104023f, 0.011521f , - -4.934898f, 0.364672f, 0.441478f , - -4.936201f, 0.227783f, 0.324083f , - -4.787697f, 0.348113f, 0.529163f , - -4.941006f, 0.530990f, 0.553391f , - -5.123904f, 0.378331f, 0.376864f , - -4.405619f, 0.149788f, 0.871930f , - -4.519716f, 0.233620f, 0.742242f , - -4.397707f, 0.022215f, 0.748766f , - -4.300806f, 0.019475f, 0.996162f , - -4.389224f, 0.243254f, 0.990815f , - -4.325236f, 0.466852f, 1.233056f , - -4.215395f, 0.421275f, 1.346916f , - -4.372804f, 0.582712f, 1.204046f , - -4.348656f, 0.407389f, 1.175407f , - -4.469232f, 1.066780f, 1.105228f , - -4.446947f, 0.876241f, 1.137696f , - -4.386241f, 1.135997f, 1.181514f , - -4.551299f, 1.123566f, 1.014064f , - -3.320922f, -0.814798f, 0.257502f , - -3.090870f, -0.878833f, 0.246514f , - -3.343843f, -0.806851f, 0.364653f , - -3.540370f, -0.743625f, 0.242022f , - -3.290271f, -0.833186f, 0.133333f , - -1.849196f, -0.248472f, 1.495173f , - -1.849756f, -0.450567f, 1.275366f , - -1.675542f, -0.280558f, 1.383125f , - -1.867237f, -0.090938f, 1.649664f , - -1.998066f, -0.284126f, 1.566572f , - -1.918337f, 0.253897f, 1.912983f , - -1.906217f, 0.169573f, 1.868165f , - -1.832189f, 0.321496f, 1.888709f , - -2.073625f, 0.319475f, 1.978002f , - -1.633628f, 0.668486f, 1.876391f , - -1.688581f, 0.525338f, 1.868976f , - -1.519237f, 0.683147f, 1.843195f , - -1.705877f, 0.823024f, 1.921762f , - -2.726356f, 0.950497f, 2.010312f , - -2.772077f, 0.654807f, 2.061272f , - -2.465620f, 0.644923f, 2.026852f , - -2.604569f, 1.118479f, 1.973889f , - -2.957410f, 1.122682f, 1.976610f , - -3.767488f, 1.359689f, 1.599388f , - -3.764615f, 1.032851f, 1.691601f , - -3.489145f, 1.338624f, 1.769422f , - -3.788144f, 1.630249f, 1.491440f , - -4.038111f, 1.278998f, 1.429164f , - -3.746711f, 0.325536f, 1.822290f , - -3.754047f, 0.525005f, 1.799599f , - -3.930840f, 0.349959f, 1.636215f , - -3.758567f, 0.146040f, 1.823577f , - -3.563979f, 0.290558f, 1.979422f , - -3.324686f, -0.559530f, 2.286805f , - -3.407570f, -0.491767f, 2.264310f , - -3.316069f, -0.714032f, 2.305999f , - -3.283845f, -0.542736f, 2.278565f , - -3.099634f, -0.510543f, 2.255061f , - -3.166043f, -0.520046f, 2.262312f , - -2.996899f, -0.618596f, 2.244580f , - -3.084486f, -0.420165f, 2.242155f , - -2.365400f, -0.480935f, 1.797460f , - -2.260043f, -0.397478f, 1.726487f , - -2.476258f, -0.365333f, 1.956040f , - -2.477458f, -0.600198f, 1.870137f , - -2.321476f, -0.614723f, 1.628629f , - -2.965026f, 0.041450f, 2.169691f , - -2.773088f, -0.105085f, 2.141317f , - -2.899908f, 0.215745f, 2.139112f , - -3.170643f, 0.143401f, 2.156452f , - -3.021394f, -0.145313f, 2.199968f , - -2.043660f, 1.694604f, 1.852860f , - -1.898566f, 1.327528f, 1.910809f , - -1.732757f, 1.795790f, 1.828058f , - -2.154488f, 2.014274f, 1.758685f , - -2.261653f, 1.501379f, 1.894353f , - -0.831821f, 0.690908f, 1.811317f , - -0.819896f, 0.986507f, 1.865749f , - -1.120353f, 0.690610f, 1.808376f , - -0.858540f, 0.392509f, 1.731371f , - -0.551040f, 0.653414f, 1.807868f , - -4.915012f, 1.172881f, 0.732159f , - -4.932939f, 0.927397f, 0.695492f , - -4.777640f, 1.176803f, 0.824845f , - -4.926320f, 1.371612f, 0.726429f , - -5.110331f, 1.115061f, 0.632407f , - -5.955401f, 0.942792f, 0.463951f , - -5.632232f, 1.004905f, 0.500352f , - -5.980900f, 1.104381f, 0.447458f , - -6.337221f, 0.883924f, 0.435086f , - -5.965160f, 0.775517f, 0.459038f , - -7.436042f, 0.854969f, 0.364229f , - -7.077953f, 0.841235f, 0.385323f , - -7.456439f, 0.964910f, 0.349658f , - -7.811834f, 0.881409f, 0.341959f , - -7.453914f, 0.747995f, 0.368675f , - -5.962453f, 0.377207f, 0.317173f , - -5.643817f, 0.382144f, 0.314075f , - -5.971239f, 0.493080f, 0.386203f , - -6.356148f, 0.375463f, 0.329178f , - -6.001070f, 0.270110f, 0.239099f , - -7.496414f, 0.469096f, 0.319798f , - -7.115801f, 0.422294f, 0.330480f , - -7.478914f, 0.555076f, 0.346906f , - -7.876714f, 0.529515f, 0.304284f , - -7.518498f, 0.392781f, 0.284588f , - -8.914836f, 0.732800f, 0.236889f , - -8.594984f, 0.662908f, 0.261853f , - -8.915907f, 0.784040f, 0.243897f , - -8.965601f, 0.693089f, 0.210596f , - -8.957683f, 0.524664f, 0.059334f , - -8.978830f, 0.519412f, 0.011324f , - -8.650093f, 0.435115f, 0.092079f , - -8.991375f, 0.571461f, 0.103119f , - -7.559712f, 0.196467f, 0.137219f , - -7.942514f, 0.267456f, 0.131190f , - -7.573708f, 0.153908f, 0.076141f , - -7.183321f, 0.137692f, 0.130533f , - -7.551321f, 0.255980f, 0.192848f , - -6.111555f, 0.045948f, 0.056294f , - -6.445958f, 0.062682f, 0.087916f , - -6.094135f, 0.029078f, 0.012460f , - -6.059227f, 0.093143f, 0.100902f , - -8.761937f, 0.939127f, 0.267792f , - -8.808177f, 0.986726f, 0.260907f , - -8.807409f, 0.895092f, 0.263456f , - -8.448987f, 0.922106f, 0.295993f , - -3.480897f, -1.629795f, 2.414571f , - -3.391704f, -1.246805f, 2.369128f , - -3.593410f, -1.598887f, 2.413484f , - -3.565125f, -2.035197f, 2.469138f , - -3.373994f, -1.668001f, 2.390718f , - -3.969406f, -1.497927f, 2.215201f , - -3.840343f, -1.539646f, 2.315090f , - -3.901842f, -1.115016f, 2.137871f , - -4.093614f, -1.502341f, 2.105520f , - -4.038194f, -1.940282f, 2.297713f , - -4.259214f, -1.521648f, 1.763452f , - -4.237184f, -1.508460f, 1.878864f , - -4.216587f, -1.125885f, 1.651323f , - -4.254653f, -1.548459f, 1.653257f , - -4.293444f, -1.944000f, 1.870193f , - -4.108765f, -1.663726f, 1.363488f , - -4.179545f, -1.618379f, 1.453167f , - -4.075914f, -1.266044f, 1.238651f , - -4.016940f, -1.710155f, 1.294256f , - -4.138047f, -2.083037f, 1.484234f , - -3.601449f, -1.809020f, 1.260859f , - -3.763391f, -1.791795f, 1.245622f , - -3.530644f, -1.461190f, 1.139783f , - -3.447361f, -1.875697f, 1.326644f , - -3.668896f, -2.232123f, 1.389825f , - -3.189392f, -1.961429f, 1.692048f , - -3.092468f, -1.667905f, 1.630699f , - -3.165146f, -1.986341f, 1.875847f , - -3.271862f, -2.299266f, 1.793387f , - -3.241397f, -1.947686f, 1.544651f , - -2.883600f, -1.161195f, 2.052260f , - -2.948323f, -1.205896f, 2.083959f , - -2.843841f, -1.227108f, 1.972335f , - -2.853312f, -1.104958f, 2.065103f , - -2.867809f, -1.249915f, 1.616137f , - -2.835532f, -1.270364f, 1.763887f , - -2.929391f, -1.309214f, 1.594742f , - -2.832373f, -1.213011f, 1.578947f , - -2.704282f, -1.081231f, 1.535398f , - -2.698309f, -1.042661f, 1.460714f , - -2.633760f, -1.053299f, 1.665345f , - -2.748415f, -1.126026f, 1.536717f , - -2.715854f, -0.880679f, 2.024786f , - -2.643578f, -0.954728f, 1.904360f , - -2.649482f, -0.796443f, 1.982043f , - -2.809002f, -0.800238f, 2.129024f , - -2.770865f, -0.962657f, 2.053441f , - -4.047320f, -3.018357f, 2.480262f , - -3.958219f, -3.033417f, 2.570947f , - -4.074939f, -2.695121f, 2.430066f , - -4.118219f, -3.012605f, 2.383620f , - -3.970683f, -3.294032f, 2.509574f , - -4.211150f, -3.013654f, 2.082132f , - -4.200537f, -3.010676f, 2.183380f , - -4.268935f, -2.690790f, 2.028962f , - -4.201035f, -3.031267f, 1.984313f , - -4.103862f, -3.291915f, 2.129291f , - -4.089489f, -3.066953f, 1.756139f , - -4.138237f, -3.063213f, 1.822279f , - -4.125850f, -2.791853f, 1.681058f , - -4.011725f, -3.111923f, 1.707553f , - -3.998640f, -3.328516f, 1.846225f , - -3.717240f, -3.158442f, 1.649665f , - -3.826601f, -3.152062f, 1.653982f , - -3.725124f, -2.899438f, 1.581712f , - -3.602757f, -3.170827f, 1.657367f , - -3.675219f, -3.372971f, 1.738350f , - -3.399930f, -3.189547f, 1.695672f , - -3.443261f, -3.188151f, 1.681379f , - -3.376826f, -3.101848f, 1.708625f , - -3.359600f, -3.309586f, 1.725729f , - -3.199248f, -3.514027f, 1.802598f , - -3.262097f, -3.468240f, 1.777582f , - -3.126221f, -3.492029f, 1.873093f , - -3.208203f, -3.570720f, 1.838287f , - -3.427364f, -3.645016f, 2.326033f , - -3.185419f, -3.636808f, 2.225041f , - -3.178174f, -3.637538f, 2.300172f , - -3.194537f, -3.637551f, 2.399216f , - -3.233096f, -3.637191f, 2.485183f , - -3.325542f, -3.633378f, 2.561772f , - -3.516990f, -3.608391f, 2.563877f , - -3.655723f, -3.606152f, 2.431819f , - -3.706584f, -3.605964f, 2.251776f , - -3.664160f, -3.610619f, 2.130744f , - -3.525863f, -3.614936f, 2.076441f , - -3.315847f, -3.636706f, 2.100513f , - -3.114644f, -3.516968f, 2.694891f , - -3.245950f, -3.462016f, 2.833605f , - -3.131846f, -3.566777f, 2.672218f , - -3.044367f, -3.472126f, 2.637716f , - -4.066169f, -0.594801f, 0.882894f , - -3.962988f, -0.669931f, 0.802406f , - -4.053323f, -0.733909f, 0.998807f , - -4.128585f, -0.535712f, 0.986390f , - -4.087463f, -0.513582f, 0.779998f , - -4.164891f, -0.363615f, 1.334080f , - -4.182446f, -0.234833f, 1.228357f , - -4.179352f, -0.420704f, 1.211079f , - -4.169653f, -0.548661f, 1.436080f , - -4.122241f, -0.334780f, 1.465138f , - -3.397667f, -0.890813f, 0.735808f , - -3.431342f, -0.993527f, 0.876390f , - -3.632729f, -0.816043f, 0.730222f , - -3.387428f, -0.844034f, 0.609088f , - -3.167751f, -0.948977f, 0.786190f , - -3.798337f, -0.332533f, 1.918932f , - -3.936200f, -0.319516f, 1.761612f , - -3.812437f, -0.528647f, 1.992445f , - -3.640733f, -0.378930f, 2.083618f , - -3.779289f, -0.185822f, 1.878354f , - -3.182040f, -1.824357f, 2.231146f , - -3.162202f, -1.922581f, 2.139534f , - -3.100148f, -1.544082f, 2.175155f , - -3.226932f, -1.774666f, 2.298639f , - -3.249471f, -2.188280f, 2.279881f , - -3.259183f, -2.961203f, 1.918974f , - -3.307248f, -2.989149f, 1.817495f , - -3.304980f, -2.799218f, 1.900149f , - -3.205309f, -2.975774f, 2.026241f , - -3.185328f, -3.115232f, 1.912395f , - -2.550750f, -0.892865f, 1.113642f , - -2.743681f, -0.951363f, 0.976252f , - -2.468333f, -0.851498f, 0.996578f , - -2.413310f, -0.817951f, 1.288368f , - -2.627936f, -0.951072f, 1.247561f , - -3.166195f, -2.980282f, 2.352390f , - -3.080899f, -3.141042f, 2.297747f , - -3.157896f, -2.985368f, 2.244717f , - -3.238120f, -2.761588f, 2.341432f , - -3.197761f, -2.948246f, 2.443233f , - -3.096354f, -3.128464f, 2.427270f , - -3.258535f, -2.965779f, 2.620706f , - -3.196401f, -3.121900f, 2.671439f , - -3.242579f, -2.946014f, 2.580230f , - -3.291988f, -2.955783f, 2.638940f , - -3.387463f, -3.105719f, 2.741088f , - -3.358928f, -3.270548f, 2.813158f , - -3.358245f, -3.023250f, 2.699116f , - -3.425516f, -3.098451f, 2.737521f , - -3.661776f, -3.052287f, 2.702311f , - -3.766499f, -3.050855f, 2.681589f , - -3.640230f, -3.313710f, 2.752274f , - -3.564811f, -3.066279f, 2.715477f , - -3.657082f, -2.748232f, 2.613739f , - 1.563584f, -1.316043f, 1.679195f , - 1.630868f, -1.407857f, 1.538091f , - 1.737857f, -1.207400f, 1.627125f , - 1.513192f, -1.219788f, 1.779935f , - 1.443942f, -1.434966f, 1.700866f , - 1.401026f, -0.939803f, 1.962417f , - 1.422569f, -1.032290f, 1.926743f , - 1.549953f, -0.822633f, 1.935000f , - 1.350195f, -0.855265f, 1.985332f , - 1.239443f, -1.045982f, 1.997512f , - 0.911743f, -0.420729f, 1.788514f , - 0.952000f, -0.290848f, 1.768553f , - 0.861868f, -0.458133f, 1.768316f , - 0.945496f, -0.455232f, 1.814069f , - 1.150408f, -0.621088f, 1.930520f , - 1.227130f, -0.697247f, 1.968066f , - 1.246018f, -0.482261f, 1.915556f , - 1.061489f, -0.562444f, 1.886679f , - 1.051475f, -0.751351f, 1.948693f , - 0.635700f, -0.679905f, 1.544274f , - 0.724148f, -0.587910f, 1.648074f , - 0.640959f, -0.525131f, 1.518507f , - 0.559597f, -0.735993f, 1.435553f , - 0.619326f, -0.803335f, 1.575766f , - 0.427653f, -0.810960f, 1.200472f , - 0.414101f, -0.897536f, 1.155822f , - 0.453751f, -0.805515f, 1.261592f , - 0.408076f, -0.729283f, 1.165765f , - 0.457955f, -1.145101f, 1.654310f , - 0.441922f, -1.208742f, 1.635922f , - 0.488015f, -1.143013f, 1.746908f , - 0.468836f, -1.105516f, 1.627145f , - 0.673667f, -1.211392f, 1.962272f , - 0.753757f, -1.238249f, 2.012920f , - 0.684564f, -1.126744f, 1.957195f , - 0.594770f, -1.174961f, 1.897322f , - 0.673833f, -1.310421f, 1.967714f , - 0.915446f, -1.269246f, 2.059310f , - 0.938488f, -1.218515f, 2.054494f , - 0.877600f, -1.266002f, 2.061320f , - 0.939672f, -1.340833f, 2.052827f , - 0.969940f, -1.172835f, 2.053284f , - 0.950832f, -1.122833f, 2.055367f , - 1.026280f, -1.164947f, 2.041734f , - 0.574399f, -0.979975f, 1.657876f , - 0.588550f, -0.956487f, 1.636396f , - 0.527638f, -1.021547f, 1.629953f , - 0.629975f, -0.937459f, 1.754569f , - 0.812996f, -0.965926f, 1.959912f , - 0.874952f, -1.016649f, 2.008925f , - 0.885497f, -0.922149f, 1.963739f , - 0.748487f, -0.932540f, 1.901837f , - 0.755122f, -1.005908f, 1.956856f , - 1.146859f, -1.953207f, 1.998849f , - 1.119135f, -1.929636f, 2.017590f , - 1.187036f, -2.143057f, 1.980498f , - 1.168386f, -1.903373f, 1.965674f , - 1.296441f, -1.868470f, 1.739966f , - 1.320269f, -2.063940f, 1.721933f , - 1.362038f, -1.948146f, 1.604404f , - 1.308731f, -1.719989f, 1.730357f , - 1.243717f, -1.857128f, 1.832228f , - 1.357880f, -2.034352f, 1.203808f , - 1.334405f, -2.159373f, 1.227930f , - 1.297374f, -2.043551f, 1.078567f , - 1.387265f, -1.920660f, 1.174481f , - 1.388670f, -2.024690f, 1.340366f , - 0.910267f, -2.600530f, 2.018900f , - 0.865956f, -2.535936f, 2.014241f , - 0.879502f, -2.649125f, 2.016077f , - 1.025018f, -2.624728f, 2.028302f , - 1.300632f, -2.393485f, 1.784236f , - 1.278468f, -2.453582f, 1.822168f , - 1.331548f, -2.410669f, 1.677464f , - 1.319209f, -2.316865f, 1.748658f , - 1.261306f, -2.349737f, 1.873778f , - 1.224820f, -2.667811f, 1.895454f , - 1.240641f, -2.594510f, 1.876798f , - 1.178080f, -2.661191f, 1.964690f , - 1.217100f, -2.767008f, 1.908210f , - 1.254016f, -2.687474f, 1.797535f , - 1.302372f, -2.424563f, 1.313458f , - 1.331754f, -2.425559f, 1.439533f , - 1.293173f, -2.482831f, 1.330312f , - 1.250445f, -2.414173f, 1.185284f , - 1.306918f, -2.350645f, 1.280763f , - 1.225377f, -2.673889f, 1.404261f , - 1.255230f, -2.608614f, 1.377839f , - 1.254107f, -2.687220f, 1.552500f , - 1.210765f, -2.751903f, 1.425717f , - 1.182059f, -2.644248f, 1.260970f , - 1.594872f, -1.602089f, 1.088070f , - 1.667162f, -1.531086f, 1.016427f , - 1.638721f, -1.553285f, 1.243320f , - 1.503697f, -1.704520f, 1.114257f , - 1.504468f, -1.647212f, 0.926921f , - 1.127036f, -1.606999f, 0.676198f , - 1.160777f, -1.554234f, 0.617662f , - 1.270789f, -1.648158f, 0.724825f , - 1.076159f, -1.678244f, 0.731215f , - 0.962916f, -1.548604f, 0.670148f , - 0.571036f, -1.229213f, 0.889397f , - 0.570018f, -1.328346f, 0.955393f , - 0.488077f, -1.110414f, 1.000004f , - 0.580624f, -1.175841f, 0.797277f , - 0.689472f, -1.361680f, 0.773926f , - 1.002414f, -1.936411f, 0.921297f , - 1.016881f, -1.842505f, 0.853125f , - 1.120848f, -1.992618f, 0.938158f , - 0.996530f, -2.043490f, 0.982986f , - 0.880388f, -1.875789f, 0.937926f , - 0.962983f, -2.409247f, 1.037822f , - 0.983841f, -2.283744f, 1.041455f , - 1.088717f, -2.412220f, 1.050511f , - 1.058274f, -2.516512f, 1.078669f , - 0.941460f, -2.554384f, 1.025373f , - 0.854923f, -2.360096f, 1.038703f , - 0.547100f, -1.688132f, 1.165855f , - 0.655494f, -1.757056f, 1.057877f , - 0.552925f, -1.857560f, 1.212323f , - 0.476822f, -1.664818f, 1.277902f , - 0.559290f, -1.560796f, 1.093477f , - 0.533913f, -2.293705f, 1.211326f , - 0.448755f, -2.289788f, 1.328099f , - 0.541593f, -2.152749f, 1.239521f , - 0.631386f, -2.296297f, 1.127385f , - 0.522220f, -2.439470f, 1.191904f , - 0.412313f, -2.286612f, 1.698810f , - 0.389710f, -2.287854f, 1.569995f , - 0.412560f, -2.421192f, 1.692652f , - 0.461457f, -2.288136f, 1.819552f , - 0.419593f, -2.161211f, 1.707150f , - 0.422760f, -1.644811f, 1.654265f , - 0.411788f, -1.637466f, 1.525594f , - 0.424936f, -1.840605f, 1.685748f , - 0.463735f, -1.668338f, 1.781236f , - 0.423868f, -1.459120f, 1.634098f , - 0.754697f, -1.838344f, 2.006144f , - 0.860922f, -1.868472f, 2.033395f , - 0.711462f, -1.619735f, 1.989048f , - 0.626173f, -1.759222f, 1.954809f , - 0.771958f, -2.017420f, 2.014771f , - 0.506552f, -3.074460f, 1.727388f , - 0.485678f, -3.081406f, 1.598452f , - 0.575491f, -3.325588f, 1.752089f , - 0.544915f, -3.080210f, 1.845288f , - 0.459750f, -2.816380f, 1.706503f , - 0.582426f, -3.097219f, 1.201397f , - 0.523940f, -3.092112f, 1.334541f , - 0.548627f, -2.843430f, 1.183739f , - 0.660738f, -3.101894f, 1.082428f , - 0.637826f, -3.337548f, 1.253579f , - 0.674763f, -3.114580f, 2.064112f , - 0.632199f, -3.107020f, 2.015972f , - 0.737032f, -3.280429f, 2.101854f , - 0.698611f, -3.028635f, 2.080861f , - 0.836458f, -2.875602f, 2.079942f , - 0.779949f, -2.903573f, 2.087162f , - 0.931994f, -2.972439f, 2.114202f , - 0.842099f, -2.788801f, 2.046543f , - 1.096009f, -3.159845f, 2.165426f , - 1.057276f, -3.115279f, 2.157302f , - 1.070206f, -3.247110f, 2.190411f , - 1.139278f, -3.141586f, 2.142892f , - 1.263478f, -3.092041f, 2.005685f , - 1.223356f, -3.103934f, 2.061743f , - 1.292486f, -3.203990f, 2.044265f , - 1.301798f, -3.086870f, 1.948513f , - 1.235995f, -2.975410f, 1.964238f , - 1.104254f, -3.552862f, 2.174938f , - 1.080497f, -3.592693f, 2.146301f , - 1.172179f, -3.530045f, 2.166763f , - 1.068521f, -3.530067f, 2.181511f , - 1.350333f, -3.479545f, 2.084708f , - 1.292792f, -3.495399f, 2.122248f , - 1.330710f, -3.553967f, 2.065250f , - 1.424642f, -3.489307f, 1.994392f , - 1.335658f, -3.400012f, 2.084357f , - 0.723265f, -2.336885f, 2.005308f , - 0.612967f, -2.312961f, 1.971617f , - 0.764251f, -2.403502f, 2.005936f , - 0.755687f, -2.271967f, 2.014665f , - 1.027013f, -1.805231f, 2.054864f , - 1.053533f, -1.827516f, 2.045966f , - 0.989908f, -1.596109f, 2.050815f , - 0.997372f, -1.842188f, 2.058448f , - 1.419290f, -3.161336f, 1.830307f , - 1.381881f, -3.125915f, 1.862334f , - 1.477329f, -3.258953f, 1.848067f , - 1.419694f, -3.149734f, 1.782862f , - 1.369528f, -3.115459f, 1.462861f , - 1.341497f, -3.110462f, 1.333010f , - 1.289287f, -2.982143f, 1.457088f , - 1.399329f, -3.132273f, 1.599348f , - 1.479097f, -3.258948f, 1.533265f , - 1.457697f, -3.254712f, 1.413071f , - 1.249331f, -3.123234f, 1.096159f , - 1.180292f, -3.078585f, 1.061213f , - 1.274670f, -3.106925f, 1.146742f , - 1.290043f, -3.216985f, 1.077756f , - 0.907061f, -3.070918f, 0.970389f , - 1.014209f, -3.048193f, 1.001064f , - 0.948133f, -3.237505f, 0.959424f , - 0.827265f, -3.085780f, 0.969165f , - 0.910857f, -2.878432f, 0.992627f , - 0.914096f, -3.482718f, 2.168007f , - 0.852829f, -3.457461f, 2.151148f , - 0.858743f, -3.554874f, 2.121946f , - 0.971062f, -3.496305f, 2.177947f , - 0.979383f, -3.406364f, 2.190305f , - 0.938949f, -3.645016f, 1.733253f , - 1.124403f, -3.635080f, 1.907894f , - 0.994803f, -3.639159f, 1.944429f , - 0.870508f, -3.635102f, 1.923639f , - 0.790337f, -3.609658f, 1.773760f , - 0.814410f, -3.610912f, 1.539161f , - 1.038078f, -3.645016f, 1.643672f , - 1.116465f, -3.520086f, 0.958905f , - 1.237566f, -3.499446f, 1.008469f , - 1.133019f, -3.573012f, 0.992792f , - 1.049076f, -3.463133f, 0.952167f , - 1.377630f, -3.645016f, 1.400710f , - 1.534775f, -3.641821f, 1.485049f , - 1.500303f, -3.641546f, 1.573205f , - 1.276172f, -3.645016f, 1.460454f , - 1.280228f, -3.636862f, 1.215676f , - 1.475856f, -3.641190f, 1.313927f , - 1.514060f, -3.641615f, 1.393155f , - 3.495396f, -0.318752f, 0.353665f , - 3.481266f, -0.382927f, 0.185279f , - 3.688089f, -0.227142f, 0.337909f , - 3.515041f, -0.230816f, 0.517190f , - 3.323394f, -0.422175f, 0.373678f , - 2.998129f, 2.572837f, 0.704071f , - 3.159999f, 2.608886f, 0.672504f , - 2.963434f, 2.590291f, 0.657784f , - 2.971695f, 2.558661f, 0.759463f , - 2.831736f, 2.209303f, 1.201488f , - 3.091826f, 2.287159f, 1.186460f , - 2.888208f, 2.341921f, 1.079987f , - 2.627972f, 2.194882f, 1.216877f , - 2.881655f, 2.110343f, 1.295262f , - 3.017182f, 1.522409f, 1.496580f , - 3.010533f, 1.591991f, 1.525202f , - 2.931298f, 1.476038f, 1.484611f , - 3.196649f, 1.465448f, 1.457198f , - 3.544457f, 1.327893f, 1.313822f , - 3.624470f, 1.366770f, 1.334376f , - 3.451886f, 1.371335f, 1.368102f , - 3.538254f, 1.225860f, 1.260768f , - 3.523844f, 0.590828f, 1.085123f , - 3.690416f, 0.606553f, 0.991519f , - 3.528921f, 0.863776f, 1.147500f , - 3.360402f, 0.618214f, 1.194920f , - 3.511224f, 0.359086f, 1.034596f , - 3.417975f, -0.063532f, 0.901338f , - 3.455480f, 0.023315f, 0.941306f , - 3.280930f, -0.118129f, 0.970724f , - 3.471376f, -0.106607f, 0.790649f , - 3.068245f, 1.787499f, 1.536228f , - 3.283710f, 1.818361f, 1.529443f , - 3.021721f, 1.834000f, 1.525393f , - 3.041336f, 1.729210f, 1.545334f , - 3.005550f, 1.965687f, 1.447513f , - 3.212713f, 2.057371f, 1.416333f , - 2.969039f, 1.989086f, 1.418752f , - 2.992674f, 1.927215f, 1.478825f , - 2.995508f, 2.508850f, 0.889434f , - 3.167018f, 2.520510f, 0.914528f , - 2.972892f, 2.525491f, 0.854646f , - 2.967351f, 2.484997f, 0.928327f , - 2.887133f, 2.693181f, 0.362155f , - 3.079067f, 2.725512f, 0.296859f , - 2.923048f, 2.733227f, 0.181618f , - 2.714091f, 2.718278f, 0.389944f , - 2.906971f, 2.651786f, 0.481781f , - 4.471254f, 1.359902f, 1.942446f , - 4.521845f, 1.356840f, 1.921272f , - 4.417529f, 1.438324f, 1.952469f , - 4.450969f, 1.306760f, 1.916059f , - 4.175701f, 1.879534f, 2.033098f , - 4.234798f, 1.809255f, 2.017799f , - 4.142032f, 1.979161f, 1.995624f , - 4.166365f, 1.855720f, 2.041523f , - 4.374743f, 1.627750f, 1.979376f , - 4.378834f, 1.573739f, 1.991251f , - 4.397285f, 1.635905f, 1.941544f , - 4.311895f, 1.712868f, 2.000093f , - 4.366869f, 1.522492f, 1.987177f , - 4.327162f, 1.522285f, 1.995860f , - 4.163522f, 1.799366f, 2.027312f , - 4.129002f, 1.784657f, 1.994340f , - 4.247528f, 1.624440f, 2.013708f , - 3.818940f, 2.564906f, 2.019553f , - 3.794447f, 2.631498f, 2.022899f , - 3.792525f, 2.539584f, 1.982903f , - 3.866713f, 2.539401f, 2.026215f , - 3.788016f, 2.790290f, 1.982608f , - 3.822009f, 2.769305f, 1.988649f , - 3.773569f, 2.834007f, 1.955252f , - 3.774705f, 2.752481f, 2.002277f , - 3.885830f, 2.592012f, 2.000403f , - 3.906785f, 2.582242f, 1.964674f , - 3.872943f, 2.661243f, 2.000956f , - 3.789310f, 3.152285f, 1.796990f , - 3.777378f, 3.093707f, 1.855567f , - 3.813365f, 3.129619f, 1.767212f , - 3.767151f, 3.249395f, 1.751004f , - 3.747592f, 3.046683f, 1.888464f , - 3.702215f, 3.038757f, 1.864568f , - 3.755348f, 2.966276f, 1.907959f , - 3.754923f, 3.359647f, 1.684289f , - 3.738181f, 3.383086f, 1.679676f , - 3.772684f, 3.399491f, 1.595865f , - 3.707429f, 3.426212f, 1.638315f , - 3.693487f, 3.564188f, 1.500273f , - 3.675743f, 3.399230f, 1.615770f , - 3.710607f, 3.812792f, 1.047954f , - 3.715517f, 3.791631f, 1.113189f , - 3.723037f, 3.774369f, 1.025078f , - 3.693638f, 3.852862f, 1.020799f , - 3.667950f, 3.731843f, 1.254162f , - 3.632633f, 3.701312f, 1.250433f , - 3.675138f, 3.692432f, 1.304073f , - 3.686671f, 3.742937f, 1.224429f , - 3.678547f, 3.844932f, 1.059233f , - 3.652163f, 3.793286f, 1.042082f , - 3.686339f, 3.820505f, 1.125846f , - 3.633738f, 3.998861f, 0.381579f , - 3.635653f, 4.018955f, 0.383289f , - 3.629354f, 4.009223f, 0.324688f , - 3.630316f, 3.934014f, 0.374533f , - 3.639079f, 3.998540f, 0.439325f , - 3.633738f, 3.998861f, 0.381579f , - 1.620121f, -3.501810f, 1.374112f , - 1.613145f, -3.517592f, 1.324138f , - 1.586694f, -3.443587f, 1.359976f , - 1.642548f, -3.514767f, 1.473487f , - 1.650796f, -3.502107f, 1.581632f , - 1.623644f, -3.446181f, 1.599899f , - 1.648811f, -3.514388f, 1.633058f , - 1.614211f, -3.491505f, 1.728177f , - 1.580799f, -3.424098f, 1.833075f , - 1.588683f, -3.503806f, 1.745825f , - -3.012235f, -3.439787f, 2.618330f , - -2.954835f, -3.447271f, 2.541536f , - -3.083322f, -3.351988f, 2.705061f , - -2.939563f, -3.430724f, 2.493233f , - -2.916049f, -3.454542f, 2.392555f , - -2.978516f, -3.353283f, 2.507450f , - -2.910351f, -3.446941f, 2.278965f , - -2.904048f, -3.468907f, 2.235881f , - -2.943229f, -3.375638f, 2.253446f , - -2.975949f, -3.443043f, 2.103596f , - -2.992861f, -3.463690f, 2.091053f , - -3.049741f, -3.343950f, 1.943442f , - -2.939175f, -3.454781f, 2.161772f , - 1.494588f, -3.470372f, 1.201955f , - 1.395377f, -3.381275f, 1.077962f , - 1.554654f, -3.495922f, 1.254076f , - 1.470187f, -3.487704f, 1.191944f , - 1.576559f, -3.511838f, 1.236453f , - 1.591088f, -3.527038f, 1.236903f , - 1.538101f, -3.474001f, 1.148434f , - 1.498532f, -3.470435f, -1.185063f , - 1.473924f, -3.487321f, -1.175408f , - 1.558150f, -3.495462f, -1.237763f , - 1.396363f, -3.381290f, -1.050170f , - 1.580040f, -3.511661f, -1.219868f , - 1.594577f, -3.526927f, -1.220362f , - 1.539951f, -3.474322f, -1.124124f , - -2.975949f, -3.443043f, -2.072172f , - -2.939176f, -3.454782f, -2.130347f , - -3.049741f, -3.343950f, -1.912017f , - -2.992861f, -3.463691f, -2.059628f , - -2.910350f, -3.446941f, -2.247540f , - -2.916049f, -3.454542f, -2.361130f , - -2.943228f, -3.375638f, -2.222021f , - -2.904047f, -3.468908f, -2.204456f , - -2.939564f, -3.430725f, -2.461808f , - -2.954835f, -3.447272f, -2.510111f , - -2.978516f, -3.353283f, -2.476025f , - -3.012235f, -3.439787f, -2.586905f , - -3.044367f, -3.472126f, -2.606291f , - -3.083322f, -3.351988f, -2.673636f , - 1.615816f, -3.489682f, -1.711399f , - 1.591106f, -3.502591f, -1.729414f , - 1.581200f, -3.423642f, -1.805312f , - 1.651467f, -3.513439f, -1.615702f , - 1.653256f, -3.501858f, -1.560763f , - 1.624969f, -3.447082f, -1.572872f , - 1.645943f, -3.515461f, -1.455943f , - 1.622032f, -3.503068f, -1.350506f , - 1.587648f, -3.445762f, -1.330666f , - 1.615811f, -3.518225f, -1.304483f , - 3.633737f, 3.998861f, -0.350155f , - 3.635653f, 4.018955f, -0.351864f , - 3.629354f, 4.009223f, -0.293263f , - 3.630316f, 3.934014f, -0.343109f , - 3.639079f, 3.998540f, -0.407900f , - 3.633737f, 3.998861f, -0.350155f , - 3.678547f, 3.844932f, -1.027808f , - 3.686339f, 3.820505f, -1.094421f , - 3.652163f, 3.793286f, -1.010657f , - 3.693638f, 3.852862f, -0.989374f , - 3.667950f, 3.731843f, -1.222737f , - 3.686671f, 3.742937f, -1.193005f , - 3.675137f, 3.692431f, -1.272648f , - 3.632633f, 3.701312f, -1.219008f , - 3.710607f, 3.812792f, -1.016529f , - 3.723037f, 3.774369f, -0.993653f , - 3.715517f, 3.791631f, -1.081764f , - 3.707428f, 3.426212f, -1.606890f , - 3.738180f, 3.383086f, -1.648251f , - 3.675742f, 3.399230f, -1.584345f , - 3.693487f, 3.564188f, -1.468848f , - 3.754923f, 3.359648f, -1.652864f , - 3.772683f, 3.399491f, -1.564440f , - 3.767151f, 3.249396f, -1.719579f , - 3.747592f, 3.046684f, -1.857039f , - 3.777378f, 3.093707f, -1.824143f , - 3.755348f, 2.966276f, -1.876534f , - 3.702215f, 3.038758f, -1.833143f , - 3.789310f, 3.152285f, -1.765565f , - 3.813365f, 3.129618f, -1.735787f , - 3.885830f, 2.592012f, -1.968979f , - 3.872943f, 2.661243f, -1.969532f , - 3.906785f, 2.582242f, -1.933249f , - 3.866713f, 2.539401f, -1.994790f , - 3.788016f, 2.790290f, -1.951183f , - 3.774705f, 2.752481f, -1.970852f , - 3.773569f, 2.834007f, -1.923827f , - 3.822010f, 2.769305f, -1.957224f , - 3.818940f, 2.564906f, -1.988129f , - 3.792525f, 2.539584f, -1.951479f , - 3.794447f, 2.631498f, -1.991474f , - 4.163523f, 1.799366f, -1.995887f , - 4.247529f, 1.624440f, -1.982284f , - 4.129002f, 1.784657f, -1.962916f , - 4.166365f, 1.855720f, -2.010098f , - 4.366870f, 1.522492f, -1.955752f , - 4.378835f, 1.573739f, -1.959827f , - 4.417529f, 1.438324f, -1.921044f , - 4.327163f, 1.522285f, -1.964435f , - 4.374744f, 1.627750f, -1.947951f , - 4.311895f, 1.712868f, -1.968668f , - 4.397285f, 1.635905f, -1.910120f , - 4.175701f, 1.879534f, -2.001673f , - 4.142032f, 1.979161f, -1.964199f , - 4.234798f, 1.809255f, -1.986374f , - 4.471254f, 1.359903f, -1.911021f , - 4.450969f, 1.306760f, -1.884635f , - 4.521845f, 1.356840f, -1.889847f , - 2.887133f, 2.693181f, -0.330730f , - 3.079067f, 2.725512f, -0.265435f , - 2.906971f, 2.651786f, -0.450356f , - 2.714091f, 2.718278f, -0.358519f , - 2.923049f, 2.733227f, -0.150193f , - 2.995508f, 2.508850f, -0.858009f , - 2.967351f, 2.484997f, -0.896902f , - 2.972893f, 2.525491f, -0.823221f , - 3.167018f, 2.520510f, -0.883103f , - 3.005550f, 1.965687f, -1.416089f , - 2.992674f, 1.927215f, -1.447400f , - 2.969039f, 1.989086f, -1.387327f , - 3.212713f, 2.057371f, -1.384909f , - 3.068245f, 1.787499f, -1.504803f , - 3.041336f, 1.729210f, -1.513909f , - 3.021721f, 1.834000f, -1.493968f , - 3.283710f, 1.818361f, -1.498019f , - 3.417975f, -0.063532f, -0.869913f , - 3.471376f, -0.106607f, -0.759224f , - 3.280930f, -0.118129f, -0.939300f , - 3.455480f, 0.023315f, -0.909882f , - 3.523844f, 0.590828f, -1.053698f , - 3.690416f, 0.606553f, -0.960094f , - 3.511224f, 0.359086f, -1.003171f , - 3.360402f, 0.618214f, -1.163496f , - 3.528921f, 0.863776f, -1.116075f , - 3.544457f, 1.327893f, -1.282397f , - 3.538254f, 1.225859f, -1.229343f , - 3.451886f, 1.371335f, -1.336677f , - 3.624470f, 1.366770f, -1.302952f , - 3.017182f, 1.522409f, -1.465156f , - 3.196649f, 1.465448f, -1.425773f , - 2.931298f, 1.476037f, -1.453186f , - 3.010533f, 1.591991f, -1.493778f , - 2.831736f, 2.209303f, -1.170063f , - 3.091826f, 2.287159f, -1.155036f , - 2.881655f, 2.110343f, -1.263837f , - 2.627972f, 2.194882f, -1.185452f , - 2.888208f, 2.341921f, -1.048563f , - 2.998129f, 2.572837f, -0.672646f , - 2.971696f, 2.558661f, -0.728038f , - 2.963434f, 2.590291f, -0.626360f , - 3.159999f, 2.608886f, -0.641079f , - 3.495396f, -0.318752f, -0.322240f , - 3.481266f, -0.382927f, -0.153854f , - 3.323394f, -0.422175f, -0.342253f , - 3.515040f, -0.230816f, -0.485765f , - 3.688089f, -0.227142f, -0.306484f , - 1.377630f, -3.645016f, -1.369286f , - 1.276172f, -3.645016f, -1.429029f , - 1.500469f, -3.641465f, -1.545016f , - 1.535131f, -3.641693f, -1.455597f , - 1.515021f, -3.641349f, -1.364723f , - 1.476942f, -3.640947f, -1.286125f , - 1.280228f, -3.636862f, -1.184251f , - 1.116465f, -3.520086f, -0.927480f , - 1.049076f, -3.463133f, -0.920742f , - 1.133019f, -3.573012f, -0.961367f , - 1.238678f, -3.499479f, -0.980531f , - 0.938949f, -3.645016f, -1.701829f , - 0.870508f, -3.635103f, -1.892214f , - 0.994804f, -3.639159f, -1.913004f , - 1.124403f, -3.635080f, -1.876469f , - 1.038078f, -3.645016f, -1.612248f , - 0.814410f, -3.610912f, -1.507737f , - 0.790337f, -3.609658f, -1.742336f , - 0.914096f, -3.482718f, -2.136582f , - 0.852829f, -3.457461f, -2.119724f , - 0.979383f, -3.406364f, -2.158880f , - 0.971062f, -3.496305f, -2.146522f , - 0.858743f, -3.554874f, -2.090521f , - 0.907061f, -3.070918f, -0.938964f , - 1.014209f, -3.048193f, -0.969640f , - 0.910857f, -2.878432f, -0.961202f , - 0.827265f, -3.085780f, -0.937740f , - 0.948133f, -3.237505f, -0.927999f , - 1.249331f, -3.123234f, -1.064734f , - 1.290043f, -3.216985f, -1.046331f , - 1.274670f, -3.106925f, -1.115317f , - 1.180292f, -3.078585f, -1.029788f , - 1.369528f, -3.115459f, -1.431436f , - 1.289287f, -2.982143f, -1.425663f , - 1.341497f, -3.110461f, -1.301585f , - 1.457942f, -3.255314f, -1.381646f , - 1.479144f, -3.259037f, -1.502081f , - 1.399330f, -3.132273f, -1.567923f , - 1.419290f, -3.161336f, -1.798883f , - 1.419694f, -3.149734f, -1.751437f , - 1.477329f, -3.258953f, -1.816642f , - 1.381881f, -3.125915f, -1.830909f , - 1.027013f, -1.805232f, -2.023439f , - 0.997372f, -1.842188f, -2.027023f , - 0.989908f, -1.596109f, -2.019390f , - 1.053533f, -1.827516f, -2.014541f , - 0.723265f, -2.336885f, -1.973884f , - 0.755686f, -2.271967f, -1.983241f , - 0.764251f, -2.403502f, -1.974511f , - 0.612967f, -2.312961f, -1.940193f , - 1.350333f, -3.479545f, -2.053283f , - 1.292792f, -3.495399f, -2.090823f , - 1.335658f, -3.400012f, -2.052932f , - 1.425025f, -3.488979f, -1.966551f , - 1.330710f, -3.553967f, -2.033825f , - 1.104254f, -3.552862f, -2.143513f , - 1.068521f, -3.530067f, -2.150086f , - 1.172179f, -3.530045f, -2.135338f , - 1.080497f, -3.592693f, -2.114876f , - 1.263478f, -3.092041f, -1.974261f , - 1.223356f, -3.103934f, -2.030319f , - 1.235995f, -2.975410f, -1.932814f , - 1.301798f, -3.086870f, -1.917088f , - 1.292486f, -3.203990f, -2.012840f , - 1.096009f, -3.159845f, -2.134001f , - 1.139278f, -3.141586f, -2.111467f , - 1.070206f, -3.247110f, -2.158986f , - 1.057276f, -3.115279f, -2.125877f , - 0.836458f, -2.875602f, -2.048517f , - 0.842099f, -2.788801f, -2.015119f , - 0.931994f, -2.972439f, -2.082778f , - 0.779949f, -2.903573f, -2.055737f , - 0.674763f, -3.114579f, -2.032687f , - 0.698611f, -3.028635f, -2.049437f , - 0.737032f, -3.280429f, -2.070429f , - 0.632199f, -3.107020f, -1.984547f , - 0.582426f, -3.097219f, -1.169972f , - 0.523940f, -3.092113f, -1.303116f , - 0.637826f, -3.337548f, -1.222154f , - 0.660738f, -3.101894f, -1.051003f , - 0.548627f, -2.843430f, -1.152314f , - 0.506552f, -3.074460f, -1.695963f , - 0.485678f, -3.081406f, -1.567027f , - 0.459750f, -2.816380f, -1.675078f , - 0.544915f, -3.080210f, -1.813863f , - 0.575491f, -3.325588f, -1.720664f , - 0.754697f, -1.838344f, -1.974720f , - 0.860922f, -1.868472f, -2.001970f , - 0.771958f, -2.017420f, -1.983347f , - 0.626173f, -1.759222f, -1.923384f , - 0.711462f, -1.619735f, -1.957623f , - 0.422761f, -1.644811f, -1.622840f , - 0.411788f, -1.637466f, -1.494169f , - 0.423868f, -1.459120f, -1.602673f , - 0.463735f, -1.668338f, -1.749811f , - 0.424936f, -1.840605f, -1.654323f , - 0.412313f, -2.286612f, -1.667385f , - 0.389710f, -2.287854f, -1.538570f , - 0.419593f, -2.161211f, -1.675725f , - 0.461457f, -2.288136f, -1.788127f , - 0.412560f, -2.421192f, -1.661227f , - 0.533913f, -2.293705f, -1.179901f , - 0.448755f, -2.289788f, -1.296674f , - 0.522220f, -2.439470f, -1.160479f , - 0.631386f, -2.296297f, -1.095960f , - 0.541593f, -2.152749f, -1.208097f , - 0.547100f, -1.688132f, -1.134430f , - 0.655494f, -1.757056f, -1.026453f , - 0.559290f, -1.560796f, -1.062052f , - 0.476822f, -1.664818f, -1.246477f , - 0.552925f, -1.857560f, -1.180899f , - 0.962983f, -2.409247f, -1.006397f , - 1.088717f, -2.412220f, -1.019086f , - 0.983841f, -2.283744f, -1.010030f , - 0.854923f, -2.360096f, -1.007278f , - 0.941460f, -2.554384f, -0.993948f , - 1.058274f, -2.516512f, -1.047244f , - 1.002414f, -1.936411f, -0.889872f , - 1.016881f, -1.842505f, -0.821701f , - 0.880388f, -1.875789f, -0.906501f , - 0.996530f, -2.043490f, -0.951561f , - 1.120848f, -1.992618f, -0.906734f , - 0.571036f, -1.229213f, -0.857972f , - 0.570018f, -1.328346f, -0.923968f , - 0.689472f, -1.361680f, -0.742501f , - 0.580624f, -1.175841f, -0.765852f , - 0.488077f, -1.110414f, -0.968580f , - 1.127036f, -1.606999f, -0.644773f , - 1.160777f, -1.554234f, -0.586237f , - 0.962916f, -1.548604f, -0.638724f , - 1.076159f, -1.678244f, -0.699790f , - 1.270789f, -1.648158f, -0.693400f , - 1.594872f, -1.602089f, -1.056645f , - 1.667162f, -1.531086f, -0.985002f , - 1.504468f, -1.647212f, -0.895496f , - 1.503697f, -1.704520f, -1.082833f , - 1.638721f, -1.553285f, -1.211896f , - 1.225377f, -2.673889f, -1.372836f , - 1.255230f, -2.608614f, -1.346414f , - 1.182059f, -2.644248f, -1.229545f , - 1.210765f, -2.751903f, -1.394293f , - 1.254107f, -2.687220f, -1.521075f , - 1.302372f, -2.424563f, -1.282033f , - 1.331754f, -2.425559f, -1.408108f , - 1.306918f, -2.350645f, -1.249338f , - 1.250445f, -2.414173f, -1.153859f , - 1.293173f, -2.482831f, -1.298887f , - 1.224820f, -2.667811f, -1.864030f , - 1.240641f, -2.594510f, -1.845373f , - 1.254016f, -2.687474f, -1.766110f , - 1.217100f, -2.767008f, -1.876785f , - 1.178080f, -2.661191f, -1.933266f , - 1.300632f, -2.393485f, -1.752812f , - 1.278468f, -2.453582f, -1.790743f , - 1.261307f, -2.349737f, -1.842353f , - 1.319209f, -2.316865f, -1.717234f , - 1.331549f, -2.410669f, -1.646040f , - 0.910267f, -2.600530f, -1.987476f , - 1.025018f, -2.624728f, -1.996878f , - 0.879502f, -2.649125f, -1.984653f , - 0.865956f, -2.535937f, -1.982816f , - 1.357880f, -2.034352f, -1.172383f , - 1.334405f, -2.159373f, -1.196506f , - 1.388670f, -2.024690f, -1.308941f , - 1.387265f, -1.920660f, -1.143056f , - 1.297374f, -2.043551f, -1.047143f , - 1.296441f, -1.868470f, -1.708541f , - 1.320269f, -2.063940f, -1.690508f , - 1.243717f, -1.857127f, -1.800803f , - 1.308731f, -1.719989f, -1.698932f , - 1.362038f, -1.948146f, -1.572979f , - 1.146859f, -1.953207f, -1.967424f , - 1.168386f, -1.903372f, -1.934249f , - 1.187036f, -2.143057f, -1.949073f , - 1.119135f, -1.929636f, -1.986165f , - 0.812996f, -0.965926f, -1.928487f , - 0.874952f, -1.016649f, -1.977500f , - 0.755122f, -1.005908f, -1.925431f , - 0.748487f, -0.932540f, -1.870412f , - 0.885497f, -0.922149f, -1.932314f , - 0.574399f, -0.979975f, -1.626451f , - 0.629975f, -0.937459f, -1.723145f , - 0.527638f, -1.021547f, -1.598528f , - 0.588550f, -0.956487f, -1.604971f , - 0.969940f, -1.172835f, -2.021859f , - 1.026280f, -1.164947f, -2.010309f , - 0.938488f, -1.218515f, -2.023070f , - 0.950832f, -1.122833f, -2.023942f , - 0.915446f, -1.269246f, -2.027886f , - 0.939672f, -1.340833f, -2.021403f , - 0.877600f, -1.266002f, -2.029895f , - 0.673667f, -1.211392f, -1.930847f , - 0.753757f, -1.238249f, -1.981495f , - 0.673833f, -1.310421f, -1.936289f , - 0.594770f, -1.174961f, -1.865898f , - 0.684564f, -1.126744f, -1.925770f , - 0.457955f, -1.145102f, -1.622885f , - 0.468836f, -1.105516f, -1.595720f , - 0.488015f, -1.143013f, -1.715483f , - 0.441922f, -1.208742f, -1.604497f , - 0.427653f, -0.810960f, -1.169047f , - 0.408076f, -0.729283f, -1.134340f , - 0.453751f, -0.805515f, -1.230167f , - 0.414101f, -0.897536f, -1.124397f , - 0.635700f, -0.679905f, -1.512849f , - 0.724148f, -0.587910f, -1.616650f , - 0.619326f, -0.803335f, -1.544342f , - 0.559597f, -0.735993f, -1.404128f , - 0.640959f, -0.525131f, -1.487082f , - 1.150408f, -0.621087f, -1.899095f , - 1.227130f, -0.697247f, -1.936641f , - 1.051475f, -0.751351f, -1.917268f , - 1.061489f, -0.562444f, -1.855254f , - 1.246018f, -0.482261f, -1.884132f , - 0.911743f, -0.420729f, -1.757089f , - 0.945496f, -0.455232f, -1.782644f , - 0.861868f, -0.458133f, -1.736891f , - 0.952000f, -0.290848f, -1.737129f , - 1.401027f, -0.939803f, -1.930992f , - 1.422570f, -1.032290f, -1.895318f , - 1.239443f, -1.045982f, -1.966088f , - 1.350195f, -0.855265f, -1.953907f , - 1.549953f, -0.822633f, -1.903575f , - 1.563584f, -1.316043f, -1.647770f , - 1.630868f, -1.407857f, -1.506666f , - 1.443942f, -1.434966f, -1.669441f , - 1.513191f, -1.219788f, -1.748510f , - 1.737857f, -1.207400f, -1.595700f , - -3.661776f, -3.052288f, -2.670887f , - -3.766499f, -3.050855f, -2.650164f , - -3.657082f, -2.748232f, -2.582314f , - -3.564811f, -3.066280f, -2.684053f , - -3.640230f, -3.313710f, -2.720849f , - -3.387463f, -3.105719f, -2.709663f , - -3.425516f, -3.098451f, -2.706096f , - -3.358245f, -3.023250f, -2.667691f , - -3.358928f, -3.270548f, -2.781733f , - -3.258535f, -2.965780f, -2.589281f , - -3.291988f, -2.955783f, -2.607515f , - -3.242579f, -2.946014f, -2.548805f , - -3.196401f, -3.121900f, -2.640014f , - -3.166195f, -2.980282f, -2.320965f , - -3.157896f, -2.985368f, -2.213292f , - -3.080899f, -3.141042f, -2.266323f , - -3.096354f, -3.128464f, -2.395845f , - -3.197761f, -2.948246f, -2.411808f , - -3.238120f, -2.761588f, -2.310007f , - -2.550750f, -0.892865f, -1.082217f , - -2.743681f, -0.951363f, -0.944827f , - -2.627936f, -0.951072f, -1.216137f , - -2.413310f, -0.817951f, -1.256943f , - -2.468333f, -0.851498f, -0.965153f , - -3.259184f, -2.961202f, -1.887549f , - -3.307248f, -2.989149f, -1.786070f , - -3.185328f, -3.115232f, -1.880970f , - -3.205309f, -2.975774f, -1.994816f , - -3.304980f, -2.799218f, -1.868723f , - -3.182040f, -1.824357f, -2.199722f , - -3.162202f, -1.922581f, -2.108109f , - -3.249471f, -2.188280f, -2.248457f , - -3.226932f, -1.774666f, -2.267214f , - -3.100148f, -1.544082f, -2.143731f , - -3.798337f, -0.332533f, -1.887507f , - -3.936200f, -0.319516f, -1.730187f , - -3.779289f, -0.185822f, -1.846930f , - -3.640733f, -0.378930f, -2.052193f , - -3.812437f, -0.528647f, -1.961021f , - -3.397667f, -0.890813f, -0.704383f , - -3.431342f, -0.993527f, -0.844965f , - -3.167751f, -0.948977f, -0.754765f , - -3.387428f, -0.844034f, -0.577663f , - -3.632729f, -0.816043f, -0.698797f , - -4.164891f, -0.363615f, -1.302655f , - -4.182446f, -0.234833f, -1.196932f , - -4.122241f, -0.334780f, -1.433713f , - -4.169653f, -0.548661f, -1.404655f , - -4.179352f, -0.420704f, -1.179654f , - -4.066169f, -0.594801f, -0.851469f , - -3.962988f, -0.669931f, -0.770982f , - -4.087463f, -0.513582f, -0.748574f , - -4.128585f, -0.535712f, -0.954965f , - -4.053323f, -0.733909f, -0.967383f , - -3.114644f, -3.516968f, -2.663466f , - -3.131846f, -3.566777f, -2.640793f , - -3.245950f, -3.462017f, -2.802180f , - -3.427364f, -3.645016f, -2.294608f , - -3.706584f, -3.605964f, -2.220351f , - -3.655723f, -3.606152f, -2.400393f , - -3.516990f, -3.608391f, -2.532452f , - -3.325542f, -3.633378f, -2.530347f , - -3.233096f, -3.637191f, -2.453758f , - -3.194537f, -3.637551f, -2.367791f , - -3.178174f, -3.637538f, -2.268747f , - -3.185419f, -3.636808f, -2.193616f , - -3.315847f, -3.636706f, -2.069088f , - -3.525863f, -3.614936f, -2.045016f , - -3.664160f, -3.610619f, -2.099319f , - -3.199248f, -3.514026f, -1.771174f , - -3.208203f, -3.570720f, -1.806863f , - -3.126222f, -3.492029f, -1.841668f , - -3.262096f, -3.468239f, -1.746158f , - -3.399930f, -3.189547f, -1.664247f , - -3.359600f, -3.309586f, -1.694304f , - -3.376826f, -3.101848f, -1.677200f , - -3.443261f, -3.188151f, -1.649954f , - -3.717240f, -3.158442f, -1.618240f , - -3.826601f, -3.152062f, -1.622557f , - -3.675219f, -3.372971f, -1.706926f , - -3.602757f, -3.170827f, -1.625942f , - -3.725124f, -2.899438f, -1.550287f , - -4.089489f, -3.066953f, -1.724714f , - -4.138237f, -3.063213f, -1.790854f , - -3.998640f, -3.328516f, -1.814800f , - -4.011725f, -3.111923f, -1.676129f , - -4.125849f, -2.791853f, -1.649633f , - -4.211150f, -3.013654f, -2.050707f , - -4.200537f, -3.010676f, -2.151955f , - -4.103862f, -3.291915f, -2.097867f , - -4.201035f, -3.031267f, -1.952889f , - -4.268935f, -2.690790f, -1.997537f , - -4.047320f, -3.018357f, -2.448838f , - -3.958218f, -3.033417f, -2.539523f , - -3.970683f, -3.294032f, -2.478149f , - -4.118219f, -3.012605f, -2.352195f , - -4.074939f, -2.695120f, -2.398642f , - -2.715854f, -0.880679f, -1.993361f , - -2.643578f, -0.954728f, -1.872935f , - -2.770865f, -0.962657f, -2.022016f , - -2.809001f, -0.800238f, -2.097600f , - -2.649482f, -0.796443f, -1.950619f , - -2.704282f, -1.081231f, -1.503973f , - -2.748415f, -1.126026f, -1.505292f , - -2.633760f, -1.053299f, -1.633920f , - -2.698309f, -1.042661f, -1.429289f , - -2.867809f, -1.249915f, -1.584712f , - -2.832373f, -1.213011f, -1.547522f , - -2.929391f, -1.309214f, -1.563317f , - -2.835532f, -1.270364f, -1.732462f , - -2.883600f, -1.161195f, -2.020835f , - -2.853312f, -1.104958f, -2.033678f , - -2.843841f, -1.227108f, -1.940910f , - -2.948323f, -1.205896f, -2.052534f , - -3.189392f, -1.961429f, -1.660623f , - -3.092468f, -1.667905f, -1.599274f , - -3.241397f, -1.947686f, -1.513226f , - -3.271862f, -2.299266f, -1.761962f , - -3.165146f, -1.986341f, -1.844422f , - -3.601449f, -1.809020f, -1.229435f , - -3.763391f, -1.791795f, -1.214198f , - -3.668896f, -2.232123f, -1.358400f , - -3.447361f, -1.875697f, -1.295219f , - -3.530644f, -1.461190f, -1.108359f , - -4.108765f, -1.663726f, -1.332063f , - -4.179545f, -1.618379f, -1.421743f , - -4.138047f, -2.083037f, -1.452809f , - -4.016940f, -1.710155f, -1.262831f , - -4.075914f, -1.266044f, -1.207226f , - -4.259214f, -1.521648f, -1.732028f , - -4.237184f, -1.508461f, -1.847440f , - -4.293444f, -1.944000f, -1.838768f , - -4.254653f, -1.548459f, -1.621832f , - -4.216587f, -1.125885f, -1.619899f , - -3.969406f, -1.497927f, -2.183776f , - -3.840343f, -1.539646f, -2.283665f , - -4.038194f, -1.940282f, -2.266288f , - -4.093614f, -1.502341f, -2.074095f , - -3.901842f, -1.115016f, -2.106447f , - -3.480897f, -1.629795f, -2.383146f , - -3.391704f, -1.246805f, -2.337703f , - -3.373994f, -1.668001f, -2.359293f , - -3.565125f, -2.035197f, -2.437713f , - -3.593410f, -1.598887f, -2.382059f , - -8.761937f, 0.939127f, -0.236367f , - -8.448987f, 0.922106f, -0.264569f , - -8.807409f, 0.895092f, -0.232032f , - -8.808177f, 0.986726f, -0.229482f , - -6.110153f, 0.045881f, -0.030014f , - -6.445974f, 0.062709f, -0.061009f , - -6.059023f, 0.093154f, -0.072534f , - -7.559712f, 0.196467f, -0.105794f , - -7.941935f, 0.267325f, -0.100694f , - -7.551321f, 0.255980f, -0.161423f , - -7.183687f, 0.137735f, -0.099784f , - -7.573708f, 0.153908f, -0.044716f , - -8.959841f, 0.525310f, -0.034783f , - -8.991688f, 0.571572f, -0.075839f , - -8.650052f, 0.435145f, -0.066772f , - -8.914837f, 0.732800f, -0.205464f , - -8.594984f, 0.662908f, -0.230428f , - -8.965376f, 0.693039f, -0.179728f , - -8.915907f, 0.784040f, -0.212472f , - -7.496414f, 0.469096f, -0.288373f , - -7.115801f, 0.422294f, -0.299055f , - -7.518498f, 0.392781f, -0.253164f , - -7.876714f, 0.529515f, -0.272860f , - -7.478914f, 0.555076f, -0.315481f , - -5.962454f, 0.377207f, -0.285748f , - -5.643817f, 0.382144f, -0.282650f , - -6.001218f, 0.270137f, -0.208068f , - -6.356148f, 0.375463f, -0.297753f , - -5.971239f, 0.493080f, -0.354778f , - -7.436043f, 0.854969f, -0.332805f , - -7.077953f, 0.841235f, -0.353898f , - -7.453914f, 0.747995f, -0.337251f , - -7.811834f, 0.881409f, -0.310534f , - -7.456439f, 0.964910f, -0.318233f , - -5.955402f, 0.942792f, -0.432526f , - -5.632232f, 1.004905f, -0.468927f , - -5.965160f, 0.775517f, -0.427613f , - -6.337221f, 0.883924f, -0.403661f , - -5.980900f, 1.104381f, -0.416033f , - -4.915012f, 1.172881f, -0.700735f , - -4.932939f, 0.927397f, -0.664068f , - -5.110331f, 1.115061f, -0.600982f , - -4.926320f, 1.371612f, -0.695004f , - -4.777640f, 1.176803f, -0.793421f , - -0.831821f, 0.690908f, -1.779892f , - -0.819896f, 0.986507f, -1.834323f , - -0.551040f, 0.653414f, -1.776443f , - -0.858540f, 0.392509f, -1.699946f , - -1.120353f, 0.690610f, -1.776951f , - -2.043660f, 1.694604f, -1.821436f , - -1.898566f, 1.327528f, -1.879384f , - -2.261653f, 1.501379f, -1.862929f , - -2.154489f, 2.014274f, -1.727260f , - -1.732757f, 1.795790f, -1.796634f , - -2.965026f, 0.041450f, -2.138266f , - -2.773088f, -0.105085f, -2.109892f , - -3.021394f, -0.145313f, -2.168544f , - -3.170643f, 0.143401f, -2.125027f , - -2.899908f, 0.215745f, -2.107688f , - -2.365400f, -0.480935f, -1.766036f , - -2.260043f, -0.397478f, -1.695063f , - -2.321476f, -0.614723f, -1.597204f , - -2.477458f, -0.600198f, -1.838712f , - -2.476258f, -0.365333f, -1.924616f , - -3.099634f, -0.510543f, -2.223636f , - -3.084486f, -0.420165f, -2.210730f , - -2.996899f, -0.618596f, -2.213156f , - -3.166043f, -0.520046f, -2.230887f , - -3.324687f, -0.559530f, -2.255380f , - -3.283845f, -0.542736f, -2.247140f , - -3.316069f, -0.714032f, -2.274575f , - -3.407570f, -0.491767f, -2.232885f , - -3.746712f, 0.325536f, -1.790865f , - -3.754048f, 0.525005f, -1.768174f , - -3.563980f, 0.290558f, -1.947998f , - -3.758567f, 0.146040f, -1.792152f , - -3.930841f, 0.349959f, -1.604790f , - -3.767488f, 1.359689f, -1.567963f , - -3.764615f, 1.032851f, -1.660176f , - -4.038111f, 1.278998f, -1.397740f , - -3.788144f, 1.630249f, -1.460015f , - -3.489145f, 1.338624f, -1.737997f , - -2.726355f, 0.950497f, -1.978887f , - -2.772076f, 0.654807f, -2.029847f , - -2.957409f, 1.122682f, -1.945186f , - -2.604569f, 1.118479f, -1.942465f , - -2.465621f, 0.644923f, -1.995427f , - -1.633628f, 0.668486f, -1.844966f , - -1.705877f, 0.823024f, -1.890337f , - -1.519237f, 0.683147f, -1.811770f , - -1.688581f, 0.525338f, -1.837551f , - -1.918337f, 0.253897f, -1.881558f , - -2.073625f, 0.319475f, -1.946577f , - -1.832189f, 0.321496f, -1.857284f , - -1.906217f, 0.169573f, -1.836740f , - -1.849196f, -0.248472f, -1.463747f , - -1.849756f, -0.450567f, -1.243941f , - -1.998066f, -0.284126f, -1.535147f , - -1.867237f, -0.090938f, -1.618239f , - -1.675542f, -0.280558f, -1.351700f , - -3.320922f, -0.814798f, -0.226077f , - -3.090870f, -0.878833f, -0.215090f , - -3.290271f, -0.833186f, -0.101908f , - -3.540370f, -0.743625f, -0.210597f , - -3.343843f, -0.806851f, -0.333229f , - -4.469232f, 1.066780f, -1.073803f , - -4.551299f, 1.123566f, -0.982639f , - -4.386241f, 1.135997f, -1.150089f , - -4.446947f, 0.876241f, -1.106271f , - -4.325236f, 0.466852f, -1.201631f , - -4.348656f, 0.407389f, -1.143982f , - -4.372805f, 0.582712f, -1.172621f , - -4.215395f, 0.421275f, -1.315492f , - -4.405619f, 0.149788f, -0.840506f , - -4.519716f, 0.233620f, -0.710817f , - -4.389224f, 0.243254f, -0.959390f , - -4.300806f, 0.019475f, -0.964737f , - -4.397707f, 0.022215f, -0.717341f , - -4.934897f, 0.364672f, -0.410054f , - -4.936075f, 0.227842f, -0.293248f , - -5.123904f, 0.378331f, -0.345439f , - -4.941006f, 0.530991f, -0.521966f , - -4.787697f, 0.348113f, -0.497739f , - -4.799722f, -0.087807f, -0.045946f , - -4.624034f, -0.132187f, -0.087670f , - -4.885296f, -0.007668f, -0.101586f , - -4.100720f, -0.417828f, -0.181149f , - -4.162735f, -0.363208f, -0.268951f , - -3.930114f, -0.546275f, -0.189693f , - -4.034096f, -0.475547f, -0.081005f , - -4.256648f, -0.304051f, -0.155909f , - -4.253864f, -0.272652f, -0.512170f , - -4.241615f, -0.288477f, -0.438473f , - -4.323358f, -0.183949f, -0.556847f , - -4.182242f, -0.350430f, -0.580574f , - -2.562316f, -1.006915f, -0.138672f , - -2.534217f, -1.014681f, -0.062439f , - -2.719326f, -0.972831f, -0.175620f , - -2.499444f, -1.002167f, -0.201753f , - -2.150996f, -0.854237f, -0.610294f , - -1.975439f, -0.874103f, -0.536027f , - -2.282532f, -0.924491f, -0.441808f , - -2.260361f, -0.828250f, -0.731243f , - -1.995594f, -0.743898f, -0.829685f , - -1.209211f, -0.931980f, -0.396506f , - -0.880020f, -0.937018f, -0.406340f , - -1.239998f, -0.997781f, -0.194969f , - -1.506346f, -0.913420f, -0.428502f , - -1.141655f, -0.825034f, -0.617276f , - -0.119926f, -0.972845f, -0.438394f , - 0.063639f, -1.002606f, -0.435967f , - -0.145970f, -1.053003f, -0.208951f , - -0.341780f, -0.960291f, -0.420321f , - -0.100140f, -0.876264f, -0.638157f , - 0.528337f, -1.197415f, -0.364703f , - 0.694975f, -1.310678f, -0.302892f , - 0.530952f, -1.267626f, -0.169412f , - 0.396176f, -1.119720f, -0.396428f , - 0.563376f, -1.162705f, -0.516093f , - 1.218777f, -1.487203f, -0.270914f , - 1.387064f, -1.503757f, -0.293392f , - 1.211080f, -1.487256f, -0.126513f , - 1.031925f, -1.449553f, -0.259993f , - 1.207036f, -1.493049f, -0.397357f , - 1.808884f, -1.433672f, -0.524485f , - 1.904709f, -1.388268f, -0.563503f , - 1.801510f, -1.447145f, -0.242794f , - 1.679102f, -1.480059f, -0.409673f , - 1.771780f, -1.447148f, -0.710306f , - 2.318644f, -1.159662f, -0.602232f , - 2.487809f, -1.057739f, -0.558587f , - 2.342120f, -1.192241f, -0.290163f , - 2.167633f, -1.247417f, -0.610872f , - 2.307432f, -1.103676f, -0.873846f , - 2.888781f, -0.745853f, -0.463412f , - 3.020227f, -0.636843f, -0.406098f , - 2.887427f, -0.803190f, -0.217699f , - 2.772190f, -0.851606f, -0.486123f , - 2.902035f, -0.665634f, -0.661449f , - 2.281345f, 0.909301f, -1.763893f , - 2.103851f, 0.673193f, -1.848624f , - 2.135415f, 1.036082f, -1.768876f , - 2.448631f, 1.093392f, -1.676334f , - 2.405755f, 0.740727f, -1.756477f , - 1.628129f, 0.053732f, -1.909705f , - 1.745023f, -0.057744f, -1.924531f , - 1.486650f, -0.145869f, -1.889291f , - 1.507848f, 0.133147f, -1.884440f , - 1.777485f, 0.246335f, -1.920435f , - 2.068743f, -0.415033f, -1.833522f , - 2.136876f, -0.561517f, -1.762245f , - 1.883988f, -0.563911f, -1.853598f , - 1.961492f, -0.293432f, -1.886661f , - 2.226775f, -0.285791f, -1.807056f , - 2.265559f, -0.882953f, -1.450280f , - 2.438211f, -0.776189f, -1.394866f , - 2.276964f, -0.967209f, -1.301146f , - 2.082783f, -0.991572f, -1.500903f , - 2.238389f, -0.791908f, -1.570618f , - 2.889414f, -0.408959f, -1.174560f , - 3.019428f, -0.289069f, -1.091646f , - 2.900035f, -0.497697f, -1.023410f , - 2.751060f, -0.538586f, -1.257064f , - 2.866246f, -0.305277f, -1.308354f , - 2.700326f, 0.204599f, -1.615509f , - 2.616436f, 0.386695f, -1.680301f , - 2.839185f, 0.349096f, -1.527937f , - 2.772461f, -0.003974f, -1.527667f , - 2.547353f, 0.022724f, -1.696940f , - 3.081374f, 0.702091f, -1.372336f , - 3.028264f, 0.613416f, -1.409168f , - 3.058101f, 0.896768f, -1.402529f , - 3.138451f, 0.677126f, -1.323097f , - 0.327301f, -0.323494f, -1.421682f , - 0.231568f, -0.291313f, -1.433516f , - 0.517031f, -0.198437f, -1.517336f , - 0.500349f, -0.347922f, -1.445816f , - 0.233597f, -0.400430f, -1.349476f , - -0.001850f, -0.628650f, -1.074161f , - -0.228935f, -0.620115f, -1.067812f , - 0.054751f, -0.557139f, -1.170606f , - 0.194466f, -0.639259f, -1.088166f , - -0.037940f, -0.703613f, -0.958020f , - -1.027847f, -0.436941f, -1.156774f , - -0.732909f, -0.528415f, -1.106489f , - -1.045190f, -0.583956f, -0.989797f , - -1.255823f, -0.372128f, -1.202440f , - -0.948430f, -0.326081f, -1.282289f , - -0.045029f, -0.193949f, -1.492476f , - -0.224432f, -0.222580f, -1.475756f , - 0.012160f, -0.092540f, -1.547125f , - 0.023587f, -0.231314f, -1.463846f , - -0.764848f, -0.124779f, -1.505137f , - -0.568855f, -0.189527f, -1.481904f , - -0.818015f, -0.168021f, -1.458960f , - -0.811918f, -0.012817f, -1.563409f , - 0.450895f, 1.687866f, -1.751296f , - 0.169685f, 1.763240f, -1.765489f , - 0.475926f, 1.932478f, -1.678862f , - 0.705766f, 1.580460f, -1.743704f , - 0.425806f, 1.412028f, -1.792716f , - -0.796432f, 1.911885f, -1.771250f , - -0.793591f, 1.602192f, -1.831350f , - -1.114879f, 1.914435f, -1.769793f , - -0.789520f, 2.214674f, -1.670829f , - -0.452001f, 1.879349f, -1.774908f , - 0.231780f, 0.565952f, -1.735175f , - 0.466709f, 0.520425f, -1.712988f , - 0.160954f, 0.285526f, -1.667917f , - -0.011201f, 0.593101f, -1.754550f , - 0.317654f, 0.852138f, -1.783216f , - 0.868432f, 0.412542f, -1.732579f , - 0.935429f, 0.385487f, -1.757951f , - 0.772324f, 0.166968f, -1.668070f , - 0.781189f, 0.447764f, -1.712601f , - 0.945532f, 0.674811f, -1.782457f , - 1.192249f, 0.317457f, -1.825376f , - 1.295688f, 0.554761f, -1.866206f , - 1.289365f, 0.262604f, -1.841302f , - 1.090143f, 0.067789f, -1.771760f , - 1.096609f, 0.331287f, -1.803356f , - 1.071903f, 1.347367f, -1.782490f , - 1.046266f, 1.127905f, -1.809788f , - 1.012828f, 1.401004f, -1.761148f , - 1.126749f, 1.365309f, -1.791152f , - 1.601845f, 1.359179f, -1.769682f , - 1.659276f, 1.581936f, -1.686842f , - 1.789695f, 1.254745f, -1.774266f , - 1.494817f, 1.070825f, -1.842923f , - 1.386323f, 1.374079f, -1.785942f , - 2.810134f, 1.318240f, -1.483154f , - 2.826087f, 1.371110f, -1.463108f , - 2.928935f, 1.189125f, -1.455214f , - 2.719226f, 1.296038f, -1.534075f , - -9.993058f, 1.002968f, -0.022489f , - -10.046487f, 1.073099f, -0.032358f , - -9.817530f, 1.036187f, -0.051843f , - -8.955361f, 1.171073f, -0.200249f , - -8.593510f, 1.193440f, -0.223493f , - -8.924916f, 1.103276f, -0.209538f , - -9.297946f, 1.134524f, -0.161366f , - -8.974131f, 1.238729f, -0.186684f , - -7.472871f, 1.248089f, -0.242950f , - -7.112772f, 1.274159f, -0.240265f , - -7.473108f, 1.161075f, -0.273612f , - -7.856287f, 1.232358f, -0.244781f , - -7.500615f, 1.332833f, -0.207565f , - -6.009877f, 1.492690f, -0.272768f , - -5.685774f, 1.583488f, -0.304655f , - -6.005401f, 1.379078f, -0.336634f , - -6.379871f, 1.395379f, -0.255249f , - -6.034915f, 1.593455f, -0.205632f , - -5.022689f, 1.731091f, -0.542397f , - -4.982205f, 1.654756f, -0.614474f , - -5.195258f, 1.702092f, -0.435580f , - -4.964220f, 1.803309f, -0.534476f , - -4.543111f, 2.267506f, -0.475348f , - -4.723027f, 2.066505f, -0.507457f , - -4.569728f, 2.359629f, -0.373289f , - -4.368028f, 2.313396f, -0.583300f , - -3.803275f, 2.315169f, -1.041178f , - -3.805716f, 2.116922f, -1.194210f , - -3.996436f, 2.343493f, -0.861913f , - -3.609387f, 2.447482f, -1.053905f , - -2.743414f, 2.814898f, -1.089743f , - -2.457638f, 2.946620f, -1.055882f , - -2.520352f, 2.588306f, -1.353475f , - -3.083028f, 2.701798f, -1.073577f , - -2.994761f, 3.027278f, -0.782987f , - -1.986417f, 3.227601f, -0.923916f , - -2.076479f, 3.156045f, -0.971501f , - -2.123281f, 3.392982f, -0.728906f , - -1.792787f, 3.187126f, -0.987923f , - -0.958576f, 3.028370f, -1.124912f , - -0.613409f, 2.965290f, -1.148025f , - -0.873735f, 2.772139f, -1.348207f , - -1.274420f, 3.079778f, -1.096627f , - -1.038528f, 3.253992f, -0.894060f , - 0.444336f, 2.693651f, -1.208742f , - 0.818677f, 2.552134f, -1.249175f , - 0.474744f, 2.432329f, -1.412307f , - 0.091310f, 2.791568f, -1.194673f , - 0.438753f, 2.894475f, -1.017475f , - 1.804230f, 2.272517f, -1.254689f , - 2.100453f, 2.221990f, -1.231135f , - 1.767656f, 2.049643f, -1.425025f , - 1.494875f, 2.349305f, -1.266147f , - 1.838660f, 2.480112f, -1.061808f , - -10.057858f, 1.144065f, -0.019784f , - -9.888401f, 1.259755f, -0.039012f , - -9.044996f, 1.438030f, -0.062456f , - -8.680939f, 1.470164f, -0.070824f , - -9.020941f, 1.372364f, -0.123077f , - -9.391495f, 1.398227f, -0.053044f , - -7.580538f, 1.599990f, -0.059945f , - -7.228701f, 1.658762f, -0.048905f , - -7.553100f, 1.508660f, -0.121100f , - -7.949390f, 1.551274f, -0.069658f , - -6.146908f, 1.932008f, -0.041882f , - -5.791886f, 2.061838f, -0.048484f , - -6.102169f, 1.814103f, -0.093881f , - -6.510571f, 1.824803f, -0.041083f , - -4.718668f, 2.627829f, -0.123482f , - -4.372642f, 2.857060f, -0.147949f , - -4.654264f, 2.548061f, -0.193553f , - -5.077460f, 2.411422f, -0.092183f , - -4.778539f, 2.692736f, -0.052759f , - -3.399699f, 3.396337f, -0.202786f , - -3.103209f, 3.518502f, -0.225205f , - -3.317029f, 3.312127f, -0.347943f , - -3.712422f, 3.237889f, -0.190926f , - -3.444040f, 3.434852f, -0.095735f , - -2.313254f, 3.739231f, -0.259415f , - -2.068209f, 3.759797f, -0.270901f , - -2.284671f, 3.640995f, -0.405024f , - -2.561171f, 3.691091f, -0.251987f , - -2.330246f, 3.803472f, -0.122517f , - -1.140818f, 3.706098f, -0.312348f , - -0.785416f, 3.648833f, -0.331716f , - -1.132920f, 3.593516f, -0.487581f , - -1.482844f, 3.743961f, -0.297007f , - -1.149957f, 3.776572f, -0.148623f , - 0.468885f, 3.354543f, -0.399125f , - 0.884546f, 3.235625f, -0.421319f , - 0.441620f, 3.233010f, -0.607687f , - 0.016563f, 3.474120f, -0.375055f , - 0.466283f, 3.439552f, -0.191962f , - 1.942574f, 2.919558f, -0.425671f , - 2.235829f, 2.828861f, -0.414922f , - 1.909402f, 2.801327f, -0.649681f , - 1.628619f, 3.015476f, -0.435952f , - 1.979388f, 2.988794f, -0.206596f , - 6.553775f, 2.048271f, -0.595307f , - 6.318590f, 1.884147f, -0.580244f , - 6.557728f, 2.065412f, -0.638666f , - 6.566823f, 2.065358f, -0.559900f , - 4.277408f, 1.154156f, -1.512796f , - 4.258663f, 1.106636f, -1.398072f , - 4.184282f, 1.219980f, -1.511962f , - 4.360798f, 1.192959f, -1.672723f , - 4.420116f, 1.096756f, -1.559648f , - 3.590790f, 2.351956f, -1.640084f , - 3.666166f, 2.422099f, -1.766120f , - 3.620293f, 2.235054f, -1.652459f , - 3.488377f, 2.238645f, -1.495664f , - 3.551592f, 2.431402f, -1.593727f , - 3.418871f, 3.321941f, -0.279533f , - 3.400250f, 3.319478f, -0.130280f , - 3.481824f, 3.581522f, -0.309677f , - 3.431028f, 3.278667f, -0.415714f , - 3.335389f, 3.032413f, -0.245522f , - 3.453169f, 3.199157f, -0.805225f , - 3.448576f, 3.218511f, -0.678337f , - 3.516575f, 3.456321f, -0.897567f , - 3.450398f, 3.143936f, -0.912929f , - 3.377406f, 2.917125f, -0.707786f , - 3.473908f, 3.009130f, -1.205815f , - 3.460353f, 3.047334f, -1.112014f , - 3.542220f, 3.207367f, -1.358166f , - 3.479407f, 2.924640f, -1.273040f , - 3.393183f, 2.765316f, -1.053711f , - 3.503377f, 2.712683f, -1.467067f , - 3.494521f, 2.778251f, -1.404507f , - 3.568476f, 2.863049f, -1.624135f , - 3.508969f, 2.612877f, -1.509897f , - 3.412251f, 2.528653f, -1.305450f , - 3.716023f, 1.940766f, -1.706914f , - 3.685668f, 2.035754f, -1.691432f , - 3.821588f, 1.989102f, -1.820376f , - 3.754031f, 1.844906f, -1.714401f , - 3.595701f, 1.893550f, -1.601177f , - 3.920238f, 1.502663f, -1.592749f , - 4.016574f, 1.597111f, -1.758554f , - 3.997241f, 1.399853f, -1.549417f , - 3.813650f, 1.457308f, -1.461314f , - 3.855655f, 1.628922f, -1.660377f , - 4.298954f, 1.001083f, -1.196556f , - 4.268743f, 1.029646f, -1.236276f , - 4.438500f, 0.963881f, -1.234075f , - 4.281352f, 0.986020f, -1.154250f , - 5.856700f, 1.624751f, -0.251398f , - 5.872617f, 1.565481f, -0.240292f , - 5.878470f, 1.647773f, -0.305983f , - 5.822680f, 1.655977f, -0.198954f , - 5.903301f, 1.664420f, -0.334792f , - 5.933743f, 1.735049f, -0.342119f , - 5.939087f, 1.621992f, -0.376354f , - 6.388140f, 2.123779f, -0.504595f , - 6.187325f, 1.974095f, -0.441517f , - 6.462032f, 2.098500f, -0.507542f , - 6.414055f, 2.200605f, -0.543081f , - 6.142025f, 2.072110f, -0.470254f , - 6.385388f, 2.310337f, -0.711231f , - 6.423939f, 2.307992f, -0.661776f , - 6.402082f, 2.303755f, -0.747135f , - 6.120287f, 2.224004f, -0.700615f , - 6.397022f, 2.262803f, -0.764914f , - 6.437086f, 2.227039f, -0.763848f , - 6.135796f, 2.139781f, -0.795471f , - 6.421364f, 2.063167f, -0.744352f , - 6.429911f, 2.103872f, -0.754796f , - 6.465113f, 2.062320f, -0.721251f , - 6.168714f, 1.909094f, -0.760067f , - 5.949998f, 1.569868f, -0.580799f , - 5.928656f, 1.591686f, -0.659873f , - 6.009645f, 1.640730f, -0.572214f , - 5.963057f, 1.568286f, -0.497854f , - 5.934597f, 1.521079f, -0.590717f , - 5.750313f, 1.991221f, -0.382612f , - 5.819733f, 1.987376f, -0.398300f , - 5.730215f, 2.033167f, -0.421223f , - 5.705851f, 1.968046f, -0.331479f , - 5.660005f, 1.943580f, -0.842592f , - 5.629217f, 2.012289f, -0.834954f , - 5.757418f, 1.974249f, -0.835483f , - 5.705046f, 1.866634f, -0.832076f , - 5.592031f, 1.929895f, -0.850352f , - 5.826549f, 1.690034f, -0.790981f , - 5.787752f, 1.741141f, -0.806275f , - 5.892943f, 1.736062f, -0.782065f , - 5.867225f, 1.651647f, -0.765077f , - 5.774945f, 1.662240f, -0.802823f , - 5.787404f, 1.668480f, -0.151803f , - 5.759299f, 1.705528f, -0.151569f , - 5.771851f, 1.626322f, -0.072229f , - 4.969134f, 2.274104f, -0.201637f , - 5.145488f, 2.199407f, -0.172119f , - 5.015544f, 2.251426f, -0.303050f , - 4.783548f, 2.364747f, -0.225136f , - 4.933844f, 2.290055f, -0.090616f , - 4.578647f, 2.083829f, -1.300879f , - 4.537971f, 2.221041f, -1.266030f , - 4.731317f, 2.009566f, -1.188244f , - 4.648559f, 1.918885f, -1.297250f , - 4.494610f, 2.062289f, -1.409553f , - 4.427462f, 2.225271f, -1.396104f , - 4.389851f, 2.608345f, -1.006207f , - 4.273145f, 2.689326f, -1.170073f , - 4.242423f, 2.813320f, -1.055194f , - 4.361118f, 2.680348f, -0.863604f , - 4.555299f, 2.458945f, -0.903836f , - 4.441959f, 2.487833f, -1.120965f , - 4.236374f, 2.867307f, -0.378695f , - 4.233634f, 2.864482f, -0.183631f , - 4.413595f, 2.665276f, -0.318151f , - 4.286176f, 2.808434f, -0.546591f , - 4.120264f, 3.025741f, -0.544521f , - 4.090267f, 3.054804f, -0.333607f , - 3.814914f, 3.579076f, -0.293114f , - 3.813391f, 3.576526f, -0.139767f , - 3.883339f, 3.404752f, -0.289744f , - 3.823976f, 3.561820f, -0.448418f , - 3.759698f, 3.727973f, -0.312768f , - 3.863416f, 3.470166f, -0.858714f , - 3.848907f, 3.506474f, -0.728595f , - 3.938267f, 3.320342f, -0.780835f , - 3.886955f, 3.408831f, -0.969954f , - 3.807433f, 3.591246f, -0.907692f , - 3.924515f, 3.244653f, -1.256419f , - 3.917490f, 3.296718f, -1.169995f , - 4.016019f, 3.123893f, -1.174535f , - 3.940148f, 3.172811f, -1.332720f , - 3.857472f, 3.326670f, -1.350780f , - 3.997608f, 2.919502f, -1.531112f , - 3.974790f, 3.013724f, -1.470354f , - 4.081383f, 2.840812f, -1.427048f , - 4.019643f, 2.824624f, -1.583692f , - 3.918623f, 3.006305f, -1.619235f , - 4.084691f, 2.509477f, -1.696733f , - 4.067038f, 2.615016f, -1.663291f , - 4.187082f, 2.433941f, -1.587613f , - 4.126858f, 2.382308f, -1.702535f , - 4.016480f, 2.541440f, -1.784075f , - 4.268752f, 2.059264f, -1.712641f , - 4.216459f, 2.159753f, -1.713173f , - 4.343832f, 2.048404f, -1.611700f , - 4.329477f, 1.956922f, -1.705162f , - 4.205775f, 2.059375f, -1.806950f , - 4.491249f, 1.676901f, -1.689191f , - 4.550822f, 1.657701f, -1.586550f , - 4.543343f, 1.587895f, -1.676461f , - 4.449285f, 1.673317f, -1.778514f , - 4.440621f, 1.766306f, -1.692781f , - 4.660648f, 1.341115f, -1.635896f , - 4.624963f, 1.341179f, -1.729860f , - 4.627789f, 1.419343f, -1.650396f , - 4.693406f, 1.344718f, -1.541176f , - 4.683423f, 1.260492f, -1.619722f , - 4.644890f, 1.090247f, -1.573733f , - 4.669533f, 1.129693f, -1.596822f , - 4.652927f, 1.079820f, -1.502753f , - 4.600842f, 1.075767f, -1.589275f , - 4.761423f, 1.043007f, -1.233166f , - 4.706770f, 1.053641f, -1.329705f , - 4.816619f, 1.115153f, -1.235128f , - 4.799860f, 1.017854f, -1.169840f , - 4.657486f, 0.986164f, -1.253503f , - 4.804446f, 1.472998f, -1.281256f , - 4.763161f, 1.409715f, -1.367275f , - 4.705022f, 1.554145f, -1.386583f , - 4.763126f, 1.610828f, -1.287050f , - 4.907992f, 1.443027f, -1.172362f , - 4.840918f, 1.329590f, -1.258226f , - 5.211490f, 1.909891f, -0.950073f , - 5.177836f, 2.008146f, -0.935790f , - 5.368309f, 1.914316f, -0.903586f , - 5.265608f, 1.812644f, -0.940237f , - 5.052853f, 1.922693f, -1.009092f , - 5.507856f, 1.938702f, -0.115912f , - 5.609499f, 1.839172f, -0.123877f , - 5.574058f, 1.941178f, -0.194067f , - 5.418130f, 2.029980f, -0.134166f , - 5.481501f, 1.928649f, -0.052664f , - 5.098030f, 2.180384f, -0.667039f , - 4.915140f, 2.239027f, -0.732015f , - 5.080374f, 2.203951f, -0.541255f , - 5.273013f, 2.140668f, -0.637971f , - 5.120131f, 2.141893f, -0.798054f , - 5.625453f, 2.098108f, -0.633317f , - 5.664105f, 2.090404f, -0.547046f , - 5.741541f, 2.116260f, -0.669951f , - 5.610177f, 2.090028f, -0.729270f , - 5.537058f, 2.099987f, -0.614878f , - 4.025856f, 0.567815f, -0.850868f , - 4.072985f, 0.655673f, -0.902478f , - 4.083306f, 0.414694f, -0.796835f , - 3.944844f, 0.582959f, -0.855570f , - 4.710067f, 0.558700f, -1.029220f , - 4.829288f, 0.517901f, -1.028487f , - 4.658179f, 0.464171f, -0.971021f , - 4.598615f, 0.597280f, -1.020566f , - 4.781749f, 0.648315f, -1.076862f , - 4.255872f, 0.811456f, -1.024683f , - 4.255585f, 0.891741f, -1.065845f , - 4.373532f, 0.722295f, -1.018408f , - 4.188424f, 0.780747f, -0.990976f , - 4.985360f, 0.885811f, -1.077725f , - 4.922390f, 0.812075f, -1.100226f , - 4.920831f, 0.940036f, -1.087529f , - 5.073188f, 0.948481f, -1.040662f , - 5.083056f, 0.818943f, -1.061701f , - 5.671717f, 1.381366f, -0.854372f , - 5.620294f, 1.345607f, -0.870496f , - 5.656537f, 1.421891f, -0.853663f , - 5.728396f, 1.364259f, -0.840483f , - 5.571598f, 1.315565f, -0.884177f , - 5.589888f, 1.280385f, -0.879194f , - 5.508031f, 1.332192f, -0.896778f , - 5.669003f, 1.122429f, -0.822606f , - 5.660153f, 1.187667f, -0.841823f , - 5.773170f, 1.135639f, -0.796005f , - 5.700558f, 1.034487f, -0.789981f , - 5.595111f, 1.069250f, -0.830238f , - 5.861445f, 0.881043f, -0.699523f , - 5.794267f, 0.917003f, -0.729074f , - 5.907862f, 0.920852f, -0.695968f , - 5.854377f, 0.830769f, -0.689322f , - 5.944093f, 0.981774f, -0.699380f , - 5.906204f, 1.054284f, -0.729740f , - 5.986840f, 0.991555f, -0.675594f , - 5.983251f, 1.347749f, -0.199923f , - 5.937275f, 1.424763f, -0.213986f , - 5.966955f, 1.356866f, -0.099072f , - 6.027128f, 1.274441f, -0.216251f , - 5.998444f, 1.343923f, -0.311940f , - 6.090182f, 1.029858f, -0.348135f , - 6.101574f, 0.976856f, -0.323337f , - 6.085432f, 1.005911f, -0.440900f , - 6.085008f, 1.111491f, -0.292269f , - 6.022947f, 1.019583f, -0.633730f , - 6.034343f, 1.121679f, -0.626642f , - 6.042510f, 0.991332f, -0.585968f , - 5.979265f, 1.350668f, -0.609768f , - 6.015608f, 1.277907f, -0.609895f , - 5.948522f, 1.347405f, -0.684307f , - 5.949937f, 1.409144f, -0.604276f , - 6.001806f, 1.338163f, -0.516734f , - 5.450084f, 1.598130f, -0.899860f , - 5.594906f, 1.613759f, -0.854764f , - 5.557338f, 1.535794f, -0.872442f , - 5.364664f, 1.565154f, -0.928089f , - 5.391997f, 1.654248f, -0.913144f , - 5.214812f, 1.394358f, -0.974791f , - 5.334493f, 1.366856f, -0.940416f , - 5.231914f, 1.300628f, -0.969500f , - 5.119555f, 1.401978f, -1.014954f , - 5.242869f, 1.461317f, -0.966726f , - 5.247341f, 1.094697f, -0.972618f , - 5.242848f, 1.154559f, -0.969980f , - 5.294712f, 1.068267f, -0.957699f , - 5.199012f, 1.053618f, -0.989142f , - 5.481714f, 0.897700f, -0.846625f , - 5.414250f, 0.968009f, -0.893285f , - 5.515584f, 0.963318f, -0.838042f , - 5.565425f, 0.821953f, -0.790774f , - 5.458230f, 0.815378f, -0.849913f , - 5.824450f, 0.776768f, -0.687427f , - 5.849524f, 0.718944f, -0.672835f , - 5.728460f, 0.762783f, -0.714918f , - 6.393013f, 0.298613f, -0.478507f , - 6.456949f, 0.137044f, -0.462401f , - 6.320150f, 0.313809f, -0.510569f , - 6.378385f, 0.377554f, -0.461000f , - 6.487411f, 0.170297f, -0.438511f , - 6.314290f, 0.643104f, -0.228201f , - 6.217627f, 0.774980f, -0.263853f , - 6.324431f, 0.668256f, -0.107617f , - 6.444229f, 0.471117f, -0.203626f , - 6.335321f, 0.554842f, -0.340362f , - 6.914929f, 0.165072f, -0.125241f , - 6.938997f, 0.190168f, -0.054192f , - 6.955928f, 0.123333f, -0.159841f , - 6.815887f, 0.170249f, -0.151720f , - 6.970913f, 0.055998f, -0.177946f , - 7.011003f, 0.020929f, -0.140404f , - 6.878724f, -0.016147f, -0.248640f , - 7.016645f, -0.024927f, -0.100788f , - 7.031682f, -0.009165f, -0.046046f , - 6.962076f, -0.141784f, -0.120823f , - 6.842516f, -0.323066f, -0.169906f , - 6.875515f, -0.293967f, -0.146310f , - 6.821221f, -0.361510f, -0.162488f , - 6.805756f, -0.294061f, -0.242064f , - 5.047621f, -0.299406f, -0.399509f , - 5.109134f, -0.309105f, -0.425911f , - 5.047727f, -0.321437f, -0.352262f , - 4.944099f, -0.235471f, -0.435069f , - 6.313186f, -1.021859f, -0.067840f , - 6.347001f, -1.032980f, -0.102070f , - 6.280941f, -0.973016f, -0.088603f , - 6.242996f, -0.960303f, -0.091287f , - 6.210168f, -0.970837f, -0.026923f , - 6.217705f, -0.945704f, -0.127635f , - 5.300044f, 0.157531f, -0.644448f , - 5.292852f, 0.192826f, -0.684685f , - 5.346236f, 0.135095f, -0.620676f , - 5.245008f, 0.131905f, -0.642031f , - 6.064277f, -0.795037f, -0.211234f , - 6.170745f, -0.749523f, -0.284647f , - 6.128463f, -0.858452f, -0.183373f , - 5.982320f, -0.829826f, -0.147954f , - 6.000674f, -0.725198f, -0.245234f , - 6.728163f, -0.641695f, -0.195138f , - 6.682763f, -0.529001f, -0.285599f , - 6.758152f, -0.526623f, -0.184055f , - 6.770227f, -0.657625f, -0.093524f , - 6.707250f, -0.762650f, -0.182492f , - 6.654020f, -0.664348f, -0.279696f , - 6.530174f, -1.034782f, -0.086720f , - 6.539793f, -1.056455f, -0.025730f , - 6.463238f, -1.038457f, -0.116314f , - 6.613892f, -0.959254f, -0.135863f , - 6.407833f, -1.019814f, -0.141694f , - 6.424249f, -0.944763f, -0.222510f , - 6.427977f, -0.681389f, -0.396383f , - 6.497189f, -0.681145f, -0.380062f , - 6.448504f, -0.775537f, -0.357480f , - 6.359509f, -0.693755f, -0.385221f , - 6.395537f, -0.579202f, -0.411821f , - 6.247064f, -0.339113f, -0.419951f , - 6.306938f, -0.370959f, -0.416523f , - 6.044518f, -0.429824f, -0.391262f , - 6.235770f, -0.280383f, -0.440012f , - 5.587502f, -0.076737f, -0.514205f , - 5.560472f, -0.131005f, -0.484551f , - 5.498655f, 0.011810f, -0.553717f , - 5.654928f, -0.059073f, -0.530977f , - 5.952336f, 0.207748f, -0.592932f , - 6.093668f, 0.274989f, -0.570468f , - 6.136259f, 0.064453f, -0.552528f , - 6.051035f, -0.013296f, -0.542768f , - 5.842959f, 0.089155f, -0.582693f , - 5.759337f, 0.303203f, -0.653223f , - 5.909991f, 0.417224f, -0.625208f , - 5.350015f, 0.577186f, -0.886195f , - 5.390765f, 0.659450f, -0.871407f , - 5.456587f, 0.495703f, -0.800727f , - 5.305307f, 0.514986f, -0.900398f , - 5.260954f, 0.667894f, -0.967261f , - 5.133507f, 0.365824f, -0.895314f , - 5.196199f, 0.403455f, -0.901916f , - 5.209038f, 0.293369f, -0.809106f , - 5.071199f, 0.306496f, -0.863939f , - 5.038720f, 0.419082f, -0.958928f , - 4.360845f, -0.000476f, -0.511445f , - 4.286893f, 0.052106f, -0.565295f , - 4.469965f, -0.012404f, -0.503471f , - 4.341715f, -0.032365f, -0.475502f , - 4.226521f, 0.199014f, -0.700016f , - 4.221457f, 0.151025f, -0.658652f , - 4.183139f, 0.236357f, -0.723336f , - 4.316949f, 0.226154f, -0.726515f , - 4.585539f, 0.235768f, -0.819562f , - 4.595366f, 0.301902f, -0.865584f , - 4.685109f, 0.208352f, -0.837937f , - 4.598038f, 0.163150f, -0.768882f , - 4.494823f, 0.242280f, -0.785232f , - 4.711265f, -0.042762f, -0.584990f , - 4.661244f, 0.025428f, -0.653634f , - 4.779911f, -0.040308f, -0.642705f , - 4.781493f, -0.109877f, -0.527459f , - 4.645610f, -0.035081f, -0.540298f , - 4.976962f, 0.082751f, -0.740490f , - 4.880657f, 0.132803f, -0.798230f , - 4.994501f, 0.167497f, -0.788353f , - 5.081504f, 0.090466f, -0.699443f , - 5.040389f, -0.007010f, -0.664943f , - 4.912252f, 0.021866f, -0.718246f , - 5.318226f, -0.264939f, -0.463436f , - 5.210274f, -0.179951f, -0.527289f , - 5.397171f, -0.224610f, -0.468123f , - 5.430706f, -0.345135f, -0.406816f , - 5.248754f, -0.294278f, -0.456188f , - 5.708567f, -0.550049f, -0.299445f , - 5.626966f, -0.488616f, -0.324547f , - 5.787647f, -0.521313f, -0.324244f , - 5.805809f, -0.612046f, -0.280538f , - 5.655228f, -0.578308f, -0.271314f , - 5.860065f, -0.840564f, -0.031962f , - 5.792674f, -0.790204f, -0.056671f , - 5.891222f, -0.846694f, -0.060797f , - 5.527715f, -0.630721f, -0.117203f , - 5.630956f, -0.687674f, -0.102687f , - 5.514725f, -0.643048f, -0.051362f , - 5.424744f, -0.579348f, -0.130400f , - 5.565908f, -0.618871f, -0.181007f , - 4.976593f, -0.420095f, -0.147738f , - 5.148806f, -0.473793f, -0.144868f , - 4.949652f, -0.450844f, -0.065830f , - 4.805220f, -0.370380f, -0.152479f , - 5.018350f, -0.385098f, -0.224432f , - 4.240345f, -0.199022f, -0.232865f , - 4.438715f, -0.261648f, -0.192463f , - 4.225110f, -0.264040f, -0.105815f , - 4.062236f, -0.171213f, -0.258444f , - 4.284085f, -0.135566f, -0.332094f , - 3.869176f, 0.085621f, -0.629400f , - 3.849470f, 0.335728f, -0.770154f , - 4.014686f, 0.210322f, -0.690841f , - 4.081806f, 0.091756f, -0.614613f , - 4.102980f, -0.004808f, -0.504697f , - 3.885420f, -0.069731f, -0.448102f , - 3.686258f, -0.048018f, -0.616020f , - 3.684271f, 0.150346f, -0.788829f , - 4.693874f, -0.197112f, -0.331147f , - 4.789398f, -0.180785f, -0.405086f , - 4.868539f, -0.272722f, -0.303546f , - 4.668120f, -0.254500f, -0.248771f , - 4.513285f, -0.141120f, -0.356959f , - 4.633066f, -0.106828f, -0.427751f , - 5.369037f, -0.473905f, -0.291034f , - 5.457821f, -0.452063f, -0.334778f , - 5.503621f, -0.543692f, -0.259689f , - 5.335056f, -0.508848f, -0.217546f , - 5.207212f, -0.421692f, -0.291882f , - 5.283408f, -0.391115f, -0.369220f , - 5.771719f, -0.707564f, -0.186988f , - 5.850588f, -0.772597f, -0.152713f , - 5.738983f, -0.724047f, -0.139770f , - 5.693634f, -0.653662f, -0.207975f , - 5.832364f, -0.693397f, -0.225367f , - 6.006190f, -0.594020f, -0.327130f , - 5.975386f, -0.632971f, -0.301264f , - 5.956043f, -0.546030f, -0.341335f , - 6.097368f, -0.592613f, -0.345189f , - 5.730746f, -0.346391f, -0.403241f , - 5.821448f, -0.417919f, -0.376914f , - 5.618098f, -0.383016f, -0.379433f , - 5.614307f, -0.266527f, -0.435359f , - 5.827084f, -0.294347f, -0.433183f , - 4.983550f, -0.148738f, -0.577820f , - 4.906901f, -0.080808f, -0.632098f , - 5.049937f, -0.127249f, -0.593181f , - 5.071164f, -0.226843f, -0.514357f , - 4.915829f, -0.165483f, -0.538559f , - 5.264779f, -0.016054f, -0.566929f , - 5.365784f, -0.094281f, -0.515447f , - 5.189011f, -0.055364f, -0.584257f , - 5.205678f, 0.053232f, -0.615463f , - 5.349510f, 0.030544f, -0.559540f , - 4.750234f, 0.077993f, -0.768702f , - 4.764936f, 0.117054f, -0.798512f , - 4.796652f, 0.034682f, -0.734114f , - 4.691968f, 0.081457f, -0.751049f , - 4.835725f, 0.319932f, -0.911837f , - 4.934811f, 0.276141f, -0.875778f , - 4.806694f, 0.243952f, -0.867777f , - 4.732772f, 0.354356f, -0.925634f , - 4.879978f, 0.392890f, -0.956083f , - 5.149996f, 0.199078f, -0.746826f , - 5.155276f, 0.154824f, -0.708216f , - 5.099703f, 0.215461f, -0.782229f , - 5.196484f, 0.221357f, -0.745866f , - 4.466254f, 0.112767f, -0.645881f , - 4.432901f, 0.173704f, -0.697941f , - 4.547235f, 0.106559f, -0.673975f , - 4.504514f, 0.049067f, -0.586166f , - 4.363560f, 0.111338f, -0.625290f , - 4.363218f, 0.440410f, -0.879523f , - 4.423517f, 0.543130f, -0.947797f , - 4.496606f, 0.403186f, -0.896616f , - 4.383224f, 0.324329f, -0.815263f , - 4.246763f, 0.380529f, -0.818840f , - 4.248835f, 0.561056f, -0.907940f , - 5.060443f, 0.625497f, -1.063030f , - 5.123421f, 0.688862f, -1.055199f , - 5.159374f, 0.549504f, -1.001365f , - 5.001180f, 0.549320f, -1.043916f , - 4.964164f, 0.681179f, -1.091587f , - 5.489331f, 0.245159f, -0.697938f , - 5.356850f, 0.245059f, -0.724176f , - 5.358695f, 0.350848f, -0.795814f , - 5.547223f, 0.316788f, -0.713639f , - 5.624860f, 0.130841f, -0.625414f , - 5.462023f, 0.153439f, -0.641406f , - 5.259762f, 0.861544f, -0.967811f , - 5.308654f, 0.937858f, -0.948437f , - 5.340918f, 0.802443f, -0.919770f , - 5.216798f, 0.803986f, -0.990494f , - 5.195905f, 0.931704f, -0.997690f , - 5.644044f, 0.569896f, -0.727349f , - 5.753120f, 0.557841f, -0.684373f , - 5.626458f, 0.489648f, -0.726851f , - 5.526097f, 0.661524f, -0.792136f , - 5.636083f, 0.688762f, -0.739275f , - 6.101333f, 0.665171f, -0.546910f , - 6.060469f, 0.841849f, -0.551329f , - 6.134639f, 0.780552f, -0.436737f , - 6.229475f, 0.576271f, -0.481280f , - 6.148111f, 0.483510f, -0.557373f , - 5.998543f, 0.640965f, -0.612145f , - 6.389843f, 0.003318f, -0.491623f , - 6.358112f, -0.033664f, -0.499909f , - 6.302163f, 0.145819f, -0.515438f , - 6.462469f, -0.013928f, -0.470825f , - 5.889732f, -0.218572f, -0.468740f , - 5.832834f, -0.126865f, -0.503141f , - 6.001778f, -0.212716f, -0.474291f , - 6.182639f, -0.594280f, -0.370812f , - 6.235826f, -0.535370f, -0.395971f , - 6.225421f, -0.646145f, -0.360775f , - 6.558281f, -0.437687f, -0.396947f , - 6.596797f, -0.405581f, -0.380073f , - 6.565488f, -0.574624f, -0.365578f , - 6.483118f, -0.417657f, -0.420229f , - 6.573548f, -0.828949f, -0.293904f , - 6.519105f, -0.855398f, -0.299486f , - 6.579643f, -0.756757f, -0.319012f , - 6.612265f, -0.850314f, -0.245123f , - 6.320850f, -0.841066f, -0.292847f , - 6.307641f, -0.786863f, -0.323104f , - 6.368295f, -0.857104f, -0.292672f , - 6.256893f, -0.875858f, -0.234714f , - 6.666574f, -0.329808f, -0.339262f , - 6.740178f, -0.397952f, -0.257247f , - 6.638932f, -0.353988f, -0.357729f , - 6.678933f, -0.278810f, -0.343108f , - 6.889085f, -0.192863f, -0.249621f , - 6.908059f, -0.203705f, -0.203822f , - 6.829806f, -0.226504f, -0.279760f , - 6.858346f, -0.152743f, -0.278209f , - 6.660628f, 0.015635f, -0.339353f , - 6.719029f, 0.132903f, -0.258357f , - 6.699697f, -0.046286f, -0.347850f , - 6.601286f, 0.041782f, -0.352395f , - 6.550104f, 0.128560f, -0.362518f , - 6.470263f, 0.319128f, -0.370761f , - 6.552871f, 0.282459f, -0.273739f , - 6.532997f, 0.050635f, -0.414659f , - 5.660715f, 0.887516f, -0.763792f , - 5.657450f, 0.841710f, -0.755690f , - 5.608997f, 0.936114f, -0.793788f , - 5.696980f, 0.913449f, -0.757676f , - 5.412302f, 1.198458f, -0.913904f , - 5.482273f, 1.112916f, -0.876607f , - 5.386061f, 1.115319f, -0.918166f , - 5.326275f, 1.225524f, -0.943521f , - 5.410466f, 1.283501f, -0.920384f , - 5.508494f, 1.218941f, -0.890175f , - 5.026306f, 1.184540f, -1.068055f , - 5.030632f, 1.298627f, -1.072927f , - 5.142601f, 1.203148f, -1.004596f , - 5.089637f, 1.086789f, -1.028494f , - 4.955308f, 1.074376f, -1.089912f , - 4.926598f, 1.203781f, -1.148026f , - 4.979101f, 1.694919f, -1.085744f , - 4.931495f, 1.828030f, -1.090675f , - 5.155790f, 1.708784f, -0.997062f , - 5.149188f, 1.590187f, -1.005620f , - 4.993452f, 1.549404f, -1.088827f , - 4.833771f, 1.723163f, -1.184447f , - 5.466161f, 1.436523f, -0.900126f , - 5.455071f, 1.396812f, -0.905576f , - 5.403436f, 1.471023f, -0.917000f , - 5.534059f, 1.454051f, -0.881655f , - 5.586433f, 1.765457f, -0.844108f , - 5.647217f, 1.696067f, -0.830664f , - 5.477804f, 1.746197f, -0.876298f , - 5.541940f, 1.838495f, -0.856199f , - 5.681387f, 1.780775f, -0.823933f , - 5.813239f, 1.510882f, -0.779898f , - 5.889524f, 1.488930f, -0.692100f , - 5.873938f, 1.420022f, -0.754884f , - 5.810212f, 1.426274f, -0.803981f , - 5.719215f, 1.495610f, -0.825898f , - 5.753395f, 1.576976f, -0.810214f , - 5.861815f, 1.570502f, -0.746046f , - 5.954071f, 1.455673f, -0.408962f , - 5.934400f, 1.477828f, -0.326007f , - 5.974256f, 1.395375f, -0.409275f , - 5.954523f, 1.452799f, -0.502467f , - 5.947615f, 1.524400f, -0.423791f , - 6.068068f, 1.213983f, -0.441885f , - 6.081541f, 1.112824f, -0.477272f , - 6.060647f, 1.205877f, -0.531423f , - 6.040901f, 1.279521f, -0.429687f , - 6.068321f, 1.205035f, -0.355546f , - 5.930543f, 1.216099f, -0.739364f , - 5.913093f, 1.261997f, -0.743119f , - 5.988405f, 1.208666f, -0.689552f , - 5.899225f, 1.171647f, -0.757325f , - 4.617859f, 0.841498f, -1.128258f , - 4.739729f, 0.907820f, -1.138813f , - 4.735694f, 0.784832f, -1.106586f , - 4.552414f, 0.754383f, -1.079647f , - 4.448741f, 0.883331f, -1.125067f , - 4.580034f, 0.915067f, -1.188817f , - 3.881597f, 1.083069f, -1.146937f , - 3.794077f, 1.269220f, -1.254501f , - 3.983931f, 1.219468f, -1.326073f , - 4.077019f, 1.094042f, -1.221308f , - 4.074353f, 1.022438f, -1.108517f , - 4.003345f, 0.911416f, -1.023240f , - 3.836058f, 0.856295f, -1.013453f , - 3.699063f, 1.072475f, -1.138719f , - 5.856265f, 2.129096f, -0.796032f , - 5.884905f, 2.102232f, -0.812118f , - 5.710583f, 2.082056f, -0.797387f , - 5.880883f, 2.151244f, -0.758053f , - 5.415510f, 2.061142f, -0.820624f , - 5.293565f, 2.069586f, -0.849415f , - 5.407316f, 2.099812f, -0.736972f , - 5.525390f, 2.057399f, -0.802024f , - 5.451011f, 1.998998f, -0.865756f , - 5.940269f, 2.121280f, -0.553335f , - 5.927368f, 2.149503f, -0.613718f , - 5.799734f, 2.083272f, -0.524440f , - 5.949593f, 2.073039f, -0.490330f , - 6.150002f, 2.180640f, -0.570803f , - 5.433214f, 2.097795f, -0.351693f , - 5.434064f, 2.110955f, -0.483867f , - 5.254901f, 2.161277f, -0.377024f , - 5.368453f, 2.102916f, -0.241130f , - 5.560575f, 2.022776f, -0.297594f , - 5.594015f, 2.072736f, -0.416104f , - 4.797164f, 2.194989f, -1.020783f , - 4.770435f, 2.273663f, -0.931857f , - 4.980190f, 2.121917f, -0.940502f , - 4.849206f, 2.078275f, -1.070554f , - 4.643333f, 2.268136f, -1.109852f , - 4.642029f, 2.437370f, -0.536524f , - 4.619458f, 2.469558f, -0.397458f , - 4.843037f, 2.314269f, -0.472166f , - 4.687831f, 2.385217f, -0.675008f , - 4.476858f, 2.576533f, -0.612861f , - 5.743781f, 1.835334f, -0.253632f , - 5.699039f, 1.887249f, -0.254652f , - 5.729809f, 1.800688f, -0.213231f , - 5.823219f, 1.849146f, -0.300410f , - 4.744767f, 1.204367f, -1.421246f , - 4.742813f, 1.285838f, -1.439609f , - 4.782240f, 1.209187f, -1.339048f , - 4.720122f, 1.126970f, -1.421794f , - 4.712816f, 1.194550f, -1.517900f , - 4.664462f, 1.498831f, -1.497149f , - 4.652344f, 1.545414f, -1.484083f , - 4.699788f, 1.440866f, -1.469153f , - 4.627315f, 1.500795f, -1.570881f , - 4.532875f, 1.819473f, -1.493450f , - 4.610135f, 1.795941f, -1.399117f , - 4.578911f, 1.708534f, -1.494087f , - 4.454564f, 1.843139f, -1.599165f , - 4.471205f, 1.942146f, -1.506219f , - 4.519961f, 1.014192f, -1.401131f , - 4.514153f, 1.043278f, -1.492280f , - 4.604179f, 1.027817f, -1.414534f , - 4.535313f, 0.987877f, -1.323679f , - 4.406685f, 1.027745f, -1.372720f , - 4.551105f, 1.154862f, -1.766170f , - 4.593847f, 1.175548f, -1.788017f , - 4.543997f, 1.110407f, -1.676836f , - 4.496750f, 1.184910f, -1.786726f , - 4.620547f, 1.202478f, -1.780429f , - 4.607276f, 1.261158f, -1.806352f , - 4.655085f, 1.189506f, -1.696656f , - 4.528401f, 1.494034f, -1.811918f , - 4.483964f, 1.554598f, -1.838937f , - 4.554059f, 1.500156f, -1.751971f , - 4.543793f, 1.435735f, -1.824712f , - 4.293087f, 1.861009f, -1.860634f , - 4.230099f, 1.945228f, -1.875649f , - 4.332026f, 1.866168f, -1.786841f , - 4.351479f, 1.767221f, -1.858549f , - 4.269614f, 1.834337f, -1.925766f , - 4.019930f, 2.264900f, -1.917131f , - 3.979114f, 2.408892f, -1.894708f , - 4.091717f, 2.273171f, -1.812109f , - 4.084849f, 2.140085f, -1.911363f , - 3.957199f, 2.247315f, -1.958408f , - 4.316960f, 2.225994f, -1.537164f , - 4.367847f, 2.144141f, -1.519308f , - 4.247462f, 2.249429f, -1.614829f , - 4.316406f, 2.271803f, -1.510384f , - 3.901605f, 2.844627f, -1.807287f , - 3.878686f, 2.959250f, -1.759470f , - 3.964989f, 2.798038f, -1.722163f , - 3.931905f, 2.716800f, -1.837294f , - 3.868589f, 2.790692f, -1.896911f , - 3.831661f, 2.892803f, -1.865223f , - 4.244132f, 2.534632f, -1.409864f , - 4.272576f, 2.429240f, -1.460686f , - 4.137552f, 2.629172f, -1.522146f , - 4.203516f, 2.656838f, -1.360637f , - 4.354797f, 2.450100f, -1.308033f , - 3.845381f, 3.215457f, -1.545031f , - 3.823610f, 3.288022f, -1.516989f , - 3.889484f, 3.165730f, -1.485535f , - 3.843320f, 3.173747f, -1.609462f , - 4.113287f, 2.932995f, -1.239123f , - 4.143501f, 2.858245f, -1.264400f , - 4.034590f, 3.016880f, -1.316695f , - 4.122348f, 2.951443f, -1.180134f , - 3.774179f, 3.561826f, -1.265768f , - 3.770673f, 3.624697f, -1.102050f , - 3.831580f, 3.465768f, -1.164620f , - 3.791576f, 3.481385f, -1.373610f , - 3.732344f, 3.607803f, -1.345038f , - 3.734391f, 3.679594f, -1.193925f , - 4.094035f, 3.067785f, -0.893085f , - 4.109332f, 3.022716f, -1.016990f , - 3.992936f, 3.218478f, -0.986260f , - 4.059038f, 3.130214f, -0.778604f , - 4.197896f, 2.919625f, -0.808512f , - 3.721004f, 3.811597f, -0.663017f , - 3.709963f, 3.838411f, -0.500999f , - 3.782992f, 3.683722f, -0.626531f , - 3.740087f, 3.763535f, -0.812681f , - 3.665271f, 3.832270f, -0.742226f , - 3.658411f, 3.842589f, -0.684008f , - 3.652729f, 3.860861f, -0.623749f , - 3.953890f, 3.264556f, -0.525981f , - 3.986527f, 3.214586f, -0.592166f , - 3.889032f, 3.391300f, -0.559774f , - 3.967991f, 3.243020f, -0.429344f , - 6.084812f, 1.763870f, -0.693562f , - 6.117150f, 1.755490f, -0.642935f , - 5.964441f, 1.676544f, -0.704324f , - 6.037346f, 1.777795f, -0.738199f , - 6.261654f, 1.890401f, -0.691940f , - 5.959000f, 1.907808f, -0.813080f , - 5.973286f, 1.846981f, -0.796760f , - 5.826131f, 1.836913f, -0.820323f , - 5.947868f, 1.969428f, -0.819237f , - 6.162578f, 2.009364f, -0.792956f , - 5.942490f, 1.912072f, -0.354203f , - 5.948241f, 1.966035f, -0.383306f , - 5.984002f, 1.885688f, -0.360931f , - 6.117082f, 1.759117f, -0.455714f , - 6.079100f, 1.794204f, -0.415337f , - 6.008993f, 1.661003f, -0.437687f , - 6.135615f, 1.745599f, -0.502817f , - 6.288979f, 1.899084f, -0.482138f , - 6.941777f, 2.418531f, -0.661407f , - 6.774049f, 2.255072f, -0.671804f , - 6.725017f, 2.321639f, -0.716994f , - 6.950075f, 2.464370f, -0.659033f , - 6.990025f, 2.412399f, -0.625811f , - 6.920369f, 2.443002f, -0.628167f , - 6.709771f, 2.360499f, -0.625474f , - 6.947078f, 2.425580f, -0.600110f , - 6.959630f, 2.401582f, -0.599222f , - 6.773576f, 2.261937f, -0.574063f , - 3.521201f, 1.630848f, -1.508147f , - 3.292979f, 1.646114f, -1.499498f , - 3.485826f, 1.747711f, -1.536102f , - 3.672347f, 1.685105f, -1.591942f , - 3.628569f, 1.525698f, -1.454750f , - 3.425272f, 1.526313f, -1.441079f , - 3.965113f, 1.899261f, -1.891306f , - 4.012384f, 1.853663f, -1.899887f , - 3.899853f, 1.810393f, -1.807784f , - 3.943319f, 1.979672f, -1.913502f , - 4.237272f, 1.403204f, -1.818313f , - 4.324945f, 1.325812f, -1.810798f , - 4.177898f, 1.357728f, -1.700232f , - 4.162848f, 1.528214f, -1.851829f , - 4.280533f, 1.456946f, -1.908341f , - 3.418030f, 2.031845f, -1.490970f , - 3.386716f, 2.093186f, -1.456661f , - 3.539635f, 2.084125f, -1.560273f , - 3.432326f, 1.947808f, -1.509944f , - 3.236049f, 1.960884f, -1.457247f , - 3.877070f, 2.219782f, -1.914953f , - 3.903692f, 2.103283f, -1.914496f , - 3.763397f, 2.176409f, -1.798349f , - 3.810762f, 2.349207f, -1.889471f , - 3.644428f, 2.752720f, -1.833176f , - 3.699862f, 2.847573f, -1.893197f , - 3.712810f, 2.734151f, -1.929322f , - 3.675870f, 2.626386f, -1.858106f , - 3.584868f, 2.653333f, -1.710378f , - 3.632067f, 2.857881f, -1.793235f , - 3.322097f, 2.272856f, -1.305229f , - 3.296020f, 2.336869f, -1.255084f , - 3.443781f, 2.381181f, -1.401060f , - 3.350321f, 2.199594f, -1.358919f , - 3.153573f, 2.160597f, -1.281898f , - 3.282095f, 2.503655f, -1.076294f , - 3.294312f, 2.566310f, -1.008208f , - 3.399261f, 2.651057f, -1.181191f , - 3.275327f, 2.442575f, -1.141499f , - 3.131245f, 2.429189f, -1.006135f , - 3.631195f, 3.121150f, -1.641393f , - 3.644788f, 3.072552f, -1.701659f , - 3.558668f, 3.027582f, -1.507557f , - 3.637557f, 3.198837f, -1.609506f , - 3.298807f, 2.678308f, -0.821608f , - 3.287405f, 2.698093f, -0.739658f , - 3.384015f, 2.842072f, -0.896372f , - 3.293761f, 2.635512f, -0.887125f , - 3.156775f, 2.568797f, -0.778832f , - 3.578590f, 3.559830f, -1.216619f , - 3.630627f, 3.639718f, -1.309649f , - 3.587517f, 3.469169f, -1.344332f , - 3.514317f, 3.356661f, -1.135367f , - 3.583896f, 3.611420f, -1.103299f , - 3.269561f, 2.787291f, -0.452367f , - 3.245985f, 2.810275f, -0.343869f , - 3.366106f, 2.972527f, -0.483324f , - 3.279267f, 2.751319f, -0.558233f , - 3.125504f, 2.664954f, -0.470602f , - 3.589302f, 3.749696f, -0.666662f , - 3.593885f, 3.704547f, -0.817487f , - 3.510204f, 3.528623f, -0.619294f , - 3.571450f, 3.772995f, -0.505260f , - 2.431640f, 2.555860f, -0.820397f , - 2.403296f, 2.396133f, -1.017563f , - 2.159707f, 2.596013f, -0.840890f , - 2.454035f, 2.675502f, -0.604277f , - 2.698885f, 2.596406f, -0.673461f , - 2.722017f, 2.553475f, -0.800265f , - 2.695937f, 2.483069f, -0.906485f , - 1.224328f, 2.835534f, -0.867210f , - 0.849827f, 2.945065f, -0.854303f , - 1.245722f, 2.987210f, -0.659255f , - 1.565646f, 2.735255f, -0.872411f , - 1.202797f, 2.650381f, -1.073449f , - -0.378132f, 3.314064f, -0.733248f , - -0.746094f, 3.387613f, -0.711862f , - -0.396444f, 3.461564f, -0.538778f , - 0.013790f, 3.207771f, -0.769007f , - -0.335839f, 3.117956f, -0.949203f , - -1.704451f, 3.521686f, -0.609802f , - -1.979055f, 3.539159f, -0.579858f , - -1.765184f, 3.653794f, -0.438561f , - -1.421151f, 3.485216f, -0.646227f , - -1.641499f, 3.352110f, -0.810338f , - -2.706948f, 3.405986f, -0.547400f , - -2.928494f, 3.304192f, -0.557639f , - -2.782401f, 3.523886f, -0.382939f , - -2.456830f, 3.485029f, -0.547539f , - -2.516048f, 3.255147f, -0.762192f , - -3.793754f, 2.893042f, -0.475396f , - -4.217368f, 2.705237f, -0.356828f , - -3.930274f, 2.999606f, -0.295881f , - -3.472694f, 3.057161f, -0.505858f , - -3.570914f, 2.769420f, -0.739904f , - -3.998615f, 2.636380f, -0.579449f , - -5.321338f, 1.971714f, -0.200391f , - -5.696034f, 1.824200f, -0.162149f , - -5.376637f, 2.097628f, -0.122616f , - -4.969953f, 2.194808f, -0.229253f , - -5.074821f, 1.945470f, -0.341993f , - -5.395177f, 1.786334f, -0.273521f , - -6.784791f, 1.519944f, -0.143273f , - -7.157236f, 1.458227f, -0.149093f , - -6.826446f, 1.622159f, -0.094443f , - -6.428386f, 1.600098f, -0.144617f , - -6.766141f, 1.420147f, -0.192155f , - -8.251913f, 1.363299f, -0.190292f , - -8.625757f, 1.333472f, -0.180928f , - -8.285106f, 1.437745f, -0.143511f , - -7.892303f, 1.392057f, -0.187240f , - -8.238215f, 1.286888f, -0.219712f , - -9.584084f, 1.241805f, -0.123427f , - -9.628991f, 1.280976f, -0.095671f , - -9.328224f, 1.276621f, -0.141587f , - -9.600142f, 1.181648f, -0.123120f , - 2.346356f, 1.690096f, -1.531272f , - 2.704422f, 1.677846f, -1.525553f , - 2.630353f, 1.555973f, -1.508824f , - 2.466835f, 1.428085f, -1.584145f , - 2.152934f, 1.412837f, -1.665670f , - 2.030753f, 1.752279f, -1.550446f , - 2.360636f, 1.961773f, -1.380752f , - 2.654912f, 1.885823f, -1.431852f , - 2.700993f, 1.792519f, -1.509459f , - 1.094471f, 1.971095f, -1.581010f , - 0.789213f, 2.070667f, -1.576068f , - 1.128312f, 2.211174f, -1.438070f , - 1.404866f, 1.886674f, -1.583399f , - 1.190634f, 1.653928f, -1.706483f , - 0.966728f, 1.724837f, -1.691390f , - -0.163800f, 2.381218f, -1.540248f , - -0.486833f, 2.442299f, -1.535415f , - -0.193183f, 2.632217f, -1.378456f , - 0.170317f, 2.286839f, -1.555405f , - -0.138637f, 2.104893f, -1.674512f , - -1.565140f, 2.561412f, -1.486309f , - -1.925194f, 2.442500f, -1.525259f , - -1.903633f, 2.828743f, -1.270204f , - -1.506857f, 2.871576f, -1.286032f , - -1.169905f, 2.545107f, -1.516220f , - -1.453286f, 2.216583f, -1.666096f , - -3.024836f, 1.980525f, -1.636845f , - -3.423432f, 1.954091f, -1.514062f , - -3.189476f, 2.315735f, -1.382908f , - -2.700372f, 2.168189f, -1.608470f , - -2.723637f, 1.670003f, -1.807716f , - -3.137047f, 1.615918f, -1.765767f , - -4.438587f, 1.724917f, -0.949644f , - -4.728508f, 1.617545f, -0.793813f , - -4.660958f, 1.848852f, -0.733012f , - -4.337338f, 2.029331f, -0.842892f , - -4.143592f, 1.800726f, -1.134500f , - -4.336294f, 1.471925f, -1.120407f , - -4.583040f, 1.439073f, -0.917883f , - -5.385437f, 1.403368f, -0.488902f , - -5.666173f, 1.338118f, -0.429867f , - -5.404406f, 1.537071f, -0.435245f , - -5.151598f, 1.464901f, -0.564518f , - -5.368160f, 1.248567f, -0.517140f , - -6.704979f, 1.111118f, -0.329801f , - -7.088163f, 1.078963f, -0.313565f , - -6.728257f, 1.221961f, -0.292697f , - -6.351411f, 1.165092f, -0.351152f , - -6.709979f, 0.986304f, -0.356780f , - -8.181607f, 1.070101f, -0.267084f , - -8.522182f, 1.060264f, -0.247655f , - -8.212903f, 1.142470f, -0.252106f , - -7.835802f, 1.066562f, -0.283563f , - -8.153078f, 0.986576f, -0.281198f , - -9.464264f, 0.921389f, -0.107189f , - -9.518403f, 0.849397f, -0.076910f , - -9.540315f, 0.986351f, -0.092058f , - -9.193053f, 1.000061f, -0.175780f , - -9.196434f, 0.885551f, -0.175229f , - 3.233035f, 1.123211f, -1.300992f , - 3.246513f, 0.909382f, -1.266363f , - 3.104604f, 1.095540f, -1.362788f , - 3.065050f, 1.284339f, -1.378458f , - 3.271412f, 1.286410f, -1.336768f , - 3.379695f, 1.089050f, -1.234657f , - 2.804809f, 0.877171f, -1.568506f , - 2.715944f, 1.046277f, -1.589447f , - 2.919016f, 0.985366f, -1.498456f , - 2.887429f, 0.705404f, -1.522666f , - 2.680011f, 0.743210f, -1.638158f , - 1.177982f, 0.890099f, -1.857370f , - 1.077317f, 0.894850f, -1.839811f , - 1.222114f, 1.124121f, -1.842162f , - 1.278518f, 0.856492f, -1.866057f , - 1.094188f, 0.631864f, -1.836543f , - 1.672175f, 0.678737f, -1.887577f , - 1.532417f, 0.431986f, -1.893186f , - 1.526002f, 0.742145f, -1.880543f , - 1.806011f, 0.903078f, -1.848790f , - 1.804012f, 0.569342f, -1.896316f , - 0.782506f, 1.001240f, -1.766467f , - 0.840411f, 1.240903f, -1.766885f , - 0.919519f, 0.940724f, -1.779626f , - 0.727949f, 0.741655f, -1.746264f , - 0.610302f, 1.061373f, -1.773146f , - 0.810761f, -0.160302f, -1.646068f , - 0.688779f, -0.318122f, -1.557500f , - 0.732007f, -0.088625f, -1.617697f , - 0.919866f, 0.084859f, -1.711135f , - 0.925850f, -0.139320f, -1.703699f , - 0.804656f, -0.354464f, -1.652460f , - 1.172318f, -0.181251f, -1.802257f , - 1.086065f, -0.143309f, -1.771654f , - 1.270825f, -0.004661f, -1.821245f , - 1.255966f, -0.251808f, -1.835894f , - 1.076104f, -0.352246f, -1.799858f , - 0.465635f, 0.048115f, -1.592134f , - 0.298407f, 0.063427f, -1.596760f , - 0.556931f, 0.244249f, -1.652036f , - 0.577514f, 0.006848f, -1.588694f , - 0.325753f, -0.126633f, -1.520501f , - -0.171899f, 1.267909f, -1.851952f , - -0.141220f, 1.550040f, -1.833298f , - 0.115141f, 1.206626f, -1.835773f , - -0.212686f, 0.953389f, -1.829714f , - -0.473291f, 1.290763f, -1.855608f , - -0.369760f, 0.111071f, -1.631094f , - -0.600168f, 0.121801f, -1.629686f , - -0.334961f, 0.323656f, -1.693274f , - -0.148011f, 0.076354f, -1.617176f , - -0.389582f, -0.081880f, -1.555297f , - -1.395221f, 1.279988f, -1.859978f , - -1.424417f, 1.552371f, -1.838731f , - -1.124912f, 1.284212f, -1.850263f , - -1.368991f, 0.977381f, -1.844048f , - -1.623614f, 1.188084f, -1.879224f , - -1.364154f, 0.131191f, -1.600472f , - -1.104602f, 0.176925f, -1.620304f , - -1.129825f, -0.062426f, -1.480535f , - -1.418321f, -0.101486f, -1.442543f , - -1.639604f, 0.081301f, -1.655766f , - -1.581103f, 0.288685f, -1.731589f , - -1.344079f, 0.409323f, -1.703572f , - -0.346178f, -0.437235f, -1.287188f , - -0.422316f, -0.517730f, -1.186816f , - -0.616029f, -0.367757f, -1.317152f , - -0.380220f, -0.332087f, -1.382531f , - -0.111302f, -0.363913f, -1.368151f , - -0.098399f, -0.472307f, -1.270391f , - -0.555348f, -0.755770f, -0.790195f , - -0.810645f, -0.730197f, -0.800579f , - -0.507485f, -0.662653f, -0.949097f , - -0.300624f, -0.777403f, -0.793203f , - -0.580237f, -0.854442f, -0.610970f , - -1.601444f, -0.663506f, -0.888669f , - -1.535183f, -0.512925f, -1.078752f , - -1.356133f, -0.691382f, -0.837890f , - -1.667544f, -0.785802f, -0.689382f , - -1.783101f, -0.634553f, -0.957248f , - 0.304864f, -0.874685f, -0.833899f , - 0.450584f, -1.008645f, -0.752209f , - 0.276821f, -0.950212f, -0.642104f , - 0.130367f, -0.809715f, -0.830859f , - 0.300446f, -0.760159f, -0.996490f , - 0.398697f, -0.918084f, -0.956112f , - 0.444505f, -0.534136f, -1.280251f , - 0.382988f, -0.600686f, -1.193752f , - 0.329966f, -0.490068f, -1.267590f , - 0.525595f, -0.477691f, -1.373346f , - 0.504925f, -0.631221f, -1.299336f , - 3.106679f, 0.118521f, -1.252447f , - 3.126999f, -0.067056f, -1.142817f , - 2.958689f, -0.030239f, -1.338560f , - 3.012467f, 0.279358f, -1.372717f , - 3.185963f, 0.373162f, -1.252081f , - 3.290942f, 0.151268f, -1.113783f , - 2.178673f, 0.201171f, -1.872004f , - 2.342634f, 0.375322f, -1.813898f , - 2.281775f, 0.033023f, -1.830467f , - 2.014016f, 0.007070f, -1.906626f , - 2.062667f, 0.329405f, -1.894238f , - 2.550126f, -0.437672f, -1.575825f , - 2.482285f, -0.302607f, -1.673229f , - 2.696784f, -0.307711f, -1.507013f , - 2.584807f, -0.563492f, -1.463114f , - 2.378737f, -0.572527f, -1.631490f , - 3.175348f, -0.368958f, -0.713459f , - 3.184263f, -0.440652f, -0.546815f , - 3.042419f, -0.466369f, -0.773749f , - 3.167019f, -0.284628f, -0.868487f , - 3.332948f, -0.264668f, -0.666645f , - 2.611284f, -0.820863f, -0.996943f , - 2.459199f, -0.930874f, -1.046949f , - 2.606074f, -0.742938f, -1.175799f , - 2.761760f, -0.705715f, -0.929217f , - 2.625353f, -0.891968f, -0.773165f , - 1.841478f, -0.900825f, -1.746341f , - 1.780281f, -0.801237f, -1.822366f , - 2.010854f, -0.791027f, -1.710964f , - 1.880903f, -1.004892f, -1.654131f , - 1.659737f, -1.018433f, -1.786019f , - 1.938377f, -1.265952f, -1.198134f , - 1.927416f, -1.186025f, -1.404078f , - 2.116562f, -1.151060f, -1.163685f , - 1.991104f, -1.292066f, -0.913880f , - 1.822395f, -1.387815f, -1.038630f , - 1.778818f, -1.373826f, -1.306691f , - 1.567859f, -0.483355f, -1.925539f , - 1.467112f, -0.400635f, -1.917277f , - 1.704914f, -0.338467f, -1.918145f , - 1.638552f, -0.592644f, -1.911648f , - 1.420288f, -0.636314f, -1.939304f , - 1.519459f, -1.560647f, -0.619418f , - 1.630067f, -1.538130f, -0.715784f , - 1.536910f, -1.528088f, -0.485877f , - 1.365010f, -1.552220f, -0.548884f , - 1.463946f, -1.604540f, -0.714300f , - 0.843256f, -1.382503f, -0.504682f , - 1.007028f, -1.457300f, -0.486814f , - 0.854647f, -1.377692f, -0.390384f , - 0.705602f, -1.287540f, -0.558713f , - 0.835896f, -1.414596f, -0.601572f , - -2.088312f, -0.624805f, -1.216790f , - -2.075768f, -0.493064f, -1.411458f , - -1.984640f, -0.606313f, -1.124232f , - -2.191844f, -0.738084f, -1.034776f , - -2.215194f, -0.669133f, -1.322196f , - -2.807274f, -0.918953f, -0.517382f , - -2.585310f, -0.890827f, -0.672036f , - -2.596733f, -0.940185f, -0.416839f , - -2.867343f, -0.926098f, -0.338440f , - -3.089195f, -0.883578f, -0.472803f , - -2.890675f, -0.931928f, -0.678811f , - -3.860368f, -0.617489f, -0.454213f , - -3.629339f, -0.725015f, -0.448372f , - -3.808445f, -0.626415f, -0.317808f , - -4.042912f, -0.474363f, -0.395624f , - -4.018279f, -0.524466f, -0.556286f , - -3.836128f, -0.679732f, -0.595597f , - -4.244434f, -0.251151f, -0.865142f , - -4.197618f, -0.339842f, -0.761791f , - -4.300834f, -0.162236f, -0.750705f , - -4.254021f, -0.180085f, -0.963215f , - -4.196813f, -0.364154f, -0.960633f , - -4.550930f, -0.004045f, -0.346741f , - -4.454201f, -0.032581f, -0.488285f , - -4.375618f, -0.160085f, -0.338708f , - -4.508695f, -0.106267f, -0.224976f , - -4.738200f, 0.069845f, -0.269502f , - -4.609585f, 0.145438f, -0.468073f , - -5.378144f, 0.119764f, -0.085129f , - -5.377985f, 0.248662f, -0.191936f , - -5.131784f, 0.110043f, -0.119300f , - -5.386914f, 0.062516f, 0.013331f , - -5.685667f, 0.142806f, -0.090805f , - -4.662655f, 0.655237f, -0.824730f , - -4.538339f, 0.700471f, -0.986243f , - -4.518509f, 0.489753f, -0.936752f , - -4.666096f, 0.470477f, -0.720710f , - -4.805575f, 0.701521f, -0.704764f , - -4.675148f, 0.896419f, -0.858136f , - -5.317120f, 0.692231f, -0.472256f , - -5.332438f, 0.866381f, -0.509744f , - -5.100835f, 0.709346f, -0.527820f , - -5.339214f, 0.529342f, -0.401549f , - -5.620827f, 0.660801f, -0.428544f , - -4.076682f, 0.044110f, -1.394612f , - -4.166883f, -0.033577f, -1.227602f , - -4.221492f, 0.181567f, -1.210921f , - -4.070141f, 0.218783f, -1.425625f , - -3.924644f, 0.015255f, -1.603151f , - -4.045093f, -0.145868f, -1.484474f , - -4.114934f, 0.743224f, -1.438213f , - -4.106012f, 0.551187f, -1.454739f , - -4.277194f, 0.724689f, -1.289527f , - -4.167258f, 0.953488f, -1.363944f , - -3.957381f, 0.751750f, -1.569012f , - -2.375231f, 0.093879f, -1.955974f , - -2.597994f, 0.255983f, -2.034136f , - -2.323739f, 0.293023f, -1.980988f , - -2.126813f, 0.052245f, -1.851998f , - -2.244577f, -0.138920f, -1.804497f , - -2.503215f, -0.078595f, -1.998723f , - -2.067177f, 0.749498f, -1.953085f , - -1.927106f, 0.879068f, -1.927162f , - -1.909508f, 0.547726f, -1.920004f , - -2.164935f, 0.581120f, -1.973170f , - -2.223084f, 0.971086f, -1.945079f , - -3.312365f, 0.688607f, -1.986432f , - -3.539557f, 0.742757f, -1.875793f , - -3.270347f, 0.935125f, -1.936523f , - -3.073043f, 0.562204f, -2.059712f , - -3.340675f, 0.447646f, -2.030702f , - -3.431139f, -0.134820f, -2.114193f , - -3.327661f, -0.336709f, -2.199877f , - -3.486429f, -0.289290f, -2.141521f , - -3.603905f, -0.075965f, -1.993539f , - -3.401889f, 0.033014f, -2.085196f , - -3.239822f, -0.205217f, -2.173717f , - -3.567833f, -0.840489f, -2.236830f , - -3.530861f, -0.602218f, -2.195592f , - -3.448248f, -0.890503f, -2.289428f , - -3.623075f, -1.167152f, -2.292637f , - -3.695688f, -0.811412f, -2.153625f , - -3.106775f, -1.025658f, -2.231848f , - -3.055063f, -1.192317f, -2.174600f , - -3.197033f, -1.345426f, -2.277560f , - -3.226781f, -0.989540f, -2.280387f , - -3.150625f, -0.748674f, -2.244906f , - -2.991916f, -0.833967f, -2.194793f , - -2.944909f, -0.995626f, -2.134136f , - -2.759627f, -0.499112f, -2.111617f , - -2.655964f, -0.612189f, -2.023211f , - -2.826713f, -0.618255f, -2.147579f , - -2.897584f, -0.401470f, -2.171533f , - -2.697240f, -0.383260f, -2.076607f , - -2.506816f, -0.848550f, -1.609612f , - -2.566962f, -0.930221f, -1.689621f , - -2.517273f, -0.780965f, -1.756578f , - -2.439336f, -0.788430f, -1.526487f , - -2.562536f, -0.929299f, -1.471823f , - -6.700425f, 0.589737f, -0.372121f , - -7.087658f, 0.605427f, -0.355716f , - -6.708685f, 0.714629f, -0.384928f , - -6.340495f, 0.598288f, -0.385373f , - -6.722450f, 0.480960f, -0.342702f , - -8.173424f, 0.741638f, -0.281469f , - -8.147006f, 0.821349f, -0.288750f , - -7.830518f, 0.699472f, -0.305119f , - -8.212166f, 0.671629f, -0.269335f , - -8.517111f, 0.791356f, -0.255982f , - -6.761131f, 0.233905f, -0.204123f , - -7.146512f, 0.271437f, -0.209041f , - -6.750172f, 0.311132f, -0.254638f , - -6.391242f, 0.203130f, -0.183170f , - -6.784386f, 0.161260f, -0.148331f , - -8.281347f, 0.452599f, -0.197471f , - -8.648849f, 0.538278f, -0.172857f , - -8.270412f, 0.518878f, -0.230229f , - -7.919896f, 0.382559f, -0.207403f , - -8.301289f, 0.397914f, -0.150793f , - -9.510788f, 0.787255f, -0.042759f , - -9.287580f, 0.721769f, -0.082707f , - -9.539192f, 0.771469f, 0.013908f , - -3.855686f, -2.369895f, -2.473343f , - -3.964646f, -2.357896f, -2.414799f , - -3.803981f, -1.992046f, -2.408900f , - -3.742507f, -2.393274f, -2.508263f , - -3.873694f, -2.726453f, -2.542571f , - -3.408272f, -2.475605f, -2.436301f , - -3.510021f, -2.431010f, -2.475667f , - -3.366920f, -2.109020f, -2.370268f , - -3.321274f, -2.475125f, -2.354027f , - -3.317384f, -2.727824f, -2.455399f , - -3.371025f, -2.753664f, -2.541634f , - -3.463277f, -2.787843f, -2.566257f , - -4.094328f, -0.764344f, -1.757563f , - -3.992196f, -0.775844f, -1.894621f , - -4.134624f, -1.101759f, -1.855597f , - -4.159601f, -0.782549f, -1.632004f , - -4.065294f, -0.514449f, -1.669930f , - -4.236392f, -2.303366f, -2.142521f , - -4.279537f, -2.315574f, -2.036038f , - -4.221700f, -1.921076f, -2.062008f , - -4.167325f, -2.316751f, -2.245943f , - -4.220836f, -2.671898f, -2.207382f , - -4.163508f, -0.862038f, -1.285249f , - -4.185071f, -0.827276f, -1.394583f , - -4.188331f, -1.182878f, -1.400429f , - -4.120829f, -0.911764f, -1.182394f , - -4.155345f, -0.630955f, -1.173053f , - -4.266137f, -2.372674f, -1.725405f , - -4.217535f, -2.412786f, -1.639185f , - -4.261284f, -1.996294f, -1.629788f , - -4.290883f, -2.354400f, -1.821564f , - -4.238333f, -2.729498f, -1.805723f , - -3.838482f, -1.044588f, -0.957218f , - -3.965172f, -1.000213f, -1.006949f , - -3.868995f, -1.355064f, -1.089963f , - -3.674695f, -1.116332f, -0.951278f , - -3.818343f, -0.850357f, -0.838077f , - -3.948538f, -2.530719f, -1.453184f , - -3.832745f, -2.569486f, -1.445166f , - -3.930537f, -2.172527f, -1.349292f , - -4.050467f, -2.505282f, -1.493710f , - -3.946132f, -2.862157f, -1.550348f , - -3.071668f, -1.239145f, -1.154958f , - -3.265050f, -1.234359f, -1.046635f , - -3.200893f, -1.553860f, -1.270482f , - -3.027496f, -1.362649f, -1.361318f , - -2.911319f, -1.180163f, -1.330037f , - -2.844573f, -1.092834f, -1.218197f , - -3.003388f, -1.062017f, -0.992216f , - -3.480428f, -2.613089f, -1.574259f , - -3.380148f, -2.596426f, -1.687491f , - -3.428180f, -2.289970f, -1.497753f , - -3.588844f, -2.606160f, -1.508464f , - -3.512796f, -2.922962f, -1.605145f , - -3.414279f, -2.863484f, -1.657930f , - -2.998941f, -1.501582f, -1.888400f , - -2.914215f, -1.349274f, -1.862118f , - -2.997715f, -1.496817f, -1.750778f , - -3.076325f, -1.703842f, -1.929755f , - -3.003426f, -1.443083f, -1.996587f , - -3.241182f, -2.540664f, -2.108060f , - -3.241621f, -2.527651f, -2.210356f , - -3.218195f, -2.269196f, -2.056805f , - -3.264952f, -2.559838f, -1.976731f , - -3.226064f, -2.788579f, -2.125530f , - -2.695954f, -1.146167f, -1.830493f , - -2.718352f, -1.172415f, -1.696969f , - -2.751029f, -1.207359f, -1.839590f , - -2.730086f, -1.104476f, -1.933595f , - -2.656034f, -1.086007f, -1.802927f , - -3.757995f, -3.461784f, -2.612993f , - -3.788233f, -3.482617f, -2.555426f , - -3.827169f, -3.298079f, -2.638769f , - -3.678433f, -3.489333f, -2.636199f , - -3.953588f, -3.460767f, -2.294721f , - -4.080797f, -3.284415f, -2.281193f , - -3.897398f, -3.482362f, -2.364184f , - -3.941925f, -3.481797f, -2.237031f , - -3.938403f, -3.476743f, -2.004859f , - -4.076914f, -3.307184f, -1.926730f , - -3.931890f, -3.485791f, -2.069753f , - -3.896161f, -3.499757f, -1.975718f , - -3.793949f, -3.493767f, -1.861046f , - -3.876133f, -3.351602f, -1.741157f , - -3.820514f, -3.504014f, -1.900046f , - -3.713040f, -3.516963f, -1.863977f , - -3.438498f, -3.527119f, -1.791228f , - -3.370773f, -3.482604f, -1.731372f , - -3.483661f, -3.384071f, -1.691501f , - -3.510003f, -3.525301f, -1.822821f , - -3.354996f, -3.590613f, -1.855933f , - -3.220005f, -3.253929f, -1.769789f , - -3.173089f, -3.237624f, -1.808046f , - -3.280125f, -3.156579f, -1.753403f , - -3.265755f, -3.314590f, -1.740489f , - -3.141406f, -3.368572f, -1.831485f , - -3.019258f, -3.593642f, -2.105448f , - -2.993693f, -3.559773f, -2.077784f , - -3.126840f, -3.607243f, -1.977741f , - -3.020564f, -3.605328f, -2.196970f , - -3.446854f, -3.510833f, -2.782121f , - -3.388099f, -3.467573f, -2.840778f , - -3.356308f, -3.583880f, -2.734322f , - -3.507715f, -3.501596f, -2.724508f , - -3.478522f, -3.333996f, -2.783360f , - -3.237661f, -3.243589f, -2.752157f , - -3.262381f, -3.297925f, -2.783422f , - -3.279191f, -3.137293f, -2.705951f , - -3.200135f, -3.249225f, -2.731961f , - -3.076165f, -3.215356f, -2.564014f , - -3.090353f, -3.238007f, -2.616686f , - -3.137883f, -3.102661f, -2.527732f , - -3.051924f, -3.238682f, -2.525295f , - -3.029396f, -3.256446f, -2.036428f , - -3.004206f, -3.274909f, -2.121429f , - -3.098441f, -3.136469f, -2.066572f , - -3.065547f, -3.248091f, -1.946566f , - -2.965477f, -3.365918f, -2.041468f , - 1.484827f, -1.722420f, -1.420023f , - 1.428679f, -1.859959f, -1.432972f , - 1.449012f, -1.662580f, -1.552089f , - 1.556958f, -1.604877f, -1.390306f , - 1.473848f, -1.776615f, -1.270152f , - 1.143456f, -1.396886f, -1.922544f , - 1.087679f, -1.618482f, -1.974858f , - 1.030195f, -1.411173f, -1.986348f , - 1.113300f, -1.232457f, -1.969226f , - 1.281104f, -1.244111f, -1.880340f , - 1.245726f, -1.476073f, -1.812848f , - 1.153147f, -1.636438f, -1.902154f , - 1.092033f, -0.968039f, -1.985606f , - 1.030910f, -0.911024f, -1.963988f , - 1.184151f, -0.888824f, -1.971509f , - 1.118554f, -1.041544f, -1.995996f , - 0.999550f, -1.031236f, -1.999614f , - 0.818402f, -0.752258f, -1.805232f , - 0.710743f, -0.811781f, -1.704350f , - 0.801790f, -0.644561f, -1.746421f , - 0.913024f, -0.638353f, -1.825865f , - 0.892821f, -0.795796f, -1.876408f , - 0.753492f, -0.856590f, -1.813067f , - 0.451422f, -1.191520f, -1.304507f , - 0.492452f, -1.319708f, -1.143788f , - 0.442880f, -1.096373f, -1.164711f , - 0.466566f, -0.968984f, -1.310674f , - 0.512065f, -1.019015f, -1.437572f , - 0.461667f, -1.121250f, -1.455633f , - 0.426731f, -1.267751f, -1.456072f , - 0.439167f, -1.421848f, -1.334969f , - 0.758483f, -2.034433f, -1.071910f , - 0.753495f, -2.174241f, -1.073907f , - 0.875868f, -2.090702f, -1.025062f , - 0.764997f, -1.915663f, -1.029692f , - 0.651407f, -2.007252f, -1.130936f , - 0.592144f, -1.020117f, -1.787555f , - 0.648394f, -1.033192f, -1.855964f , - 0.559427f, -1.078660f, -1.786890f , - 0.537610f, -1.027453f, -1.699297f , - 0.630758f, -0.970027f, -1.789953f , - 0.518425f, -1.383934f, -1.817310f , - 0.461342f, -1.346496f, -1.720121f , - 0.518095f, -1.251203f, -1.807275f , - 0.591248f, -1.408324f, -1.886598f , - 0.521430f, -1.528203f, -1.825027f , - 0.848247f, -1.491562f, -2.014978f , - 0.778624f, -1.478272f, -1.988994f , - 0.834214f, -1.365828f, -2.013650f , - 0.911696f, -1.479262f, -2.025995f , - 0.885606f, -1.650897f, -2.019270f , - 0.813556f, -1.113482f, -2.008513f , - 0.815315f, -1.169525f, -2.013930f , - 0.771052f, -1.088531f, -1.979421f , - 0.856898f, -1.093935f, -2.012771f , - 1.068603f, -2.332338f, -1.985420f , - 1.006474f, -2.104844f, -2.010283f , - 1.094535f, -2.131367f, -2.005123f , - 1.164814f, -2.310332f, -1.947799f , - 1.181836f, -2.457585f, -1.913101f , - 1.098784f, -2.514947f, -1.982116f , - 0.959511f, -2.427907f, -1.995991f , - 0.925629f, -2.253105f, -1.995561f , - 1.280497f, -2.181561f, -1.835769f , - 1.258931f, -2.224264f, -1.868865f , - 1.254120f, -2.063255f, -1.853485f , - 1.303522f, -2.196599f, -1.781342f , - 1.355700f, -2.239797f, -1.473261f , - 1.345738f, -2.224056f, -1.588319f , - 1.368581f, -2.127727f, -1.452038f , - 1.348934f, -2.258482f, -1.344841f , - 1.348292f, -2.341186f, -1.494869f , - 1.186596f, -2.245296f, -1.027758f , - 1.183749f, -2.342987f, -1.053865f , - 1.262900f, -2.258080f, -1.112654f , - 1.201190f, -2.139362f, -0.999399f , - 1.099424f, -2.220050f, -0.987379f , - 1.287912f, -1.814726f, -0.866273f , - 1.245585f, -1.919122f, -0.912422f , - 1.372111f, -1.823741f, -0.970054f , - 1.332677f, -1.732401f, -0.820664f , - 1.171239f, -1.796847f, -0.797133f , - 0.559285f, -2.604156f, -1.883863f , - 0.557608f, -2.828214f, -1.893590f , - 0.483312f, -2.596933f, -1.785189f , - 0.533039f, -2.428601f, -1.873312f , - 0.669285f, -2.511301f, -1.938317f , - 0.697803f, -2.640652f, -1.952337f , - 0.637176f, -2.769727f, -1.974451f , - 1.119154f, -2.870902f, -2.010242f , - 1.064321f, -2.953343f, -2.059137f , - 1.006727f, -2.797005f, -2.011962f , - 1.117482f, -2.754695f, -1.984066f , - 1.186257f, -2.871293f, -1.962386f , - 1.160058f, -2.996164f, -2.041344f , - 1.316650f, -2.558537f, -1.601276f , - 1.294066f, -2.625938f, -1.625450f , - 1.302223f, -2.547902f, -1.715479f , - 1.332347f, -2.490114f, -1.569203f , - 1.306870f, -2.556253f, -1.469189f , - 1.266074f, -2.882663f, -1.701956f , - 1.296577f, -2.989417f, -1.801205f , - 1.241069f, -2.869553f, -1.815690f , - 1.247189f, -2.773630f, -1.678326f , - 1.261032f, -2.873907f, -1.565722f , - 1.331319f, -3.007843f, -1.685390f , - 1.186557f, -2.507874f, -1.106266f , - 1.235397f, -2.527183f, -1.189281f , - 1.182363f, -2.463246f, -1.080478f , - 1.159753f, -2.540311f, -1.106416f , - 1.113766f, -2.810720f, -1.129501f , - 1.206461f, -2.955165f, -1.167756f , - 1.185253f, -2.836147f, -1.261030f , - 1.108571f, -2.679314f, -1.134507f , - 1.019760f, -2.756641f, -1.045689f , - 1.096806f, -2.930523f, -1.057047f , - 0.773973f, -1.620453f, -0.789078f , - 0.904910f, -1.696844f, -0.754535f , - 0.796282f, -1.537374f, -0.727407f , - 0.663672f, -1.543091f, -0.867528f , - 0.766620f, -1.724768f, -0.862433f , - 0.717269f, -2.641473f, -0.975960f , - 0.822805f, -2.669182f, -0.949486f , - 0.727528f, -2.475391f, -0.994725f , - 0.623146f, -2.635228f, -1.042646f , - 0.726947f, -2.850411f, -0.968080f , - 0.418106f, -2.016787f, -1.417491f , - 0.411605f, -2.161840f, -1.421923f , - 0.467005f, -2.020404f, -1.301827f , - 0.424361f, -1.849278f, -1.396859f , - 0.404290f, -2.012747f, -1.540814f , - 0.408421f, -2.609514f, -1.403708f , - 0.450039f, -2.612688f, -1.277596f , - 0.396935f, -2.427299f, -1.406799f , - 0.401208f, -2.603788f, -1.532172f , - 0.438467f, -2.827626f, -1.412350f , - 0.532422f, -2.035260f, -1.881929f , - 0.530417f, -2.176475f, -1.886138f , - 0.469102f, -2.019225f, -1.791533f , - 0.536825f, -1.883366f, -1.873587f , - 0.632781f, -2.084373f, -1.950713f , - 0.629821f, -3.471520f, -1.525884f , - 0.558467f, -3.323232f, -1.473707f , - 0.646707f, -3.495569f, -1.626665f , - 0.667593f, -3.499331f, -1.460190f , - 0.712217f, -3.493700f, -1.939987f , - 0.693255f, -3.501114f, -1.853355f , - 0.642053f, -3.336220f, -1.928620f , - 0.744461f, -3.461875f, -2.030463f , - 0.787442f, -3.577446f, -1.976530f , - 0.883853f, -3.531032f, -1.104728f , - 0.918561f, -3.458128f, -0.970423f , - 0.788965f, -3.338355f, -1.013601f , - 0.782718f, -3.514209f, -1.209404f , - 1.001191f, -3.616520f, -1.279265f , - 1.033548f, -3.592057f, -1.055995f , - 0.899255f, -3.236589f, -2.157804f , - 0.851054f, -3.309264f, -2.141820f , - 0.828214f, -3.125122f, -2.120838f , - 0.946435f, -3.152385f, -2.145899f , - 0.960778f, -3.296539f, -2.170920f , - 1.183335f, -3.354051f, -2.127221f , - 1.106932f, -3.343955f, -2.150557f , - 1.188327f, -3.242622f, -2.107742f , - 1.253815f, -3.328271f, -2.087998f , - 1.214437f, -3.437042f, -2.128824f , - 1.107208f, -3.437110f, -2.147157f , - 1.425763f, -3.301721f, -1.952955f , - 1.471188f, -3.401363f, -1.924943f , - 1.373150f, -3.296777f, -1.990932f , - 1.389368f, -3.206120f, -1.917234f , - 1.480052f, -3.320692f, -1.904612f , - 0.920767f, -3.607174f, -2.075073f , - 0.953812f, -3.570673f, -2.130001f , - 0.961505f, -3.617985f, -2.058519f , - 0.886794f, -3.605815f, -2.050368f , - 1.193060f, -3.605859f, -2.036912f , - 1.131452f, -3.617656f, -2.036022f , - 1.230986f, -3.570277f, -2.089171f , - 1.214047f, -3.605418f, -2.009205f , - 1.465600f, -3.609707f, -1.752794f , - 1.546260f, -3.622655f, -1.618641f , - 1.321277f, -3.636189f, -1.708614f , - 1.333411f, -3.606380f, -1.909737f , - 1.526247f, -3.575757f, -1.756289f , - 1.558983f, -3.344709f, -1.683900f , - 1.565887f, -3.360756f, -1.748985f , - 1.496764f, -3.261808f, -1.672855f , - 1.570556f, -3.363420f, -1.635627f , - 1.467066f, -3.338262f, -1.185380f , - 1.505808f, -3.357443f, -1.255625f , - 1.400199f, -3.239794f, -1.203824f , - 1.410719f, -3.321401f, -1.102422f , - 1.522443f, -3.424417f, -1.166963f , - 1.478284f, -3.606147f, -1.207304f , - 1.465963f, -3.576247f, -1.189201f , - 1.346709f, -3.610836f, -1.093439f , - 1.541627f, -3.621247f, -1.291070f , - 1.161410f, -3.270087f, -0.929861f , - 1.245840f, -3.280544f, -0.960441f , - 1.127391f, -3.167919f, -0.956296f , - 1.084083f, -3.295039f, -0.920355f , - 1.252813f, -3.381981f, -0.972894f , - 1.161410f, -3.270087f, 0.961286f , - 1.084083f, -3.295039f, 0.951780f , - 1.127391f, -3.167919f, 0.987721f , - 1.245840f, -3.280544f, 0.991866f , - 1.251701f, -3.381948f, 1.000832f , - 1.473841f, -3.606709f, 1.224272f , - 1.537790f, -3.622063f, 1.307490f , - 1.345599f, -3.610976f, 1.121250f , - 1.462101f, -3.576787f, 1.205755f , - 1.467631f, -3.338237f, 1.217716f , - 1.522036f, -3.423662f, 1.196569f , - 1.410860f, -3.321395f, 1.134074f , - 1.400340f, -3.239788f, 1.235476f , - 1.506136f, -3.356451f, 1.288637f , - 1.558983f, -3.344709f, 1.715324f , - 1.570510f, -3.363329f, 1.666811f , - 1.496764f, -3.261808f, 1.704279f , - 1.565887f, -3.360756f, 1.780410f , - 1.466078f, -3.610026f, 1.772354f , - 1.333530f, -3.606460f, 1.938196f , - 1.321397f, -3.636268f, 1.737072f , - 1.544574f, -3.623248f, 1.636096f , - 1.524344f, -3.576596f, 1.773396f , - 1.193060f, -3.605859f, 2.068337f , - 1.131452f, -3.617656f, 2.067447f , - 1.214047f, -3.605418f, 2.040630f , - 1.230986f, -3.570277f, 2.120596f , - 0.920767f, -3.607174f, 2.106498f , - 0.953812f, -3.570673f, 2.161426f , - 0.886794f, -3.605815f, 2.081793f , - 0.961505f, -3.617985f, 2.089943f , - 1.425763f, -3.301721f, 1.984380f , - 1.373150f, -3.296777f, 2.022357f , - 1.470805f, -3.401691f, 1.952784f , - 1.480052f, -3.320692f, 1.936037f , - 1.389368f, -3.206120f, 1.948660f , - 1.183335f, -3.354051f, 2.158646f , - 1.107208f, -3.437110f, 2.178582f , - 1.214436f, -3.437042f, 2.160249f , - 1.253815f, -3.328271f, 2.119423f , - 1.188327f, -3.242622f, 2.139167f , - 1.106932f, -3.343955f, 2.181981f , - 0.899255f, -3.236589f, 2.189228f , - 0.960778f, -3.296539f, 2.202345f , - 0.946435f, -3.152385f, 2.177324f , - 0.828214f, -3.125122f, 2.152263f , - 0.851054f, -3.309263f, 2.173245f , - 0.883853f, -3.531033f, 1.136153f , - 0.918561f, -3.458128f, 1.001848f , - 1.033548f, -3.592057f, 1.087420f , - 1.001191f, -3.616520f, 1.310690f , - 0.782718f, -3.514209f, 1.240829f , - 0.788965f, -3.338356f, 1.045026f , - 0.712217f, -3.493700f, 1.971412f , - 0.693255f, -3.501114f, 1.884780f , - 0.787442f, -3.577446f, 2.007955f , - 0.744461f, -3.461875f, 2.061888f , - 0.642053f, -3.336220f, 1.960045f , - 0.629821f, -3.471519f, 1.557309f , - 0.558467f, -3.323231f, 1.505132f , - 0.667593f, -3.499331f, 1.491615f , - 0.646707f, -3.495569f, 1.658090f , - 0.532422f, -2.035260f, 1.913354f , - 0.632781f, -2.084373f, 1.982137f , - 0.536825f, -1.883366f, 1.905012f , - 0.469102f, -2.019225f, 1.822958f , - 0.530417f, -2.176475f, 1.917563f , - 0.408421f, -2.609514f, 1.435133f , - 0.450039f, -2.612688f, 1.309021f , - 0.438467f, -2.827625f, 1.443775f , - 0.401208f, -2.603788f, 1.563597f , - 0.396935f, -2.427299f, 1.438224f , - 0.418106f, -2.016787f, 1.448915f , - 0.467005f, -2.020404f, 1.333252f , - 0.411605f, -2.161840f, 1.453348f , - 0.404290f, -2.012747f, 1.572239f , - 0.424361f, -1.849278f, 1.428284f , - 0.717269f, -2.641472f, 1.007385f , - 0.726947f, -2.850411f, 0.999505f , - 0.623146f, -2.635228f, 1.074071f , - 0.727528f, -2.475391f, 1.026149f , - 0.822805f, -2.669182f, 0.980910f , - 0.773973f, -1.620453f, 0.820503f , - 0.766620f, -1.724768f, 0.893858f , - 0.663672f, -1.543091f, 0.898952f , - 0.796282f, -1.537374f, 0.758832f , - 0.904910f, -1.696844f, 0.785959f , - 1.113766f, -2.810720f, 1.160925f , - 1.206461f, -2.955165f, 1.199180f , - 1.096806f, -2.930523f, 1.088472f , - 1.019760f, -2.756641f, 1.077114f , - 1.108571f, -2.679314f, 1.165932f , - 1.185253f, -2.836147f, 1.292455f , - 1.186557f, -2.507874f, 1.137691f , - 1.235397f, -2.527183f, 1.220706f , - 1.159753f, -2.540311f, 1.137841f , - 1.182363f, -2.463246f, 1.111903f , - 1.266073f, -2.882663f, 1.733381f , - 1.296577f, -2.989417f, 1.832630f , - 1.331319f, -3.007843f, 1.716815f , - 1.261032f, -2.873907f, 1.597146f , - 1.247189f, -2.773630f, 1.709751f , - 1.241069f, -2.869553f, 1.847114f , - 1.316650f, -2.558538f, 1.632700f , - 1.302223f, -2.547902f, 1.746903f , - 1.294066f, -2.625938f, 1.656875f , - 1.306870f, -2.556253f, 1.500613f , - 1.332347f, -2.490114f, 1.600627f , - 1.119154f, -2.870902f, 2.041667f , - 1.064321f, -2.953343f, 2.090562f , - 1.160058f, -2.996164f, 2.072768f , - 1.186257f, -2.871293f, 1.993811f , - 1.117482f, -2.754695f, 2.015491f , - 1.006727f, -2.797005f, 2.043386f , - 0.559285f, -2.604156f, 1.915287f , - 0.669285f, -2.511301f, 1.969741f , - 0.533039f, -2.428601f, 1.904737f , - 0.483312f, -2.596933f, 1.816614f , - 0.557608f, -2.828214f, 1.925015f , - 0.637176f, -2.769727f, 2.005876f , - 0.697803f, -2.640652f, 1.983762f , - 1.287912f, -1.814726f, 0.897698f , - 1.245585f, -1.919122f, 0.943846f , - 1.171239f, -1.796847f, 0.828557f , - 1.332677f, -1.732401f, 0.852089f , - 1.372111f, -1.823741f, 1.001479f , - 1.186596f, -2.245296f, 1.059183f , - 1.262900f, -2.258080f, 1.144079f , - 1.183749f, -2.342987f, 1.085290f , - 1.099424f, -2.220050f, 1.018804f , - 1.201190f, -2.139361f, 1.030824f , - 1.355700f, -2.239798f, 1.504686f , - 1.345738f, -2.224056f, 1.619744f , - 1.348292f, -2.341186f, 1.526294f , - 1.348934f, -2.258482f, 1.376266f , - 1.368581f, -2.127727f, 1.483463f , - 1.280497f, -2.181561f, 1.867194f , - 1.303522f, -2.196600f, 1.812767f , - 1.254120f, -2.063255f, 1.884910f , - 1.258931f, -2.224264f, 1.900290f , - 1.068603f, -2.332338f, 2.016845f , - 1.094535f, -2.131367f, 2.036548f , - 1.006474f, -2.104844f, 2.041708f , - 0.925629f, -2.253105f, 2.026986f , - 0.959511f, -2.427907f, 2.027416f , - 1.098784f, -2.514947f, 2.013541f , - 1.181836f, -2.457585f, 1.944526f , - 1.164814f, -2.310332f, 1.979224f , - 0.813556f, -1.113482f, 2.039938f , - 0.815315f, -1.169525f, 2.045355f , - 0.856898f, -1.093935f, 2.044196f , - 0.771052f, -1.088531f, 2.010846f , - 0.848247f, -1.491562f, 2.046403f , - 0.778624f, -1.478272f, 2.020419f , - 0.885606f, -1.650897f, 2.050695f , - 0.911696f, -1.479262f, 2.057419f , - 0.834214f, -1.365828f, 2.045074f , - 0.518425f, -1.383933f, 1.848734f , - 0.461342f, -1.346496f, 1.751546f , - 0.521430f, -1.528203f, 1.856452f , - 0.591248f, -1.408324f, 1.918023f , - 0.518095f, -1.251203f, 1.838699f , - 0.592144f, -1.020117f, 1.818980f , - 0.648394f, -1.033192f, 1.887389f , - 0.630758f, -0.970027f, 1.821377f , - 0.537610f, -1.027453f, 1.730721f , - 0.559427f, -1.078660f, 1.818314f , - 0.758483f, -2.034433f, 1.103335f , - 0.753495f, -2.174240f, 1.105332f , - 0.651407f, -2.007252f, 1.162360f , - 0.764997f, -1.915663f, 1.061117f , - 0.875868f, -2.090702f, 1.056487f , - 0.451422f, -1.191520f, 1.335931f , - 0.442880f, -1.096373f, 1.196136f , - 0.492452f, -1.319708f, 1.175213f , - 0.439167f, -1.421848f, 1.366394f , - 0.426731f, -1.267751f, 1.487497f , - 0.461667f, -1.121250f, 1.487058f , - 0.512065f, -1.019015f, 1.468997f , - 0.466566f, -0.968984f, 1.342099f , - 0.818402f, -0.752258f, 1.836656f , - 0.710743f, -0.811781f, 1.735774f , - 0.753492f, -0.856590f, 1.844491f , - 0.892821f, -0.795796f, 1.907833f , - 0.913024f, -0.638353f, 1.857290f , - 0.801790f, -0.644561f, 1.777846f , - 1.092033f, -0.968039f, 2.017031f , - 1.030910f, -0.911024f, 1.995413f , - 0.999550f, -1.031236f, 2.031039f , - 1.118554f, -1.041544f, 2.027421f , - 1.184151f, -0.888824f, 2.002934f , - 1.143456f, -1.396886f, 1.953969f , - 1.113300f, -1.232457f, 2.000650f , - 1.030195f, -1.411173f, 2.017772f , - 1.087679f, -1.618482f, 2.006283f , - 1.153147f, -1.636438f, 1.933579f , - 1.245726f, -1.476073f, 1.844273f , - 1.281104f, -1.244111f, 1.911765f , - 1.484827f, -1.722420f, 1.451447f , - 1.449012f, -1.662580f, 1.583514f , - 1.428679f, -1.859959f, 1.464397f , - 1.473848f, -1.776615f, 1.301576f , - 1.556958f, -1.604877f, 1.421731f , - -3.029396f, -3.256446f, 2.067853f , - -2.965477f, -3.365918f, 2.072893f , - -3.065547f, -3.248091f, 1.977991f , - -3.098441f, -3.136469f, 2.097997f , - -3.004206f, -3.274909f, 2.152854f , - -3.076164f, -3.215356f, 2.595438f , - -3.051924f, -3.238682f, 2.556719f , - -3.137883f, -3.102661f, 2.559157f , - -3.090352f, -3.238007f, 2.648111f , - -3.237661f, -3.243589f, 2.783582f , - -3.200135f, -3.249225f, 2.763386f , - -3.279191f, -3.137293f, 2.737376f , - -3.262381f, -3.297925f, 2.814847f , - -3.446854f, -3.510834f, 2.813546f , - -3.356308f, -3.583881f, 2.765747f , - -3.388099f, -3.467573f, 2.872203f , - -3.478522f, -3.333995f, 2.814784f , - -3.507715f, -3.501596f, 2.755932f , - -3.019258f, -3.593641f, 2.136873f , - -3.020564f, -3.605327f, 2.228395f , - -3.126840f, -3.607243f, 2.009166f , - -2.993693f, -3.559772f, 2.109209f , - -3.220005f, -3.253930f, 1.801213f , - -3.173089f, -3.237624f, 1.839470f , - -3.141407f, -3.368572f, 1.862909f , - -3.265755f, -3.314590f, 1.771913f , - -3.280125f, -3.156579f, 1.784827f , - -3.438498f, -3.527120f, 1.822653f , - -3.370773f, -3.482604f, 1.762797f , - -3.354996f, -3.590612f, 1.887358f , - -3.510002f, -3.525301f, 1.854246f , - -3.483661f, -3.384071f, 1.722926f , - -3.793949f, -3.493767f, 1.892471f , - -3.713040f, -3.516963f, 1.895402f , - -3.820514f, -3.504014f, 1.931471f , - -3.876133f, -3.351602f, 1.772582f , - -3.938403f, -3.476743f, 2.036284f , - -3.896161f, -3.499757f, 2.007143f , - -3.931890f, -3.485791f, 2.101178f , - -4.076914f, -3.307184f, 1.958155f , - -3.953588f, -3.460767f, 2.326146f , - -3.941925f, -3.481797f, 2.268456f , - -3.897397f, -3.482362f, 2.395609f , - -4.080797f, -3.284415f, 2.312618f , - -3.757995f, -3.461784f, 2.644418f , - -3.788233f, -3.482617f, 2.586851f , - -3.678433f, -3.489333f, 2.667624f , - -3.827169f, -3.298079f, 2.670194f , - -2.695954f, -1.146167f, 1.861918f , - -2.718352f, -1.172415f, 1.728394f , - -2.656034f, -1.086007f, 1.834352f , - -2.730086f, -1.104476f, 1.965020f , - -2.751029f, -1.207358f, 1.871015f , - -3.241182f, -2.540664f, 2.139485f , - -3.218195f, -2.269195f, 2.088230f , - -3.241621f, -2.527651f, 2.241781f , - -3.226064f, -2.788579f, 2.156954f , - -3.264952f, -2.559838f, 2.008155f , - -2.998941f, -1.501582f, 1.919825f , - -2.997715f, -1.496817f, 1.782203f , - -2.914215f, -1.349274f, 1.893543f , - -3.003426f, -1.443083f, 2.028012f , - -3.076325f, -1.703842f, 1.961180f , - -3.480428f, -2.613089f, 1.605684f , - -3.380148f, -2.596426f, 1.718916f , - -3.414279f, -2.863484f, 1.689355f , - -3.512796f, -2.922962f, 1.636570f , - -3.588844f, -2.606160f, 1.539889f , - -3.428180f, -2.289970f, 1.529178f , - -3.071668f, -1.239145f, 1.186383f , - -3.265050f, -1.234359f, 1.078060f , - -3.003388f, -1.062017f, 1.023641f , - -2.844573f, -1.092834f, 1.249622f , - -2.911319f, -1.180163f, 1.361462f , - -3.027496f, -1.362649f, 1.392743f , - -3.200893f, -1.553860f, 1.301907f , - -3.948538f, -2.530719f, 1.484609f , - -3.832745f, -2.569486f, 1.476590f , - -3.946132f, -2.862157f, 1.581773f , - -4.050467f, -2.505282f, 1.525135f , - -3.930537f, -2.172527f, 1.380717f , - -3.838482f, -1.044588f, 0.988642f , - -3.965172f, -1.000213f, 1.038373f , - -3.818343f, -0.850357f, 0.869501f , - -3.674695f, -1.116332f, 0.982703f , - -3.868995f, -1.355064f, 1.121387f , - -4.266138f, -2.372673f, 1.756830f , - -4.217535f, -2.412786f, 1.670610f , - -4.238334f, -2.729498f, 1.837148f , - -4.290883f, -2.354399f, 1.852990f , - -4.261284f, -1.996294f, 1.661213f , - -4.163508f, -0.862038f, 1.316674f , - -4.185071f, -0.827276f, 1.426007f , - -4.155345f, -0.630955f, 1.204478f , - -4.120829f, -0.911764f, 1.213818f , - -4.188331f, -1.182878f, 1.431853f , - -4.236392f, -2.303366f, 2.173946f , - -4.279537f, -2.315574f, 2.067463f , - -4.220836f, -2.671898f, 2.238806f , - -4.167325f, -2.316751f, 2.277368f , - -4.221700f, -1.921076f, 2.093433f , - -4.094328f, -0.764344f, 1.788988f , - -3.992196f, -0.775844f, 1.926045f , - -4.065294f, -0.514449f, 1.701355f , - -4.159601f, -0.782549f, 1.663429f , - -4.134624f, -1.101759f, 1.887022f , - -3.408272f, -2.475605f, 2.467726f , - -3.463277f, -2.787843f, 2.597682f , - -3.371025f, -2.753664f, 2.573059f , - -3.317384f, -2.727824f, 2.486823f , - -3.321274f, -2.475125f, 2.385451f , - -3.366920f, -2.109020f, 2.401693f , - -3.510021f, -2.431010f, 2.507092f , - -3.855686f, -2.369896f, 2.504768f , - -3.803981f, -1.992046f, 2.440325f , - -3.964646f, -2.357896f, 2.446223f , - -3.873694f, -2.726453f, 2.573995f , - -3.742507f, -2.393274f, 2.539688f , - -6.861129f, 0.030436f, 0.013360f , - -7.214294f, 0.075073f, 0.015124f , - -6.833374f, 0.044683f, -0.026201f , - -6.833007f, 0.044639f, 0.053218f , - -8.279055f, 0.293548f, 0.012524f , - -8.300910f, 0.310648f, -0.027765f , - -7.938312f, 0.215506f, 0.014915f , - -8.301490f, 0.310779f, 0.053196f , - -9.510010f, 0.787050f, 0.071502f , - -9.287611f, 0.721768f, 0.111034f , - -9.518223f, 0.849343f, 0.107112f , - -8.281348f, 0.452599f, 0.228895f , - -8.649075f, 0.538328f, 0.203724f , - -8.301868f, 0.398046f, 0.181290f , - -7.919896f, 0.382559f, 0.238827f , - -8.270412f, 0.518878f, 0.261653f , - -6.761131f, 0.233905f, 0.235547f , - -7.146512f, 0.271437f, 0.240465f , - -6.784019f, 0.161217f, 0.179079f , - -6.391094f, 0.203103f, 0.214200f , - -6.750172f, 0.311132f, 0.286062f , - -8.173424f, 0.741638f, 0.312894f , - -8.517111f, 0.791356f, 0.287406f , - -8.212166f, 0.671629f, 0.300760f , - -7.830518f, 0.699472f, 0.336544f , - -8.147006f, 0.821349f, 0.320175f , - -6.700425f, 0.589737f, 0.403546f , - -7.087658f, 0.605427f, 0.387140f , - -6.722450f, 0.480960f, 0.374127f , - -6.340495f, 0.598288f, 0.416798f , - -6.708685f, 0.714629f, 0.416352f , - -2.506816f, -0.848550f, 1.641037f , - -2.566962f, -0.930221f, 1.721046f , - -2.562536f, -0.929299f, 1.503248f , - -2.439336f, -0.788430f, 1.557913f , - -2.517273f, -0.780965f, 1.788003f , - -2.759628f, -0.499112f, 2.143041f , - -2.655964f, -0.612189f, 2.054635f , - -2.697240f, -0.383260f, 2.108032f , - -2.897584f, -0.401470f, 2.202957f , - -2.826713f, -0.618255f, 2.179004f , - -3.106775f, -1.025659f, 2.263273f , - -3.197033f, -1.345426f, 2.308985f , - -3.055063f, -1.192317f, 2.206025f , - -2.944909f, -0.995626f, 2.165561f , - -2.991916f, -0.833967f, 2.226218f , - -3.150625f, -0.748674f, 2.276331f , - -3.226781f, -0.989540f, 2.311812f , - -3.567833f, -0.840489f, 2.268254f , - -3.530861f, -0.602218f, 2.227016f , - -3.695687f, -0.811412f, 2.185049f , - -3.623075f, -1.167152f, 2.324062f , - -3.448248f, -0.890503f, 2.320853f , - -3.431139f, -0.134819f, 2.145618f , - -3.486430f, -0.289290f, 2.172946f , - -3.327661f, -0.336709f, 2.231302f , - -3.239822f, -0.205217f, 2.205142f , - -3.401889f, 0.033014f, 2.116621f , - -3.603905f, -0.075965f, 2.024964f , - -3.312364f, 0.688607f, 2.017857f , - -3.270347f, 0.935125f, 1.967948f , - -3.539556f, 0.742757f, 1.907218f , - -3.340674f, 0.447646f, 2.062127f , - -3.073043f, 0.562204f, 2.091136f , - -2.067177f, 0.749498f, 1.984510f , - -1.927106f, 0.879068f, 1.958587f , - -2.223084f, 0.971086f, 1.976504f , - -2.164935f, 0.581120f, 2.004595f , - -1.909508f, 0.547726f, 1.951429f , - -2.375231f, 0.093879f, 1.987399f , - -2.323739f, 0.293023f, 2.012413f , - -2.597994f, 0.255983f, 2.065561f , - -2.503215f, -0.078595f, 2.030147f , - -2.244577f, -0.138920f, 1.835922f , - -2.126813f, 0.052245f, 1.883423f , - -4.114934f, 0.743224f, 1.469638f , - -4.106012f, 0.551187f, 1.486163f , - -3.957381f, 0.751750f, 1.600436f , - -4.167258f, 0.953488f, 1.395369f , - -4.277194f, 0.724689f, 1.320951f , - -4.076682f, 0.044110f, 1.426037f , - -4.045093f, -0.145868f, 1.515899f , - -3.924644f, 0.015255f, 1.634575f , - -4.070141f, 0.218783f, 1.457050f , - -4.221492f, 0.181567f, 1.242346f , - -4.166883f, -0.033577f, 1.259027f , - -5.317120f, 0.692231f, 0.503681f , - -5.332438f, 0.866381f, 0.541169f , - -5.620827f, 0.660801f, 0.459969f , - -5.339214f, 0.529342f, 0.432974f , - -5.100835f, 0.709346f, 0.559245f , - -4.662655f, 0.655237f, 0.856154f , - -4.666096f, 0.470477f, 0.752135f , - -4.518509f, 0.489753f, 0.968176f , - -4.538338f, 0.700471f, 1.017668f , - -4.675148f, 0.896419f, 0.889560f , - -4.805576f, 0.701521f, 0.736188f , - -5.378009f, 0.119780f, 0.113297f , - -5.131876f, 0.109988f, 0.147562f , - -5.377952f, 0.248666f, 0.222547f , - -5.685486f, 0.142783f, 0.119645f , - -3.665916f, -0.695091f, 0.015712f , - -3.688199f, -0.683473f, -0.090301f , - -3.474969f, -0.778732f, 0.015712f , - -3.688199f, -0.683473f, 0.121725f , - -3.852723f, -0.594492f, 0.015712f , - -4.315355f, -0.322178f, 0.013159f , - -4.363659f, -0.285046f, 0.071183f , - -4.363447f, -0.285117f, -0.045225f , - -4.160428f, -0.402005f, 0.015074f , - -4.550930f, -0.004045f, 0.378166f , - -4.609585f, 0.145438f, 0.499498f , - -4.738325f, 0.069786f, 0.300336f , - -4.508906f, -0.106197f, 0.255477f , - -4.375618f, -0.160085f, 0.370133f , - -4.454201f, -0.032581f, 0.519709f , - -4.244434f, -0.251152f, 0.896567f , - -4.197618f, -0.339842f, 0.793215f , - -4.196813f, -0.364154f, 0.992058f , - -4.254021f, -0.180085f, 0.994640f , - -4.300834f, -0.162236f, 0.782130f , - -3.860368f, -0.617490f, 0.485637f , - -4.042912f, -0.474363f, 0.427049f , - -3.808445f, -0.626415f, 0.349233f , - -3.629339f, -0.725015f, 0.479797f , - -3.836128f, -0.679732f, 0.627022f , - -4.018280f, -0.524467f, 0.587711f , - -2.912498f, -0.931500f, 0.015713f , - -3.089714f, -0.886889f, 0.015713f , - -2.901986f, -0.932751f, -0.086500f , - -2.719021f, -0.977347f, 0.015712f , - -2.901986f, -0.932751f, 0.117925f , - -2.807274f, -0.918953f, 0.548807f , - -2.890675f, -0.931928f, 0.710236f , - -3.089195f, -0.883578f, 0.504228f , - -2.867343f, -0.926098f, 0.369864f , - -2.596733f, -0.940185f, 0.448263f , - -2.585310f, -0.890827f, 0.703461f , - -2.088312f, -0.624805f, 1.248214f , - -1.984640f, -0.606313f, 1.155657f , - -2.075768f, -0.493064f, 1.442883f , - -2.215194f, -0.669133f, 1.353621f , - -2.191844f, -0.738084f, 1.066201f , - -1.962954f, -1.009125f, 0.015713f , - -2.199472f, -1.003204f, 0.196324f , - -2.287118f, -1.033713f, 0.015713f , - -2.199472f, -1.003204f, -0.164899f , - -1.865289f, -0.973325f, -0.241686f , - -1.620742f, -1.014699f, 0.015713f , - -1.865289f, -0.973325f, 0.273111f , - -0.597802f, -1.037600f, 0.015712f , - -0.894838f, -1.026553f, 0.015712f , - -0.597566f, -1.015004f, -0.200587f , - -0.355017f, -1.054612f, 0.015712f , - -0.597566f, -1.015004f, 0.232011f , - 0.185589f, -1.166497f, 0.015712f , - 0.019986f, -1.115996f, 0.015712f , - 0.203504f, -1.139845f, -0.194064f , - 0.362078f, -1.229795f, 0.015712f , - 0.203504f, -1.139845f, 0.225489f , - 0.853106f, -1.413848f, 0.015713f , - 0.695331f, -1.351835f, 0.015712f , - 0.859566f, -1.410472f, -0.135840f , - 1.028844f, -1.467325f, 0.015713f , - 0.859566f, -1.410472f, 0.167265f , - 0.843256f, -1.382503f, 0.536107f , - 1.007028f, -1.457300f, 0.518239f , - 0.835896f, -1.414596f, 0.632996f , - 0.705602f, -1.287540f, 0.590137f , - 0.854647f, -1.377692f, 0.421809f , - 1.556608f, -1.478576f, 0.015713f , - 1.386355f, -1.486692f, 0.015712f , - 1.541358f, -1.485315f, -0.169264f , - 1.678501f, -1.467467f, 0.015712f , - 1.541358f, -1.485315f, 0.200689f , - 1.519459f, -1.560647f, 0.650843f , - 1.630067f, -1.538130f, 0.747209f , - 1.463946f, -1.604540f, 0.745725f , - 1.365010f, -1.552220f, 0.580308f , - 1.536910f, -1.528088f, 0.517302f , - 2.063196f, -1.356408f, 0.015712f , - 1.925028f, -1.418734f, 0.015712f , - 2.049750f, -1.350876f, -0.274421f , - 2.198235f, -1.284252f, 0.015712f , - 2.049750f, -1.350876f, 0.305846f , - 2.639781f, -1.023502f, 0.015712f , - 2.502429f, -1.115377f, 0.015712f , - 2.645556f, -1.002089f, -0.250442f , - 2.778533f, -0.917497f, 0.015712f , - 2.645556f, -1.002089f, 0.281866f , - 3.120595f, -0.632581f, 0.015713f , - 2.992025f, -0.729977f, 0.015713f , - 3.137300f, -0.602599f, -0.179560f , - 3.290932f, -0.517588f, 0.015713f , - 3.137300f, -0.602599f, 0.210985f , - 1.567859f, -0.483355f, 1.956964f , - 1.467112f, -0.400635f, 1.948701f , - 1.420288f, -0.636314f, 1.970728f , - 1.638552f, -0.592644f, 1.943073f , - 1.704914f, -0.338467f, 1.949570f , - 1.938377f, -1.265952f, 1.229560f , - 1.778818f, -1.373826f, 1.338116f , - 1.822395f, -1.387815f, 1.070055f , - 1.991104f, -1.292066f, 0.945305f , - 2.116562f, -1.151060f, 1.195110f , - 1.927416f, -1.186025f, 1.435503f , - 1.841478f, -0.900825f, 1.777766f , - 2.010854f, -0.791027f, 1.742389f , - 1.780281f, -0.801237f, 1.853791f , - 1.659737f, -1.018433f, 1.817443f , - 1.880903f, -1.004892f, 1.685555f , - 2.611284f, -0.820862f, 1.028367f , - 2.459199f, -0.930874f, 1.078374f , - 2.625353f, -0.891968f, 0.804589f , - 2.761760f, -0.705715f, 0.960642f , - 2.606074f, -0.742938f, 1.207224f , - 3.175348f, -0.368958f, 0.744884f , - 3.042419f, -0.466369f, 0.805174f , - 3.184263f, -0.440652f, 0.578240f , - 3.332948f, -0.264668f, 0.698070f , - 3.167019f, -0.284628f, 0.899912f , - 2.550126f, -0.437672f, 1.607250f , - 2.482285f, -0.302607f, 1.704654f , - 2.378737f, -0.572527f, 1.662915f , - 2.584807f, -0.563492f, 1.494538f , - 2.696784f, -0.307711f, 1.538437f , - 2.178673f, 0.201171f, 1.903429f , - 2.342634f, 0.375322f, 1.845322f , - 2.062667f, 0.329405f, 1.925662f , - 2.014016f, 0.007070f, 1.938051f , - 2.281775f, 0.033023f, 1.861891f , - 3.106679f, 0.118521f, 1.283871f , - 3.012467f, 0.279358f, 1.404141f , - 2.958689f, -0.030239f, 1.369984f , - 3.126999f, -0.067056f, 1.174241f , - 3.290942f, 0.151268f, 1.145207f , - 3.185963f, 0.373162f, 1.283506f , - 0.444505f, -0.534136f, 1.311676f , - 0.504925f, -0.631221f, 1.330761f , - 0.525595f, -0.477691f, 1.404770f , - 0.329966f, -0.490068f, 1.299014f , - 0.382988f, -0.600686f, 1.225177f , - 0.304864f, -0.874685f, 0.865324f , - 0.130367f, -0.809715f, 0.862284f , - 0.276821f, -0.950212f, 0.673529f , - 0.450584f, -1.008645f, 0.783634f , - 0.398697f, -0.918084f, 0.987537f , - 0.300446f, -0.760159f, 1.027915f , - -1.601444f, -0.663506f, 0.920094f , - -1.783101f, -0.634553f, 0.988673f , - -1.667544f, -0.785802f, 0.720806f , - -1.356133f, -0.691382f, 0.869315f , - -1.535182f, -0.512925f, 1.110177f , - -0.555348f, -0.755770f, 0.821620f , - -0.810645f, -0.730197f, 0.832004f , - -0.580237f, -0.854442f, 0.642395f , - -0.300624f, -0.777403f, 0.824628f , - -0.507485f, -0.662653f, 0.980522f , - -0.346178f, -0.437235f, 1.318613f , - -0.422316f, -0.517730f, 1.218240f , - -0.098399f, -0.472307f, 1.301816f , - -0.111302f, -0.363913f, 1.399576f , - -0.380220f, -0.332087f, 1.413956f , - -0.616029f, -0.367757f, 1.348576f , - -1.364154f, 0.131191f, 1.631897f , - -1.104602f, 0.176925f, 1.651729f , - -1.344079f, 0.409323f, 1.734996f , - -1.581103f, 0.288685f, 1.763014f , - -1.639604f, 0.081301f, 1.687191f , - -1.418321f, -0.101486f, 1.473968f , - -1.129825f, -0.062426f, 1.511960f , - -1.395221f, 1.279988f, 1.891403f , - -1.424417f, 1.552371f, 1.870155f , - -1.623614f, 1.188084f, 1.910648f , - -1.368991f, 0.977381f, 1.875473f , - -1.124912f, 1.284212f, 1.881688f , - -0.369760f, 0.111071f, 1.662519f , - -0.600167f, 0.121801f, 1.661111f , - -0.389582f, -0.081880f, 1.586721f , - -0.148011f, 0.076354f, 1.648601f , - -0.334961f, 0.323656f, 1.724699f , - -0.171899f, 1.267910f, 1.883377f , - 0.115141f, 1.206626f, 1.867198f , - -0.141220f, 1.550040f, 1.864723f , - -0.473291f, 1.290764f, 1.887033f , - -0.212686f, 0.953389f, 1.861139f , - 0.465635f, 0.048114f, 1.623559f , - 0.298407f, 0.063427f, 1.628185f , - 0.325753f, -0.126633f, 1.551926f , - 0.577514f, 0.006848f, 1.620118f , - 0.556931f, 0.244249f, 1.683461f , - 1.172318f, -0.181251f, 1.833682f , - 1.076104f, -0.352246f, 1.831283f , - 1.255966f, -0.251808f, 1.867319f , - 1.270825f, -0.004661f, 1.852669f , - 1.086065f, -0.143309f, 1.803079f , - 0.810761f, -0.160302f, 1.677492f , - 0.919866f, 0.084859f, 1.742559f , - 0.732007f, -0.088625f, 1.649122f , - 0.688780f, -0.318122f, 1.588925f , - 0.804656f, -0.354464f, 1.683884f , - 0.925850f, -0.139320f, 1.735124f , - 0.782506f, 1.001240f, 1.797892f , - 0.610302f, 1.061373f, 1.804571f , - 0.727949f, 0.741655f, 1.777689f , - 0.919519f, 0.940724f, 1.811051f , - 0.840411f, 1.240903f, 1.798310f , - 1.672175f, 0.678737f, 1.919001f , - 1.532417f, 0.431986f, 1.924610f , - 1.804012f, 0.569342f, 1.927740f , - 1.806011f, 0.903078f, 1.880214f , - 1.526002f, 0.742145f, 1.911968f , - 1.177982f, 0.890099f, 1.888794f , - 1.222114f, 1.124120f, 1.873587f , - 1.077317f, 0.894850f, 1.871235f , - 1.094188f, 0.631864f, 1.867968f , - 1.278518f, 0.856492f, 1.897482f , - 2.804809f, 0.877171f, 1.599931f , - 2.715944f, 1.046277f, 1.620872f , - 2.680011f, 0.743210f, 1.669583f , - 2.887429f, 0.705404f, 1.554091f , - 2.919016f, 0.985366f, 1.529881f , - 3.233035f, 1.123211f, 1.332417f , - 3.246513f, 0.909382f, 1.297788f , - 3.379695f, 1.089050f, 1.266082f , - 3.271412f, 1.286410f, 1.368193f , - 3.065050f, 1.284339f, 1.409883f , - 3.104604f, 1.095540f, 1.394213f , - -9.464323f, 0.921378f, 0.138000f , - -9.196449f, 0.885549f, 0.206500f , - -9.193068f, 1.000059f, 0.207051f , - -9.540343f, 0.986336f, 0.122809f , - -8.181608f, 1.070101f, 0.298509f , - -8.522182f, 1.060264f, 0.279079f , - -8.153078f, 0.986576f, 0.312622f , - -7.835802f, 1.066562f, 0.314988f , - -8.212903f, 1.142470f, 0.283530f , - -6.704979f, 1.111118f, 0.361226f , - -7.088163f, 1.078963f, 0.344990f , - -6.709979f, 0.986303f, 0.388204f , - -6.351411f, 1.165092f, 0.382577f , - -6.728257f, 1.221961f, 0.324122f , - -5.385437f, 1.403368f, 0.520327f , - -5.666173f, 1.338117f, 0.461292f , - -5.368160f, 1.248567f, 0.548565f , - -5.151598f, 1.464901f, 0.595943f , - -5.404406f, 1.537071f, 0.466670f , - -4.438587f, 1.724917f, 0.981068f , - -4.660958f, 1.848852f, 0.764436f , - -4.728508f, 1.617545f, 0.825238f , - -4.583040f, 1.439073f, 0.949308f , - -4.336294f, 1.471925f, 1.151832f , - -4.143593f, 1.800726f, 1.165925f , - -4.337338f, 2.029331f, 0.874316f , - -3.024836f, 1.980525f, 1.668269f , - -3.423432f, 1.954091f, 1.545487f , - -3.137047f, 1.615918f, 1.797192f , - -2.723637f, 1.670003f, 1.839140f , - -2.700372f, 2.168189f, 1.639894f , - -3.189476f, 2.315735f, 1.414333f , - -1.565140f, 2.561412f, 1.517734f , - -1.903633f, 2.828743f, 1.301629f , - -1.925194f, 2.442500f, 1.556684f , - -1.453286f, 2.216583f, 1.697520f , - -1.169905f, 2.545107f, 1.547645f , - -1.506857f, 2.871576f, 1.317457f , - -0.163800f, 2.381218f, 1.571673f , - -0.486833f, 2.442299f, 1.566840f , - -0.138637f, 2.104893f, 1.705937f , - 0.170317f, 2.286839f, 1.586830f , - -0.193183f, 2.632217f, 1.409881f , - 1.094471f, 1.971094f, 1.612435f , - 0.789213f, 2.070667f, 1.607493f , - 0.966728f, 1.724837f, 1.722815f , - 1.190634f, 1.653928f, 1.737907f , - 1.404866f, 1.886674f, 1.614823f , - 1.128312f, 2.211174f, 1.469495f , - 2.346356f, 1.690096f, 1.562697f , - 2.030753f, 1.752279f, 1.581871f , - 2.152934f, 1.412837f, 1.697095f , - 2.466835f, 1.428085f, 1.615569f , - 2.630353f, 1.555973f, 1.540249f , - 2.704422f, 1.677846f, 1.556978f , - 2.700993f, 1.792519f, 1.540884f , - 2.654912f, 1.885823f, 1.463277f , - 2.360636f, 1.961773f, 1.412178f , - -9.584084f, 1.241805f, 0.154851f , - -9.600156f, 1.181636f, 0.154423f , - -9.328224f, 1.276621f, 0.173011f , - -9.628733f, 1.281043f, 0.125755f , - -8.251914f, 1.363299f, 0.221716f , - -8.625757f, 1.333472f, 0.212353f , - -8.238215f, 1.286888f, 0.251137f , - -7.892303f, 1.392057f, 0.218665f , - -8.285128f, 1.437743f, 0.173192f , - -6.784791f, 1.519944f, 0.174698f , - -7.157236f, 1.458227f, 0.180518f , - -6.766141f, 1.420147f, 0.223580f , - -6.428385f, 1.600098f, 0.176042f , - -6.826524f, 1.622141f, 0.124365f , - -5.321338f, 1.971715f, 0.231816f , - -5.696034f, 1.824200f, 0.193574f , - -5.395177f, 1.786334f, 0.304946f , - -5.074821f, 1.945470f, 0.373418f , - -4.969953f, 2.194807f, 0.260677f , - -5.376801f, 2.097563f, 0.153373f , - -5.467325f, 2.359977f, 0.013337f , - -5.135321f, 2.529566f, 0.015118f , - -5.473481f, 2.318594f, -0.023473f , - -5.473646f, 2.318528f, 0.050448f , - -3.793754f, 2.893042f, 0.506821f , - -4.217368f, 2.705237f, 0.388253f , - -3.998615f, 2.636380f, 0.610873f , - -3.570914f, 2.769420f, 0.771329f , - -3.472694f, 3.057161f, 0.537283f , - -3.930274f, 2.999606f, 0.327306f , - -4.112565f, 3.104748f, 0.015712f , - -3.791999f, 3.280204f, 0.015712f , - -4.101778f, 3.088749f, -0.076348f , - -4.457395f, 2.908173f, 0.015712f , - -4.101778f, 3.088749f, 0.107773f , - -2.706948f, 3.405986f, 0.578825f , - -2.928494f, 3.304192f, 0.589064f , - -2.516048f, 3.255147f, 0.793616f , - -2.456830f, 3.485029f, 0.578964f , - -2.782401f, 3.523886f, 0.414364f , - -2.840594f, 3.700726f, 0.015713f , - -2.583367f, 3.773863f, 0.015712f , - -2.840626f, 3.678492f, -0.111625f , - -3.134521f, 3.592698f, 0.015713f , - -2.840626f, 3.678492f, 0.143050f , - -1.704451f, 3.521686f, 0.641226f , - -1.979055f, 3.539159f, 0.611282f , - -1.641499f, 3.352110f, 0.841762f , - -1.421151f, 3.485216f, 0.677651f , - -1.765184f, 3.653794f, 0.469985f , - -1.792617f, 3.857078f, 0.015713f , - -1.490819f, 3.839158f, 0.015713f , - -1.796618f, 3.833322f, -0.134928f , - -2.078801f, 3.852915f, 0.015713f , - -1.796618f, 3.833322f, 0.166352f , - -0.378132f, 3.314064f, 0.764673f , - -0.746094f, 3.387613f, 0.743287f , - -0.335839f, 3.117956f, 0.980628f , - 0.013790f, 3.207771f, 0.800432f , - -0.396445f, 3.461564f, 0.570203f , - -0.383109f, 3.660404f, 0.015713f , - 0.021541f, 3.570440f, 0.015712f , - -0.394735f, 3.639845f, -0.169509f , - -0.782617f, 3.740308f, 0.015713f , - -0.394735f, 3.639845f, 0.200934f , - 1.224328f, 2.835534f, 0.898635f , - 0.849827f, 2.945065f, 0.885727f , - 1.202797f, 2.650381f, 1.104873f , - 1.565646f, 2.735255f, 0.903836f , - 1.245722f, 2.987210f, 0.690680f , - 1.309495f, 3.246175f, 0.015713f , - 1.665390f, 3.132632f, 0.015712f , - 1.298034f, 3.215794f, -0.204691f , - 0.908179f, 3.358037f, 0.015712f , - 1.298034f, 3.215794f, 0.236116f , - 2.431641f, 2.555860f, 0.851822f , - 2.159707f, 2.596013f, 0.872315f , - 2.403296f, 2.396133f, 1.048988f , - 2.695937f, 2.483069f, 0.937910f , - 2.722016f, 2.553475f, 0.831690f , - 2.698885f, 2.596406f, 0.704886f , - 2.454035f, 2.675502f, 0.635702f , - 2.527323f, 2.837512f, 0.015713f , - 2.528199f, 2.816796f, 0.212659f , - 2.759266f, 2.785787f, 0.015713f , - 2.528199f, 2.816796f, -0.181234f , - 2.281304f, 2.906099f, 0.015713f , - 3.540490f, 3.817868f, 0.015712f , - 3.542402f, 3.806888f, 0.185607f , - 3.609769f, 3.916118f, 0.079344f , - 3.606468f, 3.911056f, 0.015712f , - 3.609769f, 3.916118f, -0.047919f , - 3.542401f, 3.806889f, -0.154182f , - 3.462950f, 3.596266f, 0.015712f , - 3.203528f, 2.860253f, 0.015712f , - 3.314121f, 3.051251f, 0.015712f , - 3.210242f, 2.855755f, -0.123685f , - 3.075977f, 2.758519f, 0.015712f , - 3.210242f, 2.855755f, 0.155110f , - 3.589302f, 3.749696f, 0.698087f , - 3.593885f, 3.704546f, 0.848912f , - 3.665271f, 3.832270f, 0.773651f , - 3.658411f, 3.842589f, 0.715433f , - 3.652729f, 3.860861f, 0.655174f , - 3.571450f, 3.772995f, 0.536685f , - 3.510204f, 3.528623f, 0.650719f , - 3.269561f, 2.787291f, 0.483791f , - 3.366106f, 2.972527f, 0.514748f , - 3.245985f, 2.810275f, 0.375293f , - 3.125504f, 2.664954f, 0.502026f , - 3.279267f, 2.751319f, 0.589657f , - 3.578590f, 3.559831f, 1.248044f , - 3.587517f, 3.469170f, 1.375757f , - 3.630627f, 3.639718f, 1.341074f , - 3.583896f, 3.611420f, 1.134724f , - 3.514317f, 3.356661f, 1.166792f , - 3.298807f, 2.678308f, 0.853033f , - 3.384014f, 2.842072f, 0.927797f , - 3.287405f, 2.698093f, 0.771083f , - 3.156774f, 2.568797f, 0.810257f , - 3.293761f, 2.635512f, 0.918550f , - 3.631195f, 3.121150f, 1.672818f , - 3.644788f, 3.072551f, 1.733084f , - 3.637557f, 3.198837f, 1.640931f , - 3.558668f, 3.027582f, 1.538982f , - 3.282096f, 2.503654f, 1.107719f , - 3.399261f, 2.651057f, 1.212616f , - 3.294312f, 2.566310f, 1.039633f , - 3.131246f, 2.429189f, 1.037559f , - 3.275327f, 2.442574f, 1.172923f , - 3.322097f, 2.272856f, 1.336653f , - 3.296020f, 2.336869f, 1.286509f , - 3.153573f, 2.160596f, 1.313323f , - 3.350321f, 2.199594f, 1.390344f , - 3.443782f, 2.381180f, 1.432485f , - 3.644428f, 2.752720f, 1.864601f , - 3.675870f, 2.626386f, 1.889531f , - 3.712810f, 2.734151f, 1.960747f , - 3.699862f, 2.847573f, 1.924622f , - 3.632067f, 2.857881f, 1.824660f , - 3.584868f, 2.653333f, 1.741802f , - 3.877070f, 2.219781f, 1.946378f , - 3.903692f, 2.103283f, 1.945920f , - 3.957199f, 2.247315f, 1.989833f , - 3.810762f, 2.349207f, 1.920896f , - 3.763397f, 2.176409f, 1.829774f , - 3.418030f, 2.031845f, 1.522395f , - 3.539635f, 2.084126f, 1.591698f , - 3.386716f, 2.093186f, 1.488085f , - 3.236050f, 1.960884f, 1.488671f , - 3.432326f, 1.947808f, 1.541369f , - 4.237272f, 1.403204f, 1.849738f , - 4.177898f, 1.357728f, 1.731656f , - 4.324945f, 1.325812f, 1.842222f , - 4.280532f, 1.456946f, 1.939765f , - 4.162848f, 1.528214f, 1.883253f , - 3.965113f, 1.899261f, 1.922731f , - 4.012384f, 1.853663f, 1.931311f , - 3.943319f, 1.979672f, 1.944926f , - 3.899853f, 1.810393f, 1.839208f , - 3.521201f, 1.630848f, 1.539571f , - 3.672347f, 1.685105f, 1.623366f , - 3.485826f, 1.747711f, 1.567527f , - 3.292979f, 1.646114f, 1.530923f , - 3.425272f, 1.526313f, 1.472504f , - 3.628569f, 1.525698f, 1.486174f , - 6.959630f, 2.401582f, 0.630646f , - 6.947078f, 2.425580f, 0.631535f , - 6.990026f, 2.412399f, 0.657236f , - 6.773576f, 2.261937f, 0.605488f , - 6.920370f, 2.443002f, 0.659592f , - 6.950076f, 2.464370f, 0.690457f , - 6.709771f, 2.360499f, 0.656898f , - 6.941777f, 2.418531f, 0.692832f , - 6.725018f, 2.321639f, 0.748419f , - 6.774049f, 2.255072f, 0.703229f , - 6.117082f, 1.759117f, 0.487139f , - 6.079101f, 1.794204f, 0.446762f , - 6.288979f, 1.899084f, 0.513563f , - 6.135615f, 1.745599f, 0.534242f , - 6.008993f, 1.661004f, 0.469112f , - 5.942491f, 1.912072f, 0.385628f , - 5.948241f, 1.966035f, 0.414731f , - 5.984003f, 1.885688f, 0.392356f , - 5.823219f, 1.849146f, 0.331834f , - 5.959000f, 1.907808f, 0.844505f , - 5.973286f, 1.846981f, 0.828185f , - 6.162578f, 2.009364f, 0.824381f , - 5.947868f, 1.969428f, 0.850661f , - 5.826131f, 1.836913f, 0.851747f , - 6.084812f, 1.763871f, 0.724986f , - 6.117150f, 1.755490f, 0.674359f , - 6.261653f, 1.890401f, 0.723364f , - 6.037346f, 1.777795f, 0.769623f , - 5.964441f, 1.676544f, 0.735749f , - 4.552198f, 2.539307f, 0.015713f , - 4.574865f, 2.519282f, 0.162374f , - 4.749473f, 2.392899f, 0.015713f , - 4.574865f, 2.519282f, -0.130949f , - 4.390369f, 2.687170f, 0.015712f , - 3.981606f, 3.216003f, 0.015712f , - 3.976666f, 3.225080f, 0.185048f , - 4.092164f, 3.046969f, 0.015712f , - 3.976666f, 3.225080f, -0.153623f , - 3.885641f, 3.397008f, 0.015713f , - 3.677910f, 3.876658f, 0.015712f , - 3.748562f, 3.739672f, 0.015712f , - 3.685954f, 3.870868f, -0.157214f , - 3.685954f, 3.870868f, 0.188639f , - 3.953891f, 3.264556f, 0.557406f , - 3.986527f, 3.214586f, 0.623591f , - 3.967991f, 3.243020f, 0.460769f , - 3.889032f, 3.391300f, 0.591199f , - 3.721004f, 3.811597f, 0.694441f , - 3.782992f, 3.683721f, 0.657956f , - 3.709963f, 3.838411f, 0.532423f , - 3.740087f, 3.763535f, 0.844106f , - 4.094035f, 3.067784f, 0.924509f , - 4.109332f, 3.022716f, 1.048414f , - 4.197896f, 2.919625f, 0.839936f , - 4.059038f, 3.130214f, 0.810029f , - 3.992936f, 3.218478f, 1.017684f , - 3.774179f, 3.561826f, 1.297193f , - 3.831580f, 3.465768f, 1.196045f , - 3.770673f, 3.624697f, 1.133475f , - 3.734391f, 3.679594f, 1.225350f , - 3.732345f, 3.607803f, 1.376463f , - 3.791576f, 3.481385f, 1.405035f , - 4.113287f, 2.932995f, 1.270548f , - 4.143501f, 2.858245f, 1.295825f , - 4.122348f, 2.951443f, 1.211559f , - 4.034590f, 3.016880f, 1.348120f , - 3.845381f, 3.215457f, 1.576456f , - 3.889484f, 3.165730f, 1.516959f , - 3.823610f, 3.288023f, 1.548414f , - 3.843320f, 3.173747f, 1.640887f , - 4.244132f, 2.534632f, 1.441289f , - 4.272576f, 2.429240f, 1.492111f , - 4.354797f, 2.450100f, 1.339458f , - 4.203516f, 2.656838f, 1.392062f , - 4.137552f, 2.629172f, 1.553571f , - 3.901605f, 2.844627f, 1.838712f , - 3.964989f, 2.798038f, 1.753588f , - 3.878686f, 2.959250f, 1.790895f , - 3.831661f, 2.892803f, 1.896648f , - 3.868589f, 2.790692f, 1.928336f , - 3.931905f, 2.716800f, 1.868718f , - 4.316959f, 2.225994f, 1.568589f , - 4.367847f, 2.144141f, 1.550733f , - 4.316406f, 2.271803f, 1.541809f , - 4.247462f, 2.249429f, 1.646254f , - 4.019930f, 2.264900f, 1.948556f , - 4.091717f, 2.273171f, 1.843534f , - 3.979114f, 2.408892f, 1.926132f , - 4.084849f, 2.140085f, 1.942788f , - 4.293087f, 1.861009f, 1.892059f , - 4.332025f, 1.866168f, 1.818266f , - 4.230099f, 1.945228f, 1.907074f , - 4.269614f, 1.834337f, 1.957191f , - 4.351479f, 1.767221f, 1.889974f , - 4.528400f, 1.494034f, 1.843343f , - 4.554059f, 1.500156f, 1.783396f , - 4.483964f, 1.554598f, 1.870362f , - 4.543793f, 1.435735f, 1.856137f , - 4.620547f, 1.202478f, 1.811854f , - 4.655085f, 1.189506f, 1.728081f , - 4.607276f, 1.261158f, 1.837777f , - 4.593847f, 1.175548f, 1.819441f , - 4.551105f, 1.154861f, 1.797595f , - 4.496750f, 1.184910f, 1.818151f , - 4.543997f, 1.110407f, 1.708261f , - 4.519961f, 1.014192f, 1.432556f , - 4.604179f, 1.027817f, 1.445958f , - 4.514153f, 1.043278f, 1.523704f , - 4.406686f, 1.027745f, 1.404144f , - 4.535313f, 0.987877f, 1.355103f , - 4.532876f, 1.819473f, 1.524875f , - 4.610135f, 1.795941f, 1.430542f , - 4.471205f, 1.942146f, 1.537643f , - 4.454564f, 1.843139f, 1.630590f , - 4.578911f, 1.708534f, 1.525512f , - 4.664462f, 1.498831f, 1.528574f , - 4.652344f, 1.545414f, 1.515508f , - 4.627315f, 1.500795f, 1.602307f , - 4.699788f, 1.440866f, 1.500578f , - 4.744768f, 1.204367f, 1.452671f , - 4.742813f, 1.285838f, 1.471034f , - 4.712816f, 1.194550f, 1.549325f , - 4.720122f, 1.126970f, 1.453218f , - 4.782240f, 1.209187f, 1.370473f , - 5.743781f, 1.835334f, 0.285057f , - 5.699039f, 1.887249f, 0.286076f , - 5.729809f, 1.800688f, 0.244656f , - 5.644979f, 1.728641f, 0.015712f , - 5.662364f, 1.733211f, 0.086190f , - 5.710358f, 1.657984f, 0.015712f , - 5.662364f, 1.733211f, -0.054766f , - 5.572999f, 1.813217f, 0.015712f , - 5.211225f, 2.142349f, 0.015712f , - 5.350125f, 2.042477f, 0.015712f , - 5.237027f, 2.133306f, -0.069763f , - 5.074504f, 2.220572f, 0.015712f , - 5.237027f, 2.133306f, 0.101187f , - 4.642029f, 2.437370f, 0.567948f , - 4.843037f, 2.314269f, 0.503590f , - 4.619458f, 2.469558f, 0.428882f , - 4.476858f, 2.576533f, 0.644286f , - 4.687831f, 2.385217f, 0.706433f , - 4.797164f, 2.194989f, 1.052207f , - 4.770435f, 2.273663f, 0.963282f , - 4.643333f, 2.268136f, 1.141276f , - 4.849206f, 2.078275f, 1.101979f , - 4.980190f, 2.121917f, 0.971927f , - 5.433214f, 2.097795f, 0.383118f , - 5.594015f, 2.072736f, 0.447529f , - 5.560575f, 2.022776f, 0.329019f , - 5.368453f, 2.102916f, 0.272555f , - 5.254901f, 2.161277f, 0.408449f , - 5.434064f, 2.110955f, 0.515292f , - 5.940269f, 2.121280f, 0.584760f , - 5.927368f, 2.149503f, 0.645143f , - 6.150002f, 2.180640f, 0.602228f , - 5.949593f, 2.073039f, 0.521755f , - 5.799735f, 2.083272f, 0.555865f , - 5.415511f, 2.061142f, 0.852048f , - 5.407316f, 2.099812f, 0.768397f , - 5.293565f, 2.069586f, 0.880840f , - 5.451012f, 1.998998f, 0.897181f , - 5.525390f, 2.057399f, 0.833449f , - 5.856265f, 2.129096f, 0.827456f , - 5.884905f, 2.102232f, 0.843543f , - 5.880883f, 2.151244f, 0.789477f , - 5.710583f, 2.082056f, 0.828811f , - 3.881597f, 1.083069f, 1.178362f , - 4.074354f, 1.022438f, 1.139942f , - 4.077020f, 1.094042f, 1.252732f , - 3.983931f, 1.219468f, 1.357498f , - 3.794078f, 1.269220f, 1.285926f , - 3.699063f, 1.072475f, 1.170144f , - 3.836058f, 0.856295f, 1.044878f , - 4.003345f, 0.911416f, 1.054665f , - 4.617859f, 0.841498f, 1.159682f , - 4.739729f, 0.907820f, 1.170238f , - 4.580034f, 0.915067f, 1.220242f , - 4.448741f, 0.883331f, 1.156492f , - 4.552414f, 0.754383f, 1.111071f , - 4.735694f, 0.784832f, 1.138011f , - 5.859643f, 1.514024f, 0.017045f , - 5.906139f, 1.444180f, 0.017890f , - 5.868934f, 1.511716f, -0.113421f , - 5.815796f, 1.571087f, 0.016046f , - 5.868629f, 1.512005f, 0.147274f , - 5.930544f, 1.216099f, 0.770788f , - 5.913093f, 1.261997f, 0.774544f , - 5.899225f, 1.171647f, 0.788750f , - 5.988405f, 1.208666f, 0.720977f , - 6.068068f, 1.213983f, 0.473310f , - 6.060647f, 1.205877f, 0.562848f , - 6.081541f, 1.112824f, 0.508697f , - 6.068321f, 1.205035f, 0.386970f , - 6.040901f, 1.279521f, 0.461112f , - 5.954071f, 1.455673f, 0.440387f , - 5.974256f, 1.395375f, 0.440700f , - 5.934307f, 1.477974f, 0.357789f , - 5.947615f, 1.524400f, 0.455216f , - 5.954523f, 1.452799f, 0.533892f , - 5.813239f, 1.510882f, 0.811322f , - 5.719215f, 1.495611f, 0.857322f , - 5.810212f, 1.426274f, 0.835406f , - 5.873938f, 1.420022f, 0.786308f , - 5.889524f, 1.488930f, 0.723524f , - 5.861814f, 1.570502f, 0.777470f , - 5.753395f, 1.576976f, 0.841638f , - 5.586433f, 1.765457f, 0.875533f , - 5.647217f, 1.696067f, 0.862088f , - 5.681387f, 1.780775f, 0.855357f , - 5.541940f, 1.838495f, 0.887623f , - 5.477804f, 1.746197f, 0.907722f , - 5.466161f, 1.436523f, 0.931550f , - 5.455071f, 1.396812f, 0.937001f , - 5.534059f, 1.454051f, 0.913080f , - 5.403436f, 1.471023f, 0.948425f , - 4.979101f, 1.694919f, 1.117168f , - 5.149188f, 1.590187f, 1.037045f , - 5.155790f, 1.708784f, 1.028487f , - 4.931495f, 1.828030f, 1.122099f , - 4.833771f, 1.723163f, 1.215872f , - 4.993452f, 1.549404f, 1.120252f , - 5.026305f, 1.184540f, 1.099480f , - 5.142601f, 1.203148f, 1.036021f , - 5.030632f, 1.298627f, 1.104352f , - 4.926598f, 1.203781f, 1.179451f , - 4.955308f, 1.074376f, 1.121337f , - 5.089637f, 1.086789f, 1.059919f , - 5.412302f, 1.198458f, 0.945329f , - 5.482273f, 1.112916f, 0.908032f , - 5.508494f, 1.218941f, 0.921600f , - 5.410466f, 1.283501f, 0.951809f , - 5.326275f, 1.225524f, 0.974946f , - 5.386061f, 1.115319f, 0.949590f , - 5.660715f, 0.887516f, 0.795217f , - 5.696980f, 0.913449f, 0.789101f , - 5.608997f, 0.936114f, 0.825212f , - 5.657450f, 0.841710f, 0.787115f , - 6.110476f, 1.071799f, 0.015712f , - 6.212015f, 0.881586f, 0.015712f , - 6.136396f, 0.987286f, -0.139168f , - 6.070093f, 1.157941f, -0.122503f , - 6.028462f, 1.242277f, 0.016152f , - 6.070093f, 1.157941f, 0.153928f , - 6.136396f, 0.987286f, 0.170593f , - 6.536530f, 0.365639f, 0.016219f , - 6.626984f, 0.277434f, 0.015712f , - 6.542323f, 0.356977f, -0.087611f , - 6.441454f, 0.492733f, 0.015839f , - 6.543464f, 0.356071f, 0.119178f , - 6.550104f, 0.128560f, 0.393943f , - 6.553077f, 0.282310f, 0.305052f , - 6.470263f, 0.319128f, 0.402186f , - 6.532997f, 0.050635f, 0.446084f , - 6.601286f, 0.041782f, 0.383820f , - 6.701132f, 0.239674f, 0.015203f , - 6.804774f, 0.221427f, 0.015879f , - 6.712714f, 0.227704f, -0.067580f , - 6.713892f, 0.226725f, 0.098890f , - 6.660628f, 0.015635f, 0.370777f , - 6.719274f, 0.132681f, 0.289921f , - 6.699975f, -0.046384f, 0.378957f , - 6.911121f, -0.278682f, 0.015712f , - 6.868180f, -0.359176f, 0.015712f , - 6.914793f, -0.262934f, -0.054114f , - 6.970068f, -0.163368f, 0.016018f , - 6.914830f, -0.263311f, 0.085210f , - 6.889674f, -0.193882f, 0.279641f , - 6.908713f, -0.205166f, 0.233439f , - 6.859241f, -0.153925f, 0.307836f , - 6.829952f, -0.226759f, 0.310833f , - 6.827334f, -0.454112f, 0.015712f , - 6.799474f, -0.550182f, 0.015712f , - 6.820003f, -0.444971f, -0.078921f , - 6.820003f, -0.444971f, 0.110346f , - 6.666575f, -0.329808f, 0.370686f , - 6.740179f, -0.397952f, 0.288672f , - 6.678933f, -0.278810f, 0.374532f , - 6.638931f, -0.353988f, 0.389154f , - 6.745582f, -0.869531f, 0.015712f , - 6.678937f, -0.972936f, 0.015345f , - 6.724075f, -0.877091f, -0.072315f , - 6.770129f, -0.775132f, 0.015712f , - 6.724075f, -0.877091f, 0.103740f , - 6.320637f, -0.841915f, 0.322840f , - 6.307588f, -0.787075f, 0.354171f , - 6.256679f, -0.876560f, 0.264715f , - 6.367952f, -0.857919f, 0.322498f , - 6.573547f, -0.828949f, 0.325329f , - 6.518964f, -0.855544f, 0.330609f , - 6.612265f, -0.850314f, 0.276547f , - 6.579643f, -0.756757f, 0.350437f , - 6.558281f, -0.437687f, 0.428371f , - 6.565488f, -0.574624f, 0.397003f , - 6.596797f, -0.405581f, 0.411498f , - 6.483118f, -0.417657f, 0.451654f , - 6.182639f, -0.594280f, 0.402237f , - 6.097368f, -0.592613f, 0.376614f , - 6.225421f, -0.646145f, 0.392200f , - 6.235826f, -0.535370f, 0.427396f , - 5.889731f, -0.218572f, 0.500165f , - 5.832833f, -0.126865f, 0.534566f , - 5.827083f, -0.294347f, 0.464607f , - 6.001777f, -0.212716f, 0.505715f , - 6.389843f, 0.003318f, 0.523047f , - 6.358111f, -0.033664f, 0.531334f , - 6.462469f, -0.013928f, 0.502250f , - 6.302163f, 0.145819f, 0.546862f , - 6.101334f, 0.665171f, 0.578335f , - 6.148112f, 0.483510f, 0.588798f , - 6.229475f, 0.576271f, 0.512705f , - 6.134639f, 0.780552f, 0.468162f , - 6.060469f, 0.841848f, 0.582754f , - 5.998543f, 0.640965f, 0.643570f , - 5.644044f, 0.569896f, 0.758773f , - 5.626458f, 0.489648f, 0.758275f , - 5.753121f, 0.557841f, 0.715797f , - 5.636083f, 0.688762f, 0.770699f , - 5.526097f, 0.661524f, 0.823560f , - 5.259763f, 0.861544f, 0.999236f , - 5.340918f, 0.802443f, 0.951195f , - 5.308654f, 0.937858f, 0.979862f , - 5.195905f, 0.931704f, 1.029115f , - 5.216798f, 0.803986f, 1.021919f , - 5.489332f, 0.245159f, 0.729363f , - 5.356851f, 0.245059f, 0.755601f , - 5.462023f, 0.153439f, 0.672831f , - 5.624860f, 0.130841f, 0.656839f , - 5.547223f, 0.316788f, 0.745063f , - 5.358696f, 0.350848f, 0.827238f , - 5.060443f, 0.625497f, 1.094454f , - 5.159374f, 0.549504f, 1.032789f , - 5.123421f, 0.688862f, 1.086623f , - 4.964164f, 0.681179f, 1.123011f , - 5.001180f, 0.549320f, 1.075340f , - 4.363218f, 0.440410f, 0.910947f , - 4.496606f, 0.403186f, 0.928041f , - 4.423517f, 0.543130f, 0.979222f , - 4.248835f, 0.561056f, 0.939366f , - 4.246764f, 0.380529f, 0.850264f , - 4.383224f, 0.324329f, 0.846687f , - 4.466254f, 0.112768f, 0.677306f , - 4.547235f, 0.106559f, 0.705400f , - 4.432901f, 0.173704f, 0.729365f , - 4.363560f, 0.111338f, 0.656714f , - 4.504514f, 0.049067f, 0.617590f , - 5.149996f, 0.199078f, 0.778251f , - 5.155276f, 0.154824f, 0.739640f , - 5.196484f, 0.221357f, 0.777291f , - 5.099703f, 0.215461f, 0.813653f , - 4.835726f, 0.319932f, 0.943262f , - 4.934811f, 0.276141f, 0.907203f , - 4.879978f, 0.392890f, 0.987508f , - 4.732772f, 0.354356f, 0.957058f , - 4.806694f, 0.243952f, 0.899201f , - 4.750233f, 0.077993f, 0.800127f , - 4.764936f, 0.117054f, 0.829936f , - 4.691968f, 0.081457f, 0.782474f , - 4.796652f, 0.034682f, 0.765538f , - 5.264778f, -0.016054f, 0.598353f , - 5.365784f, -0.094281f, 0.546872f , - 5.349510f, 0.030544f, 0.590964f , - 5.205678f, 0.053232f, 0.646887f , - 5.189011f, -0.055363f, 0.615681f , - 4.983549f, -0.148738f, 0.609244f , - 5.049937f, -0.127249f, 0.624605f , - 4.906900f, -0.080808f, 0.663522f , - 4.915829f, -0.165483f, 0.569983f , - 5.071164f, -0.226843f, 0.545781f , - 5.730746f, -0.346391f, 0.434665f , - 5.821449f, -0.417919f, 0.408339f , - 5.614307f, -0.266527f, 0.466783f , - 5.618098f, -0.383016f, 0.410857f , - 6.006190f, -0.594020f, 0.358555f , - 5.956043f, -0.546030f, 0.372760f , - 5.975385f, -0.632971f, 0.332689f , - 6.068221f, -0.941492f, 0.015712f , - 6.001854f, -0.907286f, -0.038058f , - 6.109725f, -0.935102f, -0.069948f , - 6.136508f, -0.967441f, 0.015712f , - 6.109712f, -0.935135f, 0.101245f , - 6.001854f, -0.907286f, 0.069483f , - 5.681059f, -0.742094f, 0.015712f , - 5.609082f, -0.699695f, 0.015712f , - 5.700896f, -0.748425f, -0.025116f , - 5.700896f, -0.748425f, 0.056541f , - 5.771719f, -0.707564f, 0.218413f , - 5.738984f, -0.724047f, 0.171195f , - 5.850588f, -0.772597f, 0.184138f , - 5.832364f, -0.693397f, 0.256792f , - 5.693634f, -0.653662f, 0.239400f , - 5.255954f, -0.535027f, 0.015712f , - 5.110175f, -0.490907f, 0.015712f , - 5.268665f, -0.533822f, -0.060317f , - 5.390764f, -0.590321f, 0.015712f , - 5.268665f, -0.533822f, 0.091742f , - 5.369037f, -0.473905f, 0.322458f , - 5.335056f, -0.508848f, 0.248970f , - 5.503621f, -0.543692f, 0.291114f , - 5.457821f, -0.452063f, 0.366203f , - 5.283408f, -0.391115f, 0.400645f , - 5.207212f, -0.421692f, 0.323306f , - 4.565142f, -0.381536f, 0.015712f , - 4.393505f, -0.332566f, 0.015712f , - 4.586334f, -0.367411f, -0.079879f , - 4.756106f, -0.429875f, 0.015712f , - 4.586334f, -0.367411f, 0.111303f , - 4.693874f, -0.197111f, 0.362572f , - 4.668120f, -0.254500f, 0.280196f , - 4.868539f, -0.272722f, 0.334970f , - 4.789398f, -0.180785f, 0.436510f , - 4.633066f, -0.106828f, 0.459176f , - 4.513285f, -0.141120f, 0.388384f , - 3.869176f, 0.085621f, 0.660825f , - 4.102980f, -0.004808f, 0.536122f , - 4.081806f, 0.091756f, 0.646038f , - 4.014686f, 0.210322f, 0.722265f , - 3.849470f, 0.335728f, 0.801579f , - 3.684271f, 0.150346f, 0.820254f , - 3.686258f, -0.048018f, 0.647445f , - 3.885420f, -0.069731f, 0.479527f , - 3.843357f, -0.267902f, 0.015712f , - 3.664889f, -0.314010f, 0.015712f , - 3.859103f, -0.244751f, -0.131472f , - 4.038668f, -0.258361f, 0.015712f , - 3.859104f, -0.244751f, 0.162896f , - 3.877593f, -0.179275f, -0.284101f , - 4.317002f, -0.078704f, -0.414346f , - 4.626467f, -0.318166f, -0.166528f , - 5.040015f, -0.351106f, -0.293255f , - 5.298316f, -0.526958f, -0.139355f , - 5.608044f, -0.601324f, -0.232106f , - 5.720394f, -0.741938f, -0.079910f , - 5.929463f, -0.846976f, -0.096412f , - 5.925616f, -0.671102f, -0.266407f , - 5.533982f, -0.420003f, -0.360428f , - 5.891955f, -0.485618f, -0.356621f , - 5.177617f, -0.308198f, -0.444242f , - 5.117910f, -0.094276f, -0.594167f , - 5.494054f, -0.181290f, -0.471178f , - 4.846738f, -0.018959f, -0.686387f , - 4.783427f, 0.174350f, -0.830769f , - 5.025389f, 0.241233f, -0.828894f , - 5.172794f, 0.106120f, -0.661207f , - 4.857247f, -0.173204f, -0.477602f , - 4.565032f, -0.024450f, -0.513106f , - 4.623388f, 0.093551f, -0.714252f , - 4.405838f, 0.239826f, -0.754569f , - 4.619762f, 0.378304f, -0.916273f , - 4.135567f, 0.306229f, -0.754966f , - 4.241006f, 0.102331f, -0.614055f , - 4.938077f, 0.470569f, -1.004188f , - 5.253751f, 0.455126f, -0.904624f , - 5.262503f, 0.235793f, -0.738051f , - 5.173445f, 0.747392f, -1.025321f , - 5.427375f, 0.737404f, -0.858744f , - 5.593557f, 0.401781f, -0.722778f , - 5.881261f, 0.603567f, -0.651926f , - 6.218320f, 0.308138f, -0.542118f , - 6.313749f, -0.056473f, -0.510129f , - 6.286048f, -0.116883f, -0.499986f , - 6.190507f, -0.196484f, -0.475477f , - 5.748047f, -0.009914f, -0.554198f , - 5.417172f, 0.084023f, -0.589766f , - 6.357298f, -0.433482f, -0.417114f , - 6.573040f, -0.673181f, -0.342904f , - 6.437088f, -0.873357f, -0.288258f , - 6.271968f, -0.714300f, -0.346399f , - 6.669279f, -0.871831f, -0.164947f , - 6.625326f, -0.393859f, -0.362567f , - 6.792387f, -0.431977f, -0.167246f , - 6.498553f, -0.009738f, -0.456380f , - 6.522552f, -0.019740f, -0.443601f , - 6.180105f, -0.907381f, -0.160429f , - 6.721387f, -0.245086f, -0.334600f , - 6.714966f, -0.185848f, -0.358312f , - 6.916135f, -0.231798f, -0.130748f , - 6.761077f, -0.097982f, -0.329014f , - 6.733839f, 0.193229f, -0.168503f , - 6.641338f, 0.253853f, -0.170325f , - 6.548757f, 0.344218f, -0.183339f , - 6.357920f, 0.464644f, -0.416456f , - 6.145389f, 0.889064f, -0.295404f , - 6.527062f, 0.024796f, -0.433434f , - 5.648370f, 0.775375f, -0.746359f , - 5.351132f, 1.025451f, -0.930783f , - 5.548677f, 1.018358f, -0.833981f , - 5.142683f, 1.004648f, -1.011479f , - 5.239482f, 1.221948f, -0.968419f , - 5.015154f, 1.418777f, -1.082203f , - 5.294206f, 1.518899f, -0.950769f , - 5.435591f, 1.349626f, -0.913559f , - 5.328141f, 1.726591f, -0.927265f , - 5.700462f, 1.635972f, -0.823250f , - 5.625590f, 1.472797f, -0.857684f , - 5.934812f, 1.466727f, -0.598234f , - 6.006415f, 1.338321f, -0.417501f , - 6.033159f, 1.200426f, -0.618236f , - 5.900686f, 1.322899f, -0.746446f , - 5.843582f, 1.324557f, -0.791786f , - 6.063160f, 0.982189f, -0.528369f , - 6.062519f, 1.194353f, -0.247670f , - 5.898201f, 1.502370f, -0.229263f , - 5.784808f, 1.336085f, -0.821853f , - 5.730674f, 1.273248f, -0.838085f , - 5.857479f, 1.111626f, -0.761784f , - 5.794781f, 1.036959f, -0.762241f , - 5.741077f, 0.962833f, -0.757903f , - 5.634798f, 1.236211f, -0.860109f , - 4.853521f, 0.732841f, -1.100234f , - 4.855997f, 0.983791f, -1.119764f , - 4.487108f, 0.651357f, -1.016999f , - 4.127318f, 0.727735f, -0.949710f , - 4.265487f, 0.949751f, -1.109857f , - 3.831890f, 0.599901f, -0.893015f , - 5.608518f, 2.062642f, -0.794462f , - 5.700337f, 2.067829f, -0.477155f , - 5.908030f, 2.159372f, -0.690192f , - 5.418092f, 2.114359f, -0.615479f , - 5.147058f, 2.084980f, -0.886377f , - 4.732312f, 2.333860f, -0.811693f , - 5.052752f, 2.227836f, -0.418091f , - 5.296247f, 2.117457f, -0.151265f , - 5.706718f, 1.756472f, -0.144412f , - 5.641965f, 1.951333f, -0.266140f , - 4.891089f, 1.955886f, -1.089732f , - 5.494977f, 1.920562f, -0.870515f , - 4.844046f, 1.210494f, -1.243166f , - 4.726862f, 1.367270f, -1.452775f , - 4.621280f, 1.616248f, -1.487014f , - 4.710608f, 1.760337f, -1.292511f , - 4.553927f, 0.959348f, -1.253432f , - 4.672080f, 1.066765f, -1.420489f , - 4.528094f, 1.074771f, -1.586551f , - 4.683379f, 1.187258f, -1.612278f , - 4.573913f, 1.346060f, -1.826900f , - 4.588772f, 1.501823f, -1.663724f , - 4.418793f, 1.652300f, -1.858316f , - 4.386732f, 1.859458f, -1.698323f , - 4.153659f, 2.040509f, -1.896579f , - 4.169971f, 2.266584f, -1.708910f , - 4.417729f, 2.049947f, -1.511916f , - 3.953571f, 2.559819f, -1.869497f , - 4.044071f, 2.721597f, -1.626681f , - 4.299140f, 2.340591f, -1.489542f , - 3.850857f, 3.088218f, -1.691229f , - 3.956271f, 3.096998f, -1.404127f , - 4.171775f, 2.765451f, -1.308527f , - 3.804755f, 3.389720f, -1.459258f , - 3.904975f, 3.351229f, -1.074111f , - 4.119900f, 2.982643f, -1.109381f , - 3.757474f, 3.699212f, -0.949391f , - 3.835533f, 3.537322f, -0.592704f , - 4.022389f, 3.174477f, -0.677336f , - 3.697238f, 3.858538f, -0.330700f , - 3.973855f, 3.231973f, -0.303599f , - 4.597178f, 2.496447f, -0.265469f , - 4.327158f, 2.746579f, -0.709314f , - 4.491871f, 2.357220f, -1.206815f , - 5.901163f, 1.618905f, -0.721336f , - 5.747440f, 1.799581f, -0.819972f , - 5.999787f, 1.804571f, -0.772199f , - 5.921722f, 2.042547f, -0.819139f , - 5.941251f, 2.013730f, -0.424867f , - 5.958394f, 1.587369f, -0.428368f , - 6.134861f, 1.746895f, -0.572288f , - 6.519877f, 2.067204f, -0.683675f , - 6.444286f, 2.167008f, -0.760493f , - 6.440042f, 2.270756f, -0.602683f , - 6.025970f, 1.843727f, -0.379321f , - 6.535466f, 2.084394f, -0.529926f , - 4.255543f, 1.064982f, -1.304673f , - 3.714631f, 1.410960f, -1.363653f , - 3.800414f, 1.741981f, -1.699908f , - 4.083173f, 1.737351f, -1.899881f , - 4.088075f, 1.303752f, -1.523328f , - 3.455562f, 1.853230f, -1.530845f , - 3.652838f, 2.131751f, -1.671427f , - 3.908051f, 2.028470f, -1.903374f , - 3.524679f, 2.518746f, -1.551224f , - 3.280199f, 2.390211f, -1.200802f , - 3.486404f, 2.848292f, -1.339551f , - 3.639830f, 2.979123f, -1.750697f , - 3.295232f, 2.604221f, -0.947238f , - 3.452655f, 3.092799f, -1.014789f , - 3.626402f, 3.339708f, -1.514393f , - 3.283053f, 2.722008f, -0.652932f , - 3.441062f, 3.244602f, -0.548574f , - 3.590691f, 3.659388f, -0.966778f , - 3.225303f, 2.836096f, -0.238927f , - 3.553543f, 3.790319f, -0.330756f , - 4.420875f, 1.244976f, -1.801950f , - 3.763439f, 2.896876f, -1.897792f , - 3.740146f, 2.483247f, -1.874022f , - 3.368003f, 2.144403f, -1.411020f , - 3.690695f, 3.636594f, -1.366656f , - 1.273534f, 3.121717f, -0.434048f , - 2.494995f, 2.762636f, -0.389560f , - 1.874241f, 2.655613f, -0.860933f , - -0.400579f, 3.571862f, -0.352602f , - 0.434712f, 3.076957f, -0.815464f , - -1.791690f, 3.761617f, -0.283311f , - -1.097733f, 3.442595f, -0.681551f , - -2.824095f, 3.617134f, -0.241095f , - -2.222023f, 3.528179f, -0.558731f , - -4.036982f, 3.059272f, -0.171539f , - -3.184008f, 3.191064f, -0.538532f , - -5.436406f, 2.221742f, -0.066122f , - -4.605699f, 2.455904f, -0.278090f , - -6.872062f, 1.733601f, -0.043027f , - -6.895254f, 1.791774f, 0.011203f , - -6.065259f, 1.700922f, -0.147233f , - -8.316115f, 1.507938f, -0.073255f , - -8.330868f, 1.541994f, 0.010482f , - -7.526909f, 1.419649f, -0.168627f , - -9.673567f, 1.340861f, -0.047382f , - -9.689344f, 1.377217f, 0.011679f , - -8.996655f, 1.305878f, -0.162723f , - 1.167607f, 2.439931f, -1.266309f , - 2.379622f, 2.197612f, -1.206932f , - 1.716942f, 1.815770f, -1.570516f , - -0.262359f, 2.884235f, -1.172856f , - 0.484575f, 2.179619f, -1.567439f , - -1.553972f, 3.135275f, -1.048228f , - -0.816335f, 2.501166f, -1.529997f , - -2.234439f, 3.061360f, -1.015979f , - -3.370495f, 2.577842f, -1.063168f , - -2.318715f, 2.316803f, -1.568627f , - -4.185245f, 2.340814f, -0.710721f , - -3.800779f, 1.885638f, -1.334627f , - -4.863865f, 1.913443f, -0.524998f , - -5.415260f, 1.653090f, -0.357629f , - -4.949400f, 1.533583f, -0.665796f , - -6.747971f, 1.322895f, -0.244390f , - -5.996654f, 1.249726f, -0.384229f , - -8.228492f, 1.214005f, -0.238316f , - -7.468212f, 1.066814f, -0.298604f , - -9.606975f, 1.077346f, -0.098864f , - -8.869179f, 1.041635f, -0.219911f , - 3.009439f, 1.053874f, -1.429247f , - 2.596658f, 1.221697f, -1.599098f , - 2.867037f, 1.424657f, -1.452811f , - 1.394654f, 0.804285f, -1.873576f , - 1.229757f, 1.375167f, -1.792700f , - 1.969542f, 1.149138f, -1.773165f , - 0.891930f, 1.481771f, -1.747604f , - 1.004476f, 0.908493f, -1.808985f , - 1.010763f, -0.131494f, -1.742181f , - 1.011245f, 0.356182f, -1.781212f , - 1.394746f, 0.201969f, -1.861315f , - 0.648564f, 0.482377f, -1.705767f , - 0.660281f, -0.035820f, -1.597894f , - -0.274821f, 0.621533f, -1.768152f , - 0.381861f, 1.133808f, -1.802876f , - 0.084285f, 0.066657f, -1.605419f , - -0.130621f, 1.828434f, -1.773173f , - -0.804282f, 1.292001f, -1.851925f , - -1.425076f, 1.872402f, -1.778837f , - -0.878848f, -0.235781f, -1.383848f , - -0.847527f, 0.158773f, -1.628066f , - -0.393878f, -0.221617f, -1.472171f , - 0.123058f, -0.262177f, -1.445881f , - -1.474736f, -0.320888f, -1.266006f , - -0.469614f, -0.588088f, -1.077711f , - -1.085053f, -0.711173f, -0.812502f , - 0.330728f, -0.672427f, -1.107803f , - -0.071757f, -0.786336f, -0.812025f , - 0.137990f, -0.479688f, -1.264081f , - 0.600372f, -0.414802f, -1.466177f , - 3.231699f, 0.648073f, -1.253389f , - 2.948016f, 0.490560f, -1.460096f , - 2.827515f, -0.172108f, -1.425670f , - 2.387907f, -0.140305f, -1.761159f , - 2.517849f, 0.565965f, -1.727952f , - 2.600352f, -0.661198f, -1.330480f , - 3.149007f, -0.192717f, -1.013219f , - 2.905014f, -0.583086f, -0.850244f , - 1.908903f, -1.099482f, -1.548060f , - 2.194460f, -0.685953f, -1.674608f , - 2.292230f, -1.040154f, -1.107909f , - 1.854864f, -0.173900f, -1.916924f , - 1.710999f, -0.698557f, -1.877362f , - 1.935978f, 0.452513f, -1.900439f , - 1.358689f, -0.324195f, -1.880815f , - 2.638762f, -0.955311f, -0.518866f , - 3.165051f, -0.528578f, -0.367959f , - 2.026974f, -1.324901f, -0.595131f , - 1.539500f, -1.502398f, -0.336143f , - 1.725335f, -1.479530f, -0.866684f , - 0.860081f, -1.392717f, -0.269321f , - 1.187573f, -1.515822f, -0.503115f , - 0.238475f, -1.053174f, -0.421081f , - 0.579437f, -1.154592f, -0.650851f , - -0.593011f, -0.947402f, -0.411957f , - -1.761155f, -0.893979f, -0.475219f , - -2.368838f, -0.828648f, -0.848846f , - -1.896868f, -0.612526f, -1.036744f , - -2.402432f, -0.974246f, -0.304214f , - -2.892924f, -0.930824f, -0.199682f , - -4.370796f, -0.087346f, -0.624012f , - -4.126465f, -0.431432f, -0.658825f , - -4.210470f, -0.319376f, -0.356063f , - -4.438696f, -0.205953f, -0.123949f , - -3.743382f, -0.654496f, -0.198989f , - -4.931386f, 0.098972f, -0.182627f , - -4.940978f, 0.716000f, -0.605558f , - -4.648189f, 0.302078f, -0.597277f , - -5.362256f, 0.383337f, -0.302759f , - -4.227083f, -0.107934f, -1.083919f , - -4.370111f, 0.330989f, -1.061891f , - -4.414090f, 0.717030f, -1.140023f , - -4.085499f, 0.382091f, -1.448105f , - -4.243448f, 1.205585f, -1.258258f , - -4.655252f, 1.160302f, -0.888283f , - -3.367749f, -0.816322f, -0.452184f , - -1.887714f, 0.051519f, -1.745768f , - -2.136307f, -0.332835f, -1.615176f , - -1.755185f, 0.410825f, -1.842136f , - -2.252048f, 0.442200f, -1.984596f , - -1.348818f, 0.689273f, -1.788338f , - -1.790081f, 1.039853f, -1.902080f , - -2.449145f, 1.305722f, -1.903542f , - -2.832759f, 0.415043f, -2.072165f , - -3.215396f, 1.255840f, -1.864313f , - -3.760075f, 0.757700f, -1.725762f , - -3.767729f, -0.025355f, -1.812993f , - -3.371125f, 0.228142f, -2.060495f , - -3.337585f, -0.942338f, -2.301764f , - -3.511698f, -0.431787f, -2.166238f , - -3.229205f, -0.530175f, -2.238848f , - -2.901352f, -0.714019f, -2.171004f , - -3.059809f, -0.298803f, -2.192532f , - -2.571084f, -0.704159f, -1.899654f , - -2.611160f, -0.240364f, -2.038955f , - -2.337165f, -0.726149f, -1.428055f , - -5.349973f, 1.060698f, -0.524396f , - -6.711542f, 0.850479f, -0.377485f , - -5.971290f, 0.625731f, -0.401882f , - -8.140884f, 0.903327f, -0.288540f , - -7.466476f, 0.648037f, -0.331625f , - -6.738155f, 0.390787f, -0.302185f , - -6.019086f, 0.170828f, -0.132835f , - -8.245923f, 0.594632f, -0.253219f , - -7.537192f, 0.321580f, -0.210697f , - -8.874161f, 0.841320f, -0.222196f , - -9.009502f, 0.638299f, -0.127434f , - -8.312596f, 0.349069f, -0.087963f , - -6.805340f, 0.092922f, -0.084375f , - -3.624359f, -2.408606f, -2.504346f , - -3.714118f, -1.571068f, -2.349329f , - -3.290128f, -1.719420f, -2.320527f , - -4.182429f, -1.503938f, -1.961723f , - -3.848229f, -0.790699f, -2.033098f , - -4.072634f, -2.337554f, -2.337851f , - -4.228136f, -1.580329f, -1.518368f , - -4.186809f, -0.802153f, -1.510589f , - -4.296525f, -2.333976f, -1.927081f , - -3.901851f, -1.755842f, -1.224436f , - -4.057002f, -0.956881f, -1.085817f , - -4.142889f, -2.461480f, -1.558832f , - -3.327366f, -1.920514f, -1.390620f , - -3.474805f, -1.186505f, -0.979912f , - -3.709565f, -2.593130f, -1.464513f , - -3.309798f, -2.578551f, -1.829095f , - -3.156326f, -1.974984f, -1.991630f , - -3.005039f, -1.449522f, -1.567505f , - -2.827681f, -1.263130f, -1.847990f , - -3.021374f, -1.335727f, -2.094084f , - -2.816209f, -1.038097f, -2.034764f , - -2.791844f, -1.170833f, -1.520428f , - -2.614869f, -1.011699f, -1.755014f , - -2.674992f, -1.000139f, -1.332585f , - -4.169425f, -3.010186f, -2.252843f , - -3.864962f, -3.044408f, -2.606503f , - -3.838490f, -3.489561f, -2.461788f , - -4.176075f, -3.049552f, -1.866591f , - -3.933878f, -3.488807f, -2.154593f , - -3.924429f, -3.138425f, -1.641965f , - -3.855725f, -3.507429f, -1.939525f , - -3.511150f, -3.181320f, -1.636849f , - -3.609954f, -3.524695f, -1.849153f , - -3.346197f, -3.035540f, -1.716881f , - -3.314601f, -3.401288f, -1.721071f , - -3.017795f, -3.496445f, -2.016604f , - -3.244931f, -3.611777f, -1.906337f , - -3.589957f, -3.498517f, -2.674618f , - -3.178033f, -3.598465f, -2.616045f , - -3.095499f, -3.606916f, -2.509252f , - -3.072829f, -3.613716f, -2.465686f , - -3.036858f, -3.611089f, -2.423450f , - -3.040048f, -3.615156f, -2.386935f , - -3.018517f, -3.611435f, -2.342473f , - -3.024050f, -3.612186f, -2.230617f , - -3.008300f, -3.610693f, -2.265639f , - -3.317358f, -3.388607f, -2.828516f , - -3.136421f, -3.258774f, -2.682833f , - -3.026175f, -3.264264f, -2.457103f , - -3.014678f, -3.265143f, -2.348171f , - -3.118641f, -3.238947f, -1.867002f , - -4.166782f, -0.477874f, -1.064059f , - -3.819839f, -0.743047f, -0.720544f , - -4.045090f, -0.320173f, -1.577574f , - -2.949552f, -0.969613f, -0.835295f , - -3.267021f, -2.499139f, -2.285528f , - -3.171240f, -2.983847f, -2.103987f , - -3.222772f, -2.938497f, -2.488701f , - -3.325822f, -2.974106f, -2.633647f , - -3.485345f, -3.083486f, -2.696674f , - 1.463072f, -1.125411f, -1.832758f , - 1.653316f, -1.487739f, -1.361638f , - 1.358445f, -1.572551f, -1.686197f , - 1.292978f, -0.774860f, -1.955351f , - 1.111575f, -1.125954f, -1.992496f , - 0.799437f, -0.513924f, -1.690704f , - 0.994299f, -0.504814f, -1.815901f , - 0.964081f, -0.851164f, -1.928458f , - 0.498340f, -0.779194f, -1.309214f , - 0.603568f, -0.896568f, -1.576325f , - 0.435004f, -0.998604f, -1.057481f , - 0.533253f, -1.152567f, -1.795299f , - 0.430407f, -1.313589f, -1.597160f , - 0.492257f, -1.063862f, -1.587943f , - 0.712014f, -1.058882f, -1.924245f , - 0.824751f, -1.255641f, -2.015294f , - 0.685469f, -1.445148f, -1.945014f , - 0.963192f, -1.440239f, -2.018193f , - 0.919631f, -1.072224f, -2.010157f , - 0.687742f, -0.922349f, -1.803215f , - 1.224313f, -2.270747f, -1.907578f , - 1.086133f, -1.878362f, -2.001994f , - 1.200853f, -1.870054f, -1.877374f , - 1.391419f, -1.998088f, -1.441126f , - 1.326807f, -2.210211f, -1.694936f , - 1.435182f, -1.810714f, -1.112422f , - 1.218765f, -2.028986f, -0.958875f , - 1.317507f, -2.263526f, -1.221493f , - 0.856614f, -2.712595f, -1.993849f , - 0.814549f, -2.470056f, -1.977992f , - 1.112885f, -2.645889f, -1.978178f , - 1.341701f, -2.421144f, -1.530292f , - 1.258497f, -2.521845f, -1.821271f , - 1.220680f, -2.868303f, -1.900017f , - 1.263716f, -2.692845f, -1.651979f , - 1.181882f, -2.411960f, -1.067225f , - 1.277644f, -2.544555f, -1.321056f , - 1.234217f, -2.857805f, -1.412592f , - 1.128828f, -2.593318f, -1.121320f , - 1.396520f, -1.662065f, -0.775694f , - 1.040452f, -1.756598f, -0.758553f , - 0.818580f, -1.467487f, -0.670359f , - 0.566516f, -1.439870f, -0.991946f , - 0.992681f, -2.160546f, -0.991682f , - 0.765669f, -1.817806f, -0.951252f , - 0.923204f, -2.708517f, -0.979207f , - 0.741390f, -2.320437f, -1.037776f , - 0.430764f, -1.646033f, -1.367553f , - 0.549510f, -2.009900f, -1.206942f , - 0.401273f, -2.288376f, -1.415615f , - 0.527841f, -2.623446f, -1.150217f , - 0.527020f, -2.296815f, -1.878668f , - 0.428396f, -2.598203f, -1.663645f , - 0.423840f, -2.012640f, -1.671662f , - 0.530362f, -1.704514f, -1.849203f , - 0.941911f, -1.866511f, -2.019635f , - 0.772102f, -2.163720f, -1.986291f , - 0.587857f, -3.093313f, -1.910832f , - 0.669635f, -3.503585f, -1.742368f , - 0.491582f, -3.087066f, -1.435773f , - 0.743755f, -3.097093f, -0.974339f , - 0.714595f, -3.508601f, -1.341294f , - 0.795098f, -3.392377f, -2.098557f , - 0.733836f, -2.956442f, -2.056582f , - 1.004103f, -3.052570f, -2.108683f , - 1.031375f, -3.328556f, -2.166814f , - 1.181841f, -3.121699f, -2.076480f , - 1.341991f, -3.099627f, -1.869808f , - 1.316460f, -3.307403f, -2.039257f , - 1.234216f, -3.511561f, -2.117975f , - 1.043000f, -3.621588f, -2.044363f , - 1.023330f, -3.511652f, -2.151057f , - 1.543235f, -3.522706f, -1.784762f , - 1.255195f, -3.605272f, -1.981011f , - 1.573363f, -3.630812f, -1.573318f , - 1.615724f, -3.628159f, -1.518200f , - 1.539347f, -3.354871f, -1.828780f , - 1.594645f, -3.630349f, -1.386678f , - 1.613183f, -3.628043f, -1.437693f , - 1.592857f, -3.627298f, -1.363894f , - 1.573873f, -3.377507f, -1.558650f , - 1.552127f, -3.367942f, -1.447209f , - 1.423518f, -3.513975f, -1.136977f , - 1.562337f, -3.628740f, -1.319591f , - 1.331779f, -3.300273f, -1.020979f , - 1.414546f, -3.141872f, -1.674521f , - 1.307634f, -3.105142f, -1.195240f , - 1.103602f, -3.052160f, -0.999002f , - 0.994218f, -3.368592f, -0.921420f , - 0.843994f, -3.605362f, -2.015422f , - 1.156737f, -3.645016f, -1.515665f , - 1.193148f, -3.612398f, -1.047618f , - 3.505383f, -0.161235f, -0.631300f , - 2.932726f, 2.617048f, -0.550581f , - 2.964120f, 2.542487f, -0.779064f , - 2.932499f, 2.431586f, -0.958964f , - 2.927582f, 2.037121f, -1.336417f , - 3.020341f, 1.662483f, -1.510131f , - 3.338750f, 1.416138f, -1.383708f , - 3.533399f, 1.073303f, -1.174263f , - 3.487499f, 0.167052f, -0.954767f , - 2.997297f, 1.881945f, -1.474097f , - 4.265967f, 1.785574f, -1.970211f , - 4.298522f, 1.521169f, -1.962285f , - 3.781871f, 2.690708f, -1.987282f , - 3.828770f, 2.678115f, -1.998446f , - 3.852240f, 2.715629f, -1.967905f , - 3.704692f, 3.771471f, -1.137348f , - -2.996521f, -3.283963f, -2.225143f , - -3.024340f, -3.615103f, -2.292799f , - 1.538082f, -3.373579f, -1.339827f , - 1.612195f, -3.631722f, -1.479401f , - -2.920582f, -3.456612f, -2.148339f , - 1.586685f, -3.510178f, -1.216528f , - 1.582767f, -3.508719f, 1.234333f , - -2.920582f, -3.456612f, 2.179765f , - 1.610769f, -3.632236f, 1.502936f , - 1.613563f, -3.628800f, 1.536648f , - 1.610227f, -3.628869f, 1.456384f , - 1.537104f, -3.371172f, 1.371256f , - 1.551172f, -3.366377f, 1.476875f , - -3.024340f, -3.615103f, 2.324224f , - -3.008300f, -3.610693f, 2.297064f , - -3.018517f, -3.611435f, 2.373898f , - -2.996521f, -3.283963f, 2.256568f , - -3.014678f, -3.265143f, 2.379596f , - 3.704692f, 3.771471f, 1.168773f , - 3.852240f, 2.715629f, 1.999329f , - 3.828770f, 2.678115f, 2.029871f , - 3.781871f, 2.690708f, 2.018707f , - 4.298522f, 1.521169f, 1.993709f , - 4.265967f, 1.785574f, 2.001636f , - 2.997297f, 1.881945f, 1.505522f , - 3.487499f, 0.167052f, 0.986191f , - 3.533399f, 1.073303f, 1.205687f , - 3.338750f, 1.416139f, 1.415133f , - 3.020341f, 1.662483f, 1.541556f , - 2.927582f, 2.037121f, 1.367842f , - 2.932499f, 2.431586f, 0.990389f , - 2.964119f, 2.542487f, 0.810489f , - 2.932726f, 2.617048f, 0.582006f , - 3.505383f, -0.161235f, 0.662725f , - 3.476555f, -0.404318f, 0.015712f , - 2.935020f, 2.746577f, 0.015712f , - 1.193148f, -3.612399f, 1.079042f , - 1.156737f, -3.645016f, 1.547090f , - 0.843993f, -3.605362f, 2.046847f , - 0.994218f, -3.368592f, 0.952845f , - 1.103602f, -3.052160f, 1.030427f , - 1.307634f, -3.105142f, 1.226664f , - 1.414546f, -3.141872f, 1.705945f , - 1.331779f, -3.300273f, 1.052403f , - 1.557992f, -3.629713f, 1.336525f , - 1.589171f, -3.628238f, 1.380934f , - 1.419071f, -3.513843f, 1.154453f , - 1.573687f, -3.377148f, 1.589113f , - 1.590801f, -3.631411f, 1.406130f , - 1.539347f, -3.354871f, 1.860205f , - 1.572699f, -3.631136f, 1.591802f , - 1.255195f, -3.605271f, 2.012436f , - 1.541704f, -3.524018f, 1.801852f , - 1.023330f, -3.511652f, 2.182482f , - 1.043000f, -3.621588f, 2.075788f , - 1.234216f, -3.511561f, 2.149400f , - 1.316460f, -3.307403f, 2.070683f , - 1.341991f, -3.099627f, 1.901233f , - 1.181841f, -3.121699f, 2.107905f , - 1.031375f, -3.328556f, 2.198239f , - 1.004102f, -3.052570f, 2.140108f , - 0.733836f, -2.956442f, 2.088007f , - 0.795097f, -3.392377f, 2.129982f , - 0.714595f, -3.508601f, 1.372719f , - 0.743755f, -3.097093f, 1.005764f , - 0.491582f, -3.087065f, 1.467197f , - 0.669635f, -3.503585f, 1.773793f , - 0.587857f, -3.093313f, 1.942256f , - 0.772102f, -2.163719f, 2.017716f , - 0.941911f, -1.866511f, 2.051060f , - 0.530362f, -1.704514f, 1.880628f , - 0.423840f, -2.012640f, 1.703087f , - 0.428396f, -2.598203f, 1.695070f , - 0.527020f, -2.296815f, 1.910093f , - 0.527842f, -2.623446f, 1.181641f , - 0.401273f, -2.288376f, 1.447040f , - 0.549510f, -2.009900f, 1.238366f , - 0.430764f, -1.646033f, 1.398978f , - 0.741390f, -2.320436f, 1.069201f , - 0.923204f, -2.708517f, 1.010631f , - 0.765669f, -1.817806f, 0.982677f , - 0.992681f, -2.160546f, 1.023108f , - 0.566516f, -1.439870f, 1.023371f , - 0.818581f, -1.467487f, 0.701784f , - 1.040451f, -1.756598f, 0.789978f , - 1.396520f, -1.662065f, 0.807119f , - 1.128828f, -2.593318f, 1.152745f , - 1.234217f, -2.857806f, 1.444016f , - 1.277643f, -2.544555f, 1.352481f , - 1.181882f, -2.411960f, 1.098650f , - 1.263716f, -2.692845f, 1.683404f , - 1.220680f, -2.868303f, 1.931442f , - 1.258497f, -2.521845f, 1.852695f , - 1.341701f, -2.421144f, 1.561716f , - 1.112885f, -2.645889f, 2.009602f , - 0.814549f, -2.470056f, 2.009416f , - 0.856614f, -2.712595f, 2.025273f , - 1.317507f, -2.263526f, 1.252918f , - 1.218765f, -2.028986f, 0.990300f , - 1.435182f, -1.810714f, 1.143846f , - 1.326807f, -2.210211f, 1.726360f , - 1.391419f, -1.998087f, 1.472551f , - 1.200853f, -1.870054f, 1.908799f , - 1.086133f, -1.878362f, 2.033418f , - 1.224313f, -2.270747f, 1.939003f , - 0.687743f, -0.922349f, 1.834640f , - 0.919631f, -1.072224f, 2.041582f , - 0.963192f, -1.440239f, 2.049618f , - 0.685469f, -1.445148f, 1.976439f , - 0.824751f, -1.255641f, 2.046719f , - 0.712014f, -1.058882f, 1.955670f , - 0.492257f, -1.063862f, 1.619368f , - 0.430407f, -1.313589f, 1.628584f , - 0.533253f, -1.152567f, 1.826723f , - 0.435004f, -0.998604f, 1.088906f , - 0.603568f, -0.896568f, 1.607749f , - 0.498340f, -0.779194f, 1.340639f , - 0.964081f, -0.851164f, 1.959883f , - 0.994299f, -0.504815f, 1.847326f , - 0.799437f, -0.513924f, 1.722128f , - 1.111575f, -1.125954f, 2.023921f , - 1.292978f, -0.774860f, 1.986776f , - 1.358445f, -1.572551f, 1.717622f , - 1.653316f, -1.487740f, 1.393063f , - 1.463072f, -1.125411f, 1.864183f , - -3.485345f, -3.083486f, 2.728099f , - -3.325822f, -2.974106f, 2.665072f , - -3.222772f, -2.938497f, 2.520126f , - -3.171240f, -2.983847f, 2.135412f , - -3.267021f, -2.499139f, 2.316953f , - -2.949552f, -0.969613f, 0.866720f , - -4.045090f, -0.320173f, 1.608998f , - -3.819839f, -0.743047f, 0.751969f , - -4.166782f, -0.477874f, 1.095484f , - -3.118640f, -3.238947f, 1.898426f , - -3.026175f, -3.264264f, 2.488528f , - -3.136421f, -3.258774f, 2.714257f , - -3.317358f, -3.388607f, 2.859941f , - -3.024050f, -3.612185f, 2.262042f , - -3.040047f, -3.615156f, 2.418360f , - -3.036857f, -3.611089f, 2.454875f , - -3.072829f, -3.613715f, 2.497111f , - -3.095499f, -3.606915f, 2.540677f , - -3.178033f, -3.598465f, 2.647470f , - -3.589957f, -3.498517f, 2.706043f , - -3.244931f, -3.611777f, 1.937761f , - -3.017795f, -3.496445f, 2.048029f , - -3.314602f, -3.401288f, 1.752495f , - -3.346197f, -3.035540f, 1.748305f , - -3.609953f, -3.524695f, 1.880578f , - -3.511150f, -3.181321f, 1.668275f , - -3.855725f, -3.507429f, 1.970950f , - -3.924429f, -3.138425f, 1.673390f , - -3.933878f, -3.488808f, 2.186018f , - -4.176075f, -3.049552f, 1.898016f , - -3.838489f, -3.489561f, 2.493212f , - -3.864962f, -3.044408f, 2.637928f , - -4.169425f, -3.010186f, 2.284267f , - -2.674992f, -1.000140f, 1.364010f , - -2.614869f, -1.011700f, 1.786439f , - -2.791844f, -1.170833f, 1.551853f , - -2.816209f, -1.038097f, 2.066189f , - -3.021374f, -1.335727f, 2.125508f , - -2.827681f, -1.263130f, 1.879415f , - -3.005039f, -1.449522f, 1.598930f , - -3.156326f, -1.974984f, 2.023055f , - -3.309798f, -2.578551f, 1.860520f , - -3.709565f, -2.593130f, 1.495937f , - -3.474805f, -1.186505f, 1.011337f , - -3.327366f, -1.920514f, 1.422045f , - -4.142889f, -2.461480f, 1.590257f , - -4.057002f, -0.956881f, 1.117242f , - -3.901851f, -1.755842f, 1.255861f , - -4.296525f, -2.333976f, 1.958506f , - -4.186809f, -0.802154f, 1.542014f , - -4.228136f, -1.580329f, 1.549793f , - -4.072634f, -2.337554f, 2.369276f , - -3.848228f, -0.790699f, 2.064523f , - -4.182429f, -1.503938f, 1.993148f , - -3.290127f, -1.719420f, 2.351952f , - -3.714118f, -1.571068f, 2.380754f , - -3.624359f, -2.408606f, 2.535771f , - -7.578373f, 0.139722f, 0.015712f , - -6.803873f, 0.092747f, 0.113095f , - -8.314917f, 0.349594f, 0.115674f , - -9.010408f, 0.638500f, 0.156629f , - -8.874161f, 0.841320f, 0.253621f , - -7.537192f, 0.321580f, 0.242121f , - -8.245924f, 0.594632f, 0.284644f , - -6.018497f, 0.170719f, 0.162680f , - -6.738154f, 0.390787f, 0.333611f , - -7.466476f, 0.648037f, 0.363049f , - -8.140884f, 0.903327f, 0.319964f , - -5.971290f, 0.625731f, 0.433307f , - -6.711542f, 0.850479f, 0.408909f , - -5.349973f, 1.060698f, 0.555821f , - -2.337165f, -0.726149f, 1.459481f , - -2.611160f, -0.240364f, 2.070379f , - -2.571084f, -0.704158f, 1.931079f , - -3.059809f, -0.298803f, 2.223957f , - -2.901353f, -0.714019f, 2.202428f , - -3.229205f, -0.530175f, 2.270273f , - -3.511698f, -0.431787f, 2.197663f , - -3.337585f, -0.942338f, 2.333189f , - -3.371125f, 0.228142f, 2.091919f , - -3.767729f, -0.025355f, 1.844417f , - -3.760075f, 0.757699f, 1.757187f , - -3.215396f, 1.255840f, 1.895738f , - -2.832759f, 0.415043f, 2.103589f , - -2.449145f, 1.305722f, 1.934966f , - -1.790081f, 1.039853f, 1.933505f , - -1.348818f, 0.689273f, 1.819763f , - -2.252048f, 0.442199f, 2.016020f , - -1.755185f, 0.410826f, 1.873561f , - -2.136307f, -0.332835f, 1.646601f , - -1.887713f, 0.051519f, 1.777193f , - -3.280053f, -0.839316f, 0.015713f , - -3.367749f, -0.816322f, 0.483609f , - -4.655252f, 1.160302f, 0.919708f , - -4.243448f, 1.205585f, 1.289683f , - -4.085499f, 0.382091f, 1.479530f , - -4.414090f, 0.717030f, 1.171447f , - -4.370111f, 0.330989f, 1.093317f , - -4.227083f, -0.107934f, 1.115344f , - -5.362256f, 0.383337f, 0.334184f , - -4.648189f, 0.302078f, 0.628702f , - -4.940979f, 0.716000f, 0.636983f , - -4.931887f, 0.098736f, 0.211691f , - -3.743382f, -0.654495f, 0.230414f , - -4.439541f, -0.205671f, 0.151677f , - -4.011889f, -0.494787f, 0.015712f , - -4.210470f, -0.319376f, 0.387488f , - -4.126465f, -0.431433f, 0.690250f , - -4.370796f, -0.087346f, 0.655437f , - -2.524851f, -1.017269f, 0.015712f , - -2.892924f, -0.930824f, 0.231107f , - -2.402432f, -0.974246f, 0.335638f , - -1.896868f, -0.612525f, 1.068169f , - -2.368838f, -0.828648f, 0.880271f , - -1.250261f, -1.019714f, 0.015712f , - -1.761156f, -0.893979f, 0.506644f , - -0.154651f, -1.079723f, 0.015712f , - -0.593011f, -0.947402f, 0.443382f , - 0.531824f, -1.291029f, 0.015712f , - 0.579437f, -1.154592f, 0.682276f , - 0.238475f, -1.053174f, 0.452505f , - 1.208514f, -1.487274f, 0.015713f , - 1.187573f, -1.515822f, 0.534540f , - 0.860081f, -1.392717f, 0.300746f , - 1.799052f, -1.451637f, 0.015713f , - 1.725335f, -1.479530f, 0.898109f , - 1.539501f, -1.502398f, 0.367568f , - 2.349946f, -1.203101f, 0.015712f , - 2.026973f, -1.324901f, 0.626555f , - 2.886975f, -0.822302f, 0.015713f , - 3.165051f, -0.528578f, 0.399384f , - 2.638762f, -0.955311f, 0.550291f , - 1.358689f, -0.324194f, 1.912239f , - 1.935978f, 0.452513f, 1.931863f , - 1.710999f, -0.698557f, 1.908787f , - 1.854864f, -0.173900f, 1.948348f , - 2.292230f, -1.040154f, 1.139334f , - 2.194460f, -0.685953f, 1.706033f , - 1.908903f, -1.099482f, 1.579485f , - 2.905014f, -0.583086f, 0.881669f , - 3.149007f, -0.192717f, 1.044643f , - 2.600352f, -0.661198f, 1.361905f , - 2.517849f, 0.565965f, 1.759377f , - 2.387907f, -0.140305f, 1.792584f , - 2.827515f, -0.172108f, 1.457094f , - 2.948016f, 0.490560f, 1.491521f , - 3.231699f, 0.648073f, 1.284814f , - 0.600372f, -0.414802f, 1.497602f , - 0.137990f, -0.479688f, 1.295505f , - -0.071757f, -0.786336f, 0.843450f , - 0.330728f, -0.672426f, 1.139228f , - -1.085054f, -0.711173f, 0.843927f , - -0.469613f, -0.588088f, 1.109136f , - -1.474736f, -0.320888f, 1.297431f , - 0.123058f, -0.262177f, 1.477306f , - -0.393878f, -0.221617f, 1.503596f , - -0.847527f, 0.158773f, 1.659490f , - -0.878847f, -0.235781f, 1.415272f , - -1.425075f, 1.872402f, 1.810261f , - -0.804282f, 1.292001f, 1.883350f , - -0.130621f, 1.828434f, 1.804598f , - 0.084284f, 0.066657f, 1.636844f , - 0.381861f, 1.133807f, 1.834301f , - -0.274821f, 0.621533f, 1.799577f , - 0.660281f, -0.035820f, 1.629318f , - 0.648564f, 0.482377f, 1.737192f , - 1.394746f, 0.201969f, 1.892739f , - 1.011245f, 0.356182f, 1.812637f , - 1.010763f, -0.131494f, 1.773606f , - 1.004476f, 0.908493f, 1.840410f , - 0.891930f, 1.481771f, 1.779029f , - 1.969542f, 1.149138f, 1.804590f , - 1.229757f, 1.375167f, 1.824125f , - 1.394654f, 0.804285f, 1.905001f , - 2.867037f, 1.424657f, 1.484236f , - 2.596658f, 1.221697f, 1.630523f , - 3.009439f, 1.053874f, 1.460671f , - -8.869179f, 1.041635f, 0.251336f , - -9.607030f, 1.077298f, 0.129801f , - -7.468212f, 1.066814f, 0.330029f , - -8.228492f, 1.214005f, 0.269740f , - -5.996654f, 1.249725f, 0.415654f , - -6.747971f, 1.322895f, 0.275814f , - -4.949400f, 1.533583f, 0.697221f , - -5.415260f, 1.653090f, 0.389054f , - -4.863865f, 1.913443f, 0.556422f , - -3.800779f, 1.885638f, 1.366051f , - -4.185246f, 2.340814f, 0.742145f , - -2.318714f, 2.316803f, 1.600052f , - -3.370496f, 2.577842f, 1.094593f , - -2.234439f, 3.061360f, 1.047404f , - -0.816335f, 2.501166f, 1.561422f , - -1.553972f, 3.135274f, 1.079653f , - 0.484575f, 2.179619f, 1.598864f , - -0.262359f, 2.884235f, 1.204281f , - 1.716942f, 1.815770f, 1.601941f , - 2.379622f, 2.197612f, 1.238358f , - 1.167606f, 2.439931f, 1.297734f , - -8.996655f, 1.305878f, 0.194148f , - -9.672533f, 1.341132f, 0.073443f , - -7.526908f, 1.419649f, 0.200052f , - -8.316199f, 1.507929f, 0.097706f , - -6.065259f, 1.700922f, 0.178658f , - -6.872371f, 1.733530f, 0.068440f , - -4.605699f, 2.455904f, 0.309514f , - -4.798496f, 2.714371f, 0.015712f , - -5.437066f, 2.221479f, 0.094874f , - -3.184008f, 3.191064f, 0.569957f , - -3.458821f, 3.447690f, 0.015713f , - -4.036982f, 3.059272f, 0.202964f , - -2.222023f, 3.528180f, 0.590156f , - -2.335910f, 3.824885f, 0.015713f , - -2.824095f, 3.617134f, 0.272520f , - -1.097733f, 3.442595f, 0.712976f , - -1.153003f, 3.800063f, 0.015712f , - -1.791690f, 3.761617f, 0.314735f , - 0.434712f, 3.076957f, 0.846888f , - 0.465415f, 3.467888f, 0.015712f , - -0.400580f, 3.571861f, 0.384027f , - 1.874241f, 2.655613f, 0.892358f , - 2.494995f, 2.762636f, 0.420985f , - 1.991660f, 3.011872f, 0.015712f , - 1.273533f, 3.121717f, 0.465473f , - 3.690696f, 3.636595f, 1.398081f , - 3.368004f, 2.144404f, 1.442445f , - 3.740145f, 2.483247f, 1.905447f , - 3.763439f, 2.896876f, 1.929217f , - 4.420875f, 1.244976f, 1.833375f , - 3.553544f, 3.790319f, 0.362181f , - 3.394044f, 3.318658f, 0.015712f , - 3.225303f, 2.836096f, 0.270352f , - 3.590691f, 3.659387f, 0.998203f , - 3.441063f, 3.244602f, 0.579998f , - 3.283053f, 2.722009f, 0.684356f , - 3.626402f, 3.339708f, 1.545819f , - 3.452655f, 3.092799f, 1.046214f , - 3.295232f, 2.604221f, 0.978663f , - 3.639830f, 2.979122f, 1.782122f , - 3.486404f, 2.848292f, 1.370976f , - 3.280199f, 2.390210f, 1.232226f , - 3.524679f, 2.518746f, 1.582649f , - 3.908050f, 2.028470f, 1.934799f , - 3.652838f, 2.131752f, 1.702852f , - 3.455563f, 1.853230f, 1.562269f , - 4.088075f, 1.303752f, 1.554753f , - 4.083173f, 1.737351f, 1.931305f , - 3.800414f, 1.741980f, 1.731333f , - 3.714631f, 1.410959f, 1.395077f , - 4.255544f, 1.064982f, 1.336098f , - 6.535466f, 2.084394f, 0.561351f , - 6.025972f, 1.843728f, 0.410746f , - 6.440042f, 2.270756f, 0.634108f , - 6.444285f, 2.167008f, 0.791917f , - 6.519877f, 2.067204f, 0.715099f , - 6.134861f, 1.746894f, 0.603713f , - 5.958394f, 1.587369f, 0.459793f , - 5.941251f, 2.013730f, 0.456292f , - 5.921722f, 2.042547f, 0.850563f , - 5.999787f, 1.804571f, 0.803623f , - 5.747440f, 1.799581f, 0.851397f , - 5.901162f, 1.618905f, 0.752761f , - 5.775238f, 1.606766f, 0.015712f , - 4.922081f, 2.295372f, 0.015712f , - 4.491870f, 2.357220f, 1.238240f , - 4.327158f, 2.746579f, 0.740738f , - 4.597178f, 2.496447f, 0.296894f , - 4.232721f, 2.863541f, 0.015712f , - 3.973855f, 3.231973f, 0.335024f , - 3.812883f, 3.575677f, 0.015713f , - 3.697238f, 3.858538f, 0.362125f , - 4.022389f, 3.174477f, 0.708761f , - 3.835533f, 3.537322f, 0.624129f , - 3.757474f, 3.699212f, 0.980816f , - 4.119900f, 2.982643f, 1.140806f , - 3.904975f, 3.351229f, 1.105536f , - 3.804756f, 3.389720f, 1.490683f , - 4.171775f, 2.765451f, 1.339952f , - 3.956271f, 3.096998f, 1.435552f , - 3.850858f, 3.088218f, 1.722654f , - 4.299140f, 2.340591f, 1.520967f , - 4.044071f, 2.721597f, 1.658106f , - 3.953571f, 2.559819f, 1.900922f , - 4.417728f, 2.049947f, 1.543340f , - 4.169971f, 2.266584f, 1.740335f , - 4.153659f, 2.040509f, 1.928004f , - 4.386732f, 1.859458f, 1.729748f , - 4.418793f, 1.652300f, 1.889740f , - 4.588772f, 1.501823f, 1.695149f , - 4.573913f, 1.346061f, 1.858325f , - 4.683379f, 1.187258f, 1.643703f , - 4.528094f, 1.074771f, 1.617976f , - 4.672080f, 1.066765f, 1.451913f , - 4.553928f, 0.959348f, 1.284857f , - 4.710608f, 1.760338f, 1.323935f , - 4.621281f, 1.616248f, 1.518438f , - 4.726862f, 1.367270f, 1.484201f , - 4.844046f, 1.210494f, 1.274591f , - 5.494977f, 1.920562f, 0.901939f , - 4.891089f, 1.955886f, 1.121156f , - 5.641965f, 1.951333f, 0.297565f , - 5.706718f, 1.756472f, 0.175837f , - 5.472715f, 1.925298f, 0.015712f , - 5.296247f, 2.117457f, 0.182689f , - 5.052751f, 2.227837f, 0.449515f , - 4.732312f, 2.333860f, 0.843118f , - 5.147058f, 2.084980f, 0.917802f , - 5.418092f, 2.114359f, 0.646904f , - 5.908030f, 2.159372f, 0.721617f , - 5.700338f, 2.067829f, 0.508580f , - 5.608518f, 2.062642f, 0.825887f , - 3.831890f, 0.599900f, 0.924440f , - 4.265487f, 0.949751f, 1.141282f , - 4.127317f, 0.727735f, 0.981135f , - 4.487108f, 0.651358f, 1.048423f , - 4.855997f, 0.983791f, 1.151189f , - 4.853521f, 0.732841f, 1.131659f , - 5.634798f, 1.236211f, 0.891534f , - 5.730674f, 1.273248f, 0.869510f , - 5.741077f, 0.962833f, 0.789328f , - 5.794781f, 1.036959f, 0.793665f , - 5.857478f, 1.111626f, 0.793209f , - 5.784808f, 1.336085f, 0.853277f , - 5.843582f, 1.324557f, 0.823211f , - 5.958288f, 1.364740f, 0.017472f , - 5.897830f, 1.502954f, 0.262118f , - 6.062519f, 1.194353f, 0.279095f , - 6.063160f, 0.982189f, 0.559794f , - 5.900686f, 1.322899f, 0.777871f , - 6.033159f, 1.200426f, 0.649661f , - 6.006414f, 1.338321f, 0.448926f , - 5.934812f, 1.466727f, 0.629659f , - 5.625589f, 1.472797f, 0.889109f , - 5.700462f, 1.635972f, 0.854675f , - 5.328141f, 1.726591f, 0.958689f , - 5.435591f, 1.349626f, 0.944984f , - 5.294206f, 1.518899f, 0.982193f , - 5.015155f, 1.418777f, 1.113628f , - 5.239482f, 1.221948f, 0.999843f , - 5.142683f, 1.004648f, 1.042904f , - 5.548677f, 1.018358f, 0.865406f , - 5.351132f, 1.025451f, 0.962207f , - 5.648370f, 0.775375f, 0.777783f , - 6.527063f, 0.024796f, 0.464858f , - 6.522552f, -0.019740f, 0.475026f , - 6.327812f, 0.676639f, 0.015712f , - 6.145389f, 0.889064f, 0.326829f , - 6.357920f, 0.464644f, 0.447881f , - 6.549582f, 0.343622f, 0.214319f , - 6.642723f, 0.252725f, 0.201778f , - 6.952730f, 0.197659f, 0.016889f , - 7.050810f, 0.137290f, 0.017441f , - 6.734815f, 0.192341f, 0.200486f , - 6.762190f, -0.098371f, 0.359165f , - 6.715244f, -0.185945f, 0.389419f , - 7.039593f, 0.003817f, 0.016936f , - 6.916286f, -0.233304f, 0.160857f , - 6.721387f, -0.245086f, 0.366024f , - 6.186487f, -0.974903f, 0.015712f , - 6.180055f, -0.907513f, 0.191345f , - 6.498553f, -0.009738f, 0.487805f , - 6.784249f, -0.662935f, 0.015712f , - 6.792388f, -0.431977f, 0.198670f , - 6.625325f, -0.393859f, 0.393992f , - 6.557975f, -1.056269f, 0.014244f , - 6.669278f, -0.871831f, 0.196372f , - 6.271968f, -0.714300f, 0.377824f , - 6.436523f, -0.873940f, 0.318474f , - 6.573040f, -0.673181f, 0.374329f , - 6.357298f, -0.433482f, 0.448538f , - 5.417172f, 0.084023f, 0.621191f , - 5.748048f, -0.009914f, 0.585623f , - 6.190506f, -0.196484f, 0.506902f , - 6.286048f, -0.116883f, 0.531411f , - 6.313748f, -0.056473f, 0.541554f , - 6.218320f, 0.308138f, 0.573543f , - 5.881261f, 0.603567f, 0.683351f , - 5.593557f, 0.401781f, 0.754203f , - 5.427375f, 0.737404f, 0.890168f , - 5.173445f, 0.747392f, 1.056746f , - 5.262503f, 0.235793f, 0.769476f , - 5.253751f, 0.455126f, 0.936049f , - 4.938077f, 0.470569f, 1.035612f , - 4.241006f, 0.102331f, 0.645480f , - 4.135567f, 0.306229f, 0.786391f , - 4.619762f, 0.378304f, 0.947698f , - 4.405838f, 0.239826f, 0.785993f , - 4.623388f, 0.093551f, 0.745677f , - 4.565032f, -0.024450f, 0.544531f , - 4.857247f, -0.173204f, 0.509026f , - 5.172794f, 0.106120f, 0.692632f , - 5.025389f, 0.241233f, 0.860319f , - 4.783427f, 0.174350f, 0.862193f , - 4.846738f, -0.018960f, 0.717812f , - 5.494053f, -0.181290f, 0.502602f , - 5.117910f, -0.094276f, 0.625591f , - 5.177617f, -0.308198f, 0.475667f , - 5.891956f, -0.485618f, 0.388046f , - 5.533983f, -0.420003f, 0.391853f , - 5.925616f, -0.671101f, 0.297832f , - 5.929463f, -0.846976f, 0.127837f , - 5.510395f, -0.647157f, 0.015712f , - 5.720394f, -0.741938f, 0.111335f , - 5.608044f, -0.601324f, 0.263530f , - 4.940671f, -0.461094f, 0.015712f , - 5.298316f, -0.526958f, 0.170780f , - 5.040015f, -0.351107f, 0.324679f , - 4.220032f, -0.285712f, 0.015712f , - 4.626467f, -0.318166f, 0.197953f , - 4.317001f, -0.078704f, 0.445771f , - 3.877594f, -0.179275f, 0.315526f - -// Normals -7966 - -0.173292f, -0.929573f, 0.325367f , - -0.227596f, -0.907781f, 0.352325f , - -0.154815f, -0.809824f, 0.565877f , - -0.109390f, -0.848154f, 0.518333f , - -0.201468f, -0.941151f, 0.271378f , - -0.257049f, -0.948436f, 0.185460f , - -0.286600f, -0.893951f, 0.344546f , - -0.245343f, -0.853489f, 0.459742f , - -0.439087f, -0.882946f, 0.166158f , - -0.467338f, -0.866751f, 0.174177f , - -0.426596f, -0.843239f, 0.327052f , - -0.406292f, -0.857053f, 0.316840f , - -0.501487f, -0.865165f, 0.000000f , - -0.422044f, -0.906575f, 0.000001f , - -0.434695f, -0.835400f, 0.336374f , - -0.488547f, -0.837431f, 0.245012f , - -0.127267f, -0.427684f, 0.894924f , - -0.074129f, -0.443599f, 0.893154f , - -0.070180f, -0.492116f, 0.867696f , - -0.130778f, -0.499083f, 0.856629f , - 0.136148f, -0.366675f, 0.920333f , - 0.237375f, -0.329115f, 0.913968f , - 0.210837f, -0.421052f, 0.882192f , - 0.135550f, -0.454318f, 0.880466f , - 0.376164f, -0.483530f, 0.790379f , - 0.342601f, -0.553087f, 0.759421f , - 0.269363f, -0.535529f, 0.800408f , - 0.269793f, -0.510158f, 0.816670f , - -0.284241f, -0.771009f, 0.569870f , - -0.302013f, -0.748015f, 0.590984f , - -0.405926f, -0.753589f, 0.517037f , - -0.391408f, -0.789496f, 0.472754f , - -0.199519f, -0.493227f, 0.846711f , - -0.144290f, -0.483162f, 0.863559f , - -0.241216f, -0.505700f, 0.828301f , - -0.309951f, -0.548913f, 0.776289f , - -0.014312f, -0.643575f, 0.765249f , - -0.071809f, -0.674632f, 0.734653f , - -0.088404f, -0.633605f, 0.768589f , - -0.042018f, -0.621270f, 0.782470f , - 0.000004f, -0.714447f, 0.699690f , - 0.018214f, -0.738484f, 0.674025f , - -0.024518f, -0.754822f, 0.655472f , - -0.016646f, -0.730404f, 0.682812f , - 0.234647f, -0.638904f, 0.732627f , - 0.262286f, -0.578344f, 0.772479f , - 0.302417f, -0.534294f, 0.789350f , - 0.226550f, -0.602219f, 0.765512f , - 0.444848f, -0.208152f, 0.871082f , - 0.458378f, -0.133792f, 0.878629f , - 0.536282f, -0.113881f, 0.836321f , - 0.550703f, -0.168086f, 0.817602f , - 0.098959f, -0.292649f, 0.951086f , - 0.024454f, -0.318167f, 0.947719f , - 0.051289f, -0.267009f, 0.962328f , - 0.167991f, -0.150070f, 0.974299f , - -0.071815f, -0.495607f, 0.865573f , - 0.050024f, -0.390311f, 0.919323f , - -0.016258f, -0.390877f, 0.920299f , - -0.086490f, -0.470149f, 0.878339f , - -0.049028f, -0.147342f, 0.987870f , - 0.384112f, -0.068007f, 0.920778f , - 0.038438f, -0.323664f, 0.945391f , - -0.001293f, -0.255227f, 0.966880f , - -0.186965f, -0.343708f, 0.920277f , - -0.161526f, -0.489957f, 0.856651f , - 0.030150f, -0.466295f, 0.884115f , - 0.048213f, -0.264712f, 0.963121f , - -0.410393f, -0.786648f, 0.461262f , - -0.110824f, -0.993836f, -0.002735f , - 0.123520f, -0.844388f, 0.521298f , - -0.095331f, -0.786468f, 0.610230f , - 0.389859f, -0.890089f, 0.236117f , - 0.643272f, -0.701190f, 0.307462f , - 0.520384f, -0.696726f, 0.493734f , - 0.343986f, -0.837644f, 0.424296f , - 0.950697f, -0.158406f, 0.266613f , - 0.947969f, -0.216158f, 0.233730f , - 0.860283f, -0.204334f, 0.467077f , - 0.825125f, -0.181322f, 0.535062f , - -0.330484f, -0.664237f, 0.670499f , - -0.349412f, -0.559030f, 0.751929f , - -0.316406f, -0.508236f, 0.800989f , - -0.281417f, -0.610292f, 0.740505f , - 0.180776f, -0.695831f, 0.695082f , - 0.304237f, -0.643715f, 0.702190f , - 0.302900f, -0.582041f, 0.754639f , - 0.176133f, -0.659776f, 0.730529f , - -0.115009f, -0.984556f, 0.131995f , - -0.417976f, -0.908452f, -0.003233f , - -0.472221f, -0.839199f, 0.269725f , - -0.156010f, -0.958712f, 0.237764f , - -0.314887f, -0.751697f, 0.579481f , - -0.677179f, -0.687786f, 0.261493f , - -0.259971f, -0.810377f, 0.525076f , - -0.270295f, -0.791172f, 0.548623f , - -0.365753f, -0.827222f, 0.426531f , - -0.353184f, -0.835704f, 0.420547f , - 0.783925f, -0.427191f, 0.450521f , - 0.862334f, -0.459428f, 0.212852f , - 0.777240f, -0.532772f, 0.334740f , - 0.705860f, -0.544148f, 0.453502f , - 0.958215f, -0.254293f, 0.130996f , - 0.838672f, 0.392980f, 0.377090f , - 0.830035f, -0.054124f, 0.555079f , - 0.921045f, -0.280558f, 0.270119f , - 0.470762f, 0.544848f, 0.693919f , - 0.370626f, 0.488677f, 0.789830f , - 0.533427f, 0.144863f, 0.833349f , - 0.605058f, 0.170603f, 0.777689f , - 0.305301f, 0.908283f, 0.286031f , - 0.183081f, 0.952758f, 0.242351f , - 0.244775f, 0.840031f, 0.484183f , - 0.254135f, 0.831627f, 0.493772f , - 0.840630f, 0.528728f, 0.117420f , - 0.857352f, 0.489558f, 0.158996f , - 0.819758f, 0.494489f, 0.288924f , - 0.803925f, 0.544849f, 0.238419f , - 0.380930f, 0.087775f, 0.920428f , - 0.339075f, 0.034835f, 0.940114f , - 0.455002f, 0.090585f, 0.885871f , - 0.529000f, 0.171867f, 0.831036f , - 0.305283f, -0.208557f, 0.929143f , - 0.300623f, -0.209410f, 0.930469f , - 0.313351f, -0.154767f, 0.936941f , - 0.298619f, -0.154345f, 0.941809f , - 0.422076f, -0.141576f, 0.895437f , - 0.429165f, -0.102910f, 0.897344f , - 0.478686f, -0.080230f, 0.874313f , - 0.477412f, -0.115451f, 0.871062f , - 0.300928f, 0.034855f, 0.953010f , - 0.356852f, 0.025374f, 0.933816f , - 0.316680f, 0.053206f, 0.947039f , - 0.299081f, 0.047912f, 0.953024f , - 0.320190f, 0.005269f, 0.947339f , - 0.272897f, -0.005216f, 0.962029f , - 0.271565f, 0.016069f, 0.962286f , - 0.328084f, -0.001794f, 0.944647f , - 0.276757f, 0.053781f, 0.959434f , - 0.309560f, 0.059902f, 0.948991f , - 0.282000f, 0.094033f, 0.954795f , - 0.293566f, 0.071170f, 0.953286f , - 0.805565f, 0.298312f, 0.511932f , - 0.771017f, 0.246516f, 0.587165f , - 0.877991f, 0.340648f, 0.336290f , - 0.864623f, 0.428898f, 0.261675f , - 0.652059f, -0.159819f, 0.741133f , - 0.553533f, -0.138897f, 0.821163f , - 0.892421f, -0.086655f, 0.442804f , - 0.853310f, -0.102566f, 0.511216f , - 0.959069f, 0.229513f, 0.165860f , - 0.956935f, 0.279372f, 0.078911f , - 0.987783f, 0.155816f, 0.002419f , - 0.994246f, 0.086599f, 0.063056f , - 0.851071f, 0.521154f, -0.063844f , - 0.843741f, 0.530753f, -0.080010f , - 0.857861f, 0.494984f, -0.138078f , - 0.854148f, 0.510103f, -0.101121f , - 0.376281f, -0.203376f, 0.903909f , - 0.291932f, -0.244815f, 0.924576f , - 0.334257f, -0.242279f, 0.910809f , - 0.399912f, -0.204295f, 0.893495f , - 0.281961f, -0.244591f, 0.927725f , - 0.296305f, -0.246610f, 0.922706f , - 0.297776f, -0.223015f, 0.928221f , - 0.395191f, -0.105716f, 0.912496f , - 0.276287f, -0.214696f, 0.936788f , - 0.273650f, -0.234938f, 0.932695f , - 0.236489f, 0.068961f, 0.969184f , - 0.234067f, 0.079582f, 0.968958f , - 0.224384f, 0.041254f, 0.973627f , - 0.223100f, 0.034404f, 0.974188f , - 0.273022f, -0.014923f, 0.961892f , - 0.297478f, 0.060772f, 0.952792f , - 0.249601f, 0.093085f, 0.963864f , - 0.290100f, -0.019971f, 0.956788f , - 0.159235f, -0.094685f, 0.982690f , - 0.129461f, 0.038374f, 0.990842f , - 0.254439f, 0.132010f, 0.958037f , - -0.253030f, -0.492344f, 0.832810f , - -0.168574f, -0.516467f, 0.839550f , - -0.224344f, -0.421183f, 0.878792f , - -0.252268f, -0.424131f, 0.869755f , - -0.192334f, -0.449462f, 0.872348f , - -0.099615f, -0.486764f, 0.867835f , - -0.075434f, -0.451407f, 0.889124f , - -0.167964f, -0.406314f, 0.898163f , - -0.178139f, -0.423189f, 0.888357f , - 0.027451f, -0.464274f, 0.885266f , - 0.064071f, -0.408948f, 0.910306f , - -0.128995f, -0.405528f, 0.904935f , - -0.190505f, 0.979443f, -0.066323f , - -0.127109f, 0.954153f, -0.270990f , - 0.022386f, 0.982793f, -0.183348f , - -0.059296f, 0.998151f, -0.013342f , - 0.333850f, 0.936001f, 0.111566f , - 0.451953f, 0.882700f, 0.128756f , - 0.438064f, 0.878293f, 0.191573f , - 0.302587f, 0.936700f, 0.176166f , - 0.553519f, 0.640005f, -0.532927f , - 0.580606f, 0.558941f, -0.592015f , - 0.628841f, 0.600566f, -0.493842f , - 0.618918f, 0.647014f, -0.445324f , - 0.265768f, 0.113805f, 0.957296f , - 0.244615f, 0.422215f, 0.872868f , - 0.310959f, 0.425212f, 0.849999f , - 0.319427f, 0.160951f, 0.933842f , - 0.737201f, 0.212816f, 0.641283f , - 0.781345f, 0.275732f, 0.559886f , - 0.804638f, 0.278399f, 0.524454f , - 0.783268f, 0.167910f, 0.598580f , - 0.727490f, -0.405187f, 0.553698f , - 0.793085f, -0.426727f, 0.434650f , - 0.605281f, -0.698012f, 0.382640f , - 0.585187f, -0.632817f, 0.507049f , - 0.794539f, -0.530309f, 0.295769f , - 0.515285f, -0.742654f, 0.427722f , - 0.273432f, -0.904898f, 0.326183f , - 0.589867f, -0.767179f, 0.251979f , - 0.878647f, 0.328598f, 0.346413f , - 0.863920f, 0.325768f, 0.384081f , - 0.884379f, 0.263437f, 0.385325f , - 0.908807f, 0.251823f, 0.332648f , - 0.834702f, 0.409606f, 0.368098f , - 0.837385f, 0.374001f, 0.398635f , - 0.822379f, 0.383747f, 0.420038f , - 0.811505f, 0.428115f, 0.397715f , - 0.755685f, 0.372405f, 0.538753f , - 0.752010f, 0.355389f, 0.555140f , - 0.755688f, 0.371849f, 0.539133f , - 0.758215f, 0.404052f, 0.511715f , - 0.779955f, 0.336015f, 0.527981f , - 0.800572f, 0.362024f, 0.477517f , - 0.820619f, 0.317048f, 0.475462f , - 0.798601f, 0.291843f, 0.526368f , - 0.832021f, 0.417526f, 0.365257f , - 0.828960f, 0.438362f, 0.347366f , - 0.836596f, 0.433742f, 0.334626f , - 0.838650f, 0.411352f, 0.357011f , - 0.838143f, 0.505540f, 0.204805f , - 0.848529f, 0.507080f, 0.151223f , - 0.867118f, 0.465196f, 0.178041f , - 0.856884f, 0.459221f, 0.234236f , - 0.870519f, 0.490960f, -0.033995f , - 0.892113f, 0.449648f, -0.044171f , - 0.925414f, 0.378881f, -0.007687f , - 0.904698f, 0.425221f, 0.026633f , - 0.909580f, 0.415474f, -0.006724f , - 0.907618f, 0.419768f, -0.005010f , - 0.930898f, 0.365127f, -0.010525f , - 0.933663f, 0.357830f, -0.015199f , - 0.781686f, 0.623494f, 0.014916f , - 0.719513f, 0.692942f, 0.046174f , - 0.715495f, 0.698529f, 0.011125f , - 0.776788f, 0.629571f, -0.015517f , - 0.784382f, 0.611970f, 0.101183f , - 0.823483f, 0.558403f, 0.100311f , - 0.825651f, 0.527684f, 0.199623f , - 0.772135f, 0.590181f, 0.235574f , - 0.702853f, 0.266387f, 0.659572f , - 0.619913f, 0.215262f, 0.754566f , - 0.614409f, 0.277398f, 0.738615f , - 0.695095f, 0.325426f, 0.641047f , - 0.384975f, 0.921998f, 0.041410f , - 0.378702f, 0.924227f, -0.048887f , - 0.419331f, 0.903940f, -0.083992f , - 0.414677f, 0.909945f, 0.006574f , - 0.664065f, 0.530269f, -0.527098f , - 0.623831f, 0.253885f, -0.739173f , - 0.822212f, 0.354188f, -0.445555f , - 0.727842f, 0.482072f, -0.487702f , - 0.312475f, -0.320341f, 0.894282f , - 0.186761f, -0.228835f, 0.955382f , - 0.153902f, -0.151404f, 0.976417f , - 0.290831f, -0.173664f, 0.940882f , - 0.058310f, 0.051742f, 0.996957f , - -0.042640f, 0.340686f, 0.939210f , - 0.014648f, 0.382701f, 0.923756f , - 0.080468f, 0.029190f, 0.996330f , - 0.127340f, 0.710523f, -0.692057f , - 0.273461f, 0.584613f, -0.763837f , - 0.371155f, 0.672417f, -0.640390f , - 0.286074f, 0.699227f, -0.655166f , - 0.702042f, -0.687408f, 0.186030f , - 0.640832f, -0.651347f, 0.406302f , - 0.777789f, -0.442798f, 0.446066f , - 0.862023f, -0.441064f, 0.249758f , - 0.263562f, -0.262276f, 0.928303f , - 0.237644f, -0.268970f, 0.933370f , - 0.321337f, -0.426785f, 0.845339f , - 0.330336f, -0.415513f, 0.847483f , - 0.112509f, 0.084645f, 0.990039f , - -0.106373f, 0.824797f, 0.555333f , - -0.153877f, 0.752602f, 0.640244f , - 0.039956f, 0.222598f, 0.974091f , - -0.241603f, 0.918914f, -0.311809f , - -0.281445f, 0.959575f, -0.002051f , - -0.078605f, 0.564985f, -0.821349f , - -0.011332f, 0.353804f, -0.935251f , - 0.185710f, 0.065144f, -0.980443f , - 0.071344f, 0.331584f, -0.940724f , - 0.809573f, 0.102205f, -0.578054f , - 0.565380f, -0.138112f, -0.813185f , - 0.669879f, -0.087598f, -0.737284f , - 0.901616f, 0.139194f, -0.409528f , - 0.882068f, 0.346651f, -0.319044f , - 0.882498f, 0.262628f, -0.390159f , - -0.340987f, -0.867607f, 0.361921f , - -0.275488f, -0.824943f, 0.493533f , - -0.318165f, -0.778403f, 0.541165f , - -0.339159f, -0.856777f, 0.388463f , - -0.542694f, -0.629030f, 0.556601f , - -0.596678f, -0.551456f, 0.582986f , - -0.570449f, -0.487714f, 0.660850f , - -0.503752f, -0.602655f, 0.618903f , - -0.654821f, -0.186958f, 0.732295f , - -0.689504f, -0.131283f, 0.712284f , - -0.691567f, -0.092721f, 0.716336f , - -0.656936f, -0.144837f, 0.739903f , - -0.937330f, 0.147453f, 0.315706f , - -0.935320f, 0.169099f, 0.310777f , - -0.944580f, 0.160440f, 0.286404f , - -0.939380f, 0.131897f, 0.316495f , - -0.942832f, 0.157025f, 0.293956f , - -0.956843f, 0.173197f, 0.233353f , - -0.967754f, 0.170261f, 0.185645f , - -0.959066f, 0.157703f, 0.235208f , - -0.961536f, 0.264561f, 0.073862f , - -0.959577f, 0.266181f, 0.091430f , - -0.970208f, 0.225558f, 0.088426f , - -0.971771f, 0.222941f, 0.077194f , - -0.956628f, 0.266390f, 0.117899f , - -0.957801f, 0.279267f, 0.068025f , - -0.963543f, 0.255400f, 0.079727f , - -0.961132f, 0.238303f, 0.139416f , - -0.743210f, -0.107397f, 0.660382f , - -0.721802f, -0.192369f, 0.664828f , - -0.762074f, -0.216426f, 0.610249f , - -0.802527f, -0.102631f, 0.587722f , - -0.508175f, -0.718487f, 0.474905f , - -0.411805f, -0.753805f, 0.512049f , - -0.425097f, -0.805481f, 0.412908f , - -0.477331f, -0.768272f, 0.426512f , - 0.560698f, -0.767847f, 0.309885f , - 0.543612f, -0.765752f, 0.343671f , - 0.583222f, -0.805976f, 0.101261f , - 0.584602f, -0.807481f, 0.078832f , - 0.241320f, 0.814795f, 0.527138f , - 0.230995f, 0.838313f, 0.493834f , - 0.270708f, 0.887792f, 0.372213f , - 0.281214f, 0.868724f, 0.407721f , - 0.195202f, 0.809657f, 0.553491f , - 0.209761f, 0.804617f, 0.555510f , - 0.229069f, 0.862375f, 0.451483f , - 0.214668f, 0.871220f, 0.441468f , - 0.068506f, 0.817614f, 0.571677f , - 0.110217f, 0.823919f, 0.555887f , - 0.136268f, 0.887220f, 0.440762f , - 0.096198f, 0.880622f, 0.463951f , - -0.132073f, 0.790690f, 0.597801f , - -0.058874f, 0.803797f, 0.591983f , - -0.061425f, 0.860712f, 0.505372f , - -0.138008f, 0.851206f, 0.506362f , - -0.359782f, 0.678718f, 0.640234f , - -0.321171f, 0.712263f, 0.624123f , - -0.336069f, 0.784437f, 0.521265f , - -0.377376f, 0.753629f, 0.538173f , - -0.403304f, 0.452459f, 0.795378f , - -0.430820f, 0.537389f, 0.724988f , - -0.420554f, 0.593242f, 0.686439f , - -0.366204f, 0.476631f, 0.799198f , - -0.138131f, 0.390242f, 0.910292f , - -0.189822f, 0.379854f, 0.905361f , - -0.217020f, 0.426221f, 0.878202f , - -0.174491f, 0.491612f, 0.853153f , - -0.023152f, 0.532849f, 0.845893f , - -0.044861f, 0.466252f, 0.883514f , - -0.098281f, 0.619469f, 0.778844f , - -0.085236f, 0.713407f, 0.695547f , - -0.090676f, 0.598974f, 0.795618f , - -0.076212f, 0.617970f, 0.782499f , - -0.087972f, 0.828246f, 0.553417f , - -0.096751f, 0.811459f, 0.576346f , - -0.399103f, -0.085746f, 0.912888f , - -0.217822f, 0.091279f, 0.971711f , - -0.354443f, 0.547208f, 0.758244f , - -0.532274f, 0.347054f, 0.772164f , - 0.158628f, 0.539224f, 0.827088f , - 0.144318f, 0.538277f, 0.830320f , - 0.147505f, 0.626205f, 0.765578f , - 0.174676f, 0.617764f, 0.766718f , - 0.152403f, 0.569625f, 0.807651f , - 0.151858f, 0.550605f, 0.820837f , - 0.162235f, 0.628706f, 0.760531f , - 0.158636f, 0.650038f, 0.743159f , - 0.064425f, 0.615802f, 0.785262f , - 0.088057f, 0.607260f, 0.789608f , - 0.091818f, 0.684352f, 0.723348f , - 0.063722f, 0.696051f, 0.715159f , - -0.159711f, 0.659673f, 0.734387f , - -0.101959f, 0.630509f, 0.769456f , - -0.060975f, 0.702118f, 0.709445f , - -0.119928f, 0.695315f, 0.708628f , - -0.159069f, 0.609924f, 0.776331f , - -0.134007f, 0.598073f, 0.790158f , - -0.205976f, 0.644490f, 0.736347f , - -0.239377f, 0.662204f, 0.710060f , - -0.491798f, 0.496300f, 0.715417f , - -0.391343f, 0.534127f, 0.749372f , - -0.422005f, 0.616066f, 0.665112f , - -0.484595f, 0.569795f, 0.663703f , - -0.519735f, 0.557417f, 0.647426f , - -0.520674f, 0.527860f, 0.671016f , - -0.519655f, 0.568583f, 0.637708f , - -0.524096f, 0.567923f, 0.634655f , - -0.528677f, 0.339161f, 0.778120f , - -0.531999f, 0.392444f, 0.750310f , - -0.523770f, 0.498930f, 0.690459f , - -0.526923f, 0.463294f, 0.712539f , - -0.194021f, 0.400652f, 0.895452f , - -0.252383f, 0.417868f, 0.872748f , - -0.258224f, 0.516722f, 0.816283f , - -0.195281f, 0.491266f, 0.848836f , - -0.031728f, 0.291799f, 0.955953f , - -0.050858f, 0.337986f, 0.939776f , - -0.044799f, 0.413825f, 0.909253f , - -0.015334f, 0.355292f, 0.934630f , - -0.106132f, 0.073926f, 0.991600f , - -0.066682f, 0.140755f, 0.987796f , - -0.062258f, 0.180550f, 0.981593f , - -0.094705f, 0.107878f, 0.989643f , - -0.451421f, -0.892307f, -0.002827f , - -0.543638f, -0.839313f, -0.003516f , - -0.150137f, -0.335524f, 0.929991f , - -0.203175f, -0.389938f, 0.898147f , - 0.381520f, 0.142475f, 0.913314f , - 0.318661f, 0.213432f, 0.923527f , - 0.384033f, 0.232071f, 0.893679f , - 0.437108f, 0.236174f, 0.867847f , - 0.127927f, 0.255325f, 0.958355f , - 0.149742f, 0.339528f, 0.928600f , - 0.129403f, 0.359477f, 0.924138f , - 0.101884f, 0.263419f, 0.959286f , - -0.293269f, 0.108967f, 0.949800f , - -0.199904f, 0.123817f, 0.971961f , - -0.129341f, 0.211454f, 0.968792f , - -0.233871f, 0.171239f, 0.957069f , - -0.211324f, -0.065438f, 0.975223f , - -0.121056f, -0.018910f, 0.992466f , - -0.130507f, -0.044787f, 0.990435f , - -0.225348f, -0.093161f, 0.969814f , - -0.293568f, -0.147103f, 0.944552f , - -0.354873f, -0.115442f, 0.927760f , - -0.355059f, -0.100837f, 0.929390f , - -0.325296f, -0.101301f, 0.940170f , - 0.038731f, -0.265009f, 0.963468f , - 0.013990f, -0.256093f, 0.966551f , - 0.025908f, -0.197973f, 0.979865f , - 0.053551f, -0.213715f, 0.975427f , - -0.003956f, 0.246029f, 0.969254f , - 0.004483f, 0.127374f, 0.991845f , - -0.005884f, 0.129559f, 0.991554f , - 0.007260f, 0.254252f, 0.967111f , - 0.112800f, 0.337770f, 0.934445f , - 0.099223f, 0.367929f, 0.924545f , - 0.096594f, 0.246629f, 0.964284f , - 0.108894f, 0.204067f, 0.972882f , - -0.080512f, -0.572606f, 0.815868f , - -0.050593f, -0.436502f, 0.898280f , - -0.093752f, -0.457018f, 0.884503f , - -0.118147f, -0.562820f, 0.818092f , - -0.004269f, -0.558814f, 0.829282f , - -0.014021f, -0.617477f, 0.786464f , - 0.015316f, -0.544237f, 0.838792f , - 0.025767f, -0.536508f, 0.843502f , - -0.049573f, -0.781703f, 0.621678f , - -0.082982f, -0.815892f, 0.572219f , - -0.118920f, -0.783066f, 0.610464f , - -0.091069f, -0.729377f, 0.678024f , - -0.042019f, -0.772941f, 0.633085f , - -0.046952f, -0.788897f, 0.612729f , - -0.066510f, -0.829983f, 0.553809f , - -0.067198f, -0.806232f, 0.587771f , - -0.228351f, -0.322949f, 0.918455f , - -0.112867f, -0.371134f, 0.921694f , - -0.064211f, -0.512430f, 0.856325f , - -0.141265f, -0.524457f, 0.839636f , - 0.626787f, -0.077101f, 0.775367f , - 0.624239f, -0.112645f, 0.773070f , - 0.611659f, -0.071086f, 0.787921f , - 0.636354f, -0.059231f, 0.769120f , - 0.600007f, -0.091467f, 0.794748f , - 0.525677f, -0.022750f, 0.850380f , - 0.496367f, -0.021108f, 0.867856f , - 0.571946f, -0.088861f, 0.815464f , - 0.726305f, -0.589464f, 0.353572f , - 0.701419f, -0.599194f, 0.385975f , - 0.718693f, -0.510830f, 0.471735f , - 0.742381f, -0.510331f, 0.434089f , - 0.579239f, -0.719833f, 0.382521f , - 0.610880f, -0.704841f, 0.360590f , - 0.597322f, -0.649335f, 0.470712f , - 0.550401f, -0.658224f, 0.513615f , - 0.288098f, -0.222160f, 0.931474f , - 0.369725f, -0.334029f, 0.867023f , - 0.380452f, -0.332402f, 0.862998f , - 0.306756f, -0.227640f, 0.924165f , - -0.219883f, 0.084829f, 0.971831f , - -0.087468f, 0.043405f, 0.995221f , - -0.027956f, 0.003969f, 0.999601f , - -0.145259f, 0.027859f, 0.989001f , - 0.192607f, 0.217674f, 0.956828f , - 0.130842f, 0.169974f, 0.976724f , - 0.179290f, 0.152014f, 0.971981f , - 0.247284f, 0.188302f, 0.950470f , - 0.665698f, -0.737810f, 0.111723f , - 0.637432f, -0.760203f, 0.125590f , - 0.649470f, -0.726412f, 0.224755f , - 0.678795f, -0.706934f, 0.198700f , - 0.498417f, -0.862693f, 0.085681f , - 0.541374f, -0.835257f, 0.096231f , - 0.563620f, -0.806902f, 0.176751f , - 0.524052f, -0.836711f, 0.159013f , - 0.258364f, -0.965781f, 0.022700f , - 0.362631f, -0.930358f, 0.054149f , - 0.426541f, -0.900036f, 0.089431f , - 0.377037f, -0.925811f, 0.026796f , - -0.088302f, -0.996086f, 0.003853f , - 0.006379f, -0.998993f, -0.044411f , - -0.022712f, -0.994934f, -0.097928f , - -0.143979f, -0.989261f, -0.025163f , - -0.384606f, -0.900426f, 0.203251f , - -0.394280f, -0.909005f, 0.135103f , - -0.449764f, -0.871722f, 0.194456f , - -0.449761f, -0.842198f, 0.297352f , - -0.142139f, -0.962284f, 0.231961f , - -0.220552f, -0.942754f, 0.250143f , - -0.187757f, -0.894190f, 0.406414f , - -0.115459f, -0.913393f, 0.390361f , - -0.019845f, -0.976755f, 0.213438f , - -0.029512f, -0.977764f, 0.207623f , - -0.034350f, -0.927385f, 0.372528f , - -0.021001f, -0.925097f, 0.379149f , - 0.045584f, -0.949555f, 0.310271f , - 0.040003f, -0.957780f, 0.284707f , - 0.050922f, -0.922460f, 0.382720f , - 0.096420f, -0.931770f, 0.350011f , - -0.138789f, -0.989475f, 0.040957f , - -0.011257f, -0.992063f, 0.125240f , - -0.063018f, -0.979083f, 0.193456f , - -0.143512f, -0.984520f, 0.100622f , - -0.719512f, -0.694165f, 0.020922f , - -0.693147f, -0.717137f, -0.072538f , - -0.759375f, -0.650423f, -0.017281f , - -0.746504f, -0.663927f, 0.043959f , - -0.554392f, -0.832201f, -0.009560f , - -0.593073f, -0.803619f, -0.049609f , - -0.648153f, -0.760774f, 0.033468f , - -0.602375f, -0.795529f, 0.065414f , - -0.372292f, -0.928103f, -0.004817f , - -0.415496f, -0.909586f, -0.003941f , - -0.379452f, -0.822671f, 0.423353f , - -0.339779f, -0.828859f, 0.444458f , - -0.230264f, -0.577574f, 0.783190f , - -0.209264f, -0.631888f, 0.746275f , - -0.352437f, -0.617764f, 0.702962f , - -0.389762f, -0.564730f, 0.727437f , - -0.815115f, -0.362165f, 0.452133f , - -0.769976f, -0.403575f, 0.494231f , - -0.759728f, -0.473175f, 0.446003f , - -0.832641f, -0.388013f, 0.395163f , - -0.782448f, -0.256350f, 0.567503f , - -0.774189f, -0.216153f, 0.594902f , - -0.742158f, -0.175124f, 0.646942f , - -0.762293f, -0.196501f, 0.616682f , - -0.709974f, 0.042115f, 0.702967f , - -0.741367f, -0.032612f, 0.670307f , - -0.740450f, 0.008675f, 0.672055f , - -0.725486f, 0.049519f, 0.686453f , - -0.277432f, -0.959575f, 0.047405f , - -0.248938f, -0.967850f, 0.036003f , - -0.250935f, -0.967045f, 0.043071f , - -0.286728f, -0.957041f, 0.043128f , - 0.494715f, -0.569492f, 0.656457f , - 0.504606f, -0.673313f, 0.540391f , - 0.361490f, -0.729288f, 0.580916f , - 0.379837f, -0.647412f, 0.660743f , - 0.244665f, -0.168996f, 0.954767f , - 0.250065f, -0.326363f, 0.911567f , - 0.355032f, -0.410752f, 0.839783f , - 0.356565f, -0.268119f, 0.894971f , - 0.231371f, -0.077158f, 0.969801f , - 0.249343f, -0.079044f, 0.965184f , - 0.339731f, -0.184934f, 0.922162f , - 0.311148f, -0.169315f, 0.935157f , - -0.074329f, 0.234363f, 0.969303f , - -0.069484f, 0.206676f, 0.975939f , - 0.089186f, 0.140785f, 0.986015f , - 0.052572f, 0.163797f, 0.985092f , - -0.582153f, 0.205882f, 0.786581f , - -0.603586f, 0.163687f, 0.780315f , - -0.556187f, 0.201242f, 0.806324f , - -0.528937f, 0.249926f, 0.811025f , - -0.551398f, 0.136605f, 0.822982f , - -0.507059f, 0.156519f, 0.847581f , - -0.622959f, 0.093590f, 0.776636f , - -0.676817f, 0.052877f, 0.734249f , - 0.096918f, 0.179128f, 0.979040f , - -0.152656f, 0.260770f, 0.953255f , - -0.241041f, 0.205836f, 0.948436f , - 0.010598f, 0.169413f, 0.985488f , - 0.118576f, 0.136055f, 0.983580f , - -0.007967f, 0.196970f, 0.980377f , - 0.084334f, 0.108705f, 0.990490f , - 0.127276f, 0.095652f, 0.987244f , - 0.713240f, -0.539426f, 0.447559f , - 0.654104f, -0.577346f, 0.488691f , - 0.667818f, -0.393937f, 0.631532f , - 0.712889f, -0.351453f, 0.606853f , - 0.098789f, 0.128921f, 0.986722f , - 0.314054f, 0.062345f, 0.947356f , - 0.306310f, 0.046019f, 0.950819f , - 0.113209f, 0.122259f, 0.986021f , - 0.007154f, 0.202767f, 0.979201f , - 0.060312f, 0.130452f, 0.989618f , - 0.041186f, 0.131541f, 0.990455f , - 0.004902f, 0.220352f, 0.975408f , - -0.008580f, -0.214920f, 0.976594f , - -0.000419f, -0.122725f, 0.992441f , - -0.007367f, -0.120674f, 0.992665f , - -0.015659f, -0.220219f, 0.975325f , - -0.367361f, -0.052166f, 0.928614f , - -0.340759f, -0.170470f, 0.924567f , - -0.501777f, -0.149797f, 0.851928f , - -0.500275f, -0.044285f, 0.864733f , - -0.064270f, -0.095877f, 0.993316f , - -0.113546f, -0.125167f, 0.985617f , - -0.149762f, -0.009565f, 0.988676f , - -0.098856f, 0.029940f, 0.994651f , - -0.067114f, -0.002186f, 0.997743f , - -0.061458f, -0.003325f, 0.998104f , - -0.059398f, 0.099303f, 0.993283f , - -0.054571f, 0.085106f, 0.994876f , - 0.039359f, -0.603381f, 0.796481f , - -0.003900f, -0.627413f, 0.778677f , - -0.018639f, -0.582155f, 0.812864f , - 0.021804f, -0.551742f, 0.833730f , - -0.076710f, -0.446872f, 0.891303f , - -0.055900f, -0.496372f, 0.866308f , - -0.059166f, -0.414121f, 0.908297f , - -0.079885f, -0.341724f, 0.936399f , - -0.222245f, -0.408118f, 0.885464f , - -0.166683f, -0.385200f, 0.907655f , - -0.119952f, -0.222789f, 0.967459f , - -0.155431f, -0.234605f, 0.959584f , - -0.329061f, -0.744631f, 0.580727f , - -0.421101f, -0.906985f, -0.007230f , - -0.372044f, -0.928185f, -0.007406f , - -0.329548f, -0.840908f, 0.429269f , - -0.099039f, -0.635941f, 0.765357f , - -0.140510f, -0.663060f, 0.735261f , - -0.173525f, -0.777476f, 0.604500f , - -0.126588f, -0.742275f, 0.658030f , - 0.063924f, -0.734565f, 0.675520f , - 0.017059f, -0.668867f, 0.743186f , - 0.003956f, -0.797524f, 0.603274f , - 0.047718f, -0.822648f, 0.566545f , - -0.081450f, 0.036744f, 0.996000f , - -0.076890f, 0.086790f, 0.993255f , - -0.105718f, 0.062738f, 0.992415f , - -0.097589f, 0.031053f, 0.994742f , - 0.331681f, 0.042215f, 0.942447f , - 0.315772f, 0.041280f, 0.947937f , - 0.107596f, 0.097006f, 0.989451f , - 0.131817f, 0.096703f, 0.986546f , - -0.598720f, 0.212970f, 0.772125f , - -0.480073f, 0.210840f, 0.851514f , - -0.481435f, 0.230994f, 0.845495f , - -0.597570f, 0.245487f, 0.763312f , - -0.996927f, 0.057892f, 0.052775f , - -0.951918f, 0.115911f, 0.283579f , - -0.940415f, 0.169911f, 0.294532f , - -0.992504f, 0.108668f, 0.055916f , - -0.711482f, -0.163221f, -0.683485f , - -0.843623f, -0.105996f, -0.526370f , - -0.857212f, -0.075600f, -0.509385f , - -0.733014f, -0.143306f, -0.664946f , - 0.182849f, -0.304758f, -0.934713f , - -0.035295f, -0.283340f, -0.958370f , - -0.046220f, -0.303178f, -0.951812f , - 0.148490f, -0.332394f, -0.931378f , - 0.806171f, -0.374053f, -0.458446f , - 0.812467f, -0.414345f, -0.410142f , - 0.901208f, -0.372441f, -0.221613f , - 0.910545f, -0.326804f, -0.253193f , - 0.555860f, -0.381419f, 0.738606f , - 0.604489f, -0.268004f, 0.750178f , - 0.679715f, -0.354621f, 0.642052f , - 0.561958f, -0.448469f, 0.695038f , - 0.617398f, -0.737866f, -0.272715f , - 0.624996f, -0.770276f, -0.126706f , - 0.640830f, -0.758604f, -0.117717f , - 0.636600f, -0.733236f, -0.238967f , - 0.657366f, -0.690416f, -0.301985f , - 0.605567f, -0.742401f, -0.286582f , - 0.658546f, -0.710647f, -0.247586f , - 0.695937f, -0.658318f, -0.286862f , - 0.647463f, -0.217647f, 0.730357f , - 0.796283f, -0.275385f, 0.538606f , - 0.839233f, -0.259691f, 0.477754f , - 0.705356f, -0.225470f, 0.672039f , - -0.778600f, -0.345197f, 0.524044f , - -0.711628f, -0.272062f, 0.647741f , - -0.652376f, 0.024358f, 0.757504f , - -0.760563f, -0.053860f, 0.647026f , - -0.859257f, -0.511542f, 0.001204f , - -0.872112f, -0.472823f, 0.125935f , - -0.955925f, -0.221330f, 0.192926f , - -0.964081f, -0.264225f, 0.027081f , - -0.611488f, -0.593384f, -0.523429f , - -0.709261f, -0.576472f, -0.405746f , - -0.813642f, -0.341116f, -0.470773f , - -0.697633f, -0.359311f, -0.619841f , - -0.115889f, -0.557069f, -0.822341f , - -0.179987f, -0.582658f, -0.792537f , - -0.136218f, -0.369583f, -0.919159f , - -0.007012f, -0.320267f, -0.947301f , - 0.380212f, -0.103644f, -0.919074f , - 0.119670f, -0.283388f, -0.951510f , - 0.265206f, -0.122309f, -0.956403f , - 0.410797f, -0.066573f, -0.909293f , - 0.286424f, -0.719620f, -0.632542f , - 0.025189f, -0.639388f, -0.768472f , - 0.350288f, -0.182705f, -0.918650f , - 0.484807f, -0.265945f, -0.833208f , - -0.009356f, -0.992944f, -0.118217f , - 0.140810f, -0.986199f, -0.087085f , - 0.115134f, -0.991576f, -0.059333f , - -0.056762f, -0.998341f, 0.009669f , - 0.699472f, -0.295121f, 0.650878f , - 0.591173f, 0.073835f, 0.803158f , - 0.502997f, -0.164779f, 0.848435f , - 0.653365f, -0.359715f, 0.666123f , - -0.794554f, -0.565204f, -0.221876f , - -0.652692f, -0.698842f, -0.292597f , - -0.633256f, -0.637639f, -0.438637f , - -0.800184f, -0.491254f, -0.344057f , - -0.911709f, 0.212038f, 0.351891f , - -0.912283f, 0.118891f, 0.391923f , - -0.960426f, 0.001251f, 0.278533f , - -0.977666f, 0.079687f, 0.194469f , - -0.031164f, -0.905306f, -0.423615f , - 0.115135f, -0.751174f, -0.649985f , - -0.067623f, -0.690579f, -0.720089f , - -0.183436f, -0.856215f, -0.482957f , - -0.718312f, 0.236334f, 0.654351f , - -0.766465f, 0.238711f, 0.596278f , - -0.735198f, 0.315137f, 0.600144f , - -0.677754f, 0.288569f, 0.676297f , - 0.877830f, -0.046013f, 0.476757f , - 0.973603f, -0.094735f, 0.207660f , - 0.950014f, -0.183121f, 0.252865f , - 0.864358f, -0.126394f, 0.486734f , - 0.766453f, 0.424390f, -0.482123f , - 0.707021f, 0.332112f, -0.624358f , - 0.807653f, 0.227264f, -0.544103f , - 0.848059f, 0.305389f, -0.433051f , - 0.525353f, -0.840533f, -0.132318f , - 0.448464f, -0.840880f, -0.302988f , - 0.321534f, -0.925558f, -0.199896f , - 0.440405f, -0.894741f, -0.074044f , - 0.870352f, 0.482175f, 0.099972f , - 0.872997f, 0.483519f, 0.063917f , - 0.877194f, 0.479083f, 0.031785f , - 0.905816f, 0.407312f, 0.116595f , - 0.528293f, 0.463316f, 0.711509f , - 0.489626f, 0.468151f, 0.735595f , - 0.620568f, 0.469177f, 0.628306f , - 0.626731f, 0.470588f, 0.621093f , - -0.045817f, 0.393149f, 0.918333f , - -0.214844f, 0.267455f, 0.939313f , - 0.017653f, 0.377477f, 0.925851f , - 0.031754f, 0.410331f, 0.911384f , - 0.046614f, 0.250759f, 0.966927f , - -0.174454f, 0.216179f, 0.960642f , - -0.285572f, 0.155739f, 0.945618f , - -0.140572f, 0.225464f, 0.964057f , - 0.609449f, -0.380137f, 0.695750f , - 0.724903f, -0.433809f, 0.535093f , - 0.662144f, -0.545357f, 0.513957f , - 0.558760f, -0.497610f, 0.663454f , - 0.305682f, -0.161078f, 0.938409f , - 0.397131f, -0.262724f, 0.879354f , - 0.388037f, -0.307597f, 0.868799f , - 0.311581f, -0.178677f, 0.933269f , - -0.387261f, 0.267706f, 0.882249f , - -0.348687f, 0.196783f, 0.916348f , - -0.421672f, 0.193970f, 0.885759f , - -0.447593f, 0.267438f, 0.853310f , - -0.247949f, 0.309521f, 0.917997f , - -0.135980f, 0.251924f, 0.958146f , - -0.130269f, 0.222706f, 0.966143f , - -0.230989f, 0.279531f, 0.931937f , - -0.848906f, 0.241982f, 0.469898f , - -0.799705f, 0.255001f, 0.543550f , - -0.795983f, 0.193443f, 0.573577f , - -0.833623f, 0.173770f, 0.524286f , - -0.804187f, -0.245355f, 0.541372f , - -0.850935f, -0.351513f, 0.390318f , - -0.973969f, -0.100285f, 0.203290f , - -0.930111f, 0.007564f, 0.367200f , - -0.908319f, 0.395376f, 0.136508f , - -0.965234f, 0.260746f, 0.018292f , - -0.971795f, 0.158549f, 0.174574f , - -0.937505f, 0.275059f, 0.213134f , - -0.510789f, 0.032026f, 0.859110f , - -0.435451f, -0.011172f, 0.900143f , - -0.484944f, 0.002737f, 0.874541f , - -0.561641f, 0.087557f, 0.822735f , - 0.219282f, -0.007984f, 0.975629f , - 0.317789f, -0.080187f, 0.944765f , - 0.168970f, -0.032514f, 0.985085f , - 0.159013f, -0.008044f, 0.987244f , - 0.228132f, -0.086166f, 0.969810f , - 0.114185f, 0.096698f, 0.988742f , - 0.056473f, 0.108682f, 0.992471f , - 0.156304f, -0.049319f, 0.986477f , - -0.690591f, 0.687435f, 0.224761f , - -0.753077f, 0.556405f, 0.351125f , - -0.798764f, 0.565165f, 0.206311f , - -0.710906f, 0.698590f, 0.081147f , - -0.455697f, 0.466292f, 0.758229f , - -0.312356f, 0.438787f, 0.842556f , - -0.200983f, 0.450311f, 0.869957f , - -0.352406f, 0.481058f, 0.802741f , - 0.756438f, 0.122083f, 0.642571f , - 0.717725f, 0.087980f, 0.690747f , - 0.597853f, 0.074304f, 0.798154f , - 0.675404f, 0.091107f, 0.731798f , - 0.861647f, 0.101223f, 0.497311f , - 0.911419f, 0.120102f, 0.393561f , - 0.946302f, 0.058320f, 0.317981f , - 0.884472f, 0.017848f, 0.466252f , - 0.968375f, -0.233049f, -0.089100f , - 0.977064f, -0.181498f, -0.111373f , - 0.916288f, -0.232306f, -0.326267f , - 0.913593f, -0.275064f, -0.299480f , - 0.045790f, 0.009076f, 0.998910f , - 0.021610f, -0.002125f, 0.999764f , - -0.150275f, -0.018712f, 0.988467f , - -0.116581f, -0.003564f, 0.993175f , - 0.831023f, -0.118589f, 0.543449f , - 0.724121f, -0.121117f, 0.678955f , - 0.882532f, -0.081024f, 0.463220f , - 0.924627f, -0.085186f, 0.371225f , - 0.958451f, -0.195363f, 0.207856f , - 0.941628f, -0.224384f, 0.250974f , - 0.870047f, -0.060398f, 0.489254f , - 0.897678f, -0.054672f, 0.437248f , - 0.923835f, -0.196800f, -0.328327f , - 0.977375f, -0.148163f, -0.150952f , - 0.972896f, -0.176108f, -0.149867f , - 0.930201f, -0.203677f, -0.305355f , - 0.802191f, -0.397878f, -0.445176f , - 0.743909f, -0.496420f, -0.447399f , - 0.847028f, -0.455315f, -0.274283f , - 0.886256f, -0.373920f, -0.273375f , - 0.582561f, -0.768721f, -0.263989f , - 0.509313f, -0.843495f, -0.170638f , - 0.647705f, -0.761294f, -0.030157f , - 0.696960f, -0.712538f, -0.080851f , - -0.326870f, -0.585715f, -0.741683f , - -0.349333f, -0.758744f, -0.549795f , - -0.128856f, -0.808590f, -0.574089f , - -0.074132f, -0.658740f, -0.748710f , - -0.757180f, -0.396527f, -0.519081f , - -0.759781f, -0.300641f, -0.576496f , - -0.877548f, -0.250885f, -0.408614f , - -0.860189f, -0.348498f, -0.372321f , - -0.450466f, -0.543605f, -0.708219f , - -0.391840f, -0.550691f, -0.737022f , - -0.144840f, -0.558512f, -0.816753f , - -0.236777f, -0.511584f, -0.825965f , - -0.059329f, 0.190727f, -0.979849f , - -0.228094f, 0.061127f, -0.971718f , - -0.098216f, -0.041907f, -0.994282f , - 0.144956f, -0.024218f, -0.989142f , - -0.864682f, -0.199096f, -0.461179f , - -0.761084f, -0.354177f, -0.543425f , - -0.708230f, -0.378596f, -0.595883f , - -0.807055f, -0.208760f, -0.552342f , - -0.771594f, 0.082158f, -0.630787f , - -0.892311f, 0.033003f, -0.450214f , - -0.870684f, 0.105444f, -0.480408f , - -0.725822f, 0.163033f, -0.668284f , - -0.964334f, 0.036428f, 0.262170f , - -0.998211f, 0.052848f, 0.027954f , - -0.998271f, 0.042154f, 0.040960f , - -0.960694f, 0.011315f, 0.277378f , - -0.984770f, 0.036417f, 0.170008f , - -0.998406f, 0.032030f, -0.046474f , - -0.999440f, 0.016154f, -0.029317f , - -0.979307f, 0.025295f, 0.200792f , - -0.207845f, 0.016419f, 0.978024f , - -0.118648f, -0.041601f, 0.992065f , - -0.226081f, -0.034622f, 0.973493f , - -0.303540f, 0.013365f, 0.952725f , - -0.952494f, -0.131550f, 0.274681f , - -0.983548f, -0.162419f, 0.079077f , - -0.971185f, -0.227463f, 0.071137f , - -0.952462f, -0.194104f, 0.234819f , - -0.822987f, -0.428385f, -0.373067f , - -0.870804f, -0.415112f, -0.263406f , - -0.918022f, -0.245824f, -0.311138f , - -0.858355f, -0.218428f, -0.464236f , - -0.559938f, 0.051020f, 0.826962f , - -0.711476f, 0.034127f, 0.701881f , - -0.791015f, -0.079682f, 0.606586f , - -0.671883f, -0.042998f, 0.739408f , - -0.010797f, 0.336741f, 0.941535f , - -0.188555f, 0.313324f, 0.930739f , - -0.142324f, 0.296880f, 0.944249f , - -0.003857f, 0.353010f, 0.935612f , - 0.397295f, 0.274036f, 0.875820f , - 0.309651f, 0.354178f, 0.882425f , - 0.161978f, 0.320298f, 0.933366f , - 0.247651f, 0.266444f, 0.931492f , - 0.842373f, 0.321008f, 0.432852f , - 0.723107f, 0.314537f, 0.614966f , - 0.679955f, 0.310786f, 0.664134f , - 0.733528f, 0.381388f, 0.562566f , - 0.030582f, -0.234821f, 0.971557f , - -0.040592f, -0.678129f, 0.733821f , - 0.082707f, -0.763288f, 0.640742f , - 0.120704f, -0.405956f, 0.905887f , - 0.621468f, 0.144126f, 0.770068f , - 0.491401f, 0.123580f, 0.862121f , - 0.518594f, -0.183573f, 0.835082f , - 0.654373f, -0.155163f, 0.740082f , - -0.185056f, -0.024953f, 0.982411f , - -0.418758f, -0.004325f, 0.908088f , - -0.430960f, -0.071061f, 0.899569f , - -0.238547f, -0.079607f, 0.967863f , - 0.030716f, -0.013257f, 0.999440f , - 0.134351f, -0.035938f, 0.990282f , - 0.362380f, 0.051017f, 0.930633f , - 0.236728f, 0.042247f, 0.970657f , - 0.824667f, 0.554282f, 0.112679f , - 0.818443f, 0.541500f, 0.192168f , - 0.774068f, 0.543798f, 0.324197f , - 0.804141f, 0.544077f, 0.239454f , - 0.801689f, 0.579174f, -0.147827f , - 0.793560f, 0.571877f, -0.207890f , - 0.822723f, 0.529665f, -0.206354f , - 0.828132f, 0.543920f, -0.135457f , - 0.655057f, 0.457462f, -0.601356f , - 0.515460f, 0.417056f, -0.748575f , - 0.567100f, 0.425920f, -0.704975f , - 0.668672f, 0.435284f, -0.602831f , - 0.333692f, 0.099877f, -0.937376f , - 0.492357f, 0.212345f, -0.844094f , - 0.288903f, 0.256431f, -0.922376f , - 0.129921f, 0.096802f, -0.986788f , - -0.047073f, -0.141770f, 0.988780f , - -0.237203f, -0.118421f, 0.964215f , - -0.438879f, -0.219811f, 0.871245f , - -0.279948f, -0.203600f, 0.938177f , - -0.037908f, -0.998951f, -0.025695f , - 0.073157f, -0.993730f, 0.084547f , - 0.084496f, -0.993373f, 0.077916f , - -0.110403f, -0.993885f, -0.002108f , - -0.048406f, -0.192324f, -0.980137f , - 0.289927f, -0.054456f, -0.955498f , - 0.465401f, -0.149120f, -0.872448f , - 0.166802f, -0.290337f, -0.942275f , - 0.101486f, -0.994123f, -0.037694f , - 0.118783f, -0.992453f, -0.030467f , - 0.091021f, -0.995848f, 0.001233f , - 0.015628f, -0.999741f, -0.016521f , - 0.542159f, -0.788436f, 0.290572f , - 0.541554f, -0.823782f, 0.167638f , - 0.474834f, -0.859522f, 0.189090f , - 0.474459f, -0.816659f, 0.328567f , - -0.030116f, 0.958303f, 0.284163f , - -0.413152f, 0.875527f, 0.250516f , - -0.411481f, 0.867522f, 0.279445f , - -0.060315f, 0.954161f, 0.293152f , - -0.099316f, 0.645494f, 0.757280f , - -0.313115f, 0.582514f, 0.750091f , - -0.332997f, 0.649893f, 0.683192f , - -0.083605f, 0.675394f, 0.732702f , - 0.079501f, -0.418414f, 0.904770f , - 0.036726f, -0.410034f, 0.911330f , - 0.048822f, -0.322993f, 0.945141f , - 0.064128f, -0.387736f, 0.919537f , - 0.216032f, -0.418063f, 0.882357f , - 0.014249f, -0.501654f, 0.864951f , - 0.002332f, -0.616127f, 0.787643f , - 0.170978f, -0.531425f, 0.829671f , - 0.577163f, -0.237291f, 0.781394f , - 0.515557f, -0.310739f, 0.798525f , - 0.428555f, -0.304640f, 0.850609f , - 0.504721f, -0.209912f, 0.837373f , - 0.538022f, -0.671238f, 0.509874f , - 0.549110f, -0.570995f, 0.610282f , - 0.582524f, -0.483718f, 0.653209f , - 0.550746f, -0.607891f, 0.571967f , - 0.030365f, 0.053142f, 0.998125f , - -0.052635f, -0.026331f, 0.998267f , - -0.092832f, 0.142929f, 0.985370f , - 0.017683f, 0.186000f, 0.982391f , - -0.113099f, 0.587774f, 0.801081f , - -0.257137f, 0.522638f, 0.812853f , - -0.300349f, 0.604672f, 0.737673f , - -0.154568f, 0.660145f, 0.735063f , - -0.049642f, 0.830024f, 0.555514f , - -0.376269f, 0.785127f, 0.491931f , - -0.384245f, 0.812266f, 0.438840f , - -0.064673f, 0.878181f, 0.473936f , - 0.034192f, 0.942802f, 0.331595f , - -0.327270f, 0.884678f, 0.332023f , - -0.334725f, 0.905322f, 0.261440f , - 0.049827f, 0.959357f, 0.277761f , - -0.218611f, -0.490877f, 0.843356f , - 0.262027f, -0.437959f, 0.859962f , - 0.534119f, 0.036493f, 0.844621f , - 0.110091f, -0.172649f, 0.978812f , - 0.009779f, 0.053369f, 0.998527f , - 0.270806f, 0.028133f, 0.962223f , - 0.610090f, 0.378358f, 0.696158f , - 0.528217f, 0.372129f, 0.763221f , - 0.664985f, 0.358924f, 0.654957f , - 0.532733f, 0.059111f, 0.844217f , - 0.695158f, 0.315776f, 0.645787f , - -0.019568f, -0.351233f, 0.936084f , - 0.265866f, -0.234407f, 0.935077f , - -0.400744f, -0.324888f, 0.856652f , - -0.479340f, -0.272388f, 0.834289f , - 0.261951f, -0.130803f, 0.956176f , - 0.238101f, 0.059160f, 0.969437f , - -0.464582f, -0.130479f, 0.875864f , - -0.469779f, -0.283843f, 0.835907f , - -0.201661f, 0.350836f, 0.914465f , - 0.119209f, 0.387105f, 0.914297f , - 0.333595f, 0.487191f, 0.807068f , - 0.048823f, 0.515221f, 0.855665f , - 0.754247f, 0.212693f, 0.621187f , - 0.810694f, 0.102365f, 0.576452f , - 0.693801f, 0.444091f, 0.566942f , - -0.430775f, 0.473442f, 0.768300f , - 0.429359f, 0.430600f, 0.793873f , - 0.732962f, 0.425635f, 0.530662f , - -0.615814f, 0.323865f, 0.718252f , - -0.039928f, 0.344820f, 0.937819f , - 0.878796f, 0.358317f, 0.315160f , - 0.713819f, 0.568708f, 0.408697f , - 0.260185f, 0.623076f, 0.737618f , - 0.730551f, 0.440381f, 0.521881f , - -0.122160f, 0.756331f, 0.642682f , - -0.376254f, 0.603093f, 0.703357f , - 0.533299f, 0.842272f, 0.078551f , - 0.704040f, 0.663237f, 0.253859f , - 0.877348f, 0.445142f, 0.179192f , - 0.927543f, 0.373676f, -0.005413f , - 0.211838f, 0.806927f, 0.551356f , - -0.706891f, 0.637648f, 0.306121f , - -0.722126f, 0.612712f, 0.321121f , - -0.141763f, 0.841563f, 0.521224f , - 0.086295f, 0.884051f, 0.459355f , - -0.530777f, 0.827032f, 0.185184f , - 0.081137f, 0.995349f, -0.051928f , - 0.082386f, 0.995226f, -0.052315f , - 0.090652f, 0.995522f, 0.026784f , - -0.993810f, 0.065645f, 0.089623f , - 0.106222f, 0.987136f, 0.119500f , - 0.098302f, 0.989574f, 0.105265f , - 0.993811f, -0.065636f, -0.089623f , - 0.940937f, 0.314695f, -0.124917f , - 0.863166f, -0.483925f, -0.144087f , - 0.918710f, 0.306521f, -0.249033f , - 0.909536f, 0.366804f, -0.195446f , - 0.973480f, -0.096894f, 0.207240f , - 0.947507f, 0.316907f, -0.042426f , - 0.662346f, -0.569758f, 0.486490f , - 0.740352f, -0.488699f, 0.461576f , - 0.757549f, -0.648843f, 0.071576f , - 0.889829f, 0.033844f, 0.455038f , - 0.743712f, -0.176376f, 0.644813f , - 0.948206f, 0.293149f, 0.122346f , - 0.927726f, 0.299897f, 0.222231f , - 0.983898f, 0.013881f, -0.178192f , - 0.941802f, 0.334580f, 0.032645f , - 0.694511f, -0.514772f, -0.502658f , - 0.801345f, -0.324199f, -0.502734f , - 0.717413f, -0.452112f, -0.530012f , - 0.552609f, -0.437682f, -0.709265f , - 0.507297f, -0.173399f, -0.844146f , - 0.583865f, -0.132598f, -0.800949f , - 0.400913f, -0.608755f, -0.684606f , - 0.345598f, -0.516485f, -0.783458f , - 0.489386f, -0.586956f, -0.644968f , - 0.431671f, -0.758010f, -0.488959f , - -0.513279f, -0.831284f, -0.213333f , - 0.571369f, -0.185553f, 0.799442f , - 0.506741f, -0.207694f, 0.836706f , - 0.551998f, -0.466168f, 0.691365f , - 0.367315f, -0.663587f, 0.651714f , - -0.234503f, -0.893415f, 0.383167f , - 0.862078f, -0.489184f, 0.132367f , - 0.431128f, -0.776930f, 0.458812f , - -0.517397f, -0.835197f, 0.186403f , - 0.801347f, -0.324193f, 0.502734f , - 0.757547f, -0.648845f, -0.071575f , - 0.694507f, -0.514773f, 0.502662f , - 0.717416f, -0.452106f, 0.530013f , - 0.983897f, 0.013875f, 0.178196f , - 0.948207f, 0.293145f, -0.122348f , - 0.941803f, 0.334577f, -0.032646f , - 0.889829f, 0.033842f, -0.455038f , - 0.927727f, 0.299893f, -0.222232f , - 0.699472f, -0.295125f, -0.650877f , - 0.743712f, -0.176379f, -0.644812f , - 0.977158f, -0.040822f, -0.208556f , - 0.683241f, -0.525803f, -0.506669f , - 0.777929f, -0.413059f, -0.473508f , - 0.936938f, 0.326146f, 0.125604f , - 0.939967f, 0.338716f, 0.041625f , - 0.919968f, 0.302555f, 0.249238f , - 0.908210f, 0.368969f, 0.197524f , - -0.110502f, -0.991863f, 0.063220f , - -0.094772f, -0.994313f, 0.048571f , - -0.094693f, -0.993673f, 0.060387f , - 0.993810f, -0.065648f, 0.089624f , - -0.093982f, -0.992478f, 0.078458f , - -0.094598f, -0.992866f, 0.072579f , - -0.993810f, 0.065640f, -0.089624f , - 0.533302f, 0.842269f, -0.078555f , - 0.704043f, 0.663234f, -0.253860f , - 0.086299f, 0.884049f, -0.459358f , - -0.530775f, 0.827033f, -0.185189f , - -0.722128f, 0.612710f, -0.321120f , - -0.706893f, 0.637647f, -0.306120f , - 0.211835f, 0.806927f, -0.551357f , - -0.141767f, 0.841563f, -0.521224f , - 0.877348f, 0.445142f, -0.179191f , - 0.927543f, 0.373678f, 0.005412f , - -0.122162f, 0.756332f, -0.642681f , - 0.713818f, 0.568709f, -0.408697f , - 0.260184f, 0.623076f, -0.737618f , - -0.376256f, 0.603094f, -0.703355f , - 0.878797f, 0.358317f, -0.315160f , - 0.730551f, 0.440380f, -0.521882f , - -0.615814f, 0.323863f, -0.718252f , - -0.430776f, 0.473441f, -0.768300f , - 0.429359f, 0.430600f, -0.793873f , - -0.039931f, 0.344818f, -0.937820f , - 0.693801f, 0.444090f, -0.566943f , - 0.732963f, 0.425634f, -0.530661f , - 0.261948f, -0.130803f, -0.956177f , - 0.238098f, 0.059158f, -0.969438f , - 0.754247f, 0.212691f, -0.621188f , - 0.810691f, 0.102364f, -0.576456f , - 0.333594f, 0.487192f, -0.807068f , - 0.119206f, 0.387105f, -0.914297f , - -0.201663f, 0.350834f, -0.914466f , - 0.048823f, 0.515219f, -0.855667f , - -0.464584f, -0.130479f, -0.875863f , - -0.469781f, -0.283842f, -0.835907f , - 0.009779f, 0.053371f, -0.998527f , - 0.270806f, 0.028133f, -0.962223f , - -0.400742f, -0.324887f, -0.856653f , - -0.479340f, -0.272387f, -0.834289f , - -0.019565f, -0.351233f, -0.936084f , - 0.532731f, 0.059109f, -0.844218f , - 0.265865f, -0.234409f, -0.935077f , - 0.664985f, 0.358928f, -0.654955f , - 0.695159f, 0.315781f, -0.645784f , - 0.610089f, 0.378359f, -0.696158f , - 0.528217f, 0.372131f, -0.763220f , - 0.534119f, 0.036490f, -0.844621f , - 0.262026f, -0.437960f, -0.859961f , - -0.218611f, -0.490877f, -0.843356f , - 0.110090f, -0.172650f, -0.978812f , - 0.054611f, 0.986064f, -0.157145f , - -0.363400f, 0.922833f, -0.127745f , - -0.334726f, 0.905322f, -0.261440f , - 0.049827f, 0.959357f, -0.277761f , - -0.384245f, 0.812266f, -0.438839f , - -0.376269f, 0.785129f, -0.491930f , - -0.049642f, 0.830024f, -0.555513f , - -0.064673f, 0.878182f, -0.473935f , - -0.300348f, 0.604672f, -0.737674f , - -0.257137f, 0.522639f, -0.812853f , - -0.113100f, 0.587773f, -0.801081f , - -0.154569f, 0.660144f, -0.735064f , - -0.092831f, 0.142926f, -0.985370f , - -0.052635f, -0.026331f, -0.998267f , - 0.030365f, 0.053141f, -0.998125f , - 0.017682f, 0.185997f, -0.982391f , - 0.582525f, -0.483718f, -0.653208f , - 0.549110f, -0.570994f, -0.610281f , - 0.538022f, -0.671239f, -0.509873f , - 0.550747f, -0.607892f, -0.571966f , - 0.387527f, -0.243138f, -0.889217f , - 0.277725f, -0.353224f, -0.893365f , - 0.428556f, -0.304640f, -0.850608f , - 0.504722f, -0.209911f, -0.837373f , - 0.002332f, -0.616128f, -0.787643f , - 0.014249f, -0.501654f, -0.864951f , - 0.216032f, -0.418062f, -0.882357f , - 0.170977f, -0.531424f, -0.829672f , - 0.048821f, -0.322993f, -0.945141f , - 0.036726f, -0.410034f, -0.911330f , - 0.079500f, -0.418415f, -0.904770f , - 0.064127f, -0.387737f, -0.919537f , - -0.073898f, 0.712914f, -0.697347f , - -0.347471f, 0.707147f, -0.615798f , - -0.332997f, 0.649892f, -0.683194f , - -0.083605f, 0.675393f, -0.732703f , - -0.411481f, 0.867521f, -0.279446f , - -0.413151f, 0.875527f, -0.250516f , - -0.030116f, 0.958303f, -0.284162f , - -0.060314f, 0.954162f, -0.293151f , - 0.358057f, -0.849885f, -0.386640f , - 0.345431f, -0.912523f, -0.219043f , - 0.474834f, -0.859522f, -0.189091f , - 0.474459f, -0.816659f, -0.328567f , - -0.013454f, -0.992501f, 0.121490f , - -0.132679f, -0.986722f, 0.093681f , - -0.025159f, -0.999672f, 0.004799f , - 0.017267f, -0.999701f, 0.017332f , - 0.484460f, -0.142579f, 0.863116f , - 0.304048f, -0.056450f, 0.950983f , - -0.043131f, -0.192301f, 0.980388f , - 0.178461f, -0.286803f, 0.941220f , - -0.497186f, -0.866588f, -0.042795f , - -0.561638f, -0.820354f, -0.107622f , - -0.256316f, -0.961385f, -0.100205f , - -0.110404f, -0.993885f, 0.002107f , - -0.486429f, -0.466595f, -0.738699f , - -0.630593f, -0.422025f, -0.651342f , - -0.438879f, -0.219813f, -0.871245f , - -0.279948f, -0.203603f, -0.938176f , - -0.072416f, 0.022640f, 0.997118f , - 0.117995f, 0.207226f, 0.971151f , - 0.288903f, 0.256433f, 0.922376f , - 0.129922f, 0.096802f, 0.986788f , - 0.567100f, 0.425921f, 0.704975f , - 0.515461f, 0.417057f, 0.748574f , - 0.655031f, 0.457476f, 0.601374f , - 0.668666f, 0.435286f, 0.602836f , - 0.835136f, 0.543248f, 0.086197f , - 0.878158f, 0.470728f, 0.085166f , - 0.876648f, 0.454570f, 0.157655f , - 0.828295f, 0.543612f, 0.135698f , - 0.774067f, 0.543798f, -0.324198f , - 0.818443f, 0.541500f, -0.192170f , - 0.824666f, 0.554282f, -0.112679f , - 0.804141f, 0.544077f, -0.239453f , - 0.362377f, 0.051017f, -0.930634f , - 0.134348f, -0.035938f, -0.990282f , - 0.030719f, -0.013257f, -0.999440f , - 0.236731f, 0.042247f, -0.970656f , - -0.430961f, -0.071061f, -0.899568f , - -0.418758f, -0.004324f, -0.908087f , - -0.185054f, -0.024953f, -0.982411f , - -0.238546f, -0.079607f, -0.967863f , - 0.499037f, -0.653888f, -0.568676f , - 0.449121f, -0.673390f, -0.587228f , - 0.518594f, -0.183572f, -0.835082f , - 0.647205f, -0.153183f, -0.746767f , - 0.082707f, -0.763289f, -0.640742f , - -0.040592f, -0.678129f, -0.733821f , - 0.030582f, -0.234823f, -0.971557f , - 0.120703f, -0.405958f, -0.905886f , - 0.628474f, 0.357020f, -0.691055f , - 0.589646f, 0.271242f, -0.760753f , - 0.679954f, 0.310785f, -0.664135f , - 0.733529f, 0.381387f, -0.562565f , - 0.161982f, 0.320297f, -0.933366f , - 0.309653f, 0.354176f, -0.882425f , - 0.397295f, 0.274035f, -0.875821f , - 0.247651f, 0.266443f, -0.931492f , - -0.142325f, 0.296880f, -0.944249f , - -0.188555f, 0.313323f, -0.930739f , - -0.010802f, 0.336740f, -0.941536f , - -0.003861f, 0.353009f, -0.935612f , - -0.791015f, -0.079683f, -0.606586f , - -0.711475f, 0.034127f, -0.701882f , - -0.559937f, 0.051020f, -0.826963f , - -0.671883f, -0.042998f, -0.739408f , - -0.833732f, -0.115095f, 0.540041f , - -0.917318f, -0.153096f, 0.367544f , - -0.918021f, -0.245824f, 0.311139f , - -0.858355f, -0.218428f, 0.464237f , - -0.920030f, -0.339681f, -0.195351f , - -0.930245f, -0.360200f, -0.069996f , - -0.971185f, -0.227463f, -0.071138f , - -0.952462f, -0.194104f, -0.234819f , - -0.409400f, -0.000020f, -0.912355f , - -0.320932f, -0.027855f, -0.946692f , - -0.226081f, -0.034622f, -0.973493f , - -0.303540f, 0.013365f, -0.952725f , - -0.972010f, 0.029348f, -0.233099f , - -0.999845f, 0.017274f, 0.003537f , - -0.999440f, 0.016154f, 0.029317f , - -0.979307f, 0.025295f, -0.200792f , - -0.954212f, -0.048588f, -0.295160f , - -0.997833f, -0.030507f, -0.058302f , - -0.998271f, 0.042155f, -0.040960f , - -0.960694f, 0.011316f, -0.277378f , - -0.697670f, 0.102708f, 0.709018f , - -0.857533f, 0.075739f, 0.508823f , - -0.870683f, 0.105444f, 0.480408f , - -0.725822f, 0.163033f, 0.668284f , - -0.731046f, -0.159087f, 0.663523f , - -0.628243f, -0.276458f, 0.727243f , - -0.708230f, -0.378596f, 0.595882f , - -0.807055f, -0.208761f, 0.552341f , - 0.384764f, -0.276248f, 0.880706f , - 0.368619f, -0.348374f, 0.861833f , - 0.273984f, -0.164798f, 0.947510f , - 0.144956f, -0.024218f, 0.989142f , - 0.106463f, -0.458295f, 0.882401f , - 0.160818f, -0.525177f, 0.835660f , - -0.144839f, -0.558513f, 0.816753f , - -0.236776f, -0.511582f, 0.825967f , - -0.911105f, -0.341469f, 0.230840f , - -0.939180f, -0.235154f, 0.250288f , - -0.877549f, -0.250885f, 0.408614f , - -0.860189f, -0.348498f, 0.372321f , - 0.166799f, -0.734455f, 0.657841f , - 0.079321f, -0.857193f, 0.508849f , - -0.128856f, -0.808589f, 0.574090f , - -0.074132f, -0.658738f, 0.748711f , - 0.744941f, -0.660543f, -0.093520f , - 0.694004f, -0.713397f, -0.097069f , - 0.647705f, -0.761294f, 0.030157f , - 0.696959f, -0.712538f, 0.080850f , - 0.926850f, -0.346636f, 0.144198f , - 0.897717f, -0.415923f, 0.145303f , - 0.847029f, -0.455315f, 0.274282f , - 0.886256f, -0.373921f, 0.273374f , - 0.920953f, -0.267362f, 0.283485f , - 0.959028f, -0.244261f, 0.143534f , - 0.972896f, -0.176108f, 0.149866f , - 0.930201f, -0.203677f, 0.305354f , - 0.715668f, 0.035689f, -0.697529f , - 0.703688f, 0.043202f, -0.709195f , - 0.870048f, -0.060397f, -0.489254f , - 0.897678f, -0.054672f, -0.437247f , - 0.978879f, -0.069008f, -0.192440f , - 0.965291f, -0.100490f, -0.241071f , - 0.882532f, -0.081023f, -0.463220f , - 0.924627f, -0.085185f, -0.371225f , - -0.150276f, -0.018711f, -0.988467f , - 0.021610f, -0.002122f, -0.999764f , - 0.045789f, 0.009076f, -0.998910f , - -0.116584f, -0.003562f, -0.993174f , - 0.775244f, -0.342842f, 0.530524f , - 0.780493f, -0.287410f, 0.555181f , - 0.916288f, -0.232306f, 0.326266f , - 0.913593f, -0.275063f, 0.299480f , - 0.930027f, -0.098386f, -0.354077f , - 0.973297f, -0.032529f, -0.227235f , - 0.946302f, 0.058320f, -0.317980f , - 0.884472f, 0.017848f, -0.466252f , - 0.597856f, 0.074303f, -0.798153f , - 0.717725f, 0.087980f, -0.690746f , - 0.756438f, 0.122083f, -0.642571f , - 0.675405f, 0.091107f, -0.731797f , - -0.303865f, 0.410694f, -0.859649f , - -0.172514f, 0.374545f, -0.911019f , - -0.200984f, 0.450312f, -0.869957f , - -0.352406f, 0.481058f, -0.802741f , - -0.798765f, 0.565164f, -0.206311f , - -0.753078f, 0.556404f, -0.351125f , - -0.690593f, 0.687433f, -0.224761f , - -0.710907f, 0.698589f, -0.081148f , - 0.056475f, 0.108682f, -0.992471f , - 0.114187f, 0.096699f, -0.988742f , - 0.228133f, -0.086165f, -0.969810f , - 0.156308f, -0.049319f, -0.986476f , - 0.168969f, -0.032514f, -0.985085f , - 0.317788f, -0.080187f, -0.944765f , - 0.219282f, -0.007985f, -0.975629f , - 0.159009f, -0.008043f, -0.987244f , - -0.598667f, 0.191593f, -0.777746f , - -0.521133f, 0.094309f, -0.848249f , - -0.484946f, 0.002737f, -0.874540f , - -0.561640f, 0.087556f, -0.822736f , - -0.971796f, 0.158548f, -0.174573f , - -0.965234f, 0.260746f, -0.018292f , - -0.908319f, 0.395376f, -0.136507f , - -0.937506f, 0.275059f, -0.213133f , - -0.973969f, -0.100285f, -0.203290f , - -0.850935f, -0.351513f, -0.390318f , - -0.804187f, -0.245355f, -0.541372f , - -0.930111f, 0.007564f, -0.367200f , - -0.773357f, -0.002447f, -0.633966f , - -0.728189f, 0.056577f, -0.683037f , - -0.795983f, 0.193443f, -0.573577f , - -0.833624f, 0.173770f, -0.524285f , - -0.239027f, 0.229208f, -0.943573f , - -0.131349f, 0.176003f, -0.975587f , - -0.130269f, 0.222705f, -0.966143f , - -0.230991f, 0.279531f, -0.931937f , - -0.421669f, 0.193969f, -0.885760f , - -0.348685f, 0.196783f, -0.916349f , - -0.387257f, 0.267706f, -0.882250f , - -0.447589f, 0.267437f, -0.853312f , - 0.303835f, -0.187246f, -0.934143f , - 0.381302f, -0.313392f, -0.869709f , - 0.388037f, -0.307596f, -0.868799f , - 0.311581f, -0.178676f, -0.933270f , - 0.547875f, -0.573426f, -0.609110f , - 0.626075f, -0.630668f, -0.458572f , - 0.662144f, -0.545357f, -0.513957f , - 0.558761f, -0.497610f, -0.663454f , - -0.343434f, -0.075764f, -0.936116f , - -0.379968f, -0.122593f, -0.916840f , - -0.285573f, 0.155739f, -0.945618f , - -0.140572f, 0.225465f, -0.964057f , - 0.017652f, 0.377477f, -0.925851f , - -0.214843f, 0.267456f, -0.939314f , - -0.045817f, 0.393149f, -0.918333f , - 0.031751f, 0.410330f, -0.911384f , - 0.620569f, 0.469177f, -0.628304f , - 0.489625f, 0.468150f, -0.735597f , - 0.528292f, 0.463316f, -0.711510f , - 0.626731f, 0.470588f, -0.621092f , - 0.931127f, 0.234529f, -0.279282f , - 0.979384f, 0.195866f, -0.049438f , - 0.926461f, 0.375650f, 0.023584f , - 0.905816f, 0.407312f, -0.116595f , - 0.352034f, -0.935853f, -0.015821f , - 0.231525f, -0.970361f, 0.069255f , - 0.321534f, -0.925558f, 0.199895f , - 0.440405f, -0.894741f, 0.074044f , - 0.916836f, 0.092555f, 0.388389f , - 0.856777f, 0.058380f, 0.512372f , - 0.807653f, 0.227262f, 0.544104f , - 0.848059f, 0.305389f, 0.433052f , - 0.848336f, -0.174941f, -0.499722f , - 0.924701f, -0.245363f, -0.291075f , - 0.950014f, -0.183121f, -0.252865f , - 0.864358f, -0.126394f, -0.486734f , - -0.638736f, 0.293513f, -0.711243f , - -0.716573f, 0.310005f, -0.624836f , - -0.735197f, 0.315138f, -0.600144f , - -0.677754f, 0.288569f, -0.676297f , - -0.306922f, -0.807086f, 0.504392f , - -0.227337f, -0.632610f, 0.740353f , - -0.067623f, -0.690579f, 0.720089f , - -0.183436f, -0.856215f, 0.482957f , - -0.995535f, -0.083905f, -0.043253f , - -0.975663f, -0.168228f, -0.140644f , - -0.960426f, 0.001251f, -0.278533f , - -0.977666f, 0.079687f, -0.194469f , - -0.797775f, -0.353670f, 0.488337f , - -0.608290f, -0.477439f, 0.634063f , - -0.633256f, -0.637640f, 0.438637f , - -0.800184f, -0.491254f, 0.344057f , - 0.502996f, -0.164782f, -0.848435f , - 0.591173f, 0.073832f, -0.803159f , - 0.653364f, -0.359720f, -0.666121f , - -0.220207f, -0.961220f, 0.166029f , - -0.376481f, -0.922715f, 0.082818f , - -0.336499f, -0.941631f, -0.009940f , - -0.056762f, -0.998341f, -0.009668f , - 0.350289f, -0.182704f, 0.918649f , - 0.025190f, -0.639386f, 0.768473f , - 0.286424f, -0.719618f, 0.632544f , - 0.484806f, -0.265942f, 0.833209f , - 0.265209f, -0.122309f, 0.956402f , - 0.119673f, -0.283388f, 0.951509f , - 0.380215f, -0.103644f, 0.919073f , - 0.410799f, -0.066573f, 0.909292f , - 0.116278f, -0.256607f, 0.959496f , - -0.069991f, -0.288874f, 0.954805f , - -0.136218f, -0.369582f, 0.919159f , - -0.007013f, -0.320266f, 0.947302f , - -0.709430f, -0.247553f, 0.659869f , - -0.835921f, -0.220931f, 0.502420f , - -0.813642f, -0.341116f, 0.470773f , - -0.697634f, -0.359311f, 0.619841f , - -0.991963f, -0.117711f, -0.046415f , - -0.969795f, -0.072215f, -0.232986f , - -0.955925f, -0.221330f, -0.192925f , - -0.964081f, -0.264225f, -0.027080f , - -0.678031f, 0.090868f, -0.729395f , - -0.565946f, 0.139198f, -0.812606f , - -0.652374f, 0.024359f, -0.757506f , - -0.760564f, -0.053860f, -0.647025f , - 0.740920f, -0.267351f, -0.616085f , - 0.841201f, -0.330728f, -0.427784f , - 0.839233f, -0.259691f, -0.477754f , - 0.705356f, -0.225472f, -0.672038f , - 0.658546f, -0.710647f, 0.247586f , - 0.605568f, -0.742400f, 0.286583f , - 0.657367f, -0.690416f, 0.301985f , - 0.695937f, -0.658318f, 0.286863f , - 0.640830f, -0.758604f, 0.117718f , - 0.624996f, -0.770277f, 0.126706f , - 0.617397f, -0.737867f, 0.272715f , - 0.636600f, -0.733236f, 0.238967f , - 0.679716f, -0.354622f, -0.642051f , - 0.604490f, -0.268003f, -0.750177f , - 0.555860f, -0.381420f, -0.738606f , - 0.561959f, -0.448471f, -0.695037f , - 0.953997f, -0.280821f, 0.105019f , - 0.936040f, -0.342349f, 0.081403f , - 0.901208f, -0.372441f, 0.221614f , - 0.910545f, -0.326804f, 0.253193f , - 0.105374f, -0.390951f, 0.914360f , - -0.075249f, -0.358990f, 0.930303f , - -0.046221f, -0.303177f, 0.951813f , - 0.148489f, -0.332393f, 0.931378f , - -0.762093f, -0.164397f, 0.626249f , - -0.878102f, -0.089138f, 0.470097f , - -0.857212f, -0.075601f, 0.509385f , - -0.733014f, -0.143305f, 0.664946f , - -0.990535f, 0.119812f, -0.066969f , - -0.934489f, 0.189131f, -0.301595f , - -0.940415f, 0.169911f, -0.294532f , - -0.992504f, 0.108667f, -0.055916f , - -0.605043f, 0.262132f, -0.751805f , - -0.502259f, 0.245654f, -0.829090f , - -0.481435f, 0.230994f, -0.845495f , - -0.597571f, 0.245486f, -0.763312f , - -0.103106f, 0.154894f, -0.982536f , - -0.137156f, 0.157738f, -0.977910f , - 0.107596f, 0.097006f, -0.989451f , - 0.131817f, 0.096703f, -0.986546f , - -0.105593f, 0.062665f, -0.992433f , - -0.076890f, 0.086790f, -0.993255f , - -0.081450f, 0.036744f, -0.996000f , - -0.097546f, 0.031053f, -0.994746f , - 0.064035f, -0.997920f, -0.007384f , - -0.007246f, -0.999957f, -0.005825f , - 0.003633f, -0.786529f, -0.617543f , - 0.049046f, -0.812425f, -0.580999f , - -0.164775f, -0.890134f, -0.424865f , - -0.199532f, -0.898155f, -0.391797f , - -0.170122f, -0.773470f, -0.610576f , - -0.126187f, -0.740785f, -0.659783f , - -0.326224f, -0.732572f, -0.597424f , - -0.328624f, -0.831839f, -0.447270f , - -0.145624f, -0.146224f, -0.978474f , - -0.100758f, -0.131462f, -0.986187f , - -0.119489f, -0.221557f, -0.967799f , - -0.154132f, -0.231969f, -0.960434f , - -0.083067f, -0.224514f, -0.970924f , - -0.060983f, -0.283523f, -0.957024f , - -0.059166f, -0.414120f, -0.908297f , - -0.079885f, -0.341722f, -0.936400f , - -0.004380f, -0.422645f, -0.906285f , - -0.042635f, -0.454838f, -0.889553f , - -0.018774f, -0.580891f, -0.813765f , - 0.021693f, -0.550822f, -0.834341f , - -0.046486f, 0.153284f, -0.987088f , - -0.055812f, 0.167408f, -0.984307f , - -0.059398f, 0.099305f, -0.993283f , - -0.054571f, 0.085107f, -0.994876f , - -0.137364f, 0.139268f, -0.980681f , - -0.187036f, 0.105146f, -0.976710f , - -0.149762f, -0.009565f, -0.988676f , - -0.098856f, 0.029939f, -0.994651f , - -0.580099f, -0.017468f, -0.814358f , - -0.607665f, -0.114367f, -0.785916f , - -0.501778f, -0.149797f, -0.851927f , - -0.500275f, -0.044285f, -0.864733f , - 0.015979f, -0.229654f, -0.973141f , - 0.020390f, -0.120976f, -0.992446f , - -0.007367f, -0.120674f, -0.992665f , - -0.015658f, -0.220218f, -0.975325f , - 0.000079f, 0.237351f, -0.971424f , - 0.028361f, 0.133523f, -0.990640f , - 0.041185f, 0.131541f, -0.990455f , - 0.004902f, 0.220353f, -0.975408f , - 0.128615f, 0.124601f, -0.983836f , - 0.295648f, 0.045130f, -0.954230f , - 0.306310f, 0.046020f, -0.950819f , - 0.113209f, 0.122259f, -0.986021f , - 0.630878f, -0.203839f, -0.748627f , - 0.611785f, -0.243568f, -0.752591f , - 0.667817f, -0.393938f, -0.631532f , - 0.712889f, -0.351454f, -0.606852f , - 0.084334f, 0.108705f, -0.990490f , - -0.007967f, 0.196970f, -0.980377f , - 0.118576f, 0.136055f, -0.983580f , - 0.127276f, 0.095651f, -0.987244f , - -0.241039f, 0.205837f, -0.948436f , - -0.152656f, 0.260770f, -0.953255f , - 0.096919f, 0.179128f, -0.979040f , - 0.010602f, 0.169414f, -0.985488f , - -0.717432f, -0.050862f, -0.694769f , - -0.670587f, 0.022476f, -0.741491f , - -0.622959f, 0.093590f, -0.776635f , - -0.676818f, 0.052877f, -0.734249f , - -0.411151f, 0.280070f, -0.867477f , - -0.438528f, 0.233543f, -0.867843f , - -0.556186f, 0.201242f, -0.806324f , - -0.528937f, 0.249927f, -0.811025f , - 0.092546f, 0.075089f, -0.992873f , - 0.149306f, 0.034100f, -0.988203f , - 0.089186f, 0.140786f, -0.986015f , - 0.052571f, 0.163796f, -0.985092f , - 0.339730f, -0.184935f, -0.922162f , - 0.249343f, -0.079045f, -0.965184f , - 0.231370f, -0.077159f, -0.969801f , - 0.311146f, -0.169316f, -0.935158f , - 0.355032f, -0.410751f, -0.839783f , - 0.250065f, -0.326363f, -0.911567f , - 0.244666f, -0.168997f, -0.954766f , - 0.356566f, -0.268118f, -0.894971f , - 0.239309f, -0.683023f, -0.690080f , - 0.192391f, -0.756037f, -0.625615f , - 0.361491f, -0.729288f, -0.580916f , - 0.379837f, -0.647412f, -0.660743f , - -0.287374f, -0.956805f, 0.044061f , - -0.228587f, -0.973516f, -0.003854f , - -0.250935f, -0.967045f, -0.043070f , - -0.286728f, -0.957041f, -0.043128f , - -0.740451f, 0.008676f, -0.672055f , - -0.741366f, -0.032612f, -0.670308f , - -0.709974f, 0.042114f, -0.702968f , - -0.725487f, 0.049519f, -0.686452f , - -0.742158f, -0.175125f, -0.646941f , - -0.774190f, -0.216154f, -0.594901f , - -0.782449f, -0.256351f, -0.567502f , - -0.762294f, -0.196503f, -0.616680f , - -0.844585f, -0.427630f, -0.322192f , - -0.761547f, -0.517144f, -0.390652f , - -0.759728f, -0.473176f, -0.446003f , - -0.832641f, -0.388013f, -0.395164f , - -0.534947f, -0.551391f, -0.640157f , - -0.487921f, -0.608510f, -0.625819f , - -0.351506f, -0.615106f, -0.705754f , - -0.389626f, -0.564043f, -0.728044f , - -0.345221f, -0.750428f, -0.563631f , - -0.391912f, -0.733878f, -0.554822f , - -0.376981f, -0.817454f, -0.435493f , - -0.339921f, -0.822531f, -0.455956f , - -0.552505f, -0.798250f, -0.239866f , - -0.604927f, -0.764432f, -0.222953f , - -0.648141f, -0.760783f, -0.033509f , - -0.602238f, -0.795604f, -0.065749f , - -0.759375f, -0.650423f, 0.017281f , - -0.693147f, -0.717137f, 0.072539f , - -0.719512f, -0.694165f, -0.020921f , - -0.746504f, -0.663927f, -0.043958f , - -0.063018f, -0.979083f, -0.193456f , - -0.011257f, -0.992063f, -0.125240f , - -0.138789f, -0.989475f, -0.040957f , - -0.143511f, -0.984520f, -0.100622f , - 0.182573f, -0.896463f, -0.403759f , - 0.086201f, -0.883947f, -0.459572f , - 0.050922f, -0.922460f, -0.382720f , - 0.096421f, -0.931770f, -0.350011f , - -0.022254f, -0.879499f, -0.475381f , - -0.041927f, -0.882112f, -0.469170f , - -0.034350f, -0.927385f, -0.372528f , - -0.021001f, -0.925097f, -0.379149f , - -0.103496f, -0.885495f, -0.452977f , - -0.192219f, -0.873652f, -0.446973f , - -0.187756f, -0.894190f, -0.406414f , - -0.115459f, -0.913393f, -0.390362f , - -0.580222f, -0.785246f, -0.216173f , - -0.550676f, -0.827899f, -0.106488f , - -0.449764f, -0.871722f, -0.194456f , - -0.449761f, -0.842198f, -0.297352f , - -0.186738f, -0.971775f, 0.144160f , - -0.038811f, -0.982146f, 0.184073f , - -0.022712f, -0.994934f, 0.097927f , - -0.143979f, -0.989261f, 0.025162f , - 0.509415f, -0.860420f, -0.013177f , - 0.525514f, -0.845152f, -0.097741f , - 0.426541f, -0.900036f, -0.089432f , - 0.377037f, -0.925811f, -0.026796f , - 0.556558f, -0.801605f, -0.218338f , - 0.588098f, -0.773831f, -0.235217f , - 0.563620f, -0.806903f, -0.176751f , - 0.524052f, -0.836711f, -0.159013f , - 0.695465f, -0.672130f, -0.254106f , - 0.664890f, -0.691668f, -0.281987f , - 0.649469f, -0.726412f, -0.224755f , - 0.678795f, -0.706934f, -0.198700f , - 0.328948f, 0.130186f, -0.935331f , - 0.262523f, 0.101265f, -0.959597f , - 0.179291f, 0.152015f, -0.971981f , - 0.247284f, 0.188302f, -0.950470f , - -0.025597f, 0.039629f, -0.998887f , - 0.068287f, 0.015272f, -0.997549f , - -0.027956f, 0.003968f, -0.999601f , - -0.145259f, 0.027858f, -0.989001f , - 0.368480f, -0.197407f, -0.908434f , - 0.438154f, -0.295109f, -0.849077f , - 0.380451f, -0.332402f, -0.862998f , - 0.306756f, -0.227641f, -0.924165f , - 0.498329f, -0.566232f, -0.656543f , - 0.559901f, -0.547875f, -0.621566f , - 0.597323f, -0.649336f, -0.470711f , - 0.550401f, -0.658225f, -0.513613f , - 0.738485f, -0.391540f, -0.548941f , - 0.718071f, -0.387395f, -0.578187f , - 0.718692f, -0.510831f, -0.471734f , - 0.742381f, -0.510331f, -0.434089f , - 0.515041f, -0.109019f, -0.850204f , - 0.441085f, -0.039903f, -0.896578f , - 0.496367f, -0.021109f, -0.867856f , - 0.571945f, -0.088861f, -0.815464f , - 0.611659f, -0.071086f, -0.787921f , - 0.624238f, -0.112645f, -0.773070f , - 0.626786f, -0.077101f, -0.775368f , - 0.636353f, -0.059230f, -0.769121f , - -0.068022f, -0.674447f, -0.735183f , - -0.034697f, -0.642549f, -0.765459f , - -0.064212f, -0.512429f, -0.856325f , - -0.141265f, -0.524457f, -0.839636f , - -0.093498f, -0.837917f, -0.537730f , - -0.078284f, -0.851431f, -0.518591f , - -0.066510f, -0.829983f, -0.553809f , - -0.067198f, -0.806232f, -0.587771f , - -0.131686f, -0.690567f, -0.711180f , - -0.136111f, -0.738678f, -0.660173f , - -0.118921f, -0.783066f, -0.610463f , - -0.091069f, -0.729377f, -0.678023f , - 0.015316f, -0.544237f, -0.838792f , - -0.014021f, -0.617477f, -0.786464f , - -0.004268f, -0.558815f, -0.829282f , - 0.025768f, -0.536510f, -0.843501f , - -0.093751f, -0.457018f, -0.884503f , - -0.050592f, -0.436501f, -0.898280f , - -0.080511f, -0.572606f, -0.815868f , - -0.118146f, -0.562820f, -0.818092f , - 0.115199f, 0.076623f, -0.990383f , - 0.094065f, 0.110621f, -0.989401f , - 0.096593f, 0.246629f, -0.964284f , - 0.108893f, 0.204067f, -0.972882f , - 0.031817f, 0.266433f, -0.963328f , - 0.010789f, 0.134504f, -0.990854f , - -0.005883f, 0.129558f, -0.991554f , - 0.007261f, 0.254251f, -0.967111f , - 0.080877f, -0.137948f, -0.987132f , - 0.047467f, -0.125581f, -0.990947f , - 0.025908f, -0.197973f, -0.979865f , - 0.053551f, -0.213715f, -0.975427f , - -0.354691f, -0.041598f, -0.934058f , - -0.336780f, -0.046975f, -0.940411f , - -0.355059f, -0.100837f, -0.929390f , - -0.325299f, -0.101300f, -0.940170f , - -0.261269f, -0.110415f, -0.958930f , - -0.168153f, -0.058156f, -0.984044f , - -0.130507f, -0.044787f, -0.990435f , - -0.225347f, -0.093161f, -0.969814f , - -0.129343f, 0.211454f, -0.968792f , - -0.199906f, 0.123817f, -0.971960f , - -0.293272f, 0.108967f, -0.949799f , - -0.233872f, 0.171239f, -0.957069f , - 0.065535f, 0.258834f, -0.963696f , - 0.093053f, 0.359436f, -0.928519f , - 0.129404f, 0.359476f, -0.924138f , - 0.101884f, 0.263419f, -0.959286f , - 0.384034f, 0.232071f, -0.893678f , - 0.318661f, 0.213433f, -0.923527f , - 0.381522f, 0.142476f, -0.913314f , - 0.437109f, 0.236174f, -0.867847f , - -0.146719f, -0.333572f, -0.931238f , - -0.197295f, -0.388825f, -0.899939f , - -0.085463f, 0.220188f, -0.971706f , - -0.061640f, 0.274062f, -0.959735f , - -0.062257f, 0.180550f, -0.981594f , - -0.094573f, 0.108171f, -0.989624f , - 0.000399f, 0.395690f, -0.918384f , - -0.034419f, 0.429871f, -0.902234f , - -0.044800f, 0.413825f, -0.909253f , - -0.015334f, 0.355292f, -0.934630f , - -0.173081f, 0.472679f, -0.864070f , - -0.239137f, 0.484947f, -0.841213f , - -0.258224f, 0.516722f, -0.816283f , - -0.195281f, 0.491266f, -0.848836f , - -0.523770f, 0.498929f, -0.690459f , - -0.532000f, 0.392443f, -0.750310f , - -0.528677f, 0.339160f, -0.778120f , - -0.526923f, 0.463292f, -0.712539f , - -0.519655f, 0.568583f, -0.637708f , - -0.520674f, 0.527860f, -0.671016f , - -0.519736f, 0.557418f, -0.647426f , - -0.524096f, 0.567924f, -0.634654f , - -0.422005f, 0.616066f, -0.665112f , - -0.391344f, 0.534127f, -0.749372f , - -0.491797f, 0.496299f, -0.715418f , - -0.484595f, 0.569795f, -0.663703f , - -0.308141f, 0.656202f, -0.688802f , - -0.267638f, 0.654428f, -0.707173f , - -0.205976f, 0.644489f, -0.736347f , - -0.239377f, 0.662204f, -0.710059f , - -0.060975f, 0.702118f, -0.709445f , - -0.101958f, 0.630509f, -0.769456f , - -0.159711f, 0.659673f, -0.734387f , - -0.119927f, 0.695315f, -0.708628f , - 0.054031f, 0.739205f, -0.671309f , - 0.090613f, 0.731940f, -0.675317f , - 0.091818f, 0.684352f, -0.723348f , - 0.063722f, 0.696051f, -0.715159f , - 0.162587f, 0.708002f, -0.687240f , - 0.174067f, 0.694530f, -0.698090f , - 0.162235f, 0.628707f, -0.760531f , - 0.158636f, 0.650038f, -0.743159f , - 0.192093f, 0.688297f, -0.699534f , - 0.160188f, 0.702743f, -0.693176f , - 0.147505f, 0.626205f, -0.765578f , - 0.174676f, 0.617764f, -0.766717f , - -0.349165f, 0.530270f, -0.772591f , - -0.210023f, 0.079252f, -0.974479f , - -0.389456f, -0.093995f, -0.916236f , - -0.525082f, 0.333516f, -0.782979f , - -0.107369f, 0.994178f, -0.009004f , - -0.099887f, 0.994968f, -0.007799f , - -0.086834f, 0.812957f, -0.575814f , - -0.095958f, 0.793747f, -0.600631f , - -0.149987f, 0.988627f, -0.010961f , - -0.182222f, 0.983173f, -0.012908f , - -0.092914f, 0.596122f, -0.797499f , - -0.081622f, 0.693056f, -0.716248f , - -0.334778f, 0.942224f, -0.011724f , - -0.479211f, 0.877667f, -0.007607f , - -0.207918f, 0.410116f, -0.888018f , - -0.167301f, 0.471981f, -0.865589f , - -0.423002f, 0.681640f, -0.597023f , - -0.463023f, 0.751442f, -0.470048f , - -0.420553f, 0.593241f, -0.686440f , - -0.365352f, 0.476416f, -0.799716f , - -0.411021f, 0.855753f, -0.314243f , - -0.362133f, 0.880346f, -0.306352f , - -0.336069f, 0.784437f, -0.521265f , - -0.377376f, 0.753630f, -0.538173f , - -0.148682f, 0.942115f, -0.300520f , - -0.061790f, 0.951639f, -0.300940f , - -0.061425f, 0.860713f, -0.505372f , - -0.138008f, 0.851206f, -0.506362f , - 0.124160f, 0.956111f, -0.265397f , - 0.163967f, 0.954650f, -0.248511f , - 0.136268f, 0.887220f, -0.440762f , - 0.096198f, 0.880623f, -0.463950f , - 0.230248f, 0.940137f, -0.251253f , - 0.248044f, 0.932157f, -0.263736f , - 0.229069f, 0.862375f, -0.451482f , - 0.214668f, 0.871220f, -0.441468f , - 0.321802f, 0.919192f, -0.227000f , - 0.295570f, 0.933493f, -0.203048f , - 0.270707f, 0.887792f, -0.372213f , - 0.281214f, 0.868724f, -0.407721f , - 0.598181f, -0.706252f, 0.378665f , - 0.595394f, -0.727751f, 0.340417f , - 0.583223f, -0.805977f, -0.101258f , - 0.584602f, -0.807481f, -0.078830f , - -0.357793f, -0.851635f, -0.383017f , - -0.328617f, -0.875861f, -0.353380f , - -0.425097f, -0.805480f, -0.412909f , - -0.477331f, -0.768272f, -0.426513f , - -0.862016f, -0.069835f, -0.502047f , - -0.836941f, -0.154433f, -0.525052f , - -0.762073f, -0.216425f, -0.610249f , - -0.802526f, -0.102631f, -0.587723f , - -0.910723f, 0.366570f, -0.190289f , - -0.916359f, 0.386814f, -0.103254f , - -0.963543f, 0.255400f, -0.079726f , - -0.961132f, 0.238303f, -0.139417f , - -0.940835f, 0.317012f, -0.119723f , - -0.936732f, 0.324138f, -0.132162f , - -0.970208f, 0.225558f, -0.088426f , - -0.971771f, 0.222941f, -0.077194f , - -0.928496f, 0.280784f, -0.243012f , - -0.936108f, 0.289585f, -0.199605f , - -0.967753f, 0.170261f, -0.185646f , - -0.959066f, 0.157704f, -0.235207f , - -0.862870f, 0.257177f, -0.435103f , - -0.880749f, 0.299806f, -0.366603f , - -0.944580f, 0.160440f, -0.286403f , - -0.939380f, 0.131896f, -0.316494f , - -0.546774f, -0.058777f, -0.835215f , - -0.581280f, 0.004051f, -0.813693f , - -0.691567f, -0.092720f, -0.716337f , - -0.656937f, -0.144835f, -0.739903f , - -0.471181f, -0.543488f, -0.694701f , - -0.513797f, -0.455858f, -0.726778f , - -0.570450f, -0.487713f, -0.660850f , - -0.503752f, -0.602654f, -0.618903f , - -0.318164f, -0.778403f, -0.541165f , - -0.275488f, -0.824944f, -0.493533f , - -0.340986f, -0.867608f, -0.361919f , - -0.339158f, -0.856778f, -0.388463f , - 0.821905f, 0.355105f, 0.445390f , - 0.814296f, 0.528951f, 0.239023f , - 0.881575f, 0.349570f, 0.317216f , - 0.882376f, 0.263790f, 0.389651f , - 0.764888f, -0.175206f, 0.619878f , - 0.602857f, -0.303491f, 0.737873f , - 0.565381f, -0.138110f, 0.813185f , - 0.669924f, -0.087434f, 0.737264f , - 0.017682f, 0.546349f, 0.837371f , - 0.181879f, 0.352680f, 0.917898f , - 0.253379f, 0.118718f, 0.960055f , - 0.071344f, 0.331584f, 0.940724f , - -0.286868f, 0.957852f, 0.015045f , - -0.247362f, 0.896765f, 0.366913f , - -0.241603f, 0.918914f, 0.311809f , - -0.281445f, 0.959575f, 0.002051f , - -0.153878f, 0.752603f, -0.640243f , - -0.106373f, 0.824797f, -0.555333f , - 0.112510f, 0.084644f, -0.990039f , - 0.039956f, 0.222599f, -0.974091f , - 0.321335f, -0.426781f, -0.845341f , - 0.237645f, -0.268971f, -0.933370f , - 0.263563f, -0.262276f, -0.928303f , - 0.330334f, -0.415509f, -0.847486f , - 0.949898f, -0.123467f, -0.287140f , - 0.852486f, -0.191916f, -0.486247f , - 0.777792f, -0.442795f, -0.446064f , - 0.862024f, -0.441063f, -0.249757f , - 0.371156f, 0.672416f, 0.640391f , - 0.273460f, 0.584614f, 0.763837f , - 0.127340f, 0.710522f, 0.692057f , - 0.286076f, 0.699225f, 0.655168f , - 0.152320f, 0.041697f, -0.987451f , - 0.118311f, 0.412308f, -0.903330f , - 0.014644f, 0.382703f, -0.923755f , - 0.080465f, 0.029190f, -0.996330f , - 0.272519f, -0.027793f, -0.961749f , - 0.187724f, -0.038265f, -0.981476f , - 0.153901f, -0.151406f, -0.976417f , - 0.290828f, -0.173662f, -0.940883f , - 0.702583f, 0.644718f, 0.301189f , - 0.727478f, 0.482638f, 0.487684f , - 0.445378f, 0.895323f, 0.005931f , - 0.450419f, 0.890732f, 0.060984f , - 0.419331f, 0.903940f, 0.083994f , - 0.414677f, 0.909945f, -0.006574f , - 0.728249f, 0.367381f, -0.578519f , - 0.732814f, 0.426106f, -0.530488f , - 0.684023f, 0.421449f, -0.595394f , - 0.695094f, 0.325426f, -0.641047f , - 0.716135f, 0.585695f, -0.379621f , - 0.769413f, 0.503127f, -0.393531f , - 0.804112f, 0.487117f, -0.340765f , - 0.772135f, 0.590180f, -0.235574f , - 0.815921f, 0.577995f, 0.013952f , - 0.815515f, 0.578656f, 0.009588f , - 0.770042f, 0.637892f, 0.011369f , - 0.776788f, 0.629571f, 0.015517f , - 0.919350f, 0.392947f, 0.019708f , - 0.915568f, 0.401770f, 0.017790f , - 0.930898f, 0.365127f, 0.010526f , - 0.933663f, 0.357831f, 0.015199f , - 0.915080f, 0.395832f, -0.077105f , - 0.921467f, 0.386953f, -0.034157f , - 0.925413f, 0.378882f, 0.007687f , - 0.904697f, 0.425222f, -0.026633f , - 0.887379f, 0.391934f, -0.242787f , - 0.893412f, 0.410370f, -0.182786f , - 0.867118f, 0.465197f, -0.178041f , - 0.856883f, 0.459221f, -0.234237f , - 0.845632f, 0.401511f, -0.351705f , - 0.849028f, 0.420503f, -0.319888f , - 0.836596f, 0.433743f, -0.334626f , - 0.838649f, 0.411352f, -0.357011f , - 0.806467f, 0.253820f, -0.534029f , - 0.827151f, 0.285698f, -0.483939f , - 0.820619f, 0.317049f, -0.475462f , - 0.798602f, 0.291843f, -0.526368f , - 0.746068f, 0.429988f, -0.508423f , - 0.751384f, 0.387315f, -0.534237f , - 0.755687f, 0.371849f, -0.539134f , - 0.758215f, 0.404052f, -0.511715f , - 0.794239f, 0.428163f, -0.431117f , - 0.804670f, 0.386216f, -0.450936f , - 0.822378f, 0.383747f, -0.420038f , - 0.811504f, 0.428116f, -0.397715f , - 0.944745f, 0.085104f, -0.316565f , - 0.921613f, 0.098118f, -0.375504f , - 0.884379f, 0.263433f, -0.385326f , - 0.908807f, 0.251821f, -0.332649f , - 0.273432f, -0.904897f, -0.326184f , - 0.515285f, -0.742654f, -0.427722f , - 0.794539f, -0.530309f, -0.295770f , - 0.589865f, -0.767180f, -0.251980f , - 0.357583f, -0.795814f, -0.488686f , - 0.330302f, -0.877267f, -0.348287f , - 0.605281f, -0.698014f, -0.382639f , - 0.585187f, -0.632818f, -0.507048f , - 0.801930f, 0.013369f, -0.597268f , - 0.879389f, 0.024891f, -0.475453f , - 0.853605f, 0.182747f, -0.487813f , - 0.783268f, 0.167910f, -0.598579f , - 0.413862f, 0.207480f, -0.886380f , - 0.425152f, 0.426404f, -0.798389f , - 0.310960f, 0.425213f, -0.849999f , - 0.319428f, 0.160952f, -0.933842f , - 0.685842f, 0.679539f, 0.260473f , - 0.700685f, 0.646788f, 0.301173f , - 0.628839f, 0.600568f, 0.493841f , - 0.618917f, 0.647016f, 0.445323f , - 0.288293f, 0.892804f, -0.346105f , - 0.436470f, 0.830653f, -0.345701f , - 0.438064f, 0.878294f, -0.191574f , - 0.302587f, 0.936700f, -0.176166f , - 0.069640f, 0.996889f, -0.036914f , - 0.124255f, 0.986941f, 0.102508f , - 0.022386f, 0.982793f, 0.183349f , - -0.059297f, 0.998151f, 0.013343f , - 0.064071f, -0.408948f, -0.910306f , - 0.027451f, -0.464274f, -0.885266f , - -0.178139f, -0.423189f, -0.888357f , - -0.128995f, -0.405528f, -0.904935f , - -0.104511f, -0.304849f, -0.946649f , - -0.015114f, -0.348116f, -0.937330f , - -0.075434f, -0.451408f, -0.889123f , - -0.167965f, -0.406316f, -0.898162f , - -0.224346f, -0.421184f, -0.878791f , - -0.168576f, -0.516468f, -0.839549f , - -0.253032f, -0.492345f, -0.832809f , - -0.252270f, -0.424133f, -0.869753f , - 0.360236f, 0.135069f, -0.923031f , - 0.234928f, 0.014048f, -0.971911f , - 0.129461f, 0.038377f, -0.990842f , - 0.254439f, 0.132012f, -0.958036f , - 0.297479f, 0.060768f, -0.952793f , - 0.273022f, -0.014927f, -0.961892f , - 0.236488f, 0.068956f, -0.969184f , - 0.249600f, 0.093080f, -0.963865f , - 0.224383f, 0.041251f, -0.973628f , - 0.234066f, 0.079581f, -0.968958f , - 0.223100f, 0.034400f, -0.974188f , - 0.289129f, -0.229755f, -0.929310f , - 0.275020f, -0.213200f, -0.937502f , - 0.276286f, -0.214694f, -0.936788f , - 0.273650f, -0.234936f, -0.932695f , - 0.305284f, -0.208554f, -0.929143f , - 0.300624f, -0.209408f, -0.930470f , - 0.281963f, -0.244592f, -0.927724f , - 0.296306f, -0.246609f, -0.922706f , - 0.652058f, -0.159821f, -0.741132f , - 0.553534f, -0.138897f, -0.821163f , - 0.334255f, -0.242280f, -0.910809f , - 0.399908f, -0.204298f, -0.893496f , - 0.863958f, 0.498301f, 0.072618f , - 0.887212f, 0.448240f, 0.109253f , - 0.858065f, 0.495326f, 0.135562f , - 0.855043f, 0.508856f, 0.099833f , - 0.987783f, 0.155815f, -0.002419f , - 0.956935f, 0.279372f, -0.078911f , - 0.959069f, 0.229514f, -0.165860f , - 0.994246f, 0.086600f, -0.063056f , - 0.892421f, -0.086655f, -0.442804f , - 0.853312f, -0.102565f, -0.511214f , - 0.870709f, 0.481805f, -0.098636f , - 0.901797f, 0.407582f, -0.143663f , - 0.877989f, 0.340653f, -0.336289f , - 0.864622f, 0.428900f, -0.261673f , - 0.317276f, 0.085033f, -0.944513f , - 0.286451f, 0.093111f, -0.953560f , - 0.282000f, 0.094030f, -0.954795f , - 0.293566f, 0.071167f, -0.953286f , - 0.327486f, -0.008118f, -0.944821f , - 0.280891f, 0.026618f, -0.959370f , - 0.271564f, 0.016069f, -0.962286f , - 0.328083f, -0.001794f, -0.944647f , - 0.316678f, 0.053203f, -0.947040f , - 0.356850f, 0.025374f, -0.933817f , - 0.300927f, 0.034855f, -0.953010f , - 0.299080f, 0.047909f, -0.953025f , - 0.505033f, -0.105066f, -0.856681f , - 0.492936f, -0.083721f, -0.866028f , - 0.478687f, -0.080230f, -0.874312f , - 0.477413f, -0.115452f, -0.871061f , - 0.313351f, -0.154765f, -0.936941f , - 0.298620f, -0.154341f, -0.941809f , - 0.664952f, 0.192403f, -0.721678f , - 0.533381f, 0.120394f, -0.837264f , - 0.455006f, 0.090587f, -0.885869f , - 0.529003f, 0.171869f, -0.831034f , - 0.763351f, 0.527363f, -0.373073f , - 0.753524f, 0.491007f, -0.437166f , - 0.819759f, 0.494487f, -0.288925f , - 0.804018f, 0.544760f, -0.238309f , - 0.249021f, 0.839769f, -0.482469f , - 0.187696f, 0.952279f, -0.240695f , - 0.308301f, 0.907936f, -0.283908f , - 0.258641f, 0.832146f, -0.490549f , - 0.531918f, 0.153226f, -0.832817f , - 0.370192f, 0.493254f, -0.787184f , - 0.473240f, 0.551108f, -0.687259f , - 0.607859f, 0.181927f, -0.772923f , - 0.831665f, -0.048325f, -0.553171f , - 0.839343f, 0.395019f, -0.373448f , - 0.957828f, -0.254317f, -0.133744f , - 0.920232f, -0.279492f, -0.273967f , - 0.596701f, -0.515204f, -0.615234f , - 0.666543f, -0.543192f, -0.510552f , - 0.778907f, -0.530072f, -0.335153f , - 0.706550f, -0.543353f, -0.453381f , - -0.365754f, -0.827221f, -0.426532f , - -0.270296f, -0.791172f, -0.548623f , - -0.259970f, -0.810376f, -0.525077f , - -0.353184f, -0.835704f, -0.420548f , - -0.474987f, -0.836341f, -0.273715f , - -0.317327f, -0.748007f, -0.582914f , - -0.414156f, -0.781113f, -0.467265f , - -0.681599f, -0.681834f, -0.265565f , - -0.246503f, -0.875620f, -0.415362f , - -0.155004f, -0.958079f, -0.240953f , - 0.302902f, -0.582038f, -0.754640f , - 0.304239f, -0.643712f, -0.702192f , - 0.180777f, -0.695829f, -0.695084f , - 0.176135f, -0.659773f, -0.730532f , - -0.221495f, -0.581407f, -0.782883f , - -0.243335f, -0.482503f, -0.841415f , - -0.316869f, -0.507605f, -0.801206f , - -0.281742f, -0.610055f, -0.740577f , - 0.681318f, -0.187925f, -0.707453f , - 0.622648f, -0.170790f, -0.763636f , - 0.707919f, -0.160443f, -0.687828f , - 0.825126f, -0.181320f, -0.535062f , - 0.523621f, -0.692986f, -0.495572f , - 0.645497f, -0.698796f, -0.308250f , - 0.392789f, -0.888359f, -0.237770f , - 0.348701f, -0.833981f, -0.427649f , - 0.126921f, -0.840259f, -0.527121f , - -0.094339f, -0.780724f, -0.617713f , - -0.000324f, -0.119945f, -0.992780f , - 0.243676f, -0.127829f, -0.961396f , - 0.309691f, -0.207423f, -0.927937f , - 0.048605f, -0.263605f, -0.963405f , - 0.038431f, -0.323666f, -0.945391f , - 0.383791f, -0.068036f, -0.920910f , - -0.049033f, -0.147351f, -0.987868f , - -0.001298f, -0.255232f, -0.966879f , - -0.051357f, -0.455918f, -0.888539f , - -0.043252f, -0.398600f, -0.916104f , - -0.016257f, -0.390876f, -0.920300f , - -0.086489f, -0.470149f, -0.878339f , - 0.263689f, -0.086486f, -0.960723f , - 0.302402f, -0.019259f, -0.952986f , - 0.231629f, -0.041899f, -0.971901f , - 0.167992f, -0.150070f, -0.974299f , - 0.569110f, -0.065687f, -0.819633f , - 0.546593f, -0.045103f, -0.836183f , - 0.536280f, -0.113883f, -0.836322f , - 0.550701f, -0.168088f, -0.817603f , - 0.153656f, -0.562256f, -0.812563f , - 0.239913f, -0.487192f, -0.839694f , - 0.302419f, -0.534294f, -0.789349f , - 0.226549f, -0.602221f, -0.765510f , - -0.024518f, -0.754822f, -0.655472f , - 0.018214f, -0.738484f, -0.674025f , - 0.000004f, -0.714447f, -0.699689f , - -0.016646f, -0.730405f, -0.682812f , - -0.088402f, -0.633604f, -0.768590f , - -0.071807f, -0.674634f, -0.734652f , - -0.014312f, -0.643577f, -0.765247f , - -0.042018f, -0.621270f, -0.782469f , - -0.283792f, -0.615134f, -0.735577f , - -0.254770f, -0.540988f, -0.801514f , - -0.241217f, -0.505699f, -0.828301f , - -0.309953f, -0.548912f, -0.776289f , - -0.345498f, -0.791868f, -0.503563f , - -0.349381f, -0.758612f, -0.549946f , - -0.405926f, -0.753589f, -0.517037f , - -0.391409f, -0.789495f, -0.472754f , - 0.120678f, -0.593851f, -0.795473f , - 0.072606f, -0.581268f, -0.810467f , - 0.145535f, -0.511560f, -0.846833f , - 0.269793f, -0.510157f, -0.816671f , - 0.054206f, -0.585439f, -0.808902f , - 0.095992f, -0.556100f, -0.825554f , - 0.210837f, -0.421053f, -0.882192f , - 0.135551f, -0.454320f, -0.880465f , - -0.186978f, -0.625347f, -0.757615f , - -0.145305f, -0.612892f, -0.776692f , - -0.070181f, -0.492119f, -0.867695f , - -0.130777f, -0.499087f, -0.856627f , - -0.434696f, -0.835400f, -0.336373f , - -0.488547f, -0.837431f, -0.245012f , - -0.350860f, -0.816230f, -0.458984f , - -0.375354f, -0.799176f, -0.469497f , - -0.426597f, -0.843239f, -0.327052f , - -0.406292f, -0.857053f, -0.316839f , - -0.296574f, -0.805534f, -0.512990f , - -0.303162f, -0.840232f, -0.449558f , - -0.286601f, -0.893951f, -0.344545f , - -0.245344f, -0.853490f, -0.459741f , - -0.064820f, -0.811082f, -0.581329f , - -0.118801f, -0.782890f, -0.610713f , - -0.154815f, -0.809824f, -0.565878f , - -0.109390f, -0.848153f, -0.518335f , - 0.546852f, -0.414145f, -0.727624f , - 0.515558f, -0.310739f, -0.798524f , - 0.304261f, -0.391655f, -0.868350f , - 0.240203f, -0.617781f, -0.748765f , - -0.221141f, -0.780191f, -0.585148f , - -0.344093f, -0.798716f, -0.493612f , - -0.337902f, -0.810293f, -0.478797f , - -0.222412f, -0.787299f, -0.575059f , - -0.140972f, -0.750035f, -0.646200f , - -0.015219f, -0.622561f, -0.782423f , - -0.092673f, -0.625014f, -0.775093f , - -0.224286f, -0.770583f, -0.596571f , - -0.242833f, -0.640075f, -0.728928f , - -0.256157f, -0.667679f, -0.698991f , - -0.346846f, -0.748443f, -0.565271f , - -0.331416f, -0.724280f, -0.604634f , - -0.208133f, -0.374602f, -0.903523f , - -0.166695f, -0.488785f, -0.856330f , - -0.153017f, -0.414248f, -0.897209f , - -0.053056f, -0.389841f, -0.919353f , - -0.030206f, -0.373008f, -0.927336f , - -0.083974f, -0.415815f, -0.905564f , - -0.045124f, -0.422484f, -0.905246f , - -0.282396f, -0.781330f, -0.556575f , - -0.283187f, -0.776995f, -0.562213f , - -0.084902f, -0.692067f, -0.716822f , - -0.089894f, -0.685462f, -0.722538f , - 0.129049f, -0.410736f, -0.902575f , - 0.050027f, -0.390309f, -0.919324f , - 0.189036f, -0.298302f, -0.935565f , - 0.294398f, -0.308383f, -0.904561f , - -0.321256f, -0.673282f, -0.665948f , - -0.280662f, -0.563442f, -0.777021f , - -0.072999f, -0.553583f, -0.829589f , - -0.151055f, -0.648773f, -0.745840f , - 0.019268f, -0.531370f, -0.846921f , - 0.132835f, -0.570473f, -0.810503f , - 0.140605f, -0.542802f, -0.828007f , - 0.011119f, -0.516080f, -0.856468f , - 0.280272f, -0.641980f, -0.713660f , - 0.359833f, -0.583409f, -0.728117f , - 0.330093f, -0.601462f, -0.727518f , - -0.073123f, -0.700122f, -0.710269f , - -0.190201f, -0.684043f, -0.704208f , - -0.203205f, -0.713791f, -0.670231f , - -0.241202f, -0.414213f, -0.877638f , - -0.249423f, -0.410913f, -0.876892f , - -0.239532f, -0.425634f, -0.872617f , - -0.227777f, -0.461006f, -0.857666f , - 0.088854f, -0.183457f, -0.979004f , - 0.391627f, -0.086715f, -0.916029f , - 0.236185f, -0.277108f, -0.931358f , - -0.006341f, -0.567654f, -0.823243f , - 0.065890f, -0.661471f, -0.747071f , - 0.167249f, -0.628719f, -0.759434f , - 0.166444f, -0.483000f, -0.859655f , - 0.374917f, 0.036752f, -0.926330f , - 0.360625f, 0.012452f, -0.932628f , - 0.439084f, -0.044590f, -0.897339f , - 0.449887f, -0.028779f, -0.892622f , - 0.391304f, -0.098258f, -0.915001f , - 0.315916f, -0.104583f, -0.943006f , - 0.316301f, -0.086702f, -0.944689f , - 0.395816f, -0.079541f, -0.914879f , - 0.426999f, -0.015066f, -0.904127f , - 0.844241f, 0.069230f, -0.531474f , - 0.646912f, 0.211995f, -0.732505f , - 0.338227f, 0.019884f, -0.940854f , - 0.232280f, -0.055809f, -0.971047f , - 0.268045f, -0.006107f, -0.963387f , - -0.002472f, -0.362665f, -0.931916f , - -0.043828f, -0.374695f, -0.926112f , - -0.136342f, -0.243400f, -0.960295f , - -0.184860f, -0.169165f, -0.968096f , - -0.254453f, -0.322688f, -0.911661f , - 0.170821f, -0.116648f, -0.978373f , - 0.518392f, -0.141813f, -0.843302f , - 0.403770f, -0.158586f, -0.901011f , - 0.594971f, -0.469562f, -0.652320f , - 0.289531f, -0.692129f, -0.661158f , - 0.235684f, -0.562518f, -0.792481f , - 0.489063f, -0.442882f, -0.751447f , - -0.327898f, -0.645851f, -0.689463f , - -0.351462f, -0.556552f, -0.752811f , - -0.303263f, -0.497946f, -0.812454f , - -0.275965f, -0.588724f, -0.759768f , - 0.541637f, -0.265369f, -0.797627f , - 0.666580f, -0.354411f, -0.655793f , - 0.725974f, -0.212404f, -0.654099f , - 0.617331f, -0.160438f, -0.770170f , - 0.606367f, -0.056211f, -0.793196f , - 0.778855f, -0.143158f, -0.610648f , - 0.802812f, -0.380657f, -0.458904f , - 0.682256f, -0.286897f, -0.672471f , - 0.487638f, 0.309662f, -0.816284f , - 0.543363f, 0.534810f, -0.647097f , - 0.385528f, 0.574903f, -0.721703f , - 0.317472f, 0.367469f, -0.874173f , - 0.813388f, 0.180609f, -0.552974f , - 0.779802f, 0.298799f, -0.550117f , - 0.780990f, 0.387656f, -0.489670f , - 0.724910f, 0.292664f, -0.623581f , - 0.299863f, -0.231302f, -0.925517f , - 0.347892f, -0.183499f, -0.919401f , - 0.333065f, -0.203116f, -0.920767f , - 0.252688f, -0.156653f, -0.954782f , - 0.341420f, -0.161987f, -0.925847f , - 0.309640f, -0.087983f, -0.946775f , - 0.675606f, -0.161139f, -0.719438f , - 0.693491f, -0.012479f, -0.720357f , - 0.578980f, -0.015362f, -0.815197f , - 0.520882f, -0.088231f, -0.849056f , - 0.636653f, 0.182602f, -0.749219f , - 0.619911f, 0.215260f, -0.754568f , - 0.512575f, 0.169952f, -0.841655f , - 0.502046f, 0.101346f, -0.858882f , - 0.250333f, 0.049514f, -0.966893f , - 0.257323f, 0.055411f, -0.964735f , - 0.261435f, 0.045737f, -0.964137f , - 0.160391f, -0.075488f, -0.984163f , - 0.247599f, 0.055402f, -0.967277f , - 0.244429f, 0.007226f, -0.969640f , - 0.681123f, -0.190387f, -0.706982f , - 0.863147f, 0.118404f, -0.490874f , - 0.591420f, 0.090844f, -0.801230f , - 0.981055f, -0.007724f, 0.193576f , - 0.901903f, 0.140457f, 0.408464f , - 0.921520f, 0.329679f, 0.205215f , - 0.969050f, 0.232916f, 0.081803f , - 0.957357f, 0.286366f, 0.038240f , - 0.994408f, 0.098405f, -0.038341f , - 0.986441f, 0.058466f, -0.153349f , - 0.962046f, 0.267390f, -0.054496f , - 0.465064f, -0.075441f, -0.882057f , - 0.395191f, -0.105714f, -0.912496f , - 0.601509f, 0.104621f, -0.791986f , - 0.580827f, 0.089407f, -0.809102f , - 0.036530f, -0.751085f, -0.659194f , - 0.345430f, -0.630027f, -0.695517f , - 0.268419f, -0.370603f, -0.889160f , - -0.017201f, -0.482966f, -0.875470f , - 0.116281f, -0.406964f, -0.906013f , - -0.244684f, -0.607226f, -0.755914f , - -0.111661f, -0.621895f, -0.775099f , - -0.244226f, 0.918991f, -0.309532f , - -0.165946f, 0.728820f, -0.664292f , - -0.055724f, 0.417551f, -0.906943f , - -0.191246f, 0.725331f, -0.661301f , - 0.197017f, 0.422272f, -0.884800f , - 0.244616f, 0.422216f, -0.872867f , - 0.218776f, 0.759238f, -0.612939f , - 0.163965f, 0.787521f, -0.594075f , - -0.169503f, 0.777558f, 0.605535f , - -0.224736f, 0.918386f, 0.325670f , - -0.149843f, 0.828369f, 0.539770f , - 0.226380f, 0.923966f, 0.308283f , - 0.200070f, 0.979161f, 0.034868f , - 0.320629f, 0.926018f, 0.199216f , - 0.632404f, 0.559275f, -0.535982f , - 0.653103f, 0.667424f, -0.357775f , - 0.568692f, 0.748641f, -0.340772f , - 0.556926f, 0.615719f, -0.557426f , - 0.714443f, 0.695207f, -0.079113f , - 0.719514f, 0.692942f, -0.046174f , - 0.621526f, 0.780978f, -0.061467f , - 0.603743f, 0.791931f, -0.091323f , - 0.350343f, 0.403721f, 0.845145f , - 0.495290f, 0.540858f, 0.679824f , - 0.505423f, 0.460173f, 0.729923f , - 0.942607f, -0.166037f, -0.289697f , - 0.943619f, 0.063080f, -0.324968f , - 0.921975f, 0.034947f, -0.385668f , - 0.920894f, -0.171246f, -0.350184f , - 0.852227f, 0.350768f, -0.388163f , - 0.837384f, 0.374003f, -0.398634f , - 0.832217f, 0.335247f, -0.441615f , - 0.842210f, 0.328969f, -0.427156f , - 0.758686f, 0.337840f, -0.557010f , - 0.743861f, 0.302912f, -0.595748f , - 0.761018f, 0.285681f, -0.582441f , - 0.780915f, 0.333247f, -0.528316f , - -0.284771f, -0.894527f, -0.344567f , - -0.101886f, -0.943592f, -0.315046f , - -0.041339f, -0.949155f, -0.312083f , - -0.289551f, -0.756565f, -0.586318f , - 0.415696f, -0.659889f, -0.625894f , - -0.063043f, -0.839962f, -0.538971f , - 0.821771f, 0.005336f, -0.569793f , - 0.805218f, -0.264740f, -0.530601f , - 0.816253f, 0.306342f, -0.489781f , - 0.671256f, 0.211695f, -0.710353f , - 0.792518f, 0.389826f, -0.468990f , - 0.818727f, 0.355261f, -0.451083f , - 0.719026f, 0.463537f, -0.517817f , - 0.699758f, 0.464477f, -0.542771f , - 0.732827f, 0.466479f, -0.495340f , - 0.755717f, 0.468076f, -0.458036f , - 0.040221f, 0.087066f, -0.995390f , - 0.135682f, -0.103215f, -0.985361f , - 0.727321f, 0.233586f, -0.645323f , - 0.674539f, 0.304811f, -0.672375f , - 0.748573f, 0.340710f, -0.568819f , - 0.732376f, 0.345088f, -0.586975f , - 0.742920f, 0.346293f, -0.572845f , - 0.748232f, 0.338475f, -0.570599f , - 0.575703f, 0.400358f, -0.712937f , - 0.686129f, 0.338460f, -0.643950f , - 0.820229f, 0.362194f, -0.442764f , - 0.793606f, 0.348595f, -0.498669f , - 0.744014f, 0.479826f, -0.464984f , - 0.770239f, 0.406244f, -0.491628f , - 0.788998f, 0.431675f, -0.437194f , - 0.864199f, 0.395527f, -0.310997f , - 0.880973f, 0.351230f, -0.317055f , - 0.892257f, 0.358213f, -0.274884f , - 0.871112f, 0.398669f, -0.286751f , - 0.828125f, 0.495017f, -0.262996f , - 0.827177f, 0.475851f, -0.298906f , - 0.828150f, 0.446060f, -0.339409f , - 0.825895f, 0.468412f, -0.313828f , - 0.851268f, 0.453922f, -0.263245f , - 0.928472f, 0.350943f, -0.121565f , - 0.919437f, 0.376620f, -0.113108f , - 0.889958f, 0.423288f, -0.169710f , - 0.822669f, 0.566306f, -0.050131f , - 0.823483f, 0.558403f, -0.100311f , - 0.834605f, 0.537721f, -0.119541f , - 0.841048f, 0.536762f, -0.067269f , - -0.169560f, 0.936453f, -0.307091f , - -0.125603f, 0.967429f, -0.219784f , - 0.823966f, 0.565062f, -0.042256f , - 0.712470f, 0.695358f, -0.094147f , - 0.865004f, 0.501748f, -0.004150f , - 0.821050f, 0.570384f, 0.023219f , - 0.845119f, 0.532743f, 0.044271f , - 0.870526f, 0.492079f, 0.006516f , - 0.488325f, -0.685346f, -0.540223f , - 0.543613f, -0.765754f, -0.343666f , - 0.569861f, -0.737692f, -0.362033f , - 0.499314f, -0.651637f, -0.571012f , - 0.172288f, -0.130521f, -0.976361f , - 0.229778f, -0.269639f, -0.935145f , - 0.153361f, -0.143691f, -0.977667f , - 0.341267f, 0.180862f, 0.922402f , - 0.122065f, 0.519779f, 0.845535f , - 0.225163f, 0.362177f, 0.904505f , - 0.468403f, -0.416980f, 0.778926f , - 0.329752f, -0.114538f, 0.937094f , - 0.470573f, -0.253075f, 0.845289f , - 0.566699f, -0.524983f, 0.635016f , - 0.963642f, -0.267037f, 0.009282f , - 0.657384f, -0.752828f, 0.033118f , - 0.499065f, -0.556804f, -0.664006f , - 0.499710f, -0.174968f, -0.848337f , - 0.141969f, 0.536330f, 0.831983f , - 0.673225f, 0.677728f, 0.295726f , - 0.287494f, 0.892606f, -0.347277f , - -0.177747f, 0.815984f, 0.550069f , - 0.479163f, -0.069468f, 0.874972f , - 0.024264f, -0.512807f, -0.858161f , - -0.008049f, -0.262856f, -0.964802f , - -0.163250f, -0.432554f, -0.886705f , - -0.520865f, -0.278292f, -0.807003f , - -0.161239f, -0.001617f, -0.986914f , - -0.516154f, -0.362419f, -0.776040f , - -0.477525f, -0.364569f, -0.799412f , - -0.472553f, -0.522748f, -0.709526f , - -0.265303f, -0.508433f, -0.819213f , - -0.499328f, -0.646581f, -0.576719f , - -0.553293f, -0.588890f, -0.589132f , - -0.178203f, 0.356728f, -0.917054f , - -0.495949f, 0.332642f, -0.802112f , - -0.410026f, 0.196573f, -0.890639f , - -0.588072f, -0.133837f, -0.797658f , - -0.593995f, -0.141827f, -0.791868f , - -0.880063f, 0.135721f, -0.455049f , - -0.616588f, 0.225564f, -0.754281f , - -0.571423f, 0.238326f, -0.785287f , - -0.840505f, 0.012897f, -0.541650f , - -0.293904f, 0.557293f, -0.776560f , - -0.313116f, 0.582514f, -0.750091f , - -0.609613f, 0.392458f, -0.688729f , - -0.575770f, 0.343265f, -0.742063f , - -0.361411f, 0.738702f, -0.568947f , - -0.750223f, 0.552094f, -0.363810f , - -0.714475f, 0.555357f, -0.425563f , - -0.887334f, 0.225261f, -0.402364f , - -0.882962f, 0.245174f, -0.400336f , - -0.892924f, 0.232543f, -0.385500f , - -0.395800f, 0.852204f, -0.342185f , - -0.796056f, 0.567590f, -0.210087f , - -0.787369f, 0.555286f, -0.267783f , - -0.614750f, 0.647372f, -0.450546f , - -0.723997f, 0.542902f, -0.425542f , - -0.932141f, 0.308746f, -0.189180f , - -0.349652f, 0.869729f, -0.348304f , - -0.327270f, 0.884679f, -0.332021f , - -0.725527f, 0.622554f, -0.293320f , - -0.750828f, 0.597754f, -0.280977f , - -0.194338f, 0.933490f, -0.301380f , - -0.205929f, 0.946472f, -0.248565f , - -0.869853f, 0.460394f, -0.177184f , - 0.020001f, 0.770067f, -0.637650f , - 0.025595f, 0.705836f, -0.707912f , - 0.088318f, 0.715428f, -0.693082f , - 0.098528f, 0.842114f, -0.530222f , - 0.185328f, 0.686500f, -0.703115f , - 0.191058f, 0.753656f, -0.628888f , - 0.204991f, 0.750284f, -0.628532f , - 0.126986f, 0.726685f, -0.675132f , - 0.094891f, 0.774214f, -0.625771f , - 0.135571f, 0.770904f, -0.622356f , - 0.003662f, 0.751702f, -0.659492f , - -0.049953f, 0.746237f, -0.663803f , - -0.054216f, 0.773790f, -0.631118f , - 0.000256f, 0.777996f, -0.628270f , - -0.225118f, 0.669536f, -0.707844f , - -0.305089f, 0.672396f, -0.674392f , - -0.252287f, 0.702101f, -0.665888f , - -0.477198f, 0.606961f, -0.635516f , - -0.500461f, 0.574778f, -0.647432f , - -0.465085f, 0.551852f, -0.692211f , - -0.421937f, 0.619661f, -0.661807f , - -0.336976f, 0.494808f, -0.801007f , - -0.211449f, 0.416798f, -0.884064f , - -0.328397f, 0.452132f, -0.829296f , - -0.085023f, 0.442480f, -0.892739f , - -0.029805f, 0.428974f, -0.902825f , - -0.077084f, 0.417063f, -0.905603f , - -0.038117f, 0.302214f, -0.952478f , - -0.066335f, 0.420044f, -0.905076f , - -0.043854f, 0.434232f, -0.899733f , - -0.162847f, -0.001135f, -0.986651f , - -0.178940f, 0.417983f, -0.890657f , - -0.153132f, 0.270658f, -0.950418f , - -0.046695f, 0.408042f, -0.911768f , - 0.020659f, 0.163404f, -0.986343f , - 0.028193f, -0.063101f, -0.997609f , - 0.082649f, 0.324600f, -0.942234f , - 0.053121f, 0.286378f, -0.956643f , - 0.106994f, 0.305962f, -0.946012f , - 0.134323f, 0.444370f, -0.885716f , - 0.106547f, 0.424488f, -0.899143f , - 0.078209f, 0.386083f, -0.919143f , - 0.057213f, 0.389078f, -0.919427f , - 0.076552f, 0.503096f, -0.860833f , - 0.090376f, 0.493869f, -0.864827f , - -0.031896f, 0.377044f, -0.925646f , - -0.030197f, 0.374153f, -0.926875f , - -0.074118f, 0.504301f, -0.860341f , - -0.064570f, 0.512647f, -0.856168f , - -0.227979f, 0.338292f, -0.913008f , - -0.387385f, 0.349998f, -0.852898f , - -0.377952f, 0.432432f, -0.818630f , - -0.221145f, 0.428342f, -0.876138f , - -0.609071f, 0.123868f, -0.783383f , - -0.549182f, 0.073495f, -0.832465f , - -0.532802f, 0.211163f, -0.819471f , - -0.556838f, 0.322445f, -0.765481f , - -0.269526f, 0.079237f, -0.959728f , - -0.223864f, 0.250559f, -0.941863f , - -0.302228f, 0.228041f, -0.925557f , - -0.076108f, 0.177752f, -0.981128f , - -0.053035f, 0.240166f, -0.969282f , - -0.079520f, 0.256047f, -0.963388f , - -0.060543f, 0.113362f, -0.991707f , - -0.072248f, 0.121603f, -0.989946f , - -0.052662f, 0.164227f, -0.985016f , - -0.202533f, -0.074137f, -0.976465f , - -0.251241f, -0.311921f, -0.916288f , - -0.355945f, -0.374171f, -0.856329f , - -0.276240f, -0.088468f, -0.957008f , - 0.355044f, -0.253793f, -0.899740f , - 0.450516f, -0.161053f, -0.878122f , - 0.503655f, -0.096571f, -0.858490f , - 0.370455f, -0.156862f, -0.915509f , - 0.439955f, 0.057358f, -0.896186f , - 0.359271f, 0.138001f, -0.922974f , - 0.384632f, 0.146926f, -0.911302f , - 0.461786f, 0.059831f, -0.884971f , - -0.230453f, -0.063259f, -0.971025f , - -0.276184f, 0.030000f, -0.960636f , - -0.127268f, 0.027385f, -0.991490f , - 0.035946f, 0.106529f, -0.993660f , - -0.089191f, 0.035190f, -0.995393f , - -0.118256f, 0.013079f, -0.992897f , - 0.000400f, 0.094650f, -0.995511f , - 0.065227f, -0.040014f, -0.997068f , - 0.071506f, 0.050200f, -0.996176f , - -0.022289f, 0.049072f, -0.998547f , - -0.039757f, -0.030393f, -0.998747f , - -0.645896f, 0.123001f, -0.753451f , - -0.557160f, -0.137456f, -0.818949f , - -0.472454f, -0.038310f, -0.880522f , - -0.305769f, 0.210076f, -0.928641f , - -0.324501f, 0.073661f, -0.943013f , - -0.288439f, 0.103578f, -0.951879f , - -0.028743f, -0.410965f, -0.911198f , - 0.024525f, -0.435250f, -0.899976f , - 0.017404f, -0.327900f, -0.944552f , - -0.040376f, -0.314904f, -0.948264f , - 0.001990f, 0.001273f, -0.999997f , - 0.047371f, 0.131297f, -0.990211f , - 0.032934f, -0.007505f, -0.999429f , - -0.022708f, -0.438233f, -0.898574f , - -0.035677f, -0.327277f, -0.944255f , - -0.005948f, -0.324262f, -0.945949f , - 0.089248f, 0.035241f, -0.995386f , - 0.021156f, 0.131306f, -0.991116f , - 0.054788f, 0.017739f, -0.998340f , - 0.124017f, -0.296993f, -0.946792f , - -0.003617f, -0.295841f, -0.955230f , - -0.042136f, -0.387818f, -0.920772f , - 0.127640f, -0.465645f, -0.875718f , - -0.033058f, -0.730020f, -0.682626f , - -0.046951f, -0.788897f, -0.612729f , - -0.095939f, -0.775126f, -0.624480f , - -0.071690f, -0.702125f, -0.708435f , - -0.058742f, -0.886827f, -0.458352f , - -0.054677f, -0.846778f, -0.529129f , - -0.072846f, -0.858635f, -0.507384f , - 0.137911f, -0.830194f, -0.540147f , - 0.078967f, -0.755501f, -0.650371f , - 0.050448f, -0.827431f, -0.559296f , - -0.850824f, -0.505324f, -0.144032f , - -0.831661f, -0.550502f, 0.072723f , - -0.661873f, -0.734146f, -0.151503f , - -0.512110f, -0.770825f, -0.378908f , - -0.787972f, -0.109596f, -0.605878f , - -0.788306f, -0.179843f, -0.588414f , - -0.466273f, -0.525737f, -0.711470f , - -0.516953f, -0.456562f, -0.724093f , - 0.604407f, -0.293734f, -0.740549f , - 0.595744f, -0.451145f, -0.664497f , - 0.654211f, -0.419861f, -0.629066f , - 0.635530f, -0.250535f, -0.730297f , - 0.171119f, 0.056555f, -0.983626f , - 0.358006f, 0.030779f, -0.933212f , - 0.271623f, -0.002654f, -0.962400f , - 0.502306f, -0.416802f, -0.757605f , - 0.514710f, -0.241097f, -0.822767f , - 0.584470f, -0.359998f, -0.727184f , - 0.557014f, -0.725521f, -0.404172f , - 0.548197f, -0.757925f, -0.353596f , - 0.603777f, -0.729856f, -0.320568f , - 0.619959f, -0.692496f, -0.368918f , - 0.624608f, -0.741524f, -0.244964f , - 0.606059f, -0.740338f, -0.290847f , - 0.641124f, -0.708312f, -0.295389f , - 0.436224f, -0.421622f, -0.794949f , - 0.378740f, -0.318763f, -0.868876f , - 0.445887f, -0.427812f, -0.786233f , - 0.682127f, -0.679577f, -0.269960f , - 0.587990f, -0.694318f, -0.414958f , - 0.595999f, -0.768753f, -0.231958f , - 0.031040f, 0.071587f, -0.996951f , - -0.117956f, 0.110739f, -0.986825f , - 0.053378f, 0.014212f, -0.998473f , - 0.299893f, -0.886138f, 0.353304f , - 0.509313f, -0.843495f, 0.170638f , - 0.453964f, -0.882994f, 0.119323f , - 0.215646f, -0.945342f, 0.244594f , - -0.573264f, -0.685156f, 0.449366f , - -0.349332f, -0.758743f, 0.549796f , - -0.343731f, -0.891179f, 0.296056f , - -0.513376f, -0.836149f, 0.193131f , - 0.575592f, -0.756464f, -0.310573f , - 0.654104f, -0.577347f, -0.488691f , - 0.587255f, -0.622127f, -0.517773f , - 0.508462f, -0.782232f, -0.359971f , - 0.057334f, -0.985999f, 0.156583f , - 0.146092f, -0.984862f, -0.093300f , - -0.034363f, -0.998765f, -0.035890f , - -0.479618f, -0.814477f, 0.326487f , - -0.342976f, -0.881241f, 0.325242f , - -0.361341f, -0.910370f, 0.201643f , - -0.521574f, -0.831989f, 0.189091f , - -0.943493f, -0.331130f, 0.013226f , - -0.883091f, -0.450113f, 0.132472f , - -0.856992f, -0.513747f, 0.040368f , - -0.914320f, -0.398820f, -0.070436f , - -0.633582f, -0.586845f, -0.504170f , - -0.752163f, -0.593149f, -0.287097f , - -0.598708f, -0.683532f, -0.417531f , - 0.012014f, -0.708160f, -0.705950f , - -0.004376f, -0.622388f, -0.782697f , - -0.092071f, -0.629903f, -0.771197f , - -0.084530f, -0.734106f, -0.673753f , - -0.682806f, -0.076553f, -0.726578f , - -0.768652f, -0.116865f, -0.628901f , - -0.724156f, -0.231760f, -0.649527f , - -0.076735f, -0.277666f, -0.957608f , - -0.113546f, -0.125167f, -0.985617f , - -0.202691f, -0.155791f, -0.966771f , - -0.161301f, -0.300078f, -0.940178f , - -0.837248f, 0.196612f, -0.510254f , - -0.912284f, 0.118890f, -0.391923f , - -0.896825f, -0.063184f, -0.437850f , - -0.832624f, -0.021018f, -0.553439f , - -0.631239f, 0.115697f, -0.766911f , - -0.694900f, -0.036030f, -0.718203f , - -0.660776f, 0.068841f, -0.747420f , - 0.469305f, -0.091286f, -0.878305f , - 0.238950f, 0.028670f, -0.970609f , - 0.350502f, -0.203174f, -0.914259f , - 0.069519f, 0.123390f, -0.989920f , - 0.060312f, 0.130452f, -0.989618f , - 0.127513f, 0.048201f, -0.990665f , - 0.141770f, 0.041786f, -0.989017f , - -0.318667f, 0.185729f, -0.929492f , - -0.507059f, 0.156519f, -0.847581f , - -0.469174f, 0.194870f, -0.861337f , - -0.286326f, 0.215487f, -0.933586f , - -0.088295f, 0.206797f, -0.974392f , - -0.082659f, 0.247765f, -0.965288f , - -0.329609f, 0.254749f, -0.909099f , - -0.535055f, 0.256001f, -0.805096f , - -0.577842f, 0.256192f, -0.774896f , - -0.473312f, 0.211516f, -0.855124f , - -0.410258f, 0.218153f, -0.885493f , - 0.549649f, -0.199410f, -0.811247f , - 0.682423f, -0.156942f, -0.713911f , - 0.461928f, -0.057724f, -0.885037f , - 0.500980f, -0.041045f, -0.864485f , - 0.645458f, -0.172965f, -0.743954f , - 0.651652f, -0.163818f, -0.740617f , - 0.508142f, -0.026029f, -0.860880f , - 0.714165f, -0.698753f, 0.041385f , - 0.784978f, -0.610456f, 0.105608f , - 0.877860f, -0.450094f, -0.163640f , - 0.813352f, -0.556115f, -0.170863f , - -0.030644f, -0.332303f, -0.942675f , - -0.061384f, -0.137107f, -0.988652f , - -0.040339f, -0.180432f, -0.982760f , - -0.094980f, -0.082571f, -0.992049f , - -0.087822f, -0.024254f, -0.995841f , - -0.075870f, -0.025796f, -0.996784f , - -0.083211f, -0.093564f, -0.992130f , - -0.028843f, -0.640853f, -0.767122f , - -0.064511f, -0.627592f, -0.775865f , - -0.056908f, -0.557509f, -0.828218f , - -0.024316f, -0.575643f, -0.817340f , - -0.186567f, -0.679932f, -0.709144f , - -0.245527f, -0.687273f, -0.683647f , - -0.213588f, -0.544201f, -0.811311f , - -0.152483f, -0.523981f, -0.837969f , - -0.473812f, -0.880611f, -0.005140f , - -0.365513f, -0.658387f, -0.657972f , - -0.414973f, 0.180005f, -0.891850f , - -0.507443f, 0.182161f, -0.842211f , - -0.356487f, 0.198116f, -0.913054f , - 0.117905f, 0.363120f, -0.924252f , - 0.153279f, 0.298133f, -0.942137f , - 0.305587f, 0.183405f, -0.934333f , - 0.527237f, 0.249710f, -0.812199f , - -0.817126f, 0.289285f, -0.498617f , - -0.709714f, 0.278106f, -0.647274f , - -0.822731f, 0.256332f, -0.507354f , - -0.906478f, -0.021417f, -0.421709f , - -0.964578f, 0.031477f, -0.261914f , - -0.880203f, 0.087653f, -0.466432f , - -0.973076f, -0.126695f, 0.192540f , - -0.998780f, -0.014170f, 0.047314f , - -0.994036f, 0.026523f, 0.105780f , - -0.962521f, -0.056271f, 0.265305f , - -0.927195f, -0.192090f, 0.321577f , - -0.837593f, -0.159059f, 0.522627f , - -0.934764f, -0.112021f, 0.337147f , - -0.399986f, -0.570209f, 0.717546f , - -0.580046f, -0.327731f, 0.745747f , - -0.338701f, -0.405943f, 0.848818f , - -0.308330f, -0.293578f, 0.904845f , - -0.036930f, -0.279357f, 0.959477f , - -0.286732f, -0.263441f, 0.921077f , - 0.315587f, -0.804927f, 0.502492f , - 0.115134f, -0.751174f, 0.649986f , - 0.250177f, -0.551634f, 0.795683f , - 0.568889f, -0.628532f, 0.530389f , - 0.702525f, 0.009090f, 0.711601f , - 0.844395f, -0.140887f, 0.516864f , - 0.606696f, -0.174733f, 0.775492f , - 0.878043f, -0.321934f, -0.354117f , - 0.755640f, -0.463904f, -0.462386f , - 0.800343f, -0.577359f, -0.161580f , - 0.909256f, -0.399941f, -0.115328f , - 0.973689f, 0.168399f, 0.153531f , - 0.989644f, 0.028057f, -0.140778f , - 0.996172f, -0.022108f, 0.084576f , - 0.870379f, -0.446737f, -0.207044f , - 0.774544f, -0.618429f, 0.132769f , - 0.711573f, -0.689116f, 0.137053f , - 0.795188f, -0.565307f, -0.219326f , - -0.377964f, -0.572450f, -0.727630f , - -0.333685f, -0.864029f, -0.376973f , - -0.592902f, -0.646314f, -0.480361f , - -0.513495f, -0.512502f, -0.688233f , - -0.662884f, -0.744595f, -0.078505f , - -0.872112f, -0.472824f, -0.125931f , - -0.851128f, -0.418371f, -0.317092f , - -0.716150f, -0.651231f, -0.251052f , - -0.516763f, -0.812399f, 0.270118f , - -0.709262f, -0.576471f, 0.405745f , - -0.805168f, -0.549947f, 0.221951f , - -0.654678f, -0.743147f, 0.138309f , - -0.169250f, -0.813014f, 0.557102f , - -0.179987f, -0.582657f, 0.792538f , - -0.335093f, -0.599066f, 0.727208f , - -0.296302f, -0.780972f, 0.549807f , - -0.146755f, -0.893572f, 0.424255f , - 0.016175f, -0.471717f, 0.881602f , - -0.214559f, -0.713749f, 0.666728f , - 0.707312f, -0.028380f, 0.706331f , - 0.724750f, -0.105668f, 0.680861f , - 0.666414f, 0.224511f, 0.710976f , - 0.587235f, 0.113577f, 0.801408f , - 0.384017f, -0.914083f, 0.130321f , - 0.790675f, -0.489506f, 0.367720f , - 0.455085f, -0.866864f, 0.203578f , - -0.378048f, 0.117291f, -0.918326f , - -0.164508f, -0.150692f, -0.974797f , - -0.477947f, -0.445285f, -0.757158f , - 0.529228f, 0.383528f, -0.756851f , - 0.299821f, 0.323408f, -0.897505f , - 0.367383f, 0.407208f, -0.836189f , - 0.844544f, 0.487361f, -0.221867f , - 0.840371f, 0.339910f, -0.422183f , - 0.745373f, 0.457391f, -0.484987f , - 0.804981f, 0.502627f, -0.315232f , - 0.912998f, 0.205282f, 0.352552f , - 0.909949f, 0.399214f, 0.112346f , - 0.858060f, 0.507656f, 0.077578f , - 0.840768f, 0.495404f, 0.218365f , - 0.884854f, -0.465808f, 0.007483f , - 0.940133f, -0.335912f, 0.057565f , - 0.935832f, -0.292811f, -0.196165f , - 0.880875f, -0.406296f, -0.242862f , - 0.781652f, 0.041530f, -0.622330f , - 0.590917f, 0.071197f, -0.803585f , - 0.581762f, -0.102780f, -0.806839f , - -0.040141f, 0.289720f, -0.956269f , - -0.156196f, 0.295277f, -0.942557f , - -0.018782f, 0.215868f, -0.976242f , - -0.635312f, 0.525840f, -0.565572f , - -0.789713f, 0.364028f, -0.493798f , - -0.621287f, 0.358360f, -0.696836f , - -0.973879f, 0.002817f, 0.227050f , - -0.928899f, -0.070452f, 0.363571f , - -0.949509f, -0.138852f, 0.281340f , - -0.996053f, 0.085605f, 0.023465f , - -0.561596f, -0.081645f, 0.823374f , - -0.528322f, 0.127148f, 0.839469f , - -0.363280f, 0.118766f, 0.924079f , - -0.467385f, -0.130175f, 0.874417f , - -0.659709f, 0.568082f, -0.492003f , - -0.566705f, 0.488622f, -0.663396f , - -0.630700f, 0.387157f, -0.672553f , - -0.713466f, 0.457546f, -0.530678f , - -0.749346f, 0.033408f, -0.661335f , - -0.908441f, 0.033799f, -0.416644f , - -0.917689f, 0.051901f, -0.393894f , - -0.777239f, 0.031859f, -0.628398f , - -0.206181f, -0.031082f, -0.978020f , - -0.385561f, -0.012789f, -0.922594f , - -0.259989f, -0.022655f, -0.965346f , - -0.178129f, 0.290354f, -0.940194f , - -0.060534f, 0.068773f, -0.995794f , - -0.342606f, 0.056836f, -0.937758f , - -0.332352f, 0.205282f, -0.920544f , - -0.041494f, -0.021849f, -0.998900f , - -0.118646f, -0.041600f, -0.992065f , - -0.061758f, -0.078131f, -0.995028f , - 0.242779f, -0.051815f, -0.968697f , - 0.933007f, 0.031253f, -0.358499f , - 0.903216f, -0.070828f, -0.423302f , - 0.826654f, -0.011869f, -0.562585f , - 0.876691f, 0.052791f, -0.478149f , - 0.996585f, -0.082026f, -0.009441f , - 0.987690f, -0.045563f, -0.149642f , - 0.987859f, -0.026959f, -0.152995f , - 0.995712f, -0.086147f, -0.033696f , - 0.113717f, -0.251987f, 0.961026f , - 0.196204f, -0.149202f, 0.969145f , - 0.586832f, -0.197588f, 0.785231f , - 0.542258f, -0.260519f, 0.798803f , - 0.199270f, -0.585409f, 0.785868f , - 0.496198f, -0.483168f, 0.721343f , - 0.492637f, -0.568758f, 0.658652f , - -0.482842f, 0.192037f, -0.854392f , - -0.834761f, -0.022625f, -0.550148f , - -0.615040f, 0.041596f, -0.787398f , - 0.510095f, 0.338923f, -0.790528f , - 0.199560f, 0.362865f, -0.910222f , - 0.377939f, 0.291994f, -0.878579f , - 0.933460f, -0.328973f, 0.142929f , - 0.936126f, -0.350985f, -0.021862f , - 0.965196f, -0.259822f, -0.029812f , - 0.863240f, 0.503574f, -0.035060f , - 0.826877f, 0.486061f, -0.282878f , - 0.937113f, 0.334534f, -0.099532f , - 0.553565f, -0.488760f, 0.674299f , - 0.743909f, -0.496420f, 0.447399f , - 0.802049f, -0.395551f, 0.447500f , - 0.662155f, -0.409398f, 0.627649f , - 0.575487f, 0.350961f, 0.738675f , - 0.672743f, 0.448724f, 0.588272f , - 0.793740f, 0.452783f, 0.406159f , - 0.776832f, 0.231218f, 0.585721f , - -0.598201f, -0.482035f, 0.640154f , - -0.391839f, -0.550692f, 0.737022f , - -0.345305f, -0.505566f, 0.790675f , - -0.582143f, -0.410527f, 0.701839f , - -0.478484f, -0.020753f, 0.877851f , - -0.051756f, 0.034407f, 0.998067f , - 0.027740f, 0.082931f, 0.996169f , - -0.406928f, 0.065243f, 0.911127f , - -0.999453f, 0.029142f, -0.015604f , - -0.998211f, 0.052848f, -0.027953f , - -0.967709f, 0.063453f, 0.243951f , - -0.967365f, 0.017779f, 0.252761f , - -0.973344f, -0.171345f, 0.152454f , - -0.907388f, -0.069954f, 0.414432f , - -0.978427f, -0.097200f, 0.182296f , - -0.404262f, 0.032546f, -0.914064f , - -0.699220f, 0.007501f, -0.714868f , - -0.694556f, 0.043865f, -0.718100f , - -0.734950f, -0.651119f, 0.189453f , - -0.870803f, -0.415113f, 0.263406f , - -0.915072f, -0.387307f, 0.112410f , - -0.823138f, -0.560162f, 0.093069f , - -0.661786f, -0.673844f, -0.328594f , - -0.812219f, -0.551549f, -0.189984f , - -0.818051f, -0.465758f, -0.337434f , - -0.290530f, -0.915116f, 0.279561f , - -0.337172f, -0.629779f, 0.699781f , - -0.482435f, -0.419094f, 0.769167f , - -0.508530f, -0.756792f, 0.410687f , - -0.068074f, 0.025457f, -0.997355f , - -0.237203f, -0.118422f, -0.964215f , - -0.407159f, -0.043093f, -0.912340f , - -0.215800f, 0.105375f, -0.970735f , - 0.103065f, 0.014864f, -0.994564f , - 0.067872f, -0.078524f, -0.994599f , - 0.243012f, -0.018104f, -0.969854f , - 0.338488f, 0.104420f, -0.935159f , - 0.756256f, 0.366889f, -0.541728f , - 0.743967f, -0.127633f, -0.655914f , - 0.716781f, -0.064659f, -0.694294f , - 0.673812f, 0.302302f, -0.674234f , - -0.320103f, -0.846192f, -0.426021f , - -0.365922f, -0.455761f, -0.811408f , - -0.198441f, -0.535111f, -0.821144f , - -0.227622f, -0.844526f, -0.484731f , - 0.257254f, -0.937220f, -0.235454f , - 0.104975f, -0.989446f, -0.099883f , - 0.138602f, -0.956878f, -0.255293f , - 0.260665f, -0.925209f, -0.275759f , - 0.633666f, -0.654408f, -0.412573f , - 0.451473f, -0.817901f, -0.356665f , - 0.314115f, -0.914837f, -0.253780f , - 0.813646f, 0.580153f, 0.037443f , - 0.905548f, 0.404190f, -0.128894f , - 0.828886f, 0.543356f, -0.133086f , - 0.810958f, 0.585079f, -0.005452f , - 0.794003f, 0.518536f, 0.317301f , - 0.829662f, 0.496427f, 0.255383f , - 0.786097f, 0.574625f, 0.227724f , - 0.760335f, 0.562419f, 0.324924f , - 0.665909f, -0.497621f, 0.555823f , - 0.727084f, -0.122858f, 0.675466f , - 0.676409f, -0.366532f, 0.638846f , - 0.433777f, -0.162542f, 0.886238f , - 0.497727f, 0.242093f, 0.832862f , - 0.294747f, 0.125365f, 0.947316f , - 0.422138f, -0.147594f, -0.894436f , - 0.107390f, 0.067442f, -0.991927f , - 0.290793f, 0.134184f, -0.947330f , - 0.707144f, -0.155000f, -0.689871f , - 0.622443f, -0.568173f, -0.538279f , - 0.642978f, -0.420748f, -0.639961f , - 0.784113f, 0.577211f, -0.228022f , - 0.827375f, 0.500241f, -0.255363f , - 0.790356f, 0.523877f, -0.317633f , - 0.758355f, 0.565164f, -0.324788f , - 0.831754f, 0.538534f, 0.134783f , - 0.916538f, 0.376884f, 0.133851f , - 0.814854f, 0.578484f, -0.036997f , - 0.811793f, 0.583919f, 0.005618f , - 0.650154f, -0.647501f, 0.397545f , - 0.588057f, -0.651415f, 0.479424f , - 0.259297f, -0.933245f, 0.248633f , - 0.330944f, -0.909175f, 0.252738f , - 0.368712f, -0.704875f, 0.605972f , - 0.228239f, -0.753087f, 0.617063f , - 0.138602f, -0.956878f, 0.255291f , - 0.260665f, -0.925209f, 0.275759f , - -0.070622f, -0.936640f, 0.343100f , - -0.198443f, -0.535108f, 0.821145f , - -0.227624f, -0.844524f, 0.484733f , - 0.688372f, 0.491954f, 0.533034f , - 0.646391f, 0.433664f, 0.627786f , - 0.633889f, 0.286095f, 0.718564f , - 0.677853f, 0.290448f, 0.675393f , - 0.243012f, -0.018104f, 0.969854f , - 0.067872f, -0.078522f, 0.994599f , - 0.103064f, 0.014866f, 0.994564f , - 0.338487f, 0.104421f, 0.935159f , - -0.407158f, -0.043093f, 0.912341f , - -0.068076f, 0.025457f, 0.997355f , - -0.215800f, 0.105374f, 0.970735f , - -0.613930f, -0.380099f, -0.691820f , - -0.396969f, -0.215371f, -0.892206f , - -0.482435f, -0.419093f, -0.769167f , - -0.508530f, -0.756791f, -0.410688f , - -0.880428f, -0.266353f, 0.392305f , - -0.909077f, -0.309923f, 0.278435f , - -0.812219f, -0.551549f, 0.189985f , - -0.818051f, -0.465758f, 0.337434f , - -0.802588f, -0.594747f, 0.046148f , - -0.930245f, -0.360201f, 0.069995f , - -0.915072f, -0.387307f, -0.112411f , - -0.823138f, -0.560162f, -0.093071f , - -0.699218f, 0.007500f, 0.714869f , - -0.404262f, 0.032544f, 0.914064f , - -0.694555f, 0.043864f, 0.718102f , - -0.977292f, -0.004460f, -0.211848f , - -0.907387f, -0.069954f, -0.414433f , - -0.978427f, -0.097200f, -0.182296f , - -0.966776f, -0.007357f, -0.255518f , - -0.866291f, -0.064026f, -0.495420f , - -0.853086f, -0.007279f, -0.521719f , - -0.967365f, 0.017779f, -0.252761f , - 0.027740f, 0.082931f, -0.996169f , - -0.051756f, 0.034407f, -0.998067f , - -0.478484f, -0.020754f, -0.877851f , - -0.406927f, 0.065242f, -0.911128f , - -0.345305f, -0.505564f, -0.790676f , - -0.598202f, -0.482034f, -0.640155f , - -0.582143f, -0.410526f, -0.701839f , - 0.909505f, 0.261372f, -0.323241f , - 0.856180f, 0.455305f, -0.244239f , - 0.793740f, 0.452783f, -0.406158f , - 0.776832f, 0.231219f, -0.585721f , - 0.647701f, -0.272349f, -0.711554f , - 0.844441f, -0.256211f, -0.470400f , - 0.802049f, -0.395552f, -0.447499f , - 0.662156f, -0.409399f, -0.627648f , - 0.948180f, 0.225675f, 0.223666f , - 0.853239f, 0.395923f, 0.339452f , - 0.826877f, 0.486061f, 0.282878f , - 0.937113f, 0.334533f, 0.099532f , - 0.984114f, -0.175842f, 0.024474f , - 0.965291f, -0.100490f, 0.241071f , - 0.951926f, -0.154962f, 0.264240f , - 0.965196f, -0.259822f, 0.029812f , - 0.092038f, 0.249671f, 0.963947f , - 0.095070f, 0.346810f, 0.933105f , - 0.199559f, 0.362868f, 0.910222f , - 0.377938f, 0.291995f, 0.878579f , - -0.241893f, 0.191970f, 0.951123f , - -0.233011f, 0.022868f, 0.972205f , - -0.329302f, -0.042931f, 0.943248f , - -0.615040f, 0.041597f, 0.787398f , - 0.720081f, -0.538902f, -0.437114f , - 0.757963f, -0.432398f, -0.488390f , - 0.496198f, -0.483169f, -0.721343f , - 0.492638f, -0.568758f, -0.658652f , - 0.509304f, -0.331132f, -0.794331f , - 0.780493f, -0.287411f, -0.555181f , - 0.794176f, -0.246856f, -0.555289f , - 0.542257f, -0.260519f, -0.798803f , - 0.989355f, -0.120072f, 0.082218f , - 0.973297f, -0.032529f, 0.227235f , - 0.987859f, -0.026959f, 0.152995f , - 0.995712f, -0.086147f, 0.033696f , - 0.826654f, -0.011870f, 0.562585f , - 0.903216f, -0.070829f, 0.423302f , - 0.933007f, 0.031252f, 0.358499f , - 0.876691f, 0.052791f, 0.478149f , - 0.556090f, -0.131519f, 0.820650f , - 0.513198f, -0.038397f, 0.857411f , - 0.313681f, -0.050126f, 0.948204f , - 0.242778f, -0.051816f, 0.968697f , - -0.467609f, 0.283194f, 0.837343f , - -0.521132f, 0.094309f, 0.848249f , - -0.342604f, 0.056836f, 0.937759f , - -0.332350f, 0.205281f, 0.920545f , - -0.314262f, -0.032761f, 0.948771f , - -0.385559f, -0.012788f, 0.922595f , - -0.259987f, -0.022654f, 0.965346f , - -0.784506f, 0.113161f, 0.609709f , - -0.911622f, 0.128090f, 0.390561f , - -0.917689f, 0.051902f, 0.393894f , - -0.777240f, 0.031860f, 0.628397f , - -0.741993f, 0.363920f, 0.563036f , - -0.653954f, 0.285535f, 0.700581f , - -0.630701f, 0.387155f, 0.672553f , - -0.713466f, 0.457544f, 0.530679f , - -0.387998f, -0.174714f, -0.904949f , - -0.363278f, 0.118766f, -0.924080f , - -0.467384f, -0.130176f, -0.874418f , - -0.932710f, 0.098094f, 0.347030f , - -0.973893f, 0.008348f, 0.226856f , - -0.987453f, -0.153387f, -0.037525f , - -0.996053f, 0.085605f, -0.023464f , - -0.699843f, 0.256014f, 0.666841f , - -0.789713f, 0.364028f, 0.493798f , - -0.621288f, 0.358360f, 0.696835f , - 0.003981f, 0.156908f, 0.987605f , - -0.156197f, 0.295277f, 0.942557f , - -0.018782f, 0.215868f, 0.976242f , - 0.484441f, -0.325631f, 0.811961f , - 0.381993f, -0.181516f, 0.906164f , - 0.581762f, -0.102780f, 0.806839f , - 0.807814f, -0.516240f, 0.284489f , - 0.791224f, -0.320412f, 0.520866f , - 0.880876f, -0.406296f, 0.242861f , - 0.858060f, 0.507656f, -0.077577f , - 0.909948f, 0.399217f, -0.112342f , - 0.913000f, 0.205288f, -0.352546f , - 0.840769f, 0.495405f, -0.218362f , - 0.745373f, 0.457389f, 0.484989f , - 0.840371f, 0.339910f, 0.422183f , - 0.844544f, 0.487361f, 0.221866f , - 0.804982f, 0.502625f, 0.315233f , - 0.299823f, 0.323408f, 0.897504f , - 0.529230f, 0.383529f, 0.756849f , - 0.367388f, 0.407209f, 0.836186f , - -0.491463f, -0.541861f, 0.681799f , - -0.247453f, -0.911516f, 0.328490f , - -0.105613f, -0.870531f, 0.480647f , - -0.477948f, -0.445285f, 0.757158f , - 0.790674f, -0.489506f, -0.367720f , - 0.384019f, -0.914082f, -0.130322f , - 0.455085f, -0.866864f, -0.203578f , - 0.632445f, 0.193611f, -0.750018f , - 0.666414f, 0.224511f, -0.710976f , - 0.587233f, 0.113575f, -0.801410f , - -0.069654f, -0.430515f, -0.899892f , - 0.016171f, -0.471717f, -0.881602f , - -0.214561f, -0.713750f, -0.666727f , - -0.335094f, -0.599067f, -0.727207f , - -0.169250f, -0.813015f, -0.557101f , - -0.296301f, -0.780973f, -0.549807f , - -0.805168f, -0.549947f, -0.221952f , - -0.516761f, -0.812400f, -0.270119f , - -0.654676f, -0.743148f, -0.138310f , - -0.851128f, -0.418371f, 0.317091f , - -0.662885f, -0.744594f, 0.078508f , - -0.716150f, -0.651231f, 0.251052f , - -0.541874f, -0.181994f, 0.820518f , - -0.592902f, -0.646314f, 0.480359f , - -0.513494f, -0.512501f, 0.688234f , - 0.674446f, -0.705876f, 0.216477f , - 0.711573f, -0.689116f, -0.137053f , - 0.795188f, -0.565307f, 0.219327f , - 0.971776f, -0.072928f, -0.224352f , - 0.967627f, -0.200301f, -0.153551f , - 0.988944f, -0.148169f, -0.005961f , - 0.996172f, -0.022107f, -0.084576f , - 0.949057f, -0.304475f, 0.081148f , - 0.936040f, -0.342349f, -0.081403f , - 0.898907f, -0.430348f, -0.082263f , - 0.909256f, -0.399941f, 0.115328f , - 0.627878f, -0.323240f, -0.708015f , - 0.815593f, -0.298440f, -0.495723f , - 0.844395f, -0.140887f, -0.516864f , - 0.606696f, -0.174733f, -0.775492f , - 0.601093f, -0.444274f, -0.664310f , - 0.319109f, -0.423929f, -0.847616f , - 0.250178f, -0.551634f, -0.795683f , - 0.568889f, -0.628532f, -0.530389f , - -0.273385f, -0.257201f, -0.926881f , - -0.036931f, -0.279357f, -0.959477f , - -0.286734f, -0.263441f, -0.921077f , - -0.296379f, -0.316266f, -0.901185f , - -0.556059f, -0.248415f, -0.793151f , - -0.580046f, -0.327731f, -0.745748f , - -0.338701f, -0.405943f, -0.848818f , - -0.936880f, -0.048267f, -0.346303f , - -0.837592f, -0.159059f, -0.522628f , - -0.934764f, -0.112021f, -0.337146f , - -0.948513f, -0.019775f, -0.316121f , - -0.989037f, 0.049604f, -0.139084f , - -0.994036f, 0.026523f, -0.105779f , - -0.962521f, -0.056271f, -0.265305f , - -0.851225f, 0.168002f, 0.497184f , - -0.964578f, 0.031477f, 0.261914f , - -0.880203f, 0.087653f, 0.466433f , - -0.825996f, 0.238930f, 0.510532f , - -0.707097f, 0.261100f, 0.657146f , - -0.709714f, 0.278105f, 0.647274f , - -0.822731f, 0.256331f, 0.507354f , - 0.305587f, 0.183405f, 0.934334f , - 0.153278f, 0.298134f, 0.942137f , - 0.117904f, 0.363120f, 0.924252f , - 0.527237f, 0.249710f, 0.812198f , - -0.108186f, 0.198351f, 0.974142f , - -0.090732f, 0.171280f, 0.981036f , - -0.323161f, 0.200424f, 0.924877f , - -0.356488f, 0.198115f, 0.913053f , - -0.052685f, -0.917620f, 0.393951f , - -0.115341f, -0.874784f, 0.470584f , - -0.143591f, -0.989637f, -0.000629f , - -0.083513f, -0.996506f, -0.000923f , - -0.252511f, -0.923141f, 0.289913f , - -0.301492f, -0.953451f, -0.005866f , - -0.249508f, -0.921499f, -0.297634f , - -0.248250f, -0.968696f, -0.000922f , - -0.357409f, -0.383250f, 0.851691f , - -0.364897f, -0.668097f, 0.648457f , - -0.121442f, -0.357784f, 0.925874f , - -0.217220f, -0.552406f, 0.804775f , - -0.154125f, -0.528135f, 0.835056f , - -0.024525f, -0.529261f, 0.848105f , - -0.056850f, -0.558471f, 0.827574f , - -0.024040f, -0.578262f, 0.815497f , - -0.075870f, -0.025794f, 0.996784f , - -0.087822f, -0.024252f, 0.995841f , - -0.094980f, -0.082568f, 0.992049f , - -0.083211f, -0.093561f, 0.992130f , - -0.056249f, -0.028655f, 0.998005f , - -0.061384f, -0.137105f, 0.988653f , - -0.040339f, -0.180430f, 0.982760f , - 0.810946f, -0.426641f, 0.400430f , - 0.841201f, -0.330728f, 0.427784f , - 0.877860f, -0.450093f, 0.163640f , - 0.813352f, -0.556115f, 0.170863f , - 0.473661f, -0.070894f, 0.877849f , - 0.621532f, -0.190086f, 0.759977f , - 0.651651f, -0.163818f, 0.740617f , - 0.508142f, -0.026028f, 0.860880f , - 0.284939f, 0.055435f, 0.956941f , - 0.521348f, -0.025269f, 0.852970f , - 0.461928f, -0.057724f, 0.885037f , - -0.188870f, 0.163999f, 0.968211f , - -0.247963f, 0.163084f, 0.954944f , - -0.473312f, 0.211515f, 0.855124f , - -0.410259f, 0.218152f, 0.885493f , - -0.608293f, 0.210280f, 0.765351f , - -0.624055f, 0.240482f, 0.743454f , - -0.439638f, 0.266475f, 0.857735f , - -0.329609f, 0.254750f, 0.909099f , - -0.068972f, 0.191691f, 0.979029f , - -0.264559f, 0.239622f, 0.934125f , - -0.286326f, 0.215486f, 0.933586f , - 0.267695f, -0.078723f, 0.960282f , - 0.127512f, 0.048201f, 0.990665f , - 0.141769f, 0.041787f, 0.989017f , - 0.324519f, -0.445748f, 0.834264f , - 0.175096f, -0.133646f, 0.975438f , - 0.350501f, -0.203175f, 0.914259f , - -0.708206f, 0.008887f, 0.705950f , - -0.724929f, -0.079848f, 0.684180f , - -0.694900f, -0.036031f, 0.718203f , - -0.660776f, 0.068840f, 0.747419f , - -0.896825f, -0.063183f, 0.437850f , - -0.837248f, 0.196611f, 0.510254f , - -0.832624f, -0.021018f, 0.553440f , - -0.307901f, -0.306495f, 0.900698f , - -0.202691f, -0.155791f, 0.966771f , - -0.161301f, -0.300078f, 0.940178f , - -0.616902f, -0.260464f, 0.742691f , - -0.587265f, -0.430277f, 0.685552f , - -0.693244f, -0.417297f, 0.587602f , - -0.724156f, -0.231760f, 0.649527f , - -0.097353f, -0.995241f, -0.004150f , - -0.323461f, -0.946228f, -0.004972f , - -0.216032f, -0.719439f, 0.660104f , - -0.083957f, -0.740544f, 0.666742f , - -0.509914f, -0.860225f, 0.000000f , - -0.522845f, -0.852333f, -0.012687f , - -0.444143f, -0.895821f, -0.015556f , - -0.440225f, -0.897887f, 0.000000f , - -0.503638f, -0.863915f, -0.000495f , - -0.518134f, -0.838855f, 0.166915f , - -0.467100f, -0.862282f, 0.195671f , - -0.464884f, -0.885371f, -0.000693f , - -0.752163f, -0.593149f, 0.287097f , - -0.761547f, -0.517143f, 0.390653f , - -0.633733f, -0.586894f, 0.503922f , - -0.599177f, -0.683966f, 0.416147f , - -0.877329f, -0.453343f, 0.157401f , - -0.820813f, -0.567958f, 0.060739f , - -0.856991f, -0.513747f, -0.040368f , - -0.914320f, -0.398821f, 0.070436f , - -0.673950f, -0.713677f, -0.190938f , - -0.634880f, -0.768382f, -0.080723f , - -0.521574f, -0.831989f, -0.189091f , - -0.238291f, -0.970855f, 0.025657f , - -0.245545f, -0.969385f, 0.000000f , - -0.237828f, -0.971307f, 0.000000f , - 0.146092f, -0.984862f, 0.093300f , - 0.231525f, -0.970361f, -0.069256f , - 0.057334f, -0.985999f, -0.156583f , - -0.034363f, -0.998765f, 0.035890f , - 0.379896f, -0.897726f, 0.223084f , - 0.292034f, -0.903032f, 0.315040f , - 0.424573f, -0.804481f, 0.415389f , - 0.508462f, -0.782232f, 0.359971f , - 0.011850f, -0.970269f, 0.241740f , - 0.045963f, -0.977264f, 0.206984f , - 0.034116f, -0.999418f, 0.000000f , - -0.051993f, -0.976837f, 0.207570f , - -0.028357f, -0.999598f, 0.000000f , - -0.052865f, -0.998602f, 0.000000f , - -0.291638f, -0.920377f, 0.260486f , - -0.241735f, -0.970342f, 0.000000f , - -0.312211f, -0.950013f, 0.000000f , - -0.339740f, -0.936461f, 0.087275f , - -0.375332f, -0.926890f, 0.000000f , - -0.333750f, -0.942662f, 0.000000f , - -0.430040f, -0.902756f, 0.009873f , - -0.306976f, -0.948916f, -0.072964f , - -0.343731f, -0.891179f, -0.296056f , - -0.513376f, -0.836149f, -0.193131f , - 0.088564f, -0.994635f, -0.053465f , - 0.018220f, -0.999834f, -0.000001f , - 0.073896f, -0.997266f, 0.000000f , - 0.164575f, -0.970891f, -0.174030f , - 0.385240f, -0.917822f, -0.095875f , - 0.453965f, -0.882994f, -0.119323f , - 0.215646f, -0.945342f, -0.244594f , - 0.444075f, -0.893333f, 0.068942f , - 0.342750f, -0.939427f, 0.000000f , - 0.442905f, -0.896568f, 0.000000f , - 0.593386f, -0.798400f, 0.102230f , - 0.532066f, -0.846703f, 0.000000f , - 0.585915f, -0.810372f, 0.000000f , - 0.587608f, -0.795729f, 0.146735f , - 0.633062f, -0.774101f, 0.000000f , - 0.584236f, -0.811584f, 0.000000f , - 0.070919f, -0.041475f, 0.996619f , - -0.117956f, 0.110739f, 0.986825f , - 0.053376f, 0.014213f, 0.998473f , - 0.587990f, -0.694318f, 0.414959f , - 0.626075f, -0.630668f, 0.458572f , - 0.682127f, -0.679577f, 0.269960f , - 0.595999f, -0.768753f, 0.231958f , - 0.497546f, -0.521435f, 0.693220f , - 0.488768f, -0.546661f, 0.679903f , - 0.434439f, -0.447135f, 0.781878f , - 0.445888f, -0.427812f, 0.786232f , - 0.653835f, -0.671692f, 0.348323f , - 0.606059f, -0.740338f, 0.290847f , - 0.641124f, -0.708312f, 0.295389f , - 0.639879f, -0.636471f, 0.430650f , - 0.681834f, -0.654184f, 0.327333f , - 0.619959f, -0.692496f, 0.368918f , - 0.658447f, -0.303607f, 0.688673f , - 0.589333f, -0.191798f, 0.784793f , - 0.514711f, -0.241097f, 0.822767f , - 0.584471f, -0.359999f, 0.727183f , - 0.366453f, -0.073648f, 0.927517f , - 0.441084f, -0.039902f, 0.896578f , - 0.358005f, 0.030779f, 0.933212f , - 0.271621f, -0.002653f, 0.962401f , - 0.598292f, -0.142774f, 0.788455f , - 0.635031f, -0.149278f, 0.757926f , - 0.635531f, -0.250535f, 0.730297f , - -0.466273f, -0.525736f, 0.711471f , - -0.788306f, -0.179842f, 0.588414f , - -0.787972f, -0.109594f, 0.605878f , - -0.516953f, -0.456561f, 0.724093f , - -0.499889f, -0.655154f, 0.566466f , - -0.204347f, -0.792821f, 0.574176f , - -0.212508f, -0.845365f, 0.490100f , - -0.512110f, -0.770825f, 0.378908f , - 0.078967f, -0.755502f, 0.650370f , - 0.192391f, -0.756037f, 0.625615f , - 0.137911f, -0.830194f, 0.540147f , - 0.050449f, -0.827432f, 0.559296f , - -0.091069f, -0.842341f, 0.531195f , - -0.054677f, -0.846778f, 0.529129f , - -0.072846f, -0.858635f, 0.507384f , - -0.130576f, -0.695494f, 0.706567f , - -0.136111f, -0.738678f, 0.660173f , - -0.095939f, -0.775126f, 0.624480f , - -0.071690f, -0.702126f, 0.708435f , - -0.089645f, -0.592548f, 0.800531f , - -0.110885f, -0.518849f, 0.847644f , - -0.042136f, -0.387819f, 0.920772f , - 0.127641f, -0.465645f, 0.875718f , - 0.014501f, 0.007458f, 0.999867f , - 0.021156f, 0.131306f, 0.991116f , - 0.054787f, 0.017739f, 0.998340f , - 0.005516f, -0.264867f, 0.964269f , - -0.022548f, -0.267976f, 0.963162f , - -0.035678f, -0.327278f, 0.944254f , - -0.005948f, -0.324263f, 0.945948f , - 0.023021f, -0.129861f, 0.991265f , - 0.058420f, -0.137738f, 0.988744f , - 0.080013f, -0.023108f, 0.996526f , - 0.032934f, -0.007505f, 0.999429f , - -0.047669f, -0.238938f, 0.969864f , - 0.017404f, -0.327901f, 0.944552f , - -0.040375f, -0.314905f, 0.948264f , - -0.324501f, 0.073661f, 0.943013f , - -0.305769f, 0.210076f, 0.928641f , - -0.288438f, 0.103578f, 0.951880f , - -0.432184f, 0.039305f, 0.900928f , - -0.345039f, -0.070054f, 0.935970f , - -0.358557f, -0.096479f, 0.928509f , - -0.472454f, -0.038310f, 0.880522f , - -0.022290f, 0.049073f, 0.998546f , - 0.071505f, 0.050200f, 0.996176f , - 0.065226f, -0.040013f, 0.997068f , - -0.039757f, -0.030392f, 0.998747f , - -0.020644f, 0.072913f, 0.997125f , - -0.118255f, 0.013078f, 0.992897f , - 0.000402f, 0.094649f, 0.995511f , - -0.061670f, 0.040971f, 0.997255f , - 0.022568f, 0.148987f, 0.988582f , - -0.043532f, 0.134594f, 0.989944f , - -0.127270f, 0.027385f, 0.991490f , - 0.515897f, 0.081608f, 0.852754f , - 0.442802f, 0.176344f, 0.879107f , - 0.384632f, 0.146927f, 0.911302f , - 0.461786f, 0.059831f, 0.884971f , - 0.507151f, 0.027888f, 0.861406f , - 0.573479f, -0.039663f, 0.818260f , - 0.503654f, -0.096572f, 0.858491f , - 0.370456f, -0.156862f, 0.915509f , - -0.252305f, -0.192922f, 0.948221f , - -0.277997f, -0.091023f, 0.956260f , - -0.045457f, 0.184880f, 0.981709f , - -0.072248f, 0.121604f, 0.989946f , - -0.052663f, 0.164226f, 0.985016f , - -0.086185f, 0.359254f, 0.929252f , - -0.053035f, 0.240166f, 0.969282f , - -0.079520f, 0.256048f, 0.963388f , - -0.330936f, 0.407865f, 0.850957f , - -0.223865f, 0.250559f, 0.941862f , - -0.302228f, 0.228040f, 0.925557f , - -0.527396f, 0.495597f, 0.690099f , - -0.520358f, 0.466721f, 0.715122f , - -0.556837f, 0.322445f, 0.765481f , - -0.295750f, 0.571406f, 0.765524f , - -0.377952f, 0.432433f, 0.818630f , - -0.221144f, 0.428342f, 0.876139f , - -0.039794f, 0.615788f, 0.786906f , - -0.130642f, 0.589040f, 0.797474f , - -0.064570f, 0.512647f, 0.856168f , - 0.105757f, 0.597572f, 0.794810f , - 0.076552f, 0.503096f, 0.860833f , - 0.090376f, 0.493869f, 0.864827f , - 0.146982f, 0.539423f, 0.829107f , - 0.134324f, 0.444370f, 0.885716f , - 0.106547f, 0.424488f, 0.899143f , - 0.073619f, 0.554506f, 0.828917f , - 0.147112f, 0.437141f, 0.887280f , - 0.082649f, 0.324599f, 0.942234f , - -0.184186f, 0.441491f, 0.878158f , - -0.165219f, 0.000066f, 0.986257f , - -0.155984f, 0.280082f, 0.947219f , - -0.062219f, 0.619028f, 0.782901f , - -0.066896f, 0.428198f, 0.901206f , - -0.044509f, 0.441587f, 0.896114f , - -0.080768f, 0.422237f, 0.902880f , - -0.030811f, 0.434848f, 0.899976f , - -0.078232f, 0.422117f, 0.903159f , - -0.254474f, 0.377073f, 0.890539f , - -0.212569f, 0.419552f, 0.882491f , - -0.329052f, 0.453214f, 0.828445f , - -0.397153f, 0.650451f, 0.647444f , - -0.361805f, 0.598562f, 0.714717f , - -0.482772f, 0.875745f, -0.000884f , - -0.492276f, 0.870438f, -0.001217f , - -0.410877f, 0.611091f, 0.676571f , - -0.465085f, 0.551851f, 0.692211f , - -0.421938f, 0.619661f, 0.661808f , - -0.467222f, 0.797302f, 0.382116f , - -0.446908f, 0.828366f, 0.337761f , - -0.467259f, 0.884120f, -0.000001f , - -0.492654f, 0.870225f, 0.000000f , - -0.268030f, 0.743388f, 0.612808f , - -0.305088f, 0.672396f, 0.674392f , - -0.252286f, 0.702100f, 0.665888f , - -0.301410f, 0.903606f, 0.304382f , - -0.231297f, 0.925018f, 0.301402f , - -0.238827f, 0.971062f, 0.000001f , - -0.310946f, 0.950428f, 0.000000f , - -0.002803f, 0.807604f, 0.589718f , - -0.054215f, 0.773790f, 0.631118f , - 0.000256f, 0.777996f, 0.628270f , - 0.013272f, 0.954890f, 0.296662f , - 0.074559f, 0.955988f, 0.283775f , - 0.084955f, 0.996385f, -0.000001f , - 0.020382f, 0.999792f, -0.000001f , - 0.149273f, 0.822919f, 0.548199f , - 0.094891f, 0.774213f, 0.625771f , - 0.135571f, 0.770904f, 0.622356f , - 0.194162f, 0.951556f, 0.238417f , - 0.214605f, 0.946885f, 0.239486f , - 0.222154f, 0.975012f, 0.000000f , - 0.205243f, 0.978711f, 0.000000f , - 0.223589f, 0.801980f, 0.553927f , - 0.191058f, 0.753655f, 0.628888f , - 0.204991f, 0.750284f, 0.628533f , - 0.271801f, 0.924847f, 0.266049f , - 0.303255f, 0.918762f, 0.252808f , - 0.321086f, 0.947050f, 0.000000f , - 0.285084f, 0.958502f, 0.000000f , - 0.202648f, 0.872702f, 0.444213f , - 0.188883f, 0.777252f, 0.600169f , - 0.098528f, 0.842114f, 0.530222f , - 0.303420f, 0.952857f, -0.000001f , - 0.295571f, 0.933493f, 0.203047f , - 0.246393f, 0.949765f, 0.192969f , - 0.244265f, 0.969708f, 0.000000f , - -0.958689f, 0.284457f, 0.000001f , - -0.912668f, 0.404737f, 0.056784f , - -0.878904f, 0.476998f, 0.000001f , - -0.748130f, 0.652704f, 0.119499f , - -0.916359f, 0.386815f, 0.103254f , - -0.918944f, 0.394388f, 0.000000f , - -0.756971f, 0.653448f, 0.000000f , - -0.958268f, 0.258592f, 0.121872f , - -0.905531f, 0.413140f, 0.096582f , - -0.869852f, 0.460395f, 0.177184f , - -0.779149f, 0.576611f, 0.245860f , - -0.936732f, 0.324139f, 0.132163f , - -0.926910f, 0.332598f, 0.173828f , - -0.750828f, 0.597754f, 0.280977f , - -0.966710f, 0.209997f, 0.146194f , - -0.923265f, 0.231556f, 0.306535f , - -0.932141f, 0.308747f, 0.189180f , - -0.780282f, 0.543934f, 0.308701f , - -0.936108f, 0.289585f, 0.199605f , - -0.939708f, 0.292258f, 0.177579f , - -0.787369f, 0.555286f, 0.267782f , - -0.935153f, 0.173065f, 0.309091f , - -0.882961f, 0.245175f, 0.400336f , - -0.892924f, 0.232542f, 0.385502f , - -0.679879f, 0.545166f, 0.490467f , - -0.880749f, 0.299807f, 0.366603f , - -0.897968f, 0.301455f, 0.320591f , - -0.714476f, 0.555356f, 0.425564f , - -0.808099f, 0.115046f, 0.577703f , - -0.834709f, 0.173687f, 0.522584f , - -0.609614f, 0.392457f, 0.688730f , - -0.575770f, 0.343264f, 0.742064f , - -0.902791f, -0.036465f, 0.428532f , - -0.836942f, -0.154434f, 0.525051f , - -0.788864f, -0.181498f, 0.587155f , - -0.840506f, 0.012896f, 0.541649f , - -0.704704f, -0.145143f, 0.694497f , - -0.588072f, -0.133838f, 0.797658f , - -0.593995f, -0.141825f, 0.791868f , - -0.360393f, 0.126828f, 0.924138f , - -0.581281f, 0.004050f, 0.813693f , - -0.613352f, 0.019649f, 0.789566f , - -0.410028f, 0.196573f, 0.890638f , - -0.615065f, -0.468843f, 0.633941f , - -0.565612f, -0.637562f, 0.523066f , - -0.553294f, -0.588888f, 0.589132f , - -0.514816f, -0.399491f, 0.758532f , - -0.513798f, -0.455857f, 0.726778f , - -0.516155f, -0.362418f, 0.776039f , - -0.477527f, -0.364568f, 0.799411f , - -0.175758f, -0.639654f, 0.748300f , - -0.356696f, -0.612776f, 0.705176f , - -0.403002f, -0.443643f, 0.800481f , - -0.163249f, -0.432555f, 0.886705f , - 0.385140f, -0.297383f, -0.873631f , - 0.141969f, 0.536327f, -0.831984f , - 0.479161f, -0.069468f, -0.874974f , - -0.244428f, 0.785283f, -0.568845f , - 0.287498f, 0.892606f, 0.347274f , - -0.177745f, 0.815984f, -0.550070f , - 0.499064f, -0.556805f, 0.664006f , - 0.657384f, -0.752827f, -0.033119f , - 0.963642f, -0.267036f, -0.009287f , - 0.499711f, -0.174967f, 0.848337f , - 0.699711f, -0.520899f, -0.488946f , - 0.602858f, -0.303494f, -0.737871f , - 0.470575f, -0.253077f, -0.845288f , - 0.566699f, -0.524985f, -0.635015f , - 0.350342f, 0.403721f, -0.845145f , - 0.122066f, 0.519779f, -0.845535f , - 0.225164f, 0.362177f, -0.904505f , - 0.110473f, -0.149458f, 0.982577f , - 0.229778f, -0.269638f, 0.935146f , - 0.153359f, -0.143687f, 0.977668f , - 0.560797f, -0.559240f, 0.610538f , - 0.569861f, -0.737690f, 0.362038f , - 0.499314f, -0.651635f, 0.571014f , - 0.710526f, 0.703671f, 0.000000f , - 0.711550f, 0.702624f, -0.004043f , - 0.633462f, 0.773683f, 0.011897f , - 0.634486f, 0.772934f, 0.000000f , - 0.906666f, 0.421850f, 0.000000f , - 0.861832f, 0.507162f, -0.005602f , - 0.861488f, 0.507777f, 0.000000f , - 0.806933f, 0.589528f, -0.036266f , - 0.915567f, 0.401771f, -0.017790f , - 0.913569f, 0.406683f, 0.000000f , - 0.684001f, 0.729481f, 0.000000f , - 0.909804f, 0.414799f, -0.014074f , - 0.845119f, 0.532742f, -0.044270f , - 0.870527f, 0.492078f, -0.006518f , - 0.847068f, 0.529308f, 0.048045f , - 0.921467f, 0.386952f, 0.034157f , - 0.922283f, 0.386506f, 0.002698f , - 0.712471f, 0.695357f, 0.094147f , - 0.857204f, 0.505169f, 0.100030f , - 0.834605f, 0.537721f, 0.119541f , - 0.841048f, 0.536761f, 0.067269f , - 0.899045f, 0.390599f, 0.197864f , - 0.893413f, 0.410370f, 0.182785f , - 0.894554f, 0.426297f, 0.134329f , - 0.889958f, 0.423289f, 0.169709f , - 0.826129f, 0.465297f, 0.317820f , - 0.828150f, 0.446060f, 0.339409f , - 0.825895f, 0.468411f, 0.313830f , - 0.864199f, 0.395527f, 0.310997f , - 0.849028f, 0.420504f, 0.319888f , - 0.854413f, 0.425119f, 0.298752f , - 0.871112f, 0.398669f, 0.286751f , - 0.818731f, 0.384459f, 0.426463f , - 0.770240f, 0.406243f, 0.491627f , - 0.788999f, 0.431675f, 0.437193f , - 0.827903f, 0.266100f, 0.493728f , - 0.827151f, 0.285698f, 0.483939f , - 0.837169f, 0.337565f, 0.430347f , - 0.793606f, 0.348596f, 0.498669f , - 0.755000f, 0.336600f, 0.562740f , - 0.742920f, 0.346292f, 0.572845f , - 0.748232f, 0.338475f, 0.570599f , - 0.662515f, 0.385341f, 0.642329f , - 0.751384f, 0.387315f, 0.534237f , - 0.765107f, 0.335146f, 0.549808f , - 0.674539f, 0.304812f, 0.672374f , - 0.773307f, 0.459897f, 0.436453f , - 0.784537f, 0.453546f, 0.422845f , - 0.774174f, 0.448747f, 0.446408f , - 0.755717f, 0.468076f, 0.458035f , - 0.816251f, 0.306343f, 0.489783f , - 0.846179f, 0.373804f, 0.379805f , - 0.818725f, 0.355259f, 0.451088f , - 0.415697f, -0.659889f, 0.625894f , - 0.889619f, -0.239794f, 0.388685f , - 0.805218f, -0.264740f, 0.530600f , - -0.075231f, -0.898483f, 0.432514f , - -0.063043f, -0.839961f, 0.538972f , - 0.019396f, -0.935928f, 0.351658f , - 0.330301f, -0.877267f, 0.348288f , - 0.289850f, -0.912028f, 0.290160f , - -0.041340f, -0.949155f, 0.312083f , - 0.803050f, 0.334064f, 0.493469f , - 0.761018f, 0.285679f, 0.582442f , - 0.780916f, 0.333246f, 0.528316f , - 0.857211f, 0.282420f, 0.430615f , - 0.832230f, 0.283975f, 0.476184f , - 0.832217f, 0.335246f, 0.441615f , - 0.842210f, 0.328969f, 0.427155f , - 0.870082f, -0.170937f, 0.462318f , - 0.879389f, 0.024890f, 0.475453f , - 0.921976f, 0.034949f, 0.385668f , - 0.920895f, -0.171247f, 0.350182f , - 0.571107f, 0.512222f, -0.641455f , - 0.495291f, 0.540857f, -0.679824f , - 0.505424f, 0.460172f, -0.729923f , - 0.744025f, 0.668152f, 0.000001f , - 0.700686f, 0.646787f, -0.301173f , - 0.692282f, 0.637029f, -0.339028f , - 0.741022f, 0.671481f, 0.000001f , - 0.523727f, 0.840878f, -0.136508f , - 0.616952f, 0.758427f, -0.210139f , - 0.638469f, 0.769648f, 0.000000f , - 0.538143f, 0.842853f, -0.000001f , - 0.581353f, 0.805348f, 0.115944f , - 0.471258f, 0.877071f, 0.093073f , - 0.603742f, 0.791931f, 0.091324f , - 0.435487f, 0.682561f, 0.586909f , - 0.436470f, 0.830653f, 0.345702f , - 0.568693f, 0.748640f, 0.340773f , - 0.556926f, 0.615718f, 0.557427f , - 0.200070f, 0.979161f, -0.034868f , - 0.124255f, 0.986941f, -0.102509f , - 0.226379f, 0.923966f, -0.308285f , - 0.320628f, 0.926019f, -0.199216f , - -0.035964f, 0.888153f, -0.458139f , - -0.224737f, 0.918386f, -0.325670f , - -0.149843f, 0.828369f, -0.539770f , - 0.065289f, 0.804187f, 0.590779f , - 0.048733f, 0.967049f, 0.249882f , - 0.151753f, 0.949207f, 0.275640f , - 0.163966f, 0.787522f, 0.594075f , - -0.186217f, 0.743291f, 0.642528f , - -0.055723f, 0.417548f, 0.906945f , - -0.191245f, 0.725329f, 0.661304f , - -0.057623f, -0.505572f, 0.860858f , - -0.178821f, -0.686854f, 0.704454f , - -0.111660f, -0.621895f, 0.775099f , - -0.000277f, -0.231587f, 0.972814f , - 0.268418f, -0.370605f, 0.889159f , - -0.017202f, -0.482968f, 0.875469f , - 0.844411f, 0.521088f, -0.124247f , - 0.839148f, 0.543903f, 0.000514f , - 0.831097f, 0.556127f, 0.000282f , - 0.745665f, 0.114099f, 0.656479f , - 0.601508f, 0.104622f, 0.791987f , - 0.580826f, 0.089408f, 0.809103f , - 0.899028f, 0.437672f, 0.013829f , - 0.901798f, 0.407579f, 0.143662f , - 0.952163f, 0.222402f, 0.209580f , - 0.962044f, 0.267399f, 0.054485f , - 0.980747f, 0.174100f, 0.088456f , - 0.918323f, 0.385883f, 0.088193f , - 0.912208f, 0.409112f, -0.022464f , - 0.969043f, 0.232754f, -0.082347f , - 0.370950f, 0.005604f, 0.928636f , - 0.333187f, 0.105764f, 0.936910f , - 0.591419f, 0.090845f, 0.801230f , - 0.291463f, 0.061302f, 0.954616f , - 0.286451f, 0.093112f, 0.953560f , - 0.247598f, 0.055402f, 0.967278f , - 0.244428f, 0.007226f, 0.969640f , - 0.281828f, 0.021639f, 0.959221f , - 0.280892f, 0.026619f, 0.959370f , - 0.257325f, 0.055412f, 0.964735f , - 0.261436f, 0.045736f, 0.964137f , - 0.558162f, 0.060653f, 0.827512f , - 0.430598f, -0.002471f, 0.902540f , - 0.394368f, 0.013906f, 0.918847f , - 0.502046f, 0.101349f, 0.858882f , - 0.391794f, -0.003170f, 0.920047f , - 0.412978f, -0.009950f, 0.910687f , - 0.520883f, -0.088232f, 0.849056f , - 0.399326f, -0.050439f, 0.915420f , - 0.341420f, -0.161986f, 0.925847f , - 0.309638f, -0.087983f, 0.946775f , - 0.347892f, -0.183500f, 0.919401f , - 0.299861f, -0.231301f, 0.925518f , - 0.333065f, -0.203114f, 0.920767f , - 0.896496f, 0.416591f, 0.150817f , - 0.871944f, 0.489605f, 0.000001f , - 0.905349f, 0.424669f, 0.000009f , - 0.745771f, 0.665281f, 0.035044f , - 0.598949f, 0.797970f, 0.067118f , - 0.586680f, 0.809819f, 0.000609f , - 0.748788f, 0.662809f, -0.000902f , - 0.487629f, 0.309402f, 0.816387f , - 0.542307f, 0.535058f, 0.647778f , - 0.721871f, 0.481134f, 0.497406f , - 0.724701f, 0.292684f, 0.623815f , - 0.360218f, 0.918569f, 0.162709f , - 0.170136f, 0.985419f, 0.001524f , - 0.331055f, 0.943608f, 0.002351f , - 0.370927f, 0.255299f, 0.892880f , - 0.385118f, 0.574414f, 0.722311f , - 0.318085f, 0.366539f, 0.874340f , - 0.875223f, -0.467065f, 0.125834f , - 0.895852f, -0.444352f, -0.000327f , - 0.882295f, -0.470695f, -0.001059f , - 0.558256f, -0.392259f, 0.731084f , - 0.665068f, -0.544970f, 0.510580f , - 0.801983f, -0.383417f, 0.458056f , - 0.683414f, -0.285015f, 0.672095f , - 0.918089f, -0.326974f, 0.224055f , - 0.976456f, -0.215716f, -0.000001f , - 0.939739f, -0.341894f, -0.000030f , - 0.608281f, -0.126875f, 0.783515f , - 0.734392f, -0.167641f, 0.657697f , - 0.725973f, -0.212403f, 0.654101f , - 0.617328f, -0.160434f, 0.770173f , - 0.833442f, -0.444111f, 0.328847f , - 0.702977f, -0.711213f, -0.000090f , - 0.904409f, -0.426666f, -0.000026f , - -0.178294f, -0.624512f, 0.760392f , - -0.301567f, -0.501694f, 0.810778f , - -0.273373f, -0.593837f, 0.756720f , - 0.527528f, -0.286685f, 0.799704f , - 0.273425f, -0.377657f, 0.884655f , - 0.232371f, -0.565276f, 0.791497f , - 0.487708f, -0.444366f, 0.751452f , - 0.170823f, -0.116638f, 0.978374f , - 0.243677f, -0.127828f, 0.961396f , - 0.469693f, -0.162670f, 0.867714f , - 0.403769f, -0.158581f, 0.901012f , - -0.184859f, -0.169165f, 0.968096f , - -0.136342f, -0.243400f, 0.960295f , - -0.208133f, -0.374602f, 0.903523f , - -0.254453f, -0.322688f, 0.911661f , - -0.002471f, -0.362666f, 0.931916f , - -0.023040f, -0.380023f, 0.924690f , - -0.043828f, -0.374697f, 0.926111f , - 0.265166f, -0.005790f, 0.964185f , - 0.224395f, -0.026978f, 0.974125f , - 0.232286f, -0.055817f, 0.971045f , - 0.268048f, -0.006113f, 0.963386f , - 0.426997f, -0.015066f, 0.904127f , - 0.302401f, -0.019260f, 0.952986f , - 0.381449f, 0.100016f, 0.918963f , - 0.646912f, 0.211996f, 0.732505f , - 0.470205f, -0.093389f, 0.877602f , - 0.372588f, -0.122481f, 0.919878f , - 0.395816f, -0.079543f, 0.914879f , - 0.493390f, 0.037820f, 0.868985f , - 0.546594f, -0.045103f, 0.836182f , - 0.504442f, -0.078387f, 0.859880f , - 0.449888f, -0.028778f, 0.892621f , - 0.336789f, -0.452703f, 0.825611f , - 0.167249f, -0.628719f, 0.759434f , - 0.166446f, -0.482999f, 0.859655f , - 0.115229f, -0.423849f, 0.898373f , - 0.239912f, -0.487191f, 0.839694f , - 0.366223f, -0.364886f, 0.856002f , - 0.236183f, -0.277109f, 0.931358f , - -0.204185f, -0.556733f, 0.805206f , - -0.254770f, -0.540988f, 0.801513f , - -0.238793f, -0.471354f, 0.849002f , - -0.227777f, -0.461006f, 0.857666f , - -0.213979f, -0.753958f, 0.621096f , - -0.349382f, -0.758611f, 0.549947f , - -0.347405f, -0.707736f, 0.615159f , - -0.203206f, -0.713790f, 0.670232f , - 0.308320f, -0.586994f, 0.748583f , - 0.359830f, -0.583413f, 0.728115f , - 0.330090f, -0.601465f, 0.727517f , - 0.003487f, -0.492400f, 0.870362f , - 0.149978f, -0.515381f, 0.843735f , - 0.140604f, -0.542804f, 0.828006f , - 0.011118f, -0.516082f, 0.856467f , - -0.096561f, -0.691132f, 0.716249f , - 0.072608f, -0.581267f, 0.810467f , - -0.072996f, -0.553582f, 0.829589f , - -0.151052f, -0.648772f, 0.745841f , - 0.328009f, -0.333491f, 0.883852f , - 0.189034f, -0.298303f, 0.935565f , - 0.294396f, -0.308385f, 0.904560f , - -0.085965f, -0.695452f, 0.713412f , - 0.095993f, -0.556099f, 0.825554f , - 0.111553f, -0.552348f, 0.826116f , - -0.089893f, -0.685460f, 0.722540f , - -0.014151f, -0.454338f, 0.890717f , - -0.083974f, -0.415815f, 0.905564f , - -0.045124f, -0.422485f, 0.905246f , - -0.166693f, -0.488786f, 0.856330f , - -0.243335f, -0.482502f, 0.841415f , - -0.153017f, -0.414248f, 0.897209f , - -0.358444f, -0.887494f, 0.289606f , - -0.358473f, -0.887486f, -0.289594f , - -0.354712f, -0.934976f, -0.000068f , - -0.478588f, -0.866410f, 0.142434f , - -0.486118f, -0.873893f, 0.000000f , - -0.497541f, -0.867441f, 0.000000f , - -0.304617f, -0.728816f, 0.613218f , - -0.375354f, -0.799175f, 0.469498f , - -0.405238f, -0.794505f, 0.452265f , - -0.331416f, -0.724279f, 0.604635f , - -0.335713f, -0.929891f, 0.150330f , - -0.242648f, -0.970114f, 0.000000f , - -0.337223f, -0.941425f, 0.000000f , - -0.296312f, -0.815256f, 0.497551f , - -0.303162f, -0.840232f, 0.449559f , - -0.305980f, -0.847886f, 0.432974f , - -0.224287f, -0.770584f, 0.596570f , - -0.224195f, -0.901342f, 0.370566f , - -0.265031f, -0.964240f, 0.000000f , - -0.256724f, -0.966485f, 0.000000f , - -0.110174f, -0.781627f, 0.613939f , - -0.118801f, -0.782890f, 0.610712f , - -0.173886f, -0.766952f, 0.617696f , - -0.222411f, -0.787299f, 0.575059f , - 0.216889f, -0.798725f, 0.561246f , - 0.022618f, -0.818161f, 0.574544f , - 0.019776f, -0.776546f, 0.629750f , - 0.240203f, -0.617781f, 0.748765f , - 0.164724f, -0.952091f, 0.257662f , - 0.345431f, -0.912523f, 0.219042f , - 0.344177f, -0.938905f, 0.000000f , - 0.154093f, -0.988056f, 0.000000f , - 0.164724f, -0.952090f, -0.257663f , - 0.186283f, -0.876079f, -0.444729f , - 0.019776f, -0.776546f, -0.629750f , - -0.044305f, -0.789681f, -0.611916f , - -0.173887f, -0.766952f, -0.617696f , - -0.243398f, -0.774844f, -0.583417f , - -0.205316f, -0.803788f, -0.558364f , - -0.173808f, -0.789067f, -0.589207f , - -0.295271f, -0.798650f, -0.524379f , - -0.349126f, -0.823582f, -0.447017f , - -0.351364f, -0.828046f, -0.436901f , - -0.332499f, -0.806914f, -0.488194f , - -0.305980f, -0.847886f, -0.432974f , - -0.329069f, -0.834247f, -0.442432f , - -0.372031f, -0.879243f, -0.297530f , - -0.329244f, -0.897897f, -0.292198f , - -0.252700f, -0.747961f, -0.613757f , - -0.273326f, -0.743623f, -0.610179f , - -0.405238f, -0.794506f, -0.452265f , - -0.431897f, -0.798246f, -0.419843f , - -0.484039f, -0.831364f, -0.273020f , - -0.445156f, -0.841113f, -0.307188f , - -0.291066f, -0.719544f, -0.630505f , - -0.362180f, -0.801512f, -0.475820f , - -0.188811f, -0.565723f, -0.802688f , - 0.055707f, -0.496074f, -0.866492f , - -0.011972f, -0.505763f, -0.862589f , - -0.057810f, -0.308592f, -0.949436f , - -0.117300f, -0.378940f, -0.917957f , - -0.274098f, -0.817674f, -0.506241f , - -0.095014f, -0.721490f, -0.685875f , - 0.111552f, -0.552349f, -0.826115f , - 0.119531f, -0.573966f, -0.810108f , - 0.285587f, -0.461762f, -0.839771f , - 0.261587f, -0.424678f, -0.866730f , - 0.083522f, -0.327622f, -0.941110f , - -0.284243f, -0.771008f, -0.569870f , - -0.078113f, -0.702100f, -0.707781f , - -0.199521f, -0.493227f, -0.846710f , - -0.013999f, -0.487601f, -0.872955f , - 0.220591f, -0.602284f, -0.767199f , - 0.246039f, -0.567183f, -0.785982f , - 0.389587f, -0.505923f, -0.769587f , - -0.375546f, -0.814477f, -0.442258f , - -0.098252f, -0.763636f, -0.638128f , - -0.089610f, -0.749823f, -0.655543f , - -0.219864f, -0.777966f, -0.588582f , - -0.347404f, -0.707737f, -0.615158f , - -0.322581f, -0.664643f, -0.673937f , - -0.386489f, -0.612104f, -0.689895f , - -0.418222f, -0.688050f, -0.593024f , - -0.187760f, -0.641248f, -0.744008f , - -0.238793f, -0.471354f, -0.849002f , - -0.229842f, -0.434154f, -0.871024f , - -0.192334f, -0.449463f, -0.872348f , - -0.206965f, -0.474598f, -0.855524f , - -0.019234f, -0.483422f, -0.875176f , - 0.021669f, -0.415167f, -0.909487f , - -0.155868f, -0.410942f, -0.898238f , - -0.139036f, -0.469757f, -0.871778f , - -0.081082f, -0.730786f, -0.677774f , - 0.005732f, -0.677559f, -0.735446f , - -0.099615f, -0.486764f, -0.867835f , - 0.043171f, -0.512286f, -0.857729f , - 0.366225f, -0.364884f, -0.856002f , - 0.498420f, -0.203207f, -0.842784f , - 0.507909f, -0.286026f, -0.812538f , - 0.411563f, -0.421172f, -0.808226f , - 0.206863f, -0.673544f, -0.709610f , - 0.496780f, 0.052636f, -0.866279f , - 0.504439f, -0.078387f, -0.859882f , - 0.516129f, -0.103302f, -0.850258f , - 0.372588f, -0.122481f, -0.919879f , - 0.303402f, -0.106724f, -0.946867f , - 0.255187f, -0.185351f, -0.948960f , - 0.330156f, -0.204664f, -0.921471f , - 0.301440f, -0.119908f, -0.945915f , - 0.293008f, -0.089824f, -0.951881f , - 0.381449f, 0.100017f, -0.918963f , - 0.496532f, 0.241959f, -0.833613f , - 0.380931f, 0.087777f, -0.920428f , - 0.283794f, 0.008965f, -0.958843f , - 0.104129f, -0.259902f, -0.960004f , - 0.172010f, -0.127608f, -0.976795f , - 0.044519f, -0.347388f, -0.936664f , - -0.023039f, -0.380022f, -0.924691f , - 0.030030f, -0.392841f, -0.919116f , - 0.227570f, -0.472530f, -0.851426f , - 0.064578f, -0.604981f, -0.793617f , - -0.029886f, -0.537266f, -0.842883f , - -0.064266f, -0.073644f, -0.995212f , - 0.469694f, -0.162670f, -0.867713f , - 0.522589f, -0.184849f, -0.832305f , - -0.077933f, -0.708106f, -0.701792f , - -0.030708f, -0.623477f, -0.781239f , - -0.310279f, -0.424374f, -0.850667f , - 0.692817f, -0.267121f, -0.669814f , - 0.803862f, -0.265940f, -0.532054f , - 0.703896f, -0.467004f, -0.535199f , - 0.608286f, -0.126879f, -0.783511f , - 0.617354f, -0.126076f, -0.776517f , - 0.784146f, -0.426890f, -0.450422f , - 0.845497f, -0.279369f, -0.455069f , - 0.339075f, 0.034836f, -0.940114f , - 0.435480f, 0.067546f, -0.897661f , - -0.342438f, -0.736859f, -0.582903f , - 0.457173f, -0.118291f, -0.881476f , - 0.486822f, -0.392356f, -0.780424f , - 0.890015f, -0.372115f, -0.263446f , - 0.859743f, -0.442318f, -0.255337f , - 0.503615f, -0.156590f, -0.849619f , - 0.481656f, 0.111520f, -0.869236f , - 0.612232f, 0.734093f, -0.293734f , - 0.416298f, 0.816618f, -0.399789f , - 0.722554f, 0.480999f, -0.496544f , - 0.779044f, 0.500384f, -0.377765f , - 0.793857f, 0.578258f, -0.188173f , - 0.747716f, 0.631004f, -0.206771f , - 0.649648f, 0.333054f, -0.683398f , - 0.723942f, 0.458079f, -0.515821f , - 0.827836f, 0.365391f, -0.425649f , - 0.941162f, 0.175075f, -0.289072f , - 0.874171f, 0.401523f, -0.273139f , - 0.611066f, 0.084259f, -0.787083f , - 0.781195f, 0.141006f, -0.608154f , - 0.463776f, -0.103485f, -0.879888f , - 0.431338f, -0.139383f, -0.891359f , - 0.368619f, -0.150822f, -0.917264f , - 0.357044f, 0.013280f, -0.933993f , - 0.436255f, -0.038364f, -0.899005f , - 0.347821f, -0.188569f, -0.918402f , - 0.395917f, 0.103828f, -0.912398f , - 0.321978f, 0.102001f, -0.941236f , - 0.336870f, 0.063468f, -0.939410f , - 0.412977f, -0.009947f, -0.910687f , - 0.445378f, -0.000474f, -0.895343f , - 0.320190f, 0.005273f, -0.947339f , - 0.310594f, 0.011043f, -0.950479f , - 0.689089f, 0.085709f, -0.719590f , - 0.586753f, 0.036809f, -0.808929f , - 0.394368f, 0.013904f, -0.918847f , - 0.355478f, 0.050012f, -0.933346f , - 0.307695f, 0.029971f, -0.951013f , - 0.320371f, 0.001901f, -0.947290f , - 0.250643f, 0.032245f, -0.967542f , - 0.393954f, 0.097456f, -0.913949f , - 0.408313f, 0.135861f, -0.902675f , - 0.331503f, 0.089023f, -0.939245f , - 0.332428f, 0.090987f, -0.938730f , - 0.271498f, 0.063018f, -0.960374f , - 0.333186f, 0.105766f, -0.936910f , - 0.318972f, 0.134199f, -0.938215f , - 0.252020f, 0.101778f, -0.962355f , - 0.265034f, 0.072868f, -0.961482f , - 0.949322f, 0.151893f, -0.275166f , - 0.912215f, 0.409116f, 0.022093f , - 0.868886f, 0.495012f, -0.000930f , - 0.952162f, 0.222404f, -0.209579f , - 0.956738f, 0.024163f, -0.289945f , - 0.875859f, -0.002945f, -0.482558f , - 0.893862f, 0.158985f, -0.419207f , - 0.525358f, 0.013297f, -0.850777f , - 0.674554f, 0.118626f, -0.728632f , - 0.988371f, 0.039671f, -0.146795f , - 0.944015f, -0.015861f, -0.329522f , - 0.897499f, 0.435992f, 0.066378f , - 0.894091f, 0.439283f, 0.087361f , - 0.949687f, 0.307912f, 0.057314f , - 0.873316f, 0.435673f, 0.217964f , - 0.323422f, -0.102629f, -0.940673f , - 0.392400f, 0.014818f, -0.919675f , - 0.292568f, -0.253074f, -0.922148f , - 0.282410f, -0.252501f, -0.925466f , - 0.297776f, -0.223014f, -0.928221f , - 0.343354f, -0.217270f, -0.913730f , - 0.297312f, -0.237027f, -0.924891f , - 0.275176f, -0.252805f, -0.927560f , - 0.281476f, -0.253764f, -0.925405f , - 0.229054f, -0.054221f, -0.971902f , - 0.240405f, -0.062311f, -0.968671f , - 0.265224f, -0.169370f, -0.949194f , - -0.001414f, -0.143707f, -0.989619f , - 0.524948f, -0.492612f, -0.694092f , - 0.413265f, -0.267787f, -0.870346f , - -0.166774f, -0.405915f, -0.898565f , - -0.133104f, -0.341252f, -0.930500f , - -0.206705f, -0.401575f, -0.892194f , - -0.224644f, -0.411653f, -0.883220f , - -0.227989f, -0.415110f, -0.880741f , - -0.200565f, -0.423981f, -0.883184f , - -0.178822f, -0.686855f, -0.704453f , - -0.273703f, -0.624840f, -0.731205f , - 0.288873f, -0.379064f, -0.879126f , - -0.186219f, 0.743294f, -0.642523f , - -0.042641f, 0.340689f, -0.939209f , - -0.079163f, 0.785667f, -0.613563f , - 0.336444f, 0.784565f, 0.520830f , - 0.237658f, 0.796421f, 0.556087f , - 0.131039f, 0.920265f, 0.368702f , - -0.257960f, 0.964272f, 0.060299f , - 0.159202f, 0.984537f, -0.073085f , - 0.298037f, 0.730188f, -0.614816f , - 0.672594f, 0.715506f, -0.188860f , - 0.569138f, 0.802661f, -0.178373f , - 0.471258f, 0.877071f, -0.093072f , - 0.491046f, 0.869009f, -0.060800f , - 0.384974f, 0.921998f, -0.041411f , - 0.361092f, 0.929178f, -0.078995f , - 0.439483f, 0.872533f, 0.213404f , - 0.378703f, 0.924226f, 0.048887f , - 0.489412f, 0.844430f, 0.217746f , - 0.692282f, 0.637028f, 0.339028f , - 0.678428f, 0.651578f, 0.339384f , - 0.664066f, 0.530269f, 0.527097f , - 0.621598f, 0.585091f, 0.520850f , - 0.468501f, 0.652835f, 0.595242f , - 0.614408f, 0.277397f, -0.738616f , - 0.520311f, 0.241132f, -0.819226f , - 0.223653f, 0.075685f, -0.971726f , - 0.624541f, -0.336532f, -0.704766f , - 0.727490f, -0.405188f, -0.553697f , - 0.789961f, -0.171382f, -0.588718f , - 0.909350f, 0.213404f, -0.357130f , - 0.889324f, 0.184508f, -0.418400f , - 0.819816f, 0.335769f, -0.463854f , - 0.702853f, 0.266386f, -0.659573f , - 0.716855f, 0.241693f, -0.653991f , - -0.241131f, -0.780743f, -0.576452f , - -0.233041f, -0.880967f, -0.411811f , - 0.046410f, -0.883173f, -0.466746f , - 0.289851f, -0.912027f, -0.290160f , - 0.244019f, -0.932468f, -0.266378f , - 0.607574f, -0.759130f, -0.233614f , - 0.609872f, -0.733230f, -0.300715f , - -0.111841f, -0.924538f, -0.364309f , - 0.889620f, -0.239793f, -0.388685f , - 0.931054f, -0.188989f, -0.312124f , - 0.817582f, 0.215173f, -0.534097f , - 0.846180f, 0.373807f, -0.379801f , - 0.816954f, 0.425473f, -0.389305f , - 0.834702f, 0.409606f, -0.368097f , - 0.857834f, 0.373182f, -0.353350f , - 0.755712f, 0.381564f, -0.532267f , - 0.780902f, 0.432840f, -0.450379f , - 0.774175f, 0.448746f, -0.446408f , - 0.756991f, 0.446990f, -0.476618f , - 0.769025f, 0.418853f, -0.482869f , - 0.781805f, 0.422753f, -0.458324f , - 0.603648f, 0.440572f, -0.664459f , - 0.694427f, 0.446905f, -0.563957f , - 0.765107f, 0.335146f, -0.549807f , - 0.783527f, 0.281457f, -0.553957f , - 0.776462f, 0.302008f, -0.553080f , - 0.761719f, 0.334857f, -0.554667f , - 0.729601f, 0.330652f, -0.598625f , - 0.743973f, 0.347338f, -0.570841f , - 0.824621f, 0.138488f, -0.548471f , - 0.797195f, 0.209192f, -0.566321f , - 0.837169f, 0.337564f, -0.430347f , - 0.841714f, 0.374560f, -0.388874f , - 0.838577f, 0.384599f, -0.385840f , - 0.833877f, 0.353404f, -0.423974f , - 0.755537f, 0.365224f, -0.543853f , - 0.836932f, 0.372085f, -0.401369f , - 0.846094f, 0.386206f, -0.367383f , - 0.854413f, 0.425118f, -0.298752f , - 0.869719f, 0.405951f, -0.280701f , - 0.843059f, 0.458231f, -0.281560f , - 0.835893f, 0.451102f, -0.312713f , - 0.822958f, 0.435527f, -0.364770f , - 0.907601f, 0.340058f, -0.246213f , - 0.894553f, 0.426298f, -0.134330f , - 0.903369f, 0.414924f, -0.108451f , - 0.883780f, 0.461262f, -0.078551f , - 0.872666f, 0.471329f, -0.127681f , - 0.825651f, 0.527685f, -0.199625f , - 0.830007f, 0.526005f, -0.185493f , - 0.926760f, 0.375653f, -0.000725f , - 0.907381f, 0.412781f, -0.079195f , - 0.922283f, 0.386507f, -0.002698f , - 0.921722f, 0.387670f, 0.011816f , - 0.936592f, 0.350148f, 0.013868f , - 0.935871f, 0.352032f, 0.014792f , - 0.802602f, 0.595132f, 0.040587f , - 0.828925f, 0.556506f, 0.056424f , - -0.109724f, 0.988153f, -0.107305f , - 0.839661f, 0.543046f, 0.008324f , - 0.861833f, 0.507162f, 0.005602f , - 0.862816f, 0.505500f, 0.004177f , - 0.633461f, 0.773683f, -0.011897f , - 0.531876f, 0.846655f, -0.016826f , - 0.512742f, 0.857811f, -0.035431f , - 0.630279f, 0.775715f, -0.031860f , - 0.695280f, 0.710705f, -0.107162f , - 0.784382f, 0.611970f, -0.101183f , - 0.788630f, 0.612191f, -0.057310f , - 0.619278f, 0.414940f, -0.666573f , - 0.690615f, 0.518965f, -0.503713f , - 0.560798f, -0.559242f, -0.610536f , - 0.640833f, -0.651348f, -0.406299f , - 0.663497f, -0.378772f, -0.645216f , - 0.155653f, -0.075314f, -0.984937f , - 0.086156f, -0.100539f, -0.991196f , - 0.095155f, -0.140025f, -0.985565f , - 0.322511f, -0.403125f, -0.856433f , - 0.037647f, 0.181014f, -0.982760f , - 0.058813f, 0.111151f, -0.992062f , - 0.000488f, 0.678848f, 0.734279f , - 0.699710f, -0.520899f, 0.488948f , - 0.881978f, -0.320990f, 0.345081f , - 0.615791f, -0.775947f, -0.136774f , - 0.560698f, -0.767848f, -0.309882f , - 0.498468f, -0.668978f, -0.551360f , - 0.113067f, -0.003706f, -0.993580f , - 0.179530f, -0.075063f, -0.980885f , - -0.092841f, 0.674475f, 0.732437f , - -0.078605f, 0.564985f, 0.821348f , - -0.175102f, 0.767320f, 0.616895f , - 0.623832f, 0.253886f, 0.739172f , - 0.432117f, -0.053852f, 0.900208f , - 0.403981f, -0.307105f, 0.861676f , - -0.292837f, -0.815718f, -0.498849f , - -0.411807f, -0.753804f, -0.512049f , - -0.368092f, -0.846141f, -0.385426f , - -0.210986f, -0.676211f, -0.705849f , - -0.403003f, -0.443642f, -0.800481f , - -0.485636f, -0.222146f, -0.845464f , - -0.586883f, -0.273424f, -0.762107f , - -0.505321f, -0.426084f, -0.750402f , - -0.586668f, -0.317667f, -0.744922f , - -0.599787f, -0.381006f, -0.703626f , - -0.565612f, -0.637563f, -0.523065f , - -0.534391f, -0.684294f, -0.496154f , - -0.508175f, -0.718486f, -0.474905f , - -0.531458f, -0.672142f, -0.515537f , - -0.268013f, -0.134894f, -0.953925f , - -0.325996f, 0.048246f, -0.944139f , - -0.613350f, 0.019649f, -0.789567f , - -0.677248f, 0.073573f, -0.732067f , - -0.743209f, -0.107398f, -0.660383f , - -0.710205f, -0.095076f, -0.697546f , - -0.594849f, -0.188035f, -0.781535f , - -0.902790f, -0.036466f, -0.428532f , - -0.901694f, -0.012924f, -0.432181f , - -0.649256f, 0.487685f, -0.583635f , - -0.897967f, 0.301456f, -0.320591f , - -0.915487f, 0.286400f, -0.282593f , - -0.952432f, 0.158967f, -0.260006f , - -0.948208f, 0.163335f, -0.272438f , - -0.886806f, 0.220042f, -0.406395f , - -0.772001f, 0.544937f, -0.327198f , - -0.939708f, 0.292257f, -0.177581f , - -0.941394f, 0.302114f, -0.150015f , - -0.973178f, 0.207202f, -0.099957f , - -0.972658f, 0.187131f, -0.137542f , - -0.923265f, 0.231555f, -0.306535f , - -0.780329f, 0.426859f, -0.457032f , - -0.769658f, 0.350220f, -0.533829f , - -0.900907f, 0.204503f, -0.382811f , - -0.796522f, 0.570081f, -0.201395f , - -0.926910f, 0.332598f, -0.173827f , - -0.914337f, 0.346525f, -0.209543f , - -0.963105f, 0.224568f, -0.148315f , - -0.967446f, 0.222366f, -0.120838f , - -0.905531f, 0.413141f, -0.096582f , - -0.029571f, 0.999321f, -0.021992f , - -0.871740f, 0.484725f, -0.071497f , - -0.924507f, 0.373252f, -0.077265f , - -0.726954f, 0.642904f, -0.241272f , - -0.912669f, 0.404737f, -0.056783f , - -0.150856f, 0.988555f, 0.001350f , - -0.917535f, 0.380667f, -0.114987f , - -0.366105f, -0.817366f, -0.444838f , - -0.496662f, -0.725524f, -0.476384f , - -0.449502f, -0.675187f, -0.584868f , - 0.071389f, 0.299509f, -0.951419f , - 0.055652f, 0.393428f, -0.917669f , - -0.618823f, -0.227137f, -0.751975f , - -0.721801f, -0.192370f, -0.664829f , - -0.687011f, -0.269819f, -0.674695f , - -0.560958f, 0.422267f, -0.712051f , - 0.731222f, 0.605649f, -0.313853f , - 0.066270f, 0.830557f, -0.552977f , - 0.223589f, 0.801980f, -0.553927f , - 0.209761f, 0.804618f, -0.555510f , - 0.245329f, 0.857348f, -0.452514f , - 0.246393f, 0.949765f, -0.192969f , - 0.213771f, 0.958817f, -0.187008f , - 0.199538f, 0.928620f, -0.312808f , - 0.238535f, 0.908713f, -0.342552f , - 0.188883f, 0.777252f, -0.600169f , - 0.212587f, 0.755827f, -0.619299f , - 0.149273f, 0.822919f, -0.548199f , - 0.110217f, 0.823919f, -0.555887f , - 0.170176f, 0.887119f, -0.429022f , - 0.175967f, 0.758830f, -0.627067f , - -0.002802f, 0.807605f, -0.589718f , - -0.058874f, 0.803797f, -0.591983f , - 0.001211f, 0.865033f, -0.501713f , - 0.053319f, 0.774137f, -0.630768f , - -0.268030f, 0.743388f, -0.612808f , - -0.321172f, 0.712263f, -0.624123f , - -0.282117f, 0.810182f, -0.513824f , - -0.124248f, 0.723866f, -0.678661f , - -0.128470f, 0.755469f, -0.642466f , - -0.410877f, 0.611091f, -0.676571f , - -0.430819f, 0.537389f, -0.724989f , - -0.425189f, 0.672773f, -0.605467f , - -0.346593f, 0.650091f, -0.676206f , - -0.250145f, 0.371196f, -0.894226f , - -0.184575f, 0.368722f, -0.911030f , - -0.235317f, 0.353568f, -0.905326f , - -0.502872f, 0.546814f, -0.669413f , - -0.459856f, 0.499650f, -0.734086f , - -0.075989f, 0.403375f, -0.911874f , - -0.040733f, 0.445290f, -0.894460f , - -0.113939f, 0.532417f, -0.838779f , - -0.147830f, 0.412966f, -0.898669f , - -0.060086f, 0.598231f, -0.799068f , - -0.074589f, 0.595557f, -0.799843f , - -0.088328f, 0.810831f, -0.578576f , - 0.002158f, 0.441145f, -0.897433f , - -0.217576f, 0.666551f, -0.713001f , - -0.085171f, 0.394798f, -0.914812f , - 0.146981f, 0.539423f, -0.829107f , - 0.151857f, 0.550605f, -0.820837f , - 0.166274f, 0.616215f, -0.769826f , - 0.023821f, 0.654644f, -0.755562f , - 0.087923f, 0.638211f, -0.764824f , - 0.147112f, 0.437141f, -0.887280f , - 0.149743f, 0.339528f, -0.928600f , - 0.144478f, 0.451635f, -0.880427f , - 0.105757f, 0.597572f, -0.794810f , - 0.088057f, 0.607260f, -0.789608f , - 0.119203f, 0.676860f, -0.726396f , - 0.112799f, 0.337771f, -0.934445f , - 0.133260f, 0.462820f, -0.876379f , - -0.039795f, 0.615788f, -0.786906f , - -0.004813f, 0.706260f, -0.707936f , - 0.029782f, 0.381841f, -0.923748f , - 0.051038f, 0.504940f, -0.861644f , - -0.130642f, 0.589040f, -0.797474f , - -0.134007f, 0.598073f, -0.790158f , - -0.186942f, 0.638396f, -0.746662f , - -0.295750f, 0.571406f, -0.765524f , - -0.349720f, 0.655032f, -0.669798f , - -0.037659f, 0.356133f, -0.933676f , - -0.090902f, 0.499227f, -0.861690f , - -0.527396f, 0.495597f, -0.690100f , - -0.512311f, 0.568710f, -0.643511f , - -0.507980f, 0.320164f, -0.799657f , - -0.497188f, 0.402769f, -0.768493f , - -0.520358f, 0.466720f, -0.715122f , - -0.517848f, 0.532422f, -0.669598f , - -0.330937f, 0.407864f, -0.850957f , - -0.252383f, 0.417868f, -0.872748f , - -0.339996f, 0.516669f, -0.785784f , - -0.501983f, 0.047308f, -0.863583f , - -0.513179f, 0.165027f, -0.842267f , - -0.086186f, 0.359253f, -0.929252f , - -0.050859f, 0.337985f, -0.939776f , - -0.090535f, 0.437359f, -0.894718f , - -0.171296f, 0.260815f, -0.950070f , - -0.045456f, 0.184880f, -0.981709f , - -0.066682f, 0.140754f, -0.987796f , - -0.039910f, 0.218330f, -0.975059f , - -0.041193f, 0.219517f, -0.974739f , - -0.250883f, -0.190278f, -0.949132f , - -0.176954f, -0.221807f, -0.958900f , - -0.110564f, 0.077801f, -0.990819f , - 0.507151f, 0.027888f, -0.861406f , - 0.573479f, -0.039662f, -0.818260f , - 0.611545f, -0.007625f, -0.791173f , - 0.554903f, 0.092151f, -0.826795f , - 0.289414f, 0.204044f, -0.935203f , - 0.322043f, 0.214566f, -0.922090f , - 0.177095f, -0.011087f, -0.984131f , - 0.059373f, -0.245476f, -0.967583f , - 0.106311f, -0.314761f, -0.943199f , - 0.238464f, -0.102142f, -0.965765f , - -0.020645f, 0.072914f, -0.997125f , - -0.121058f, -0.018909f, -0.992465f , - -0.034770f, 0.055017f, -0.997880f , - -0.043530f, 0.134593f, -0.989944f , - 0.005528f, 0.244024f, -0.969753f , - 0.182686f, 0.297933f, -0.936943f , - 0.234066f, 0.251079f, -0.939240f , - 0.192607f, 0.217675f, -0.956828f , - 0.156812f, 0.237124f, -0.958740f , - 0.081630f, 0.163414f, -0.983175f , - 0.006517f, 0.149557f, -0.988732f , - -0.345364f, 0.028243f, -0.938044f , - -0.377716f, 0.060516f, -0.923942f , - -0.358554f, -0.096480f, -0.928510f , - -0.354873f, -0.115442f, -0.927760f , - -0.305007f, -0.115061f, -0.945374f , - -0.201717f, 0.002484f, -0.979441f , - -0.211498f, -0.033729f, -0.976796f , - -0.047670f, -0.238936f, -0.969864f , - 0.013990f, -0.256092f, -0.966551f , - -0.047302f, -0.174505f, -0.983519f , - -0.369225f, -0.142734f, -0.918314f , - -0.365867f, -0.267205f, -0.891483f , - -0.228350f, -0.322949f, -0.918455f , - -0.276137f, -0.198803f, -0.940333f , - 0.005516f, -0.264867f, -0.964269f , - -0.022547f, -0.267976f, -0.963162f , - -0.008580f, -0.214920f, -0.976594f , - 0.014306f, -0.216018f, -0.976285f , - 0.080012f, -0.023108f, -0.996526f , - 0.107540f, -0.037443f, -0.993495f , - 0.031978f, -0.436292f, -0.899237f , - 0.034367f, -0.326848f, -0.944452f , - 0.099222f, 0.367929f, -0.924545f , - 0.064412f, 0.267783f, -0.961324f , - -0.000419f, -0.122725f, -0.992441f , - -0.007624f, 0.004313f, -0.999962f , - -0.004796f, 0.244216f, -0.969709f , - -0.130576f, -0.695494f, -0.706568f , - -0.150152f, -0.657140f, -0.738662f , - -0.033059f, -0.278093f, -0.959985f , - -0.057913f, -0.343313f, -0.937434f , - 0.004636f, -0.433804f, -0.900995f , - -0.042224f, -0.571667f, -0.819399f , - -0.112867f, -0.371133f, -0.921695f , - -0.023389f, -0.518175f, -0.854955f , - 0.105045f, -0.685031f, -0.720901f , - -0.102161f, -0.822173f, -0.559995f , - -0.027895f, -0.836515f, -0.547234f , - -0.457137f, -0.583790f, -0.670980f , - -0.212508f, -0.845365f, -0.490100f , - -0.103655f, -0.865563f, -0.489956f , - -0.037575f, -0.737731f, -0.674049f , - -0.588707f, -0.273626f, -0.760626f , - 0.536897f, -0.134070f, -0.832926f , - 0.566054f, -0.090828f, -0.819349f , - 0.635030f, -0.149278f, -0.757927f , - 0.650705f, -0.159071f, -0.742482f , - 0.600007f, -0.091467f, -0.794749f , - 0.610973f, -0.092466f, -0.786233f , - 0.690790f, -0.258066f, -0.675434f , - 0.701340f, -0.265169f, -0.661670f , - 0.444058f, -0.150420f, -0.883281f , - 0.416276f, 0.053353f, -0.907672f , - 0.653835f, -0.671693f, -0.348323f , - 0.610880f, -0.704841f, -0.360589f , - 0.657539f, -0.611717f, -0.439823f , - 0.578248f, -0.595639f, -0.557533f , - 0.654456f, -0.549530f, -0.519330f , - 0.681834f, -0.654183f, -0.327332f , - 0.710327f, -0.636421f, -0.300673f , - 0.546189f, -0.614462f, -0.569311f , - 0.434438f, -0.447134f, -0.781879f , - 0.369724f, -0.334028f, -0.867023f , - 0.440484f, -0.452254f, -0.775526f , - 0.579300f, -0.763050f, -0.286646f , - 0.070920f, -0.041477f, -0.996619f , - -0.087468f, 0.043404f, -0.995221f , - 0.102580f, -0.063556f, -0.992692f , - 0.294700f, -0.201151f, -0.934179f , - 0.130842f, 0.169975f, -0.976724f , - 0.089372f, 0.095191f, -0.991439f , - -0.243766f, 0.163341f, -0.955980f , - 0.593386f, -0.798400f, -0.102230f , - 0.541374f, -0.835257f, -0.096231f , - 0.608455f, -0.771482f, -0.186005f , - 0.542159f, -0.788436f, -0.290572f , - 0.594041f, -0.761438f, -0.259476f , - 0.444075f, -0.893333f, -0.068942f , - 0.362631f, -0.930358f, -0.054149f , - 0.460438f, -0.879502f, -0.120306f , - 0.088564f, -0.994635f, 0.053465f , - 0.006379f, -0.998993f, 0.044410f , - 0.124279f, -0.985629f, 0.114411f , - 0.598110f, -0.801405f, 0.003802f , - -0.339740f, -0.936461f, -0.087275f , - -0.394280f, -0.909005f, -0.135102f , - -0.366631f, -0.922890f, -0.117707f , - -0.180278f, -0.922528f, 0.341236f , - -0.291638f, -0.920377f, -0.260486f , - -0.220552f, -0.942754f, -0.250144f , - -0.273484f, -0.872072f, -0.405829f , - -0.823517f, -0.528197f, 0.206951f , - -0.724541f, -0.688832f, -0.023456f , - -0.051993f, -0.976837f, -0.207570f , - -0.029512f, -0.977764f, -0.207623f , - -0.052247f, -0.928124f, -0.368586f , - 0.011850f, -0.970269f, -0.241740f , - 0.040003f, -0.957780f, -0.284707f , - 0.018195f, -0.922700f, -0.385089f , - 0.257936f, -0.956344f, -0.137384f , - 0.424573f, -0.804481f, -0.415389f , - 0.504607f, -0.673312f, -0.540391f , - 0.286686f, -0.825977f, -0.485359f , - 0.045963f, -0.977264f, -0.206984f , - 0.007544f, -0.962924f, -0.269669f , - -0.238292f, -0.970855f, -0.025656f , - -0.248938f, -0.967850f, -0.036003f , - -0.226284f, -0.972386f, -0.057098f , - -0.828855f, -0.510935f, -0.227916f , - -0.794554f, -0.565204f, 0.221876f , - -0.784042f, -0.608004f, 0.124935f , - -0.634880f, -0.768382f, 0.080723f , - -0.593074f, -0.803618f, 0.049610f , - -0.685410f, -0.728021f, -0.014069f , - -0.464580f, -0.862350f, -0.201292f , - -0.461437f, -0.802737f, -0.377742f , - -0.476762f, -0.876490f, 0.066812f , - -0.364051f, -0.929484f, 0.059388f , - -0.358181f, -0.933176f, -0.029805f , - -0.455562f, -0.890202f, 0.002115f , - -0.215673f, -0.713182f, -0.666976f , - -0.209083f, -0.627182f, -0.750285f , - -0.340770f, -0.668112f, -0.661440f , - -0.307902f, -0.306495f, -0.900698f , - -0.340759f, -0.170470f, -0.924566f , - -0.490143f, -0.286976f, -0.823046f , - -0.693243f, -0.417297f, -0.587602f , - -0.769976f, -0.403575f, -0.494231f , - -0.658637f, -0.526041f, -0.538031f , - -0.104357f, -0.585273f, -0.804093f , - -0.930325f, -0.122679f, -0.345608f , - -0.782068f, -0.305832f, -0.542988f , - -0.784490f, -0.207783f, -0.584295f , - -0.800441f, -0.318365f, -0.507876f , - -0.754925f, -0.051164f, -0.653812f , - -0.727663f, -0.128800f, -0.673733f , - -0.609824f, 0.223781f, -0.760287f , - -0.565162f, 0.277653f, -0.776853f , - -0.582154f, 0.205882f, -0.786581f , - -0.619157f, 0.160815f, -0.768625f , - -0.646707f, 0.016516f, -0.762560f , - -0.243148f, -0.922260f, 0.300526f , - -0.270952f, -0.946092f, 0.177469f , - 0.324519f, -0.445748f, -0.834264f , - 0.350588f, -0.531089f, -0.771384f , - 0.589624f, -0.473016f, -0.654675f , - 0.267696f, -0.078723f, -0.960282f , - 0.365804f, -0.199354f, -0.909090f , - 0.175096f, -0.133647f, -0.975438f , - 0.133432f, -0.035760f, -0.990413f , - 0.086092f, -0.114917f, -0.989637f , - 0.104277f, -0.227266f, -0.968234f , - 0.110614f, 0.047468f, -0.992729f , - -0.078698f, 0.299711f, -0.950779f , - -0.066592f, 0.323643f, -0.943833f , - 0.007155f, 0.202767f, -0.979201f , - 0.015220f, 0.194025f, -0.980879f , - 0.122784f, 0.129004f, -0.984013f , - -0.264559f, 0.239622f, -0.934125f , - -0.247793f, 0.275428f, -0.928837f , - -0.584552f, 0.155008f, -0.796412f , - -0.608293f, 0.210278f, -0.765351f , - -0.624055f, 0.240480f, -0.743455f , - -0.718312f, 0.236333f, -0.654351f , - -0.737154f, 0.156722f, -0.657299f , - -0.087581f, 0.172173f, -0.981166f , - -0.113622f, 0.158778f, -0.980755f , - -0.348835f, 0.167790f, -0.922042f , - 0.284938f, 0.055435f, -0.956942f , - 0.315771f, 0.041280f, -0.947937f , - 0.080705f, 0.106391f, -0.991044f , - -0.617496f, 0.245472f, -0.747290f , - -0.496113f, 0.222425f, -0.839285f , - 0.094534f, 0.147017f, -0.984606f , - 0.473659f, -0.070894f, -0.877850f , - 0.621532f, -0.190086f, -0.759977f , - 0.568644f, -0.209971f, -0.795334f , - 0.420451f, -0.123839f, -0.898824f , - -0.125577f, 0.167503f, -0.977841f , - 0.098788f, 0.128921f, -0.986722f , - 0.102670f, 0.143258f, -0.984345f , - 0.810946f, -0.426641f, -0.400429f , - 0.747983f, -0.304168f, -0.589918f , - 0.314053f, 0.062344f, -0.947356f , - 0.483212f, -0.072288f, -0.872514f , - 0.461217f, -0.876090f, -0.140514f , - 0.543705f, -0.835563f, -0.078862f , - 0.642729f, -0.719539f, -0.262989f , - -0.238801f, -0.037659f, -0.970338f , - -0.056248f, -0.028655f, -0.998006f , - -0.061458f, -0.003326f, -0.998104f , - -0.069833f, 0.096462f, -0.992884f , - -0.034561f, -0.251592f, -0.967216f , - -0.068415f, 0.045876f, -0.996602f , - -0.078696f, -0.108272f, -0.991002f , - -0.024649f, -0.528902f, -0.848325f , - -0.055899f, -0.496371f, -0.866309f , - -0.027138f, -0.459745f, -0.887636f , - 0.062637f, -0.998018f, -0.006135f , - 0.064410f, -0.723784f, -0.687014f , - 0.052193f, -0.646813f, -0.760861f , - -0.121058f, -0.357104f, -0.926187f , - -0.164906f, -0.381453f, -0.909560f , - -0.099077f, -0.222704f, -0.969838f , - -0.098737f, -0.634563f, -0.766538f , - -0.082405f, -0.542765f, -0.835832f , - -0.154276f, 0.013315f, -0.987938f , - -0.112442f, -0.017633f, -0.993502f , - -0.129370f, -0.076420f, -0.988647f , - -0.286215f, -0.599151f, -0.747730f , - -0.138502f, -0.658962f, -0.739315f , - -0.220248f, -0.806066f, -0.549316f , - 0.016716f, -0.657371f, -0.753381f , - -0.036021f, -0.739188f, -0.672536f , - 0.046614f, 0.250759f, -0.966927f , - 0.141327f, 0.183496f, -0.972808f , - -0.323160f, 0.200423f, -0.924877f , - -0.480072f, 0.210839f, -0.851515f , - -0.322343f, 0.201663f, -0.924893f , - 0.521347f, -0.025268f, -0.852971f , - 0.716484f, -0.102685f, -0.690004f , - 0.717184f, -0.071591f, -0.693197f , - 0.529193f, -0.014096f, -0.848385f , - -0.851225f, 0.168002f, -0.497184f , - -0.951918f, 0.115911f, -0.283579f , - -0.832867f, 0.217079f, -0.509125f , - -0.616443f, 0.275494f, -0.737632f , - -0.620688f, 0.162843f, -0.766961f , - -0.936880f, -0.048267f, 0.346304f , - -0.843623f, -0.105996f, 0.526369f , - -0.939219f, -0.013254f, 0.343062f , - -0.986275f, 0.106606f, -0.126085f , - -0.989897f, 0.112136f, -0.086774f , - -0.998356f, -0.021726f, -0.053032f , - -0.273384f, -0.257200f, 0.926881f , - -0.035295f, -0.283340f, 0.958370f , - -0.274652f, -0.271019f, 0.922559f , - -0.783364f, -0.231671f, 0.576775f , - -0.706642f, -0.200837f, 0.678470f , - 0.627878f, -0.323240f, 0.708015f , - 0.815593f, -0.298440f, 0.495723f , - 0.806171f, -0.374053f, 0.458446f , - 0.608558f, -0.393511f, 0.689061f , - 0.042649f, -0.506285f, 0.861311f , - 0.181730f, -0.280105f, 0.942611f , - 0.931290f, -0.114443f, 0.345836f , - 0.988944f, -0.148169f, 0.005961f , - 0.973603f, -0.094735f, -0.207660f , - 0.970576f, -0.235906f, -0.048269f , - 0.898907f, -0.430348f, 0.082263f , - 0.793820f, -0.599052f, 0.104815f , - 0.765570f, -0.601312f, 0.228749f , - 0.868910f, -0.446489f, 0.213643f , - 0.674445f, -0.705876f, -0.216477f , - 0.656131f, -0.728211f, -0.197990f , - 0.801954f, -0.237000f, -0.548362f , - 0.541592f, -0.197922f, -0.817010f , - 0.647463f, -0.217649f, -0.730357f , - 0.593200f, -0.272739f, -0.757448f , - 0.630964f, -0.714173f, 0.303054f , - 0.796283f, -0.275386f, -0.538606f , - 0.897111f, -0.401725f, -0.183870f , - 0.629361f, -0.776677f, -0.026047f , - 0.525354f, -0.840533f, 0.132319f , - 0.597321f, -0.782316f, 0.176606f , - -0.910788f, -0.172561f, -0.375085f , - -0.174455f, 0.216179f, -0.960642f , - -0.485700f, 0.094333f, -0.869021f , - -0.330429f, -0.924512f, -0.189987f , - -0.620010f, -0.693404f, -0.367122f , - -0.901091f, -0.321722f, 0.290741f , - -0.433146f, -0.892104f, -0.128589f , - -0.631826f, -0.775101f, 0.003706f , - -0.331865f, -0.389066f, 0.859356f , - -0.424221f, -0.833004f, 0.355162f , - -0.069652f, -0.430515f, 0.899892f , - 0.135879f, -0.188840f, 0.972562f , - -0.183694f, -0.936104f, 0.299944f , - -0.106655f, -0.959128f, 0.262104f , - -0.139490f, -0.817690f, 0.558503f , - 0.632447f, 0.193611f, 0.750017f , - 0.707021f, 0.332110f, 0.624359f , - 0.716774f, 0.128541f, 0.685355f , - 0.331782f, -0.143136f, 0.932434f , - 0.851690f, -0.084980f, 0.517110f , - -0.160224f, -0.947792f, 0.275716f , - -0.009356f, -0.992944f, 0.118215f , - 0.068962f, -0.958799f, 0.275589f , - -0.386088f, -0.580567f, -0.716853f , - -0.105614f, -0.870531f, -0.480646f , - 0.230345f, -0.597767f, -0.767864f , - 0.506452f, -0.671088f, -0.541431f , - 0.219044f, -0.919411f, -0.326655f , - 0.297331f, -0.912581f, -0.280696f , - 0.281506f, -0.947620f, -0.150901f , - 0.252504f, -0.943743f, -0.213521f , - 0.260666f, -0.964417f, -0.044201f , - 0.222542f, -0.973276f, -0.056653f , - 0.307225f, -0.949987f, 0.056005f , - 0.296446f, -0.948042f, 0.115479f , - 0.184022f, 0.181236f, -0.966069f , - 0.644714f, 0.398894f, -0.652095f , - 0.850405f, 0.496895f, -0.172938f , - 0.870352f, 0.482175f, -0.099972f , - 0.864246f, 0.487197f, -0.125370f , - 0.810643f, 0.441209f, 0.384959f , - 0.816060f, 0.474664f, 0.329758f , - 0.766453f, 0.424388f, 0.482126f , - 0.753578f, 0.347784f, 0.557823f , - -0.966886f, -0.234185f, 0.101437f , - -0.450200f, -0.745748f, 0.491101f , - -0.766465f, 0.238712f, -0.596278f , - -0.819473f, 0.290389f, -0.494104f , - 0.448464f, -0.840879f, 0.302988f , - 0.155707f, -0.933686f, 0.322468f , - 0.903640f, 0.075428f, -0.421598f , - 0.851019f, 0.491046f, 0.186118f , - 0.872129f, 0.485862f, 0.057698f , - 0.910232f, 0.373300f, 0.179235f , - 0.810761f, 0.507221f, -0.292222f , - 0.732683f, 0.492856f, -0.469328f , - 0.730920f, 0.477295f, -0.487796f , - 0.822733f, 0.459622f, -0.334451f , - 0.309652f, 0.460596f, -0.831845f , - 0.148842f, 0.426802f, -0.892013f , - 0.133283f, 0.428189f, -0.893806f , - 0.333704f, 0.447923f, -0.829462f , - -0.366844f, 0.003781f, -0.930275f , - -0.082682f, 0.298748f, -0.950744f , - -0.080947f, 0.356017f, -0.930967f , - 0.484441f, -0.325632f, -0.811961f , - 0.397131f, -0.262724f, -0.879354f , - 0.439476f, -0.402291f, -0.803133f , - 0.736358f, -0.606619f, -0.299649f , - 0.791223f, -0.320412f, -0.520866f , - 0.859500f, -0.210961f, -0.465570f , - 0.787323f, -0.106437f, -0.607284f , - 0.687836f, -0.245687f, -0.683023f , - 0.003980f, 0.156907f, -0.987605f , - -0.135980f, 0.251923f, -0.958146f , - 0.016933f, 0.116137f, -0.993089f , - 0.381992f, -0.181515f, -0.906165f , - 0.280351f, -0.127754f, -0.951358f , - -0.699842f, 0.256014f, -0.666842f , - -0.799705f, 0.255001f, -0.543550f , - -0.720688f, 0.221707f, -0.656852f , - -0.278994f, 0.229226f, -0.932533f , - -0.287437f, 0.286647f, -0.913900f , - -0.330797f, 0.274666f, -0.902847f , - -0.277486f, 0.344817f, -0.896718f , - -0.932710f, 0.098095f, -0.347030f , - -0.973893f, 0.008349f, -0.226856f , - -0.910311f, 0.065857f, -0.408652f , - -0.878735f, 0.112625f, -0.463832f , - -0.854300f, 0.353979f, -0.380618f , - -0.987453f, -0.153387f, 0.037525f , - -0.961087f, -0.272819f, 0.043370f , - -0.741993f, 0.363921f, -0.563035f , - -0.653953f, 0.285535f, -0.700582f , - -0.645299f, 0.187085f, -0.740667f , - -0.765570f, 0.253459f, -0.591321f , - -0.984770f, 0.036416f, -0.170008f , - -0.984596f, 0.071557f, -0.159533f , - -0.906822f, 0.419771f, 0.038287f , - -0.839695f, 0.540622f, -0.051372f , - -0.750766f, 0.658817f, -0.048065f , - -0.842576f, 0.533582f, -0.073188f , - -0.455697f, 0.466292f, -0.758229f , - -0.565670f, 0.339821f, -0.751358f , - -0.074362f, -0.013678f, -0.997138f , - -0.343137f, -0.024027f, -0.938978f , - -0.471589f, 0.005438f, -0.881802f , - 0.413255f, 0.015058f, -0.910491f , - 0.429903f, 0.084124f, -0.898947f , - 0.255592f, 0.057938f, -0.965047f , - 0.256329f, 0.030585f, -0.966106f , - -0.312357f, 0.438788f, -0.842555f , - -0.073235f, 0.327912f, -0.941865f , - -0.461095f, 0.457267f, -0.760459f , - -0.503914f, 0.513430f, -0.694593f , - -0.627474f, 0.604295f, -0.491023f , - 0.831023f, -0.118589f, -0.543449f , - 0.728656f, -0.081004f, -0.680073f , - 0.313681f, -0.050126f, -0.948204f , - 0.489100f, 0.058642f, -0.870254f , - 0.785421f, -0.020512f, -0.618622f , - 0.861647f, 0.101223f, -0.497311f , - 0.825735f, 0.131053f, -0.548623f , - 0.968375f, -0.233048f, 0.089101f , - 0.971727f, -0.189117f, -0.141354f , - 0.958244f, -0.054651f, -0.280679f , - 0.968893f, 0.010652f, -0.247249f , - 0.810967f, -0.582762f, -0.052168f , - 0.766311f, -0.624870f, 0.149349f , - 0.836929f, -0.505611f, 0.209540f , - 0.495171f, -0.407991f, 0.767039f , - 0.794177f, -0.246855f, 0.555288f , - 0.820296f, -0.204577f, 0.534100f , - 0.923835f, -0.196799f, 0.328327f , - 0.916337f, -0.216153f, 0.337052f , - 0.092037f, 0.249671f, -0.963947f , - 0.095067f, 0.346809f, -0.933105f , - -0.060884f, 0.223346f, -0.972836f , - -0.329301f, -0.042932f, -0.943248f , - -0.395025f, -0.097518f, -0.913480f , - -0.202630f, -0.094683f, -0.974667f , - -0.178224f, -0.056492f, -0.982367f , - 0.378993f, 0.041296f, -0.924478f , - 0.388606f, 0.038245f, -0.920610f , - 0.977375f, -0.148163f, 0.150951f , - 0.993533f, -0.112956f, -0.011499f , - 0.951926f, -0.154962f, -0.264240f , - 0.941628f, -0.224384f, -0.250974f , - 0.861146f, -0.056693f, -0.505187f , - 0.948180f, 0.225675f, -0.223666f , - 0.853240f, 0.395923f, -0.339451f , - 0.842374f, 0.321007f, -0.432851f , - 0.908146f, 0.196916f, -0.369451f , - 0.954302f, -0.298586f, -0.012423f , - 0.624638f, -0.173082f, 0.761492f , - 0.889151f, -0.366863f, 0.273536f , - 0.909505f, 0.261373f, 0.323240f , - 0.856180f, 0.455305f, 0.244239f , - 0.939061f, 0.283007f, 0.195119f , - 0.618508f, -0.392088f, 0.680966f , - 0.396457f, -0.785608f, 0.475019f , - -0.085878f, -0.567676f, 0.818760f , - -0.742841f, -0.588095f, 0.319894f , - -0.757180f, -0.396527f, 0.519081f , - -0.571947f, -0.492263f, 0.656166f , - -0.864682f, -0.199097f, 0.461179f , - -0.885383f, -0.208296f, 0.415584f , - -0.387999f, -0.174713f, 0.904949f , - -0.228095f, 0.061127f, 0.971718f , - -0.098216f, -0.041907f, 0.994282f , - -0.244418f, -0.213778f, 0.945811f , - -0.761084f, -0.354178f, 0.543424f , - -0.591606f, -0.505437f, 0.628121f , - 0.333693f, 0.099877f, 0.937376f , - 0.419116f, 0.062647f, 0.905769f , - -0.535310f, 0.225935f, 0.813878f , - -0.299480f, 0.251000f, 0.920495f , - -0.998406f, 0.032030f, 0.046474f , - -0.968567f, -0.010931f, 0.248514f , - -0.853086f, -0.007279f, 0.521719f , - -0.691819f, -0.041168f, 0.720896f , - -0.970284f, 0.069609f, 0.231739f , - -0.805858f, -0.034212f, 0.591120f , - -0.697716f, -0.046196f, -0.714884f , - -0.871879f, -0.066927f, -0.485127f , - -0.902690f, -0.082272f, -0.422353f , - -0.952494f, -0.131550f, -0.274681f , - -0.949418f, -0.097093f, -0.298628f , - -0.967320f, 0.034094f, -0.251256f , - -0.554795f, 0.024373f, -0.831630f , - -0.477020f, 0.054631f, -0.877193f , - -0.717106f, 0.057525f, -0.694586f , - -0.003404f, 0.005497f, -0.999979f , - -0.151526f, -0.050591f, -0.987158f , - -0.073038f, -0.035003f, -0.996715f , - -0.166381f, 0.006855f, -0.986038f , - -0.883002f, -0.121426f, -0.453391f , - -0.794577f, -0.590926f, -0.139480f , - -0.959908f, -0.248198f, 0.130284f , - -0.613930f, -0.380099f, 0.691820f , - -0.396969f, -0.215372f, 0.892206f , - -0.210919f, -0.046043f, 0.976419f , - -0.549875f, -0.136539f, 0.824012f , - -0.566556f, -0.822727f, 0.046211f , - -0.355739f, -0.924630f, 0.136051f , - -0.646198f, -0.713184f, 0.271656f , - -0.571937f, -0.162805f, -0.803979f , - -0.366728f, 0.178341f, -0.913074f , - 0.095532f, 0.345489f, -0.933548f , - -0.047072f, -0.141771f, -0.988780f , - 0.106039f, -0.039340f, -0.993583f , - 0.723107f, 0.314537f, -0.614966f , - 0.560123f, 0.280727f, -0.779393f , - 0.743601f, 0.523622f, -0.415785f , - 0.629822f, 0.290297f, -0.720453f , - 0.705262f, 0.077313f, -0.704718f , - 0.616926f, 0.146541f, -0.773258f , - 0.587586f, 0.273065f, -0.761695f , - 0.328967f, 0.056736f, -0.942636f , - 0.491401f, 0.123581f, -0.862121f , - 0.391492f, -0.243665f, -0.887334f , - 0.008301f, -0.996013f, -0.088822f , - 0.034731f, -0.962686f, -0.268383f , - -0.157580f, -0.130620f, -0.978829f , - -0.055784f, -0.127027f, -0.990329f , - 0.751211f, -0.369614f, -0.546871f , - 0.252419f, -0.933970f, -0.252952f , - 0.071624f, -0.993813f, -0.084882f , - 0.084065f, -0.993389f, -0.078171f , - 0.233017f, -0.937888f, -0.257040f , - 0.474723f, -0.858598f, -0.193515f , - 0.100545f, -0.993871f, -0.045940f , - 0.067715f, -0.994681f, -0.077614f , - 0.412315f, -0.848254f, -0.332356f , - 0.749914f, 0.521670f, -0.406804f , - 0.798242f, 0.540360f, -0.266122f , - 0.820159f, 0.461995f, -0.337489f , - 0.510534f, -0.813149f, 0.279542f , - 0.146957f, -0.985402f, 0.085940f , - 0.108769f, -0.993241f, 0.040514f , - 0.313218f, -0.944605f, 0.098060f , - 0.809717f, 0.582177f, 0.073677f , - 0.807500f, 0.580202f, 0.106342f , - 0.808832f, 0.581743f, 0.085828f , - 0.636386f, -0.187197f, 0.748311f , - 0.209198f, -0.937209f, 0.279062f , - 0.145755f, -0.978863f, 0.143468f , - 0.514413f, -0.754892f, 0.406839f , - 0.714296f, 0.505410f, 0.484089f , - 0.738632f, 0.504727f, 0.446848f , - 0.641613f, 0.390416f, 0.660234f , - 0.834720f, 0.550512f, 0.013407f , - 0.740749f, 0.476435f, 0.473603f , - 0.798858f, 0.511397f, 0.316702f , - 0.492358f, 0.212345f, 0.844093f , - 0.413585f, 0.376568f, 0.828941f , - -0.150127f, -0.076658f, 0.985690f , - -0.114349f, -0.980526f, -0.159666f , - -0.446753f, -0.813535f, -0.372253f , - 0.071657f, -0.993232f, -0.091411f , - 0.060864f, -0.992920f, -0.102007f , - -0.034154f, -0.999324f, 0.013629f , - -0.000584f, -0.940304f, 0.340334f , - 0.565856f, -0.679394f, -0.467151f , - 0.513698f, -0.732667f, -0.446445f , - 0.097973f, 0.931277f, -0.350892f , - 0.164495f, 0.911526f, -0.376912f , - 0.034192f, 0.942802f, -0.331594f , - 0.004859f, 0.944126f, -0.329549f , - -0.387511f, 0.820012f, -0.421207f , - -0.030906f, 0.898888f, -0.437086f , - -0.026596f, 0.934153f, -0.355881f , - 0.039178f, 0.852026f, -0.522032f , - -0.065507f, 0.755416f, -0.651963f , - -0.294681f, 0.582133f, -0.757816f , - -0.143166f, 0.662369f, -0.735371f , - -0.125493f, 0.647457f, -0.751699f , - 0.037203f, -0.158722f, -0.986622f , - 0.023973f, -0.609925f, -0.792096f , - 0.180111f, -0.517214f, -0.836690f , - 0.123182f, -0.465161f, -0.876614f , - 0.281929f, -0.310209f, -0.907902f , - 0.599114f, -0.329879f, -0.729549f , - -0.105906f, 0.619846f, -0.777544f , - -0.050254f, 0.425920f, -0.903364f , - 0.659660f, 0.411251f, -0.629064f , - -0.322426f, -0.417602f, -0.849500f , - 0.170767f, 0.250384f, -0.952967f , - -0.407735f, 0.087417f, -0.908906f , - 0.605231f, 0.364189f, -0.707858f , - 0.629886f, 0.638599f, -0.442082f , - 0.866284f, 0.494671f, -0.069661f , - 0.872997f, 0.483519f, -0.063916f , - 0.877194f, 0.479083f, -0.031785f , - 0.865039f, 0.501349f, -0.018881f , - 0.227949f, -0.973478f, -0.019478f , - 0.803490f, 0.582831f, 0.121291f , - 0.802941f, 0.583382f, 0.122275f , - 0.802662f, 0.577587f, 0.148749f , - 0.798359f, 0.579874f, 0.162387f , - 0.378411f, -0.922972f, 0.070196f , - 0.125827f, -0.991466f, 0.034095f , - 0.093854f, -0.995586f, 0.000710f , - 0.296835f, -0.954898f, 0.007646f , - 0.832678f, -0.321464f, 0.450898f , - 0.899280f, 0.165611f, 0.404806f , - 0.892557f, 0.170660f, -0.417393f , - 0.832684f, -0.321455f, -0.450892f , - 0.372135f, -0.925708f, -0.067682f , - 0.523060f, -0.826327f, 0.208785f , - 0.300423f, -0.953778f, -0.007282f , - 0.803271f, 0.583558f, -0.119225f , - 0.846190f, 0.517943f, -0.125292f , - 0.840694f, 0.509745f, -0.182741f , - 0.797103f, 0.581965f, -0.161067f , - 0.260671f, -0.964415f, 0.044201f , - 0.119750f, -0.992613f, 0.019499f , - 0.102118f, -0.994768f, 0.003037f , - 0.227954f, -0.973477f, 0.019476f , - 0.866284f, 0.494670f, 0.069662f , - 0.882623f, 0.462927f, 0.081709f , - 0.889349f, 0.456897f, 0.017435f , - 0.865040f, 0.501348f, 0.018881f , - 0.629885f, 0.638599f, 0.442081f , - 0.170772f, 0.250385f, 0.952966f , - 0.605231f, 0.364188f, 0.707857f , - -0.407731f, 0.087418f, 0.908908f , - -0.322431f, -0.417602f, 0.849498f , - 0.659660f, 0.411249f, 0.629065f , - -0.046694f, 0.408042f, 0.911768f , - 0.020659f, 0.163405f, 0.986343f , - 0.000117f, 0.276278f, 0.961078f , - -0.050253f, 0.425921f, 0.903364f , - 0.546851f, -0.414144f, 0.727625f , - 0.599113f, -0.329879f, 0.729550f , - 0.116280f, -0.406964f, 0.906013f , - 0.281929f, -0.310209f, 0.907902f , - 0.024264f, -0.512806f, 0.858161f , - 0.123182f, -0.465160f, 0.876614f , - 0.028193f, -0.063102f, 0.997609f , - 0.059373f, -0.245477f, 0.967583f , - 0.037204f, -0.158724f, 0.986622f , - -0.293903f, 0.557291f, 0.776561f , - -0.125492f, 0.647456f, 0.751700f , - 0.020001f, 0.770066f, 0.637650f , - 0.025595f, 0.705836f, 0.707912f , - -0.073897f, 0.712914f, 0.697347f , - -0.065507f, 0.755415f, 0.651964f , - -0.395800f, 0.852204f, 0.342184f , - -0.026596f, 0.934153f, 0.355880f , - 0.097974f, 0.931277f, 0.350891f , - 0.067756f, 0.949891f, 0.305149f , - -0.011652f, 0.946384f, 0.322833f , - 0.004859f, 0.944126f, 0.329549f , - 0.557014f, -0.725521f, 0.404173f , - 0.548197f, -0.757925f, 0.353596f , - 0.489432f, -0.776793f, 0.396294f , - 0.513698f, -0.732667f, 0.446446f , - 0.541922f, -0.840429f, 0.000000f , - 0.541555f, -0.823782f, -0.167638f , - 0.477604f, -0.878575f, 0.000000f , - -0.373237f, 0.927736f, 0.000000f , - 0.058653f, 0.998278f, 0.000000f , - -0.290530f, -0.915116f, -0.279562f , - -0.337173f, -0.629778f, -0.699781f , - 0.059485f, -0.681320f, -0.729565f , - -0.006294f, -0.941516f, -0.336910f , - 0.075054f, -0.992865f, 0.092657f , - -0.034191f, -0.999323f, -0.013614f , - -0.320105f, -0.846191f, 0.426022f , - -0.365924f, -0.455758f, 0.811409f , - -0.486430f, -0.466594f, 0.738699f , - -0.446754f, -0.813535f, 0.372252f , - -0.072416f, 0.022640f, -0.997118f , - -0.151447f, -0.076355f, -0.985512f , - 0.575488f, 0.350961f, -0.738675f , - 0.672744f, 0.448724f, -0.588271f , - 0.413586f, 0.376566f, -0.828942f , - 0.798758f, 0.511524f, -0.316749f , - 0.863240f, 0.503574f, 0.035059f , - 0.834716f, 0.550517f, -0.013399f , - 0.712510f, 0.511214f, -0.480613f , - 0.657050f, 0.053881f, -0.751919f , - 0.640263f, 0.401948f, -0.654600f , - 0.472473f, -0.841573f, -0.261771f , - 0.464215f, -0.802702f, -0.374398f , - 0.619220f, -0.185709f, -0.762941f , - 0.868774f, 0.491772f, -0.058242f , - 0.809532f, 0.580925f, -0.084759f , - 0.297025f, -0.950300f, -0.093310f , - 0.759198f, 0.349758f, 0.548897f , - 0.735461f, -0.178592f, 0.653607f , - 0.878925f, 0.002734f, 0.476952f , - 0.824394f, 0.449582f, 0.343877f , - 0.504867f, -0.772754f, 0.384656f , - 0.470313f, -0.799361f, 0.373936f , - 0.504922f, -0.654471f, 0.562780f , - 0.235240f, -0.937926f, 0.254866f , - 0.723485f, -0.092088f, 0.684171f , - 0.716297f, 0.066815f, 0.694589f , - 0.762496f, -0.218786f, 0.608878f , - 0.758928f, -0.385889f, 0.524517f , - -0.055785f, -0.127025f, 0.990330f , - 0.034732f, -0.962687f, 0.268379f , - 0.328966f, 0.056734f, 0.942636f , - 0.157829f, -0.014075f, 0.987366f , - 0.248954f, -0.316256f, 0.915426f , - 0.391490f, -0.243665f, 0.887335f , - 0.628473f, 0.357022f, 0.691055f , - 0.588727f, 0.272290f, 0.761091f , - 0.735822f, 0.467395f, 0.490009f , - 0.743602f, 0.523622f, 0.415784f , - 0.510096f, 0.338924f, 0.790527f , - 0.560124f, 0.280729f, 0.779392f , - 0.374248f, 0.125919f, 0.918740f , - 0.201109f, 0.134381f, 0.970308f , - 0.106039f, -0.039340f, 0.993583f , - 0.042957f, 0.352046f, 0.934996f , - 0.095530f, 0.345490f, 0.933547f , - -0.482844f, 0.192037f, 0.854391f , - -0.366731f, 0.178340f, 0.913074f , - -0.483092f, 0.018305f, 0.875378f , - -0.637504f, -0.095549f, 0.764499f , - -0.571935f, -0.162805f, 0.803981f , - -0.734950f, -0.651119f, -0.189452f , - -0.646198f, -0.713184f, -0.271655f , - -0.724853f, -0.430191f, -0.538074f , - -0.747620f, -0.182589f, -0.638534f , - -0.549875f, -0.136539f, -0.824011f , - -0.959908f, -0.248198f, -0.130284f , - -0.920030f, -0.339681f, 0.195351f , - -0.794576f, -0.590926f, 0.139481f , - -0.834760f, -0.022625f, 0.550149f , - -0.902690f, -0.082272f, 0.422353f , - -0.924703f, -0.157467f, 0.346596f , - -0.883002f, -0.121426f, 0.453391f , - -0.041497f, -0.021851f, 0.998900f , - -0.166383f, 0.006853f, 0.986037f , - -0.206180f, -0.031082f, 0.978020f , - -0.320931f, -0.027855f, 0.946693f , - -0.151527f, -0.050591f, 0.987158f , - -0.749346f, 0.033408f, 0.661335f , - -0.908441f, 0.033799f, 0.416644f , - -0.895502f, 0.037388f, 0.443485f , - -0.717105f, 0.057525f, 0.694587f , - -0.999453f, 0.029143f, 0.015604f , - -0.967320f, 0.034093f, 0.251256f , - -0.871878f, -0.066927f, 0.485128f , - -0.865320f, -0.061613f, 0.497418f , - -0.954212f, -0.048588f, 0.295160f , - -0.949418f, -0.097092f, 0.298628f , - -0.879109f, 0.019058f, 0.476239f , - -0.874182f, -0.018771f, 0.485236f , - -0.697714f, -0.046196f, 0.714885f , - -0.805858f, -0.034213f, -0.591119f , - -0.967710f, 0.063453f, -0.243950f , - -0.857533f, 0.075738f, -0.508823f , - -0.970285f, 0.069609f, -0.231738f , - -0.731046f, -0.159086f, -0.663524f , - -0.691819f, -0.041168f, -0.720897f , - -0.973879f, 0.002817f, -0.227050f , - -0.928899f, -0.070452f, -0.363570f , - -0.897842f, -0.077894f, -0.433373f , - -0.968567f, -0.010931f, -0.248514f , - -0.299478f, 0.251001f, -0.920495f , - 0.029185f, 0.157999f, -0.987008f , - 0.364294f, 0.041842f, -0.930344f , - 0.419115f, 0.062648f, -0.905769f , - -0.591606f, -0.505437f, -0.628122f , - -0.464862f, -0.401235f, -0.789249f , - -0.289215f, -0.382787f, -0.877399f , - -0.244418f, -0.213778f, -0.945811f , - -0.949509f, -0.138852f, -0.281340f , - -0.939180f, -0.235155f, -0.250288f , - -0.885383f, -0.208296f, -0.415584f , - -0.573265f, -0.685156f, -0.449365f , - -0.571948f, -0.492263f, -0.656165f , - -0.322749f, -0.499610f, -0.803880f , - -0.063146f, -0.583144f, -0.809911f , - -0.085877f, -0.567675f, -0.818762f , - 0.299893f, -0.886138f, -0.353303f , - 0.396457f, -0.785608f, -0.475018f , - 0.553566f, -0.488760f, -0.674299f , - 0.618508f, -0.392088f, -0.680966f , - 0.911745f, -0.080811f, -0.402729f , - 0.968197f, -0.044095f, -0.246272f , - 0.939061f, 0.283006f, -0.195120f , - 0.920952f, -0.267363f, -0.283485f , - 0.889151f, -0.366864f, -0.273536f , - 0.586832f, -0.197587f, -0.785231f , - 0.820295f, -0.204577f, -0.534101f , - 0.842458f, -0.191239f, -0.503678f , - 0.624638f, -0.173081f, -0.761492f , - 0.936126f, -0.350985f, 0.021862f , - 0.954302f, -0.298587f, 0.012423f , - 0.983059f, -0.004374f, 0.183239f , - 0.923440f, 0.047567f, 0.380784f , - 0.908146f, 0.196917f, 0.369452f , - 0.861146f, -0.056694f, 0.505187f , - 0.996585f, -0.082027f, 0.009441f , - 0.987690f, -0.045565f, 0.149642f , - 0.978879f, -0.069010f, 0.192440f , - 0.993533f, -0.112956f, 0.011499f , - 0.378992f, 0.041293f, 0.924478f , - 0.388606f, 0.038244f, 0.920610f , - -0.178225f, -0.056492f, 0.982367f , - 0.061793f, 0.098248f, 0.993242f , - -0.112077f, 0.068255f, 0.991353f , - -0.060881f, 0.223346f, 0.972836f , - 0.916337f, -0.216153f, -0.337052f , - 0.775244f, -0.342843f, -0.530524f , - 0.495171f, -0.407992f, -0.767039f , - 0.884854f, -0.465808f, -0.007483f , - 0.940132f, -0.335913f, -0.057565f , - 0.889212f, -0.377174f, -0.258926f , - 0.836929f, -0.505611f, -0.209541f , - 0.968893f, 0.010652f, 0.247250f , - 0.935832f, -0.292811f, 0.196165f , - 0.859500f, -0.210962f, 0.465570f , - 0.930027f, -0.098386f, 0.354076f , - 0.971727f, -0.189117f, 0.141354f , - 0.781652f, 0.041530f, 0.622330f , - 0.825735f, 0.131053f, 0.548622f , - 0.489100f, 0.058642f, 0.870254f , - 0.779058f, 0.085360f, 0.621114f , - 0.677957f, 0.019450f, 0.734845f , - 0.728656f, -0.081004f, 0.680072f , - -0.635312f, 0.525841f, 0.565570f , - -0.627473f, 0.604297f, 0.491022f , - -0.178129f, 0.290353f, 0.940194f , - -0.060533f, 0.068772f, 0.995794f , - -0.073235f, 0.327910f, 0.941866f , - 0.413255f, 0.015059f, 0.910491f , - 0.256327f, 0.030586f, 0.966106f , - -0.471588f, 0.005438f, 0.881802f , - -0.343135f, -0.024028f, 0.938979f , - -0.598669f, 0.191593f, 0.777745f , - -0.565671f, 0.339820f, 0.751358f , - -0.906822f, 0.419771f, -0.038287f , - -0.842576f, 0.533582f, 0.073188f , - -0.984596f, 0.071557f, 0.159533f , - -0.837244f, 0.419962f, 0.350220f , - -0.879089f, 0.279051f, 0.386435f , - -0.765570f, 0.253460f, 0.591321f , - -0.961087f, -0.272819f, -0.043370f , - -0.854300f, 0.353979f, 0.380618f , - -0.886783f, 0.182141f, 0.424784f , - -0.856273f, 0.148383f, 0.494751f , - -0.878735f, 0.112626f, 0.463832f , - -0.277487f, 0.344818f, 0.896717f , - -0.330797f, 0.274665f, 0.902847f , - -0.528318f, 0.268494f, 0.805476f , - -0.578817f, 0.255723f, 0.774323f , - -0.720689f, 0.221708f, 0.656851f , - 0.280354f, -0.127757f, 0.951357f , - 0.165677f, 0.011361f, 0.986115f , - 0.180098f, -0.023683f, 0.983364f , - 0.016933f, 0.116138f, 0.993089f , - 0.687836f, -0.245687f, 0.683023f , - 0.736358f, -0.606620f, 0.299649f , - 0.547429f, -0.367767f, 0.751710f , - 0.487664f, -0.462818f, 0.740259f , - 0.439475f, -0.402290f, 0.803134f , - -0.378051f, 0.117291f, 0.918325f , - -0.080950f, 0.356017f, 0.930967f , - 0.309655f, 0.460597f, 0.831844f , - 0.333705f, 0.447925f, 0.829460f , - 0.810761f, 0.507221f, 0.292221f , - 0.850405f, 0.496895f, 0.172936f , - 0.871805f, 0.428307f, 0.237718f , - 0.822734f, 0.459622f, 0.334450f , - 0.851020f, 0.491046f, -0.186118f , - 0.816060f, 0.474665f, -0.329757f , - 0.879410f, 0.355996f, -0.316076f , - 0.910232f, 0.373299f, -0.179234f , - 0.989644f, 0.028056f, 0.140778f , - 0.903640f, 0.075428f, 0.421598f , - 0.315587f, -0.804927f, -0.502492f , - 0.155707f, -0.933686f, -0.322468f , - -0.819473f, 0.290388f, 0.494105f , - -0.399986f, -0.570209f, -0.717547f , - -0.608290f, -0.477438f, -0.634063f , - -0.450200f, -0.745748f, -0.491101f , - -0.943492f, -0.331130f, -0.013226f , - -0.883091f, -0.450113f, -0.132472f , - -0.904947f, -0.357950f, -0.230092f , - -0.966886f, -0.234185f, -0.101437f , - 0.810643f, 0.441210f, -0.384957f , - 0.843823f, 0.010047f, -0.536528f , - 0.784877f, -0.069323f, -0.615761f , - 0.753579f, 0.347785f, -0.557822f , - 0.883803f, 0.432488f, 0.178457f , - 0.864246f, 0.487197f, 0.125369f , - 0.719591f, 0.126823f, 0.682718f , - 0.644713f, 0.398893f, 0.652096f , - -0.164508f, -0.150692f, 0.974797f , - 0.230347f, -0.597765f, 0.767866f , - 0.184023f, 0.181236f, 0.966069f , - 0.307230f, -0.949986f, -0.056008f , - 0.131472f, -0.990522f, -0.039771f , - 0.296449f, -0.948041f, -0.115484f , - 0.281510f, -0.947618f, 0.150906f , - 0.114926f, -0.991422f, 0.062240f , - 0.098864f, -0.994686f, 0.028724f , - 0.222545f, -0.973275f, 0.056654f , - 0.297333f, -0.912579f, 0.280701f , - 0.098456f, -0.983578f, 0.151266f , - 0.088978f, -0.991614f, 0.093727f , - 0.252507f, -0.943739f, 0.213532f , - 0.013550f, -0.986357f, 0.164063f , - 0.219045f, -0.919411f, 0.326653f , - -0.377961f, -0.572449f, 0.727632f , - -0.333684f, -0.864029f, 0.376972f , - -0.236953f, -0.914417f, 0.328168f , - -0.386087f, -0.580565f, 0.716855f , - -0.146755f, -0.893572f, -0.424254f , - 0.068962f, -0.958799f, -0.275589f , - 0.626071f, -0.600487f, -0.497444f , - 0.738646f, -0.097752f, -0.666968f , - 0.851690f, -0.084982f, -0.517110f , - 0.331779f, -0.143136f, -0.932435f , - 0.534690f, 0.043300f, -0.843938f , - 0.559581f, 0.022125f, -0.828480f , - 0.716772f, 0.128541f, -0.685357f , - -0.139490f, -0.817690f, -0.558503f , - -0.097519f, -0.510013f, -0.854621f , - 0.068841f, -0.254165f, -0.964708f , - 0.135880f, -0.188839f, -0.972562f , - -0.424221f, -0.833004f, -0.355164f , - -0.505293f, -0.601678f, -0.618597f , - -0.539049f, -0.380253f, -0.751554f , - -0.331867f, -0.389066f, -0.859356f , - -0.631827f, -0.775101f, -0.003704f , - -0.845813f, -0.527677f, -0.078473f , - -0.947388f, -0.296447f, -0.120725f , - -0.901091f, -0.321722f, -0.290741f , - -0.620010f, -0.693404f, 0.367122f , - -0.414975f, 0.180005f, 0.891849f , - -0.565947f, 0.139197f, 0.812606f , - -0.485701f, 0.094333f, 0.869020f , - -0.807173f, -0.379102f, 0.452496f , - -0.839857f, -0.120088f, 0.529357f , - -0.910788f, -0.172561f, 0.375085f , - 0.714165f, -0.698753f, -0.041384f , - 0.784979f, -0.610455f, -0.105608f , - 0.597320f, -0.782316f, -0.176605f , - 0.870378f, -0.446737f, 0.207044f , - 0.774544f, -0.618429f, -0.132768f , - 0.807459f, -0.575544f, -0.129460f , - 0.897111f, -0.401726f, 0.183870f , - 0.630964f, -0.714173f, -0.303054f , - 0.549649f, -0.199411f, 0.811247f , - 0.593199f, -0.272739f, 0.757448f , - 0.878043f, -0.321934f, 0.354117f , - 0.755639f, -0.463905f, 0.462387f , - 0.801954f, -0.237000f, 0.548362f , - 0.615296f, -0.536102f, 0.577932f , - 0.608499f, -0.579855f, 0.541754f , - 0.656131f, -0.728212f, 0.197990f , - 0.868910f, -0.446489f, -0.213643f , - 0.953997f, -0.280821f, -0.105019f , - 0.970576f, -0.235907f, 0.048269f , - 0.920376f, -0.251887f, -0.299101f , - 0.931290f, -0.114443f, -0.345836f , - 0.181732f, -0.280105f, -0.942611f , - 0.105376f, -0.390951f, -0.914360f , - 0.042650f, -0.506285f, -0.861311f , - 0.399600f, -0.321450f, -0.858481f , - 0.363220f, -0.369866f, -0.855144f , - 0.608559f, -0.393512f, -0.689061f , - -0.706641f, -0.200837f, -0.678471f , - -0.762094f, -0.164397f, -0.626248f , - -0.783364f, -0.231670f, -0.576775f , - -0.516787f, -0.217082f, -0.828134f , - -0.529489f, -0.215987f, -0.820360f , - -0.274653f, -0.271019f, -0.922559f , - -0.998356f, -0.021726f, 0.053032f , - -0.990535f, 0.119813f, 0.066969f , - -0.989897f, 0.112136f, 0.086774f , - -0.988259f, 0.005311f, -0.152693f , - -0.986763f, 0.047490f, -0.155058f , - -0.939219f, -0.013254f, -0.343062f , - -0.507444f, 0.182160f, 0.842210f , - -0.620688f, 0.162842f, 0.766961f , - -0.605043f, 0.262132f, 0.751805f , - -0.616443f, 0.275493f, 0.737632f , - -0.723539f, 0.201358f, 0.660262f , - -0.709636f, 0.242059f, 0.661683f , - -0.832868f, 0.217079f, 0.509125f , - 0.529194f, -0.014096f, 0.848384f , - -0.103107f, 0.154895f, 0.982536f , - -0.322345f, 0.201664f, 0.924892f , - 0.344914f, 0.085064f, 0.934772f , - 0.154203f, 0.125687f, 0.980012f , - 0.141327f, 0.183496f, 0.972808f , - -0.164974f, -0.890566f, 0.423883f , - -0.187405f, -0.982283f, -0.000102f , - -0.028181f, -0.648707f, 0.760516f , - -0.063994f, -0.630979f, 0.773156f , - -0.079947f, -0.724399f, 0.684730f , - -0.034208f, -0.748679f, 0.662050f , - -0.190461f, -0.689420f, 0.698874f , - -0.250404f, -0.701128f, 0.667621f , - -0.276515f, -0.840306f, 0.466289f , - -0.225165f, -0.814261f, 0.535051f , - -0.290414f, -0.609531f, 0.737653f , - -0.203860f, -0.075999f, 0.976046f , - -0.254006f, -0.319874f, 0.912777f , - -0.146543f, -0.147719f, 0.978113f , - -0.129783f, -0.077036f, 0.988545f , - -0.082484f, -0.543168f, 0.835563f , - -0.095369f, -0.389629f, 0.916021f , - -0.088899f, -0.265106f, 0.960112f , - -0.099158f, -0.222888f, 0.969788f , - 0.012590f, -0.715070f, 0.698939f , - 0.052932f, -0.653685f, 0.754913f , - 0.019713f, -0.564659f, 0.825089f , - 0.008773f, -0.503008f, 0.864237f , - -0.027117f, -0.459839f, 0.887588f , - -0.078695f, -0.108271f, 0.991002f , - -0.070623f, -0.017008f, 0.997358f , - -0.058528f, 0.062950f, 0.996299f , - -0.068416f, 0.045876f, 0.996602f , - -0.076735f, -0.277667f, 0.957608f , - -0.034561f, -0.251592f, 0.967216f , - -0.052650f, -0.064065f, 0.996556f , - -0.079795f, 0.071382f, 0.994252f , - -0.069833f, 0.096461f, 0.992884f , - -0.238801f, -0.037658f, 0.970338f , - 0.575592f, -0.756464f, 0.310573f , - 0.642729f, -0.719539f, 0.262988f , - 0.500980f, -0.041044f, 0.864485f , - 0.645457f, -0.172964f, 0.743954f , - 0.630877f, -0.203838f, 0.748628f , - 0.483212f, -0.072288f, 0.872514f , - 0.764958f, -0.497310f, 0.409293f , - 0.737551f, -0.326928f, 0.590878f , - 0.747982f, -0.304168f, 0.589919f , - -0.088296f, 0.206797f, 0.974392f , - 0.102670f, 0.143258f, 0.984345f , - 0.289608f, 0.049977f, 0.955840f , - 0.246420f, 0.006159f, 0.969144f , - 0.420453f, -0.123839f, 0.898823f , - -0.082658f, 0.247766f, 0.965287f , - 0.094536f, 0.147018f, 0.984606f , - -0.496112f, 0.222423f, 0.839286f , - 0.217835f, 0.089910f, 0.971835f , - 0.043092f, 0.121133f, 0.991701f , - 0.080704f, 0.106391f, 0.991044f , - -0.318667f, 0.185729f, 0.929492f , - -0.348835f, 0.167790f, 0.922042f , - -0.588023f, 0.155973f, 0.793663f , - -0.722971f, 0.080758f, 0.686142f , - -0.737154f, 0.156723f, 0.657299f , - -0.469174f, 0.194869f, 0.861337f , - -0.438528f, 0.233543f, 0.867843f , - -0.584552f, 0.155007f, 0.796412f , - -0.247793f, 0.275429f, 0.928837f , - 0.238949f, 0.028670f, 0.970609f , - 0.149306f, 0.034101f, 0.988203f , - 0.122784f, 0.129004f, 0.984013f , - -0.078697f, 0.299711f, 0.950779f , - -0.073286f, 0.274629f, 0.958753f , - 0.029974f, 0.184035f, 0.982463f , - 0.015220f, 0.194025f, 0.980879f , - 0.110615f, 0.047468f, 0.992729f , - 0.086091f, -0.114916f, 0.989638f , - 0.174583f, -0.094212f, 0.980125f , - 0.237653f, -0.200373f, 0.950459f , - 0.104277f, -0.227266f, 0.968234f , - 0.133432f, -0.035759f, 0.990413f , - 0.272781f, -0.079283f, 0.958804f , - 0.384190f, -0.218836f, 0.896944f , - 0.365804f, -0.199354f, 0.909090f , - 0.587255f, -0.622127f, 0.517773f , - 0.589623f, -0.473017f, 0.654675f , - 0.417787f, -0.513382f, 0.749595f , - 0.363561f, -0.596853f, 0.715255f , - 0.350588f, -0.531089f, 0.771384f , - -0.272647f, -0.962114f, 0.000000f , - -0.361341f, -0.910370f, -0.201642f , - -0.364051f, -0.929484f, -0.059388f , - -0.287374f, -0.956805f, -0.044061f , - -0.270952f, -0.946092f, -0.177468f , - -0.682806f, -0.076553f, 0.726578f , - -0.646707f, 0.016516f, 0.762560f , - -0.609824f, 0.223782f, 0.760287f , - -0.667779f, 0.136318f, 0.731771f , - -0.678825f, 0.101559f, 0.727243f , - -0.619156f, 0.160815f, 0.768625f , - -0.727663f, -0.128800f, 0.673734f , - -0.768652f, -0.116865f, 0.628902f , - -0.784490f, -0.207781f, 0.584296f , - -0.763024f, -0.130061f, 0.633150f , - -0.754925f, -0.051164f, 0.653813f , - -0.782068f, -0.305832f, 0.542988f , - -0.800441f, -0.318365f, 0.507876f , - -0.856882f, -0.249164f, 0.451298f , - -0.888389f, -0.264418f, 0.375297f , - -0.930325f, -0.122679f, 0.345608f , - -0.091658f, -0.635396f, 0.766728f , - -0.104229f, -0.586685f, 0.803080f , - -0.535063f, -0.551574f, 0.639902f , - -0.658662f, -0.526055f, 0.537987f , - -0.267223f, -0.456427f, 0.848685f , - -0.446970f, -0.443155f, 0.777066f , - -0.490142f, -0.286977f, 0.823046f , - -0.346182f, -0.757812f, 0.553064f , - -0.342699f, -0.673175f, 0.655281f , - -0.476762f, -0.876490f, -0.066812f , - -0.455562f, -0.890202f, -0.002115f , - -0.554242f, -0.798300f, 0.235655f , - -0.465156f, -0.805148f, 0.367922f , - -0.522844f, -0.852334f, 0.012686f , - -0.558390f, -0.827247f, 0.062150f , - -0.539833f, -0.841772f, -0.000050f , - -0.685409f, -0.728022f, 0.014080f , - -0.784043f, -0.608004f, -0.124935f , - -0.735024f, -0.663658f, 0.138919f , - -0.784684f, -0.608183f, 0.119932f , - -0.828855f, -0.510935f, 0.227916f , - 0.002499f, -0.999997f, 0.000000f , - -0.137212f, -0.990542f, 0.000000f , - -0.216473f, -0.976059f, 0.021170f , - -0.194682f, -0.977385f, 0.082569f , - -0.226284f, -0.972386f, 0.057098f , - 0.007544f, -0.962923f, 0.269669f , - 0.182572f, -0.896463f, 0.403759f , - 0.286686f, -0.825977f, 0.485359f , - 0.074930f, -0.966393f, 0.245907f , - 0.169498f, -0.950212f, 0.261473f , - 0.257936f, -0.956344f, 0.137384f , - -0.019079f, -0.999818f, 0.000000f , - -0.018627f, -0.974164f, 0.225073f , - -0.008404f, -0.923207f, 0.384211f , - 0.018195f, -0.922700f, 0.385090f , - -0.156914f, -0.987612f, 0.000000f , - -0.085402f, -0.972842f, 0.215138f , - -0.073825f, -0.924561f, 0.373814f , - -0.052247f, -0.928124f, 0.368586f , - -0.365288f, -0.930895f, 0.000000f , - -0.661873f, -0.734147f, 0.151503f , - -0.482290f, -0.814236f, 0.323134f , - -0.580222f, -0.785246f, 0.216173f , - -0.724541f, -0.688832f, 0.023456f , - -0.342886f, -0.905456f, 0.250157f , - -0.368080f, -0.851052f, 0.374470f , - -0.273484f, -0.872072f, 0.405829f , - -0.065035f, -0.997883f, -0.000001f , - -0.186738f, -0.971775f, -0.144160f , - -0.180278f, -0.922528f, -0.341236f , - -0.220015f, -0.973986f, 0.054271f , - -0.257385f, -0.964629f, 0.056949f , - -0.366631f, -0.922890f, 0.117708f , - 0.214019f, -0.976830f, 0.000000f , - 0.509414f, -0.860421f, 0.013176f , - 0.598110f, -0.801405f, -0.003802f , - 0.171537f, -0.984943f, -0.021505f , - 0.276969f, -0.959005f, -0.059974f , - 0.124280f, -0.985629f, -0.114411f , - 0.489430f, -0.872042f, 0.000000f , - 0.475935f, -0.876191f, 0.075995f , - 0.490637f, -0.860162f, 0.139274f , - 0.460438f, -0.879502f, 0.120306f , - 0.661321f, -0.750103f, 0.000000f , - 0.603777f, -0.729856f, 0.320568f , - 0.664890f, -0.691668f, 0.281987f , - 0.594041f, -0.761438f, 0.259476f , - 0.643432f, -0.758149f, 0.105855f , - 0.656150f, -0.730387f, 0.189742f , - 0.608455f, -0.771482f, 0.186005f , - -0.243766f, 0.163341f, 0.955980f , - 0.035947f, 0.106528f, 0.993660f , - -0.089190f, 0.035190f, 0.995393f , - -0.025597f, 0.039629f, 0.998887f , - 0.089372f, 0.095191f, 0.991439f , - 0.378741f, -0.318763f, 0.868876f , - 0.294700f, -0.201151f, 0.934179f , - 0.192045f, -0.127508f, 0.973068f , - 0.213649f, -0.142065f, 0.966526f , - 0.102580f, -0.063555f, 0.992692f , - 0.579300f, -0.763050f, 0.286646f , - 0.498330f, -0.566232f, 0.656542f , - 0.440485f, -0.452255f, 0.775524f , - 0.563478f, -0.722592f, 0.400441f , - 0.537152f, -0.641693f, 0.547447f , - 0.546189f, -0.614461f, 0.569311f , - 0.710326f, -0.636422f, 0.300673f , - 0.654211f, -0.419861f, 0.629066f , - 0.718071f, -0.387394f, 0.578186f , - 0.654456f, -0.549530f, 0.519331f , - 0.701426f, -0.624067f, 0.344299f , - 0.714026f, -0.555896f, 0.425614f , - 0.657539f, -0.611717f, 0.439823f , - 0.416275f, 0.053353f, 0.907672f , - 0.515041f, -0.109019f, 0.850205f , - 0.444057f, -0.150420f, 0.883282f , - 0.690791f, -0.258066f, 0.675433f , - 0.650705f, -0.159071f, 0.742482f , - 0.641926f, -0.163601f, 0.749110f , - 0.701341f, -0.265169f, 0.661670f , - 0.610974f, -0.092467f, 0.786232f , - 0.566054f, -0.090829f, 0.819349f , - -0.557160f, -0.137457f, 0.818950f , - -0.365867f, -0.267205f, 0.891483f , - -0.324362f, -0.473180f, 0.819079f , - -0.588707f, -0.273626f, 0.760626f , - -0.033058f, -0.730019f, 0.682626f , - -0.037575f, -0.737730f, 0.674049f , - -0.093498f, -0.837917f, 0.537730f , - -0.103655f, -0.865562f, 0.489957f , - -0.169758f, -0.702243f, 0.691402f , - -0.179867f, -0.741364f, 0.646550f , - -0.457137f, -0.583790f, 0.670980f , - -0.027896f, -0.836515f, 0.547234f , - -0.102161f, -0.822173f, 0.559995f , - 0.005873f, -0.759584f, 0.650382f , - -0.011312f, -0.693836f, 0.720044f , - 0.105045f, -0.685031f, 0.720901f , - -0.028742f, -0.410966f, 0.911198f , - 0.024525f, -0.435250f, 0.899976f , - -0.023387f, -0.518176f, 0.854954f , - -0.022708f, -0.438234f, 0.898574f , - -0.042224f, -0.571667f, 0.819399f , - -0.057913f, -0.343314f, 0.937433f , - -0.112752f, -0.657888f, 0.744628f , - -0.146623f, -0.617098f, 0.773105f , - -0.150151f, -0.657140f, 0.738662f , - -0.004796f, 0.244216f, 0.969709f , - 0.001990f, 0.001273f, 0.999997f , - 0.010789f, 0.134504f, 0.990854f , - -0.007624f, 0.004313f, 0.999962f , - 0.078209f, 0.386083f, 0.919143f , - 0.057212f, 0.389078f, 0.919427f , - 0.031817f, 0.266433f, 0.963328f , - 0.064413f, 0.267783f, 0.961324f , - 0.034367f, -0.326849f, 0.944452f , - 0.080877f, -0.137947f, 0.987132f , - 0.107540f, -0.037442f, 0.993495f , - 0.030218f, -0.266136f, 0.963462f , - 0.040400f, -0.218144f, 0.975080f , - 0.014306f, -0.216018f, 0.976285f , - -0.369225f, -0.142734f, 0.918314f , - -0.276136f, -0.198804f, 0.940333f , - -0.160742f, -0.201175f, 0.966277f , - -0.180830f, -0.138617f, 0.973697f , - -0.047300f, -0.174506f, 0.983519f , - -0.211495f, -0.033730f, 0.976797f , - -0.261272f, -0.110414f, 0.958929f , - -0.305011f, -0.115060f, 0.945373f , - -0.274870f, -0.027152f, 0.961098f , - -0.310267f, -0.048094f, 0.949432f , - -0.377718f, 0.060516f, 0.923941f , - -0.276184f, 0.030000f, 0.960636f , - -0.345360f, 0.028242f, 0.938045f , - -0.179340f, 0.077688f, 0.980715f , - -0.132258f, 0.163406f, 0.977653f , - 0.006516f, 0.149557f, 0.988732f , - 0.182686f, 0.297932f, 0.936943f , - 0.156813f, 0.237123f, 0.958740f , - 0.065534f, 0.258835f, 0.963696f , - 0.005528f, 0.244024f, 0.969753f , - 0.066407f, 0.168511f, 0.983460f , - 0.046777f, 0.161354f, 0.985787f , - -0.034770f, 0.055018f, 0.997880f , - 0.177095f, -0.011088f, 0.984131f , - 0.238463f, -0.102143f, 0.965765f , - 0.322044f, 0.214567f, 0.922089f , - 0.432499f, 0.093379f, 0.896786f , - 0.485595f, 0.190701f, 0.853130f , - 0.554903f, 0.092151f, 0.826796f , - -0.110767f, 0.077801f, 0.990796f , - -0.172802f, -0.035202f, 0.984327f , - -0.141902f, -0.042418f, 0.988971f , - -0.178306f, -0.224034f, 0.958131f , - -0.041193f, 0.219517f, 0.974739f , - -0.031793f, 0.233365f, 0.971869f , - -0.018734f, 0.275915f, 0.960999f , - -0.039911f, 0.218329f, 0.975059f , - -0.171297f, 0.260815f, 0.950070f , - -0.136035f, 0.375479f, 0.916793f , - -0.139431f, 0.457608f, 0.878154f , - -0.090534f, 0.437359f, 0.894718f , - -0.532801f, 0.211164f, 0.819471f , - -0.513179f, 0.165028f, 0.842267f , - -0.449341f, 0.363433f, 0.816094f , - -0.455878f, 0.491077f, 0.742307f , - -0.339996f, 0.516669f, 0.785784f , - -0.517848f, 0.532421f, 0.669598f , - -0.497188f, 0.402769f, 0.768493f , - -0.537781f, 0.485437f, 0.689305f , - -0.507833f, 0.571635f, 0.644468f , - -0.512310f, 0.568710f, 0.643511f , - -0.074118f, 0.504301f, 0.860341f , - -0.090902f, 0.499227f, 0.861690f , - -0.221640f, 0.598439f, 0.769901f , - -0.290004f, 0.669770f, 0.683598f , - -0.349720f, 0.655031f, 0.669798f , - -0.186941f, 0.638396f, 0.746661f , - 0.051037f, 0.504940f, 0.861644f , - 0.014818f, 0.616189f, 0.787459f , - 0.031510f, 0.704710f, 0.708796f , - -0.004813f, 0.706261f, 0.707936f , - 0.133261f, 0.462819f, 0.876379f , - 0.133747f, 0.586415f, 0.798892f , - 0.144236f, 0.668048f, 0.730006f , - 0.119202f, 0.676860f, 0.726396f , - 0.144477f, 0.451635f, 0.880427f , - 0.088318f, 0.715428f, 0.693082f , - 0.160188f, 0.702743f, 0.693176f , - 0.087923f, 0.638211f, 0.764824f , - 0.152785f, 0.537881f, 0.829060f , - 0.175280f, 0.613720f, 0.769821f , - 0.166274f, 0.616215f, 0.769826f , - -0.085736f, 0.403630f, 0.910896f , - -0.118965f, 0.567423f, 0.814788f , - -0.133887f, 0.771989f, 0.621375f , - -0.219840f, 0.687204f, 0.692403f , - 0.001353f, 0.447522f, 0.894272f , - -0.037336f, 0.591866f, 0.805171f , - -0.086665f, 0.791103f, 0.605512f , - -0.090023f, 0.825356f, 0.557390f , - -0.149011f, 0.416689f, 0.896753f , - -0.106865f, 0.402308f, 0.909246f , - -0.143197f, 0.524987f, 0.838978f , - -0.120576f, 0.555470f, 0.822748f , - -0.459925f, 0.499704f, 0.734006f , - -0.423810f, 0.681480f, 0.596633f , - -0.498925f, 0.866645f, -0.000065f , - -0.330883f, 0.395786f, 0.856662f , - -0.286369f, 0.377168f, 0.880759f , - -0.244119f, 0.362783f, 0.899330f , - -0.346593f, 0.650091f, 0.676206f , - -0.411021f, 0.855753f, 0.314242f , - -0.428918f, 0.903343f, -0.000001f , - -0.383791f, 0.650964f, 0.654943f , - -0.406292f, 0.717932f, 0.565243f , - -0.425190f, 0.672773f, 0.605467f , - -0.128470f, 0.755469f, 0.642466f , - -0.148683f, 0.942115f, 0.300520f , - -0.154633f, 0.987972f, 0.000000f , - -0.205211f, 0.769055f, 0.605346f , - -0.215913f, 0.833130f, 0.509191f , - -0.282117f, 0.810182f, 0.513824f , - 0.053319f, 0.774137f, 0.630769f , - 0.124160f, 0.956112f, 0.265396f , - 0.135463f, 0.990782f, -0.000001f , - 0.034458f, 0.810379f, 0.584892f , - 0.052038f, 0.871321f, 0.487946f , - 0.001210f, 0.865033f, 0.501714f , - 0.175967f, 0.758829f, 0.627068f , - 0.230248f, 0.940137f, 0.251252f , - 0.235864f, 0.971786f, 0.000000f , - 0.176728f, 0.816533f, 0.549583f , - 0.196199f, 0.880826f, 0.430874f , - 0.170176f, 0.887119f, 0.429022f , - 0.212587f, 0.755828f, 0.619299f , - 0.238536f, 0.908713f, 0.342552f , - 0.321802f, 0.919193f, 0.226998f , - 0.339350f, 0.940660f, -0.000001f , - 0.236191f, 0.803833f, 0.545954f , - 0.266520f, 0.858433f, 0.438246f , - 0.245329f, 0.857347f, 0.452514f , - 0.731223f, 0.605649f, 0.313850f , - 0.680424f, 0.620224f, 0.390316f , - 0.076165f, 0.828460f, 0.554845f , - 0.066272f, 0.830557f, 0.552976f , - -0.495949f, 0.332642f, 0.802112f , - -0.677249f, 0.073573f, 0.732066f , - -0.755072f, 0.135851f, 0.641414f , - -0.560959f, 0.422268f, 0.712050f , - -0.618823f, -0.227137f, 0.751976f , - 0.135684f, -0.103214f, 0.985361f , - -0.608690f, -0.317796f, 0.726981f , - -0.687011f, -0.269819f, 0.674695f , - -0.571425f, 0.238326f, 0.785286f , - -0.478560f, 0.298384f, 0.825801f , - 0.027750f, 0.507703f, 0.861085f , - 0.055652f, 0.393430f, 0.917669f , - -0.289550f, -0.756565f, 0.586319f , - -0.449502f, -0.675187f, 0.584868f , - -0.917535f, 0.380667f, 0.114986f , - -0.965087f, 0.261928f, 0.000000f , - -0.725527f, 0.622554f, 0.293320f , - -0.914338f, 0.346524f, 0.209542f , - -0.910723f, 0.366570f, 0.190288f , - -0.726954f, 0.642904f, 0.241271f , - -0.924507f, 0.373252f, 0.077265f , - -0.967446f, 0.222366f, 0.120838f , - -0.796056f, 0.567590f, 0.210085f , - -0.941394f, 0.302116f, 0.150014f , - -0.940834f, 0.317014f, 0.119722f , - -0.796522f, 0.570082f, 0.201394f , - -0.900906f, 0.204504f, 0.382813f , - -0.972658f, 0.187131f, 0.137541f , - -0.750223f, 0.552092f, 0.363812f , - -0.915487f, 0.286398f, 0.282595f , - -0.928496f, 0.280783f, 0.243013f , - -0.772001f, 0.544936f, 0.327199f , - -0.886806f, 0.220043f, 0.406394f , - -0.948208f, 0.163335f, 0.272439f , - -0.862870f, 0.257178f, 0.435103f , - -0.649256f, 0.487686f, 0.583634f , - -0.932240f, 0.073857f, 0.354223f , - -0.926222f, 0.063740f, 0.371551f , - -0.901694f, -0.012924f, 0.432181f , - -0.594849f, -0.188038f, 0.781534f , - -0.710205f, -0.095076f, 0.697545f , - -0.268013f, -0.134894f, 0.953925f , - -0.485636f, -0.222146f, 0.845464f , - -0.546774f, -0.058777f, 0.835214f , - -0.325996f, 0.048247f, 0.944139f , - -0.531457f, -0.672142f, 0.515537f , - -0.599786f, -0.381007f, 0.703627f , - -0.471181f, -0.543488f, 0.694701f , - -0.505321f, -0.426084f, 0.750402f , - -0.244683f, -0.607226f, 0.755914f , - -0.440666f, -0.651642f, 0.617395f , - -0.381849f, -0.671682f, 0.634851f , - -0.210986f, -0.676211f, 0.705849f , - -0.292836f, -0.815718f, 0.498849f , - -0.368092f, -0.846141f, 0.385427f , - 0.468403f, -0.416980f, -0.778926f , - 0.329753f, -0.114539f, -0.937093f , - 0.403980f, -0.307104f, -0.861677f , - 0.341266f, 0.180865f, -0.922402f , - 0.181880f, 0.352681f, -0.917897f , - 0.253380f, 0.118719f, -0.960054f , - 0.432117f, -0.053850f, -0.900208f , - -0.169503f, 0.777558f, -0.605535f , - -0.247362f, 0.896764f, -0.366914f , - -0.175102f, 0.767320f, -0.616895f , - 0.172286f, -0.130517f, 0.976362f , - 0.179528f, -0.075061f, 0.980885f , - 0.366439f, -0.362733f, 0.856824f , - 0.415386f, -0.538317f, 0.733259f , - 0.498467f, -0.668979f, 0.551360f , - 0.615791f, -0.775947f, 0.136775f , - 0.737125f, -0.665084f, -0.119622f , - 0.914008f, -0.405458f, -0.013879f , - 0.881927f, -0.321036f, -0.345167f , - 0.000488f, 0.678848f, -0.734279f , - 0.058813f, 0.111150f, 0.992062f , - 0.322513f, -0.403127f, 0.856431f , - 0.160390f, -0.075485f, 0.984163f , - 0.187724f, -0.038263f, 0.981476f , - 0.095154f, -0.140022f, 0.985566f , - 0.451022f, -0.435150f, 0.779245f , - 0.489750f, -0.263100f, 0.831218f , - 0.663495f, -0.378773f, 0.645217f , - 0.693129f, 0.720814f, 0.000000f , - 0.678426f, 0.651580f, -0.339385f , - 0.703097f, 0.644140f, -0.301229f , - 0.665405f, 0.746482f, -0.000013f , - 0.539843f, 0.841766f, 0.000000f , - 0.531877f, 0.846655f, 0.016826f , - 0.445378f, 0.895323f, -0.005932f , - 0.458943f, 0.888466f, 0.000000f , - 0.632404f, 0.559274f, 0.535982f , - 0.653103f, 0.667423f, 0.357775f , - 0.716136f, 0.585694f, 0.379621f , - 0.690615f, 0.518965f, 0.503712f , - 0.714443f, 0.695207f, 0.079113f , - 0.788631f, 0.612191f, 0.057310f , - 0.630279f, 0.775715f, 0.031859f , - 0.815866f, 0.578242f, -0.000001f , - 0.815515f, 0.578657f, -0.009588f , - 0.770042f, 0.637891f, -0.011370f , - 0.770000f, 0.638044f, -0.000001f , - 0.862816f, 0.505500f, -0.004176f , - 0.929663f, 0.368411f, 0.000000f , - 0.823966f, 0.565061f, 0.042258f , - 0.921723f, 0.387670f, -0.011816f , - 0.919350f, 0.392947f, -0.019708f , - 0.839662f, 0.543045f, -0.008323f , - 0.828926f, 0.556506f, -0.056423f , - 0.935872f, 0.352031f, -0.014793f , - 0.919437f, 0.376619f, 0.113107f , - 0.903370f, 0.414924f, 0.108451f , - 0.915080f, 0.395832f, 0.077105f , - 0.907381f, 0.412781f, 0.079195f , - 0.830007f, 0.526005f, 0.185492f , - 0.872666f, 0.471329f, 0.127681f , - 0.892257f, 0.358213f, 0.274884f , - 0.869719f, 0.405952f, 0.280700f , - 0.887380f, 0.391933f, 0.242786f , - 0.907601f, 0.340058f, 0.246213f , - 0.822958f, 0.435528f, 0.364769f , - 0.835893f, 0.451103f, 0.312712f , - 0.820229f, 0.362194f, 0.442763f , - 0.841714f, 0.374560f, 0.388873f , - 0.845632f, 0.401510f, 0.351705f , - 0.846094f, 0.386205f, 0.367383f , - 0.755538f, 0.365222f, 0.543853f , - 0.833878f, 0.353403f, 0.423975f , - 0.727321f, 0.233587f, 0.645323f , - 0.783526f, 0.281457f, 0.553957f , - 0.806466f, 0.253819f, 0.534030f , - 0.797194f, 0.209192f, 0.566322f , - 0.743973f, 0.347337f, 0.570842f , - 0.761720f, 0.334856f, 0.554666f , - 0.732828f, 0.466477f, 0.495340f , - 0.756991f, 0.446989f, 0.476619f , - 0.746067f, 0.429988f, 0.508423f , - 0.694426f, 0.446905f, 0.563958f , - 0.794239f, 0.428162f, 0.431117f , - 0.781804f, 0.422754f, 0.458324f , - 0.792516f, 0.389824f, 0.468994f , - 0.816954f, 0.425471f, 0.389308f , - 0.794740f, 0.450946f, 0.406246f , - 0.780901f, 0.432839f, 0.450382f , - 0.857834f, 0.373180f, 0.353351f , - 0.821770f, 0.005338f, 0.569794f , - 0.921613f, 0.098120f, 0.375503f , - 0.817581f, 0.215176f, 0.534098f , - 0.931054f, -0.188991f, 0.312124f , - -0.101887f, -0.943592f, 0.315045f , - 0.244018f, -0.932469f, 0.266376f , - -0.111842f, -0.924538f, 0.364308f , - 0.609872f, -0.733229f, 0.300716f , - 0.036529f, -0.751087f, 0.659192f , - 0.345430f, -0.630029f, 0.695516f , - 0.357582f, -0.795815f, 0.488686f , - 0.046409f, -0.883172f, 0.466747f , - 0.716855f, 0.241692f, 0.653991f , - 0.819816f, 0.335769f, 0.463855f , - 0.853606f, 0.182746f, 0.487813f , - 0.889324f, 0.184510f, 0.418400f , - 0.675606f, -0.161141f, 0.719437f , - 0.693491f, -0.012481f, 0.720357f , - 0.801930f, 0.013367f, 0.597269f , - 0.789961f, -0.171384f, 0.588719f , - 0.197018f, 0.422272f, 0.884800f , - 0.223654f, 0.075683f, 0.971726f , - 0.512575f, 0.169953f, 0.841655f , - 0.408313f, 0.135861f, 0.902675f , - 0.413861f, 0.207480f, 0.886381f , - 0.520310f, 0.241132f, 0.819227f , - 0.468503f, 0.652835f, -0.595241f , - 0.621599f, 0.585090f, -0.520850f , - 0.685842f, 0.679539f, -0.260475f , - 0.716517f, 0.697569f, 0.000001f , - 0.439481f, 0.872534f, -0.213402f , - 0.504885f, 0.767287f, -0.395427f , - 0.566120f, 0.746291f, -0.350083f , - 0.489411f, 0.844431f, -0.217744f , - 0.361093f, 0.929178f, 0.078995f , - 0.569138f, 0.802661f, 0.178373f , - 0.218776f, 0.759238f, 0.612940f , - 0.205621f, 0.926605f, 0.314839f , - 0.288292f, 0.892804f, 0.346105f , - 0.298037f, 0.730187f, 0.614817f , - 0.267071f, 0.962529f, 0.047031f , - 0.220870f, 0.967584f, 0.122461f , - 0.159202f, 0.984537f, 0.073085f , - -0.257961f, 0.964272f, -0.060300f , - 0.131039f, 0.920264f, -0.368704f , - -0.228240f, 0.949604f, 0.214845f , - -0.103349f, 0.966586f, 0.234585f , - -0.079161f, 0.785666f, 0.613566f , - 0.304261f, -0.391655f, 0.868350f , - 0.021670f, -0.415168f, 0.909487f , - 0.288873f, -0.379064f, 0.879126f , - -0.273703f, -0.624841f, 0.731205f , - -0.241201f, -0.414214f, 0.877638f , - -0.249421f, -0.410912f, 0.876893f , - -0.200564f, -0.423980f, 0.883184f , - -0.166774f, -0.405915f, 0.898565f , - -0.234306f, -0.450674f, 0.861390f , - -0.248924f, -0.414667f, 0.875265f , - -0.224643f, -0.411651f, 0.883221f , - 0.413265f, -0.267788f, 0.870346f , - 0.088853f, -0.183459f, 0.979004f , - 0.234927f, 0.014045f, 0.971912f , - -0.001414f, -0.143709f, 0.989619f , - 0.252688f, -0.156654f, 0.954782f , - 0.275021f, -0.213200f, 0.937502f , - 0.265225f, -0.169371f, 0.949194f , - 0.281475f, -0.253764f, 0.925406f , - 0.292567f, -0.253072f, 0.922149f , - 0.343353f, -0.217269f, 0.913730f , - 0.323423f, -0.102630f, 0.940673f , - 0.525359f, 0.013296f, 0.850777f , - 0.392400f, 0.014820f, 0.919675f , - 0.852187f, 0.523238f, 0.000425f , - 0.921457f, 0.328431f, -0.207486f , - 0.887021f, 0.448176f, -0.111046f , - 0.873974f, 0.432771f, -0.221083f , - 0.957332f, 0.286443f, -0.038295f , - 0.994408f, 0.098404f, 0.038341f , - 0.949616f, 0.308111f, -0.057427f , - 0.986441f, 0.058463f, 0.153349f , - 0.956739f, 0.024162f, 0.289944f , - 0.944015f, -0.015862f, 0.329521f , - 0.674554f, 0.118624f, 0.728632f , - 0.893862f, 0.158984f, 0.419208f , - 0.870710f, 0.481806f, 0.098631f , - 0.868850f, 0.495076f, 0.000745f , - 0.863147f, 0.118409f, 0.490874f , - 0.832420f, 0.317485f, 0.454181f , - 0.899041f, 0.366444f, 0.239676f , - 0.949321f, 0.151896f, 0.275166f , - 0.265036f, 0.072866f, 0.961481f , - 0.271497f, 0.063018f, 0.960374f , - 0.393954f, 0.097458f, 0.913949f , - 0.355477f, 0.050015f, 0.933346f , - 0.317276f, 0.085037f, 0.944513f , - 0.332428f, 0.090987f, 0.938729f , - 0.250644f, 0.032247f, 0.967542f , - 0.327486f, -0.008117f, 0.944821f , - 0.320371f, 0.001901f, 0.947290f , - 0.578980f, -0.015364f, 0.815197f , - 0.445377f, -0.000477f, 0.895343f , - 0.454272f, 0.003579f, 0.890856f , - 0.586753f, 0.036808f, 0.808929f , - 0.310594f, 0.011039f, 0.950479f , - 0.374916f, 0.036755f, 0.926330f , - 0.360626f, 0.012456f, 0.932627f , - 0.336871f, 0.063469f, 0.939409f , - 0.347823f, -0.188567f, 0.918402f , - 0.439085f, -0.044587f, 0.897338f , - 0.492936f, -0.083722f, 0.866028f , - 0.436254f, -0.038363f, 0.899005f , - 0.391305f, -0.098260f, 0.915000f , - 0.315915f, -0.104584f, 0.943006f , - 0.368620f, -0.150825f, 0.917263f , - 0.813392f, 0.180609f, 0.552968f , - 0.779805f, 0.298801f, 0.550112f , - 0.664950f, 0.192404f, 0.721680f , - 0.781196f, 0.141007f, 0.608153f , - 0.855081f, 0.518494f, -0.000112f , - 0.827836f, 0.365393f, 0.425648f , - 0.753523f, 0.491009f, 0.437165f , - 0.874171f, 0.401523f, 0.273139f , - 0.780936f, 0.387647f, 0.489764f , - 0.778829f, 0.500409f, 0.378176f , - 0.763313f, 0.527370f, 0.373141f , - 0.723934f, 0.458076f, 0.515835f , - 0.611420f, 0.734562f, 0.294253f , - 0.747055f, 0.631472f, 0.207731f , - 0.334595f, 0.942362f, 0.000726f , - 0.414371f, 0.817364f, 0.400266f , - 0.609573f, -0.054409f, 0.790860f , - 0.779107f, -0.147302f, 0.609340f , - 0.485940f, 0.109904f, 0.867055f , - 0.892096f, 0.451844f, 0.001028f , - 0.969569f, -0.244817f, -0.000096f , - 0.858509f, -0.446266f, 0.252603f , - 0.541730f, -0.265072f, 0.797663f , - 0.666582f, -0.354407f, 0.655793f , - 0.596461f, -0.515459f, 0.615253f , - 0.487478f, -0.391156f, 0.780616f , - -0.114060f, -0.984146f, -0.135819f , - -0.107017f, -0.994256f, -0.001472f , - -0.324698f, -0.649271f, 0.687764f , - -0.340470f, -0.737847f, 0.582805f , - 0.338226f, 0.019873f, 0.940855f , - 0.611060f, 0.084252f, 0.787088f , - 0.435474f, 0.067538f, 0.897664f , - 0.989825f, -0.142292f, 0.000000f , - 0.845489f, -0.279379f, 0.455077f , - 0.518390f, -0.141805f, 0.843305f , - 0.622648f, -0.170788f, 0.763637f , - 0.707918f, -0.160442f, 0.687830f , - 0.617352f, -0.126068f, 0.776520f , - 0.471088f, -0.882086f, -0.000086f , - 0.594060f, -0.471096f, 0.652044f , - 0.285833f, -0.696493f, 0.658177f , - 0.703174f, -0.468448f, 0.534886f , - -0.309827f, -0.425364f, 0.850337f , - -0.033962f, -0.626731f, 0.778495f , - 0.309255f, -0.208058f, 0.927940f , - 0.522493f, -0.184979f, 0.832336f , - -0.064263f, -0.073639f, 0.995212f , - 0.129046f, -0.410739f, 0.902574f , - -0.029888f, -0.537266f, 0.842883f , - 0.030030f, -0.392841f, 0.919116f , - 0.104137f, -0.259907f, 0.960002f , - 0.068995f, -0.233960f, 0.969795f , - 0.044522f, -0.347390f, 0.936663f , - 0.146672f, -0.115175f, 0.982457f , - 0.172015f, -0.127613f, 0.976794f , - 0.231629f, -0.041900f, 0.971901f , - 0.283795f, 0.008964f, 0.958843f , - 0.316299f, -0.086702f, 0.944689f , - 0.303401f, -0.106724f, 0.946867f , - 0.263687f, -0.086487f, 0.960723f , - 0.293006f, -0.089824f, 0.951882f , - 0.330158f, -0.204663f, 0.921471f , - 0.516130f, -0.103303f, 0.850258f , - 0.391626f, -0.086716f, 0.916029f , - 0.498419f, -0.203208f, 0.842784f , - 0.569110f, -0.065686f, 0.819634f , - 0.496779f, 0.052635f, 0.866280f , - 0.206863f, -0.673544f, 0.709609f , - 0.411561f, -0.421173f, 0.808227f , - 0.019268f, -0.531369f, 0.846921f , - 0.132836f, -0.570473f, 0.810503f , - 0.153657f, -0.562254f, 0.812564f , - 0.043172f, -0.512284f, 0.857730f , - -0.073124f, -0.700121f, 0.710270f , - 0.005732f, -0.677557f, 0.735448f , - -0.019231f, -0.483423f, 0.875176f , - -0.016886f, -0.572401f, 0.819800f , - -0.085765f, -0.556714f, 0.826265f , - -0.139034f, -0.469758f, 0.871778f , - -0.206964f, -0.474599f, 0.855524f , - -0.190203f, -0.684043f, 0.704208f , - -0.322582f, -0.664643f, 0.673937f , - -0.283793f, -0.615134f, 0.735575f , - -0.187763f, -0.641249f, 0.744006f , - -0.418222f, -0.688050f, 0.593024f , - -0.221141f, -0.780192f, 0.585147f , - -0.344092f, -0.798716f, 0.493612f , - -0.345498f, -0.791868f, 0.503563f , - -0.219864f, -0.777967f, 0.588581f , - -0.282395f, -0.781330f, 0.556575f , - -0.283187f, -0.776995f, 0.562214f , - -0.385181f, -0.802547f, 0.455582f , - -0.375546f, -0.814477f, 0.442258f , - 0.389586f, -0.505925f, 0.769586f , - 0.246039f, -0.567186f, 0.785980f , - 0.145534f, -0.511562f, 0.846832f , - -0.013998f, -0.487601f, 0.872954f , - -0.084901f, -0.692067f, 0.716823f , - 0.119532f, -0.573965f, 0.810109f , - 0.120678f, -0.593851f, 0.795474f , - -0.078111f, -0.702100f, 0.707782f , - 0.083521f, -0.327621f, 0.941110f , - 0.261588f, -0.424679f, 0.866729f , - -0.140973f, -0.750036f, 0.646199f , - -0.015220f, -0.622561f, 0.782423f , - 0.054206f, -0.585438f, 0.808903f , - -0.095013f, -0.721491f, 0.685874f , - -0.117301f, -0.378938f, 0.917958f , - -0.092674f, -0.625015f, 0.775092f , - -0.145306f, -0.612891f, 0.776692f , - -0.011971f, -0.505763f, 0.862589f , - -0.153785f, -0.453620f, 0.877826f , - -0.173333f, -0.534200f, 0.827397f , - -0.188811f, -0.565724f, 0.802687f , - -0.346846f, -0.748443f, 0.565271f , - -0.431897f, -0.798246f, 0.419843f , - -0.362163f, -0.801516f, 0.475825f , - -0.450081f, -0.892988f, 0.000000f , - -0.445155f, -0.841113f, 0.307189f , - -0.252701f, -0.747962f, 0.613755f , - -0.329070f, -0.834246f, 0.442432f , - -0.350861f, -0.816229f, 0.458985f , - -0.273328f, -0.743622f, 0.610179f , - -0.183874f, -0.982950f, 0.000000f , - -0.329244f, -0.897897f, 0.292199f , - -0.295270f, -0.798650f, 0.524380f , - -0.243397f, -0.774843f, 0.583417f , - -0.296573f, -0.805534f, 0.512991f , - -0.332499f, -0.806914f, 0.488195f , - -0.203861f, -0.979000f, 0.000000f , - -0.173808f, -0.789067f, 0.589206f , - -0.064820f, -0.811083f, 0.581329f , - -0.044305f, -0.789681f, 0.611916f , - -0.025838f, -0.954926f, 0.295716f , - 0.008740f, -0.877226f, 0.479999f , - 0.186284f, -0.876079f, 0.444729f , - -0.205316f, -0.803788f, 0.558364f , - -0.203867f, -0.914675f, 0.349010f , - -0.372030f, -0.879243f, 0.297531f , - -0.396178f, -0.904780f, 0.156255f , - -0.484039f, -0.831364f, 0.273021f , - -0.506689f, -0.862129f, 0.000001f , - -0.186979f, -0.625345f, 0.757616f , - -0.226326f, -0.634732f, 0.738845f , - 0.055707f, -0.496072f, 0.866492f , - 0.051313f, -0.422759f, 0.904788f , - 0.285588f, -0.461762f, 0.839771f , - 0.378312f, -0.388529f, 0.840194f , - -0.386488f, -0.612103f, 0.689896f , - -0.280660f, -0.563441f, 0.777023f , - -0.136778f, -0.552494f, 0.822218f , - -0.098252f, -0.763635f, 0.638128f , - -0.089610f, -0.749822f, 0.655543f , - -0.081083f, -0.730786f, 0.677774f , - 0.220590f, -0.602284f, 0.767199f , - 0.263236f, -0.627249f, 0.732984f , - 0.507909f, -0.286025f, 0.812538f , - 0.410206f, -0.314173f, 0.856170f , - 0.255186f, -0.185350f, 0.948960f , - 0.183025f, -0.301761f, 0.935651f , - -0.043252f, -0.398601f, 0.916104f , - -0.051357f, -0.455918f, 0.888539f , - -0.042639f, -0.496934f, 0.866740f , - -0.030206f, -0.373009f, 0.927336f , - -0.057811f, -0.308591f, 0.949436f , - -0.000322f, -0.119945f, 0.992780f , - -0.188427f, -0.225261f, 0.955904f , - -0.080468f, -0.713145f, 0.696383f , - 0.681319f, -0.187926f, 0.707452f , - 0.692818f, -0.267121f, 0.669813f , - 0.803862f, -0.265940f, 0.532055f , - 0.922361f, -0.232089f, 0.308845f , - -0.221495f, -0.581407f, 0.782883f , - -0.256157f, -0.667679f, 0.698991f , - -0.290958f, -0.719590f, 0.630503f , - -0.324027f, -0.792025f, 0.517401f , - 0.227567f, -0.472533f, 0.851426f , - 0.064577f, -0.604983f, 0.793615f , - 0.065889f, -0.661472f, 0.747070f , - -0.246156f, -0.876076f, 0.414606f , - -0.233729f, -0.933053f, 0.273464f , - -0.699375f, -0.714748f, -0.003024f , - -0.349125f, -0.823582f, 0.447017f , - -0.351364f, -0.828046f, 0.436901f , - -0.274099f, -0.817674f, 0.506240f , - 0.890215f, -0.374868f, 0.258825f , - 0.902495f, -0.418571f, 0.101495f , - 0.793448f, 0.578635f, 0.188736f , - 0.811736f, 0.580860f, 0.060713f , - 0.533371f, 0.120391f, 0.837270f , - 0.649648f, 0.333053f, 0.683398f , - 0.496533f, 0.241958f, 0.833614f , - 0.301438f, -0.119910f, 0.945916f , - 0.505032f, -0.105068f, 0.856682f , - 0.463775f, -0.103488f, 0.879888f , - 0.431338f, -0.139383f, 0.891358f , - 0.391215f, -0.166683f, 0.905079f , - 0.357044f, 0.013283f, 0.933993f , - 0.334502f, 0.008186f, 0.942359f , - 0.307695f, 0.029972f, 0.951013f , - 0.272965f, 0.026098f, 0.961670f , - 0.875859f, -0.002943f, 0.482558f , - 0.639317f, -0.074376f, 0.765338f , - 0.988371f, 0.039669f, 0.146795f , - 0.941162f, 0.175073f, 0.289072f , - 0.863580f, 0.498821f, -0.073535f , - 0.897294f, 0.436363f, -0.066720f , - 0.893573f, 0.440228f, -0.087898f , - 0.888135f, 0.456576f, -0.052491f , - 0.289131f, -0.229756f, 0.929309f , - 0.297312f, -0.237027f, 0.924891f , - 0.275175f, -0.252805f, 0.927560f , - 0.282409f, -0.252501f, 0.925467f , - 0.229054f, -0.054220f, 0.971902f , - 0.240405f, -0.062309f, 0.968671f , - 0.318971f, 0.134201f, 0.938215f , - 0.252021f, 0.101780f, 0.962355f , - 0.360235f, 0.135067f, 0.923032f , - 0.395915f, 0.103829f, 0.912399f , - 0.321978f, 0.102001f, 0.941236f , - 0.359297f, -0.017110f, 0.933066f , - -0.015113f, -0.348115f, 0.937330f , - -0.104510f, -0.304848f, 0.946649f , - -0.133104f, -0.341251f, 0.930500f , - -0.206704f, -0.401573f, 0.892196f , - -0.229842f, -0.434153f, 0.871025f , - -0.155867f, -0.410942f, 0.898238f , - -0.227989f, -0.415111f, 0.880741f , - 0.069640f, 0.996889f, 0.036915f , - 0.425151f, 0.426403f, 0.798390f , - 0.331502f, 0.089023f, 0.939245f , - 0.283816f, 0.032583f, 0.958325f , - 0.689089f, 0.085709f, 0.719591f , - 0.664419f, 0.140567f, 0.734022f , - 0.524948f, -0.492611f, 0.694092f , - 0.624541f, -0.336532f, 0.704766f , - 0.607575f, -0.759129f, 0.233614f , - 0.849613f, -0.463609f, 0.251443f , - 0.944746f, 0.085107f, 0.316564f , - 0.943619f, 0.063083f, 0.324968f , - 0.909349f, 0.213405f, 0.357131f , - 0.874955f, 0.301617f, 0.378788f , - 0.804670f, 0.386216f, 0.450936f , - 0.769025f, 0.418853f, 0.482869f , - 0.768014f, 0.380851f, 0.514886f , - 0.776462f, 0.302009f, 0.553080f , - 0.763777f, 0.326097f, 0.557051f , - 0.838577f, 0.384598f, 0.385840f , - 0.829533f, 0.400847f, 0.388840f , - 0.843059f, 0.458232f, 0.281559f , - 0.829274f, 0.491212f, 0.266488f , - 0.883780f, 0.461262f, 0.078551f , - 0.861895f, 0.506228f, 0.029496f , - 0.936592f, 0.350146f, -0.013869f , - 0.912344f, 0.409425f, -0.000045f , - 0.815921f, 0.577995f, -0.013952f , - 0.821051f, 0.570383f, -0.023219f , - 0.802602f, 0.595132f, -0.040586f , - 0.813776f, 0.581160f, -0.004599f , - 0.827178f, 0.475850f, 0.298903f , - 0.804113f, 0.487117f, 0.340764f , - 0.769414f, 0.503126f, 0.393531f , - 0.672594f, 0.715506f, 0.188860f , - 0.695280f, 0.710705f, 0.107163f , - 0.619279f, 0.414939f, 0.666573f , - 0.684024f, 0.421448f, 0.595393f , - 0.732815f, 0.426106f, 0.530487f , - 0.728250f, 0.367379f, 0.578520f , - 0.732376f, 0.345086f, 0.586976f , - 0.729600f, 0.330651f, 0.598626f , - 0.743860f, 0.302912f, 0.595749f , - 0.450420f, 0.890732f, -0.060984f , - 0.512743f, 0.857811f, 0.035430f , - 0.491046f, 0.869009f, 0.060799f , - 0.815514f, 0.526760f, -0.239709f , - 0.272520f, -0.027793f, 0.961749f , - 0.453511f, -0.099711f, 0.885656f , - 0.118314f, 0.412306f, 0.903330f , - 0.152323f, 0.041696f, 0.987451f , - 0.155654f, -0.075313f, 0.984936f , - 0.086157f, -0.100537f, 0.991196f , - 0.081863f, -0.070705f, 0.994132f , - 0.336443f, 0.784565f, -0.520830f , - 0.237657f, 0.796420f, -0.556088f , - 0.054712f, 0.792662f, -0.607202f , - 0.852485f, -0.191915f, 0.486249f , - 0.949897f, -0.123471f, 0.287141f , - 0.995234f, -0.072875f, 0.064793f , - 0.410934f, -0.573126f, 0.708985f , - -0.165946f, 0.728819f, 0.664293f , - 0.037648f, 0.181013f, 0.982760f , - 0.113065f, -0.003704f, 0.993581f , - -0.286869f, 0.957852f, -0.015046f , - 0.017682f, 0.546350f, -0.837370f , - -0.092841f, 0.674476f, -0.732436f , - 0.764782f, -0.175369f, -0.619963f , - -0.241132f, -0.780743f, 0.576451f , - -0.233042f, -0.880966f, 0.411813f , - -0.244628f, -0.903644f, 0.351546f , - -0.586883f, -0.273424f, 0.762108f , - -0.583861f, -0.299651f, 0.754530f , - -0.952431f, 0.158967f, 0.260008f , - -0.936943f, 0.168187f, 0.306352f , - -0.973178f, 0.207203f, 0.099956f , - -0.965453f, 0.244844f, 0.089171f , - -0.963105f, 0.224568f, 0.148314f , - -0.957004f, 0.256816f, 0.134863f , - -0.862017f, -0.069835f, 0.502046f , - -0.794331f, 0.129162f, 0.593595f , - -0.328618f, -0.875862f, 0.353379f , - -0.357793f, -0.851635f, 0.383016f , - -0.366105f, -0.817366f, 0.444837f , - -0.496662f, -0.725524f, 0.476383f , - -0.534392f, -0.684294f, 0.496153f , - 0.595394f, -0.727752f, -0.340415f , - 0.598182f, -0.706251f, -0.378666f , - 0.248044f, 0.932157f, 0.263737f , - 0.163967f, 0.954650f, 0.248510f , - -0.061790f, 0.951639f, 0.300940f , - -0.362133f, 0.880346f, 0.306351f , - -0.463023f, 0.751441f, 0.470049f , - -0.265114f, 0.964137f, -0.012422f , - -0.127895f, 0.991750f, -0.008626f , - -0.158320f, 0.987334f, -0.010357f , - -0.501222f, 0.865279f, -0.008280f , - -0.850571f, 0.525810f, -0.007269f , - -0.953662f, -0.300832f, -0.005346f , - 0.192092f, 0.688297f, 0.699534f , - 0.195607f, 0.684080f, 0.702689f , - 0.174067f, 0.694529f, 0.698090f , - 0.162587f, 0.708001f, 0.687240f , - 0.149187f, 0.719922f, 0.677832f , - 0.090613f, 0.731940f, 0.675317f , - 0.054031f, 0.739205f, 0.671310f , - 0.031022f, 0.747511f, 0.663525f , - -0.049953f, 0.746237f, 0.663803f , - -0.124248f, 0.723866f, 0.678661f , - -0.184753f, 0.693489f, 0.696376f , - -0.267637f, 0.654428f, 0.707173f , - -0.308142f, 0.656201f, 0.688802f , - -0.342955f, 0.667883f, 0.660541f , - -0.453502f, 0.629436f, 0.630988f , - -0.500461f, 0.574778f, 0.647433f , - -0.502872f, 0.546814f, 0.669414f , - -0.475484f, 0.539026f, 0.695246f , - -0.457204f, 0.509227f, 0.729145f , - -0.239137f, 0.484947f, 0.841213f , - -0.173081f, 0.472678f, 0.864071f , - -0.126477f, 0.454996f, 0.881466f , - -0.034419f, 0.429871f, 0.902234f , - 0.000399f, 0.395690f, 0.918384f , - -0.008741f, 0.343810f, 0.938999f , - -0.061640f, 0.274061f, 0.959735f , - -0.085513f, 0.219972f, 0.971751f , - -0.115212f, 0.091598f, 0.989109f , - 0.093052f, 0.359436f, 0.928519f , - -0.044644f, 0.264265f, 0.963416f , - -0.168155f, -0.058155f, 0.984044f , - -0.336780f, -0.046975f, 0.940411f , - -0.354688f, -0.041600f, 0.934059f , - -0.204536f, -0.075288f, 0.975959f , - 0.047467f, -0.125580f, 0.990947f , - 0.029782f, 0.381841f, 0.923748f , - -0.008524f, 0.376684f, 0.926303f , - 0.094067f, 0.110621f, 0.989401f , - 0.115199f, 0.076623f, 0.990383f , - 0.081630f, 0.163415f, 0.983175f , - 0.106994f, 0.305962f, 0.946012f , - 0.031977f, -0.436292f, 0.899237f , - 0.004636f, -0.433804f, 0.900995f , - -0.131685f, -0.690566f, 0.711180f , - -0.053918f, -0.647779f, 0.759918f , - -0.078284f, -0.851431f, 0.518591f , - -0.034696f, -0.642549f, 0.765459f , - -0.068021f, -0.674447f, 0.735183f , - -0.258184f, -0.617667f, 0.742851f , - 0.611546f, -0.007626f, 0.791172f , - 0.586153f, -0.013836f, 0.810082f , - 0.738485f, -0.391540f, 0.548941f , - 0.704651f, -0.438561f, 0.557791f , - 0.559901f, -0.547876f, 0.621565f , - 0.438154f, -0.295109f, 0.849077f , - 0.368479f, -0.197407f, 0.908435f , - 0.281589f, -0.114702f, 0.952655f , - 0.068286f, 0.015273f, 0.997549f , - -0.201717f, 0.002484f, 0.979441f , - -0.260183f, 0.055292f, 0.963975f , - 0.262521f, 0.101266f, 0.959598f , - 0.328947f, 0.130187f, 0.935332f , - 0.359270f, 0.138001f, 0.922974f , - 0.289414f, 0.204044f, 0.935203f , - 0.234066f, 0.251078f, 0.939241f , - 0.695465f, -0.672130f, 0.254107f , - 0.670924f, -0.698968f, 0.247599f , - 0.588098f, -0.773830f, 0.235217f , - 0.556558f, -0.801605f, 0.218338f , - 0.523778f, -0.829844f, 0.192395f , - 0.525515f, -0.845151f, 0.097741f , - -0.038811f, -0.982146f, -0.184073f , - -0.550676f, -0.827899f, 0.106488f , - -0.192219f, -0.873652f, 0.446972f , - -0.103496f, -0.885494f, 0.452977f , - -0.070518f, -0.889607f, 0.451251f , - -0.041927f, -0.882112f, 0.469170f , - -0.022254f, -0.879499f, 0.475381f , - 0.000289f, -0.878328f, 0.478058f , - 0.086201f, -0.883948f, 0.459572f , - -0.122438f, -0.978437f, 0.166340f , - -0.605567f, -0.764525f, 0.220884f , - -0.394562f, -0.740190f, 0.544463f , - -0.488660f, -0.609226f, 0.624545f , - -0.844586f, -0.427630f, 0.322192f , - -0.903156f, -0.334663f, 0.268904f , - -0.689988f, 0.061963f, 0.721164f , - -0.228587f, -0.973516f, 0.003854f , - -0.358181f, -0.933176f, 0.029805f , - -0.353356f, -0.934677f, 0.038957f , - 0.239309f, -0.683023f, 0.690080f , - 0.274542f, -0.625567f, 0.730269f , - 0.381483f, -0.372029f, 0.846206f , - 0.291082f, -0.252465f, 0.922785f , - 0.092547f, 0.075090f, 0.992873f , - 0.072141f, 0.103437f, 0.992016f , - -0.411151f, 0.280070f, 0.867477f , - -0.387384f, 0.349997f, 0.852898f , - -0.507980f, 0.320164f, 0.799657f , - -0.565162f, 0.277653f, 0.776853f , - -0.670586f, 0.022476f, 0.741491f , - -0.717431f, -0.050862f, 0.694770f , - -0.762564f, -0.017246f, 0.646683f , - 0.216644f, 0.006026f, 0.976232f , - 0.611785f, -0.243568f, 0.752592f , - 0.295647f, 0.045129f, 0.954231f , - 0.128614f, 0.124601f, 0.983836f , - -0.087581f, 0.172173f, 0.981166f , - -0.113622f, 0.158778f, 0.980755f , - -0.125578f, 0.167504f, 0.977841f , - 0.028361f, 0.133524f, 0.990640f , - 0.000080f, 0.237351f, 0.971424f , - -0.030197f, 0.374153f, 0.926875f , - -0.037659f, 0.356133f, 0.933676f , - -0.066592f, 0.323642f, 0.943833f , - 0.020388f, -0.120976f, 0.992446f , - 0.015979f, -0.229654f, 0.973141f , - -0.003617f, -0.295841f, 0.955230f , - -0.033060f, -0.278093f, 0.959985f , - -0.607664f, -0.114367f, 0.785916f , - -0.580099f, -0.017468f, 0.814359f , - -0.549181f, 0.073494f, 0.832465f , - -0.501982f, 0.047308f, 0.863583f , - -0.391578f, 0.056103f, 0.918433f , - -0.187037f, 0.105146f, 0.976709f , - -0.137364f, 0.139269f, 0.980681f , - -0.103952f, 0.169830f, 0.979975f , - -0.055812f, 0.167407f, 0.984307f , - -0.046486f, 0.153283f, 0.987088f , - -0.048983f, 0.136341f, 0.989450f , - -0.042635f, -0.454838f, 0.889553f , - -0.004380f, -0.422645f, 0.906285f , - -0.007086f, -0.376967f, 0.926200f , - -0.060983f, -0.283522f, 0.957025f , - -0.083067f, -0.224515f, 0.970924f , - -0.086938f, -0.174406f, 0.980828f , - -0.100758f, -0.131461f, 0.986188f , - -0.202418f, -0.899111f, 0.388106f , - -0.154807f, 0.013338f, 0.987855f , - -0.112567f, -0.017692f, 0.993487f , - -0.137158f, 0.157739f, 0.977909f , - -0.502260f, 0.245654f, 0.829089f , - -0.934489f, 0.189131f, 0.301595f , - -0.878102f, -0.089137f, -0.470097f , - -0.075248f, -0.358990f, -0.930303f , - 0.793820f, -0.599052f, -0.104814f , - 0.765570f, -0.601312f, -0.228749f , - 0.719807f, -0.616793f, -0.318504f , - 0.740919f, -0.267351f, 0.616086f , - 0.568645f, -0.209970f, 0.795333f , - 0.541591f, -0.197922f, 0.817010f , - -0.678030f, 0.090867f, 0.729396f , - -0.800727f, 0.034551f, 0.598032f , - -0.969795f, -0.072215f, 0.232987f , - -0.991963f, -0.117711f, 0.046416f , - -0.978397f, -0.157231f, -0.134229f , - -0.835921f, -0.220931f, -0.502420f , - -0.709430f, -0.247553f, -0.659869f , - -0.534105f, -0.275524f, -0.799261f , - -0.069991f, -0.288875f, -0.954805f , - 0.116279f, -0.256608f, -0.959495f , - 0.240419f, -0.199655f, -0.949914f , - 0.463760f, -0.044085f, -0.884863f , - 0.614300f, 0.029753f, -0.788511f , - -0.330429f, -0.924512f, 0.189987f , - -0.433147f, -0.892103f, 0.128590f , - -0.336499f, -0.941631f, 0.009941f , - -0.376480f, -0.922715f, -0.082819f , - -0.220206f, -0.961220f, -0.166030f , - -0.183694f, -0.936103f, -0.299946f , - -0.106655f, -0.959128f, -0.262104f , - -0.160224f, -0.947792f, -0.275716f , - 0.506452f, -0.671087f, 0.541431f , - -0.797775f, -0.353670f, -0.488337f , - -0.912710f, -0.234892f, -0.334343f , - -0.975663f, -0.168229f, 0.140644f , - -0.995535f, -0.083905f, 0.043253f , - -0.998780f, -0.014170f, -0.047313f , - -0.986275f, 0.106605f, 0.126085f , - -0.919305f, 0.219225f, 0.326832f , - -0.227336f, -0.632610f, -0.740354f , - -0.306922f, -0.807086f, -0.504392f , - -0.342975f, -0.881241f, -0.325242f , - -0.243148f, -0.922260f, -0.300526f , - -0.118938f, -0.961901f, -0.246170f , - -0.716574f, 0.310004f, 0.624836f , - -0.638736f, 0.293512f, 0.711243f , - -0.577843f, 0.256191f, 0.774896f , - -0.617497f, 0.245471f, 0.747290f , - 0.924701f, -0.245363f, 0.291075f , - 0.848336f, -0.174941f, 0.499722f , - 0.716485f, -0.102685f, 0.690003f , - 0.717185f, -0.071592f, 0.693195f , - 0.728077f, -0.005514f, 0.685473f , - 0.856777f, 0.058381f, -0.512372f , - 0.916836f, 0.092555f, -0.388389f , - 0.947575f, 0.134194f, -0.289988f , - 0.352035f, -0.935853f, 0.015820f , - 0.461218f, -0.876090f, 0.140514f , - 0.543705f, -0.835563f, 0.078862f , - 0.629361f, -0.776677f, 0.026047f , - 0.872129f, 0.485861f, -0.057698f , - 0.926462f, 0.375650f, -0.023584f , - 0.979384f, 0.195866f, 0.049438f , - 0.931127f, 0.234529f, 0.279282f , - 0.852337f, 0.295021f, 0.431838f , - 0.732682f, 0.492856f, 0.469329f , - 0.730920f, 0.477295f, 0.487796f , - 0.676173f, 0.440188f, 0.590783f , - 0.148841f, 0.426802f, 0.892012f , - 0.133283f, 0.428190f, 0.893806f , - 0.080216f, 0.411694f, 0.907785f , - -0.379966f, -0.122592f, 0.916841f , - -0.343433f, -0.075763f, 0.936116f , - -0.366845f, 0.003781f, 0.930274f , - -0.082683f, 0.298748f, 0.950744f , - 0.547875f, -0.573426f, 0.609110f , - 0.485210f, -0.504459f, 0.714207f , - 0.381302f, -0.313393f, 0.869709f , - 0.303835f, -0.187246f, 0.934143f , - 0.187571f, -0.055909f, 0.980659f , - -0.530201f, 0.175660f, 0.829476f , - -0.131349f, 0.176004f, 0.975587f , - -0.239026f, 0.229208f, 0.943573f , - -0.278993f, 0.229226f, 0.932533f , - -0.287437f, 0.286647f, 0.913900f , - -0.348776f, 0.320025f, 0.880874f , - -0.728188f, 0.056577f, 0.683038f , - -0.773357f, -0.002446f, 0.633967f , - -0.787969f, -0.051124f, 0.613589f , - -0.910312f, 0.065857f, 0.408651f , - -0.645300f, 0.187087f, 0.740666f , - -0.628907f, 0.081027f, 0.773247f , - -0.074360f, -0.013679f, 0.997138f , - -0.055696f, -0.025505f, 0.998122f , - -0.839695f, 0.540623f, 0.051371f , - -0.750766f, 0.658817f, 0.048065f , - -0.715274f, 0.661707f, 0.224783f , - -0.172514f, 0.374544f, 0.911019f , - -0.303866f, 0.410695f, 0.859648f , - -0.461096f, 0.457268f, 0.760458f , - -0.503915f, 0.513432f, 0.694592f , - -0.566705f, 0.488622f, 0.663396f , - 0.787323f, -0.106437f, 0.607284f , - 0.785420f, -0.020512f, 0.618623f , - 0.958244f, -0.054652f, 0.280680f , - 0.703688f, 0.043200f, 0.709195f , - 0.715668f, 0.035688f, 0.697529f , - 0.732515f, 0.111278f, 0.671595f , - 0.959028f, -0.244261f, -0.143534f , - 0.897717f, -0.415923f, -0.145303f , - 0.926850f, -0.346636f, -0.144197f , - 0.992283f, -0.024872f, -0.121474f , - 0.694005f, -0.713397f, 0.097069f , - 0.744940f, -0.660544f, 0.093520f , - 0.810967f, -0.582762f, 0.052168f , - 0.766311f, -0.624870f, -0.149350f , - 0.660560f, -0.656243f, -0.364699f , - 0.079321f, -0.857194f, -0.508848f , - 0.166800f, -0.734455f, -0.657840f , - 0.204786f, -0.647781f, -0.733786f , - -0.911105f, -0.341468f, -0.230840f , - -0.831661f, -0.550502f, -0.072723f , - -0.823516f, -0.528197f, -0.206951f , - -0.742841f, -0.588095f, -0.319893f , - 0.160818f, -0.525177f, -0.835659f , - 0.106463f, -0.458298f, -0.882399f , - 0.082360f, -0.358865f, -0.929749f , - 0.196204f, -0.149201f, -0.969145f , - 0.273983f, -0.164798f, -0.947510f , - 0.368619f, -0.348374f, -0.861833f , - 0.384764f, -0.276247f, -0.880707f , - 0.579563f, -0.067902f, -0.812094f , - -0.628243f, -0.276458f, -0.727243f , - -0.697670f, 0.102707f, -0.709019f , - -0.528321f, 0.127147f, -0.839470f , - -0.535309f, 0.225935f, -0.813878f , - -0.599249f, 0.144470f, -0.787420f , - -0.997833f, -0.030507f, 0.058302f , - -0.999845f, 0.017274f, -0.003537f , - -0.972010f, 0.029348f, 0.233099f , - -0.885263f, 0.044559f, 0.462952f , - -0.409400f, -0.000020f, 0.912355f , - -0.554796f, 0.024372f, 0.831630f , - -0.477019f, 0.054630f, 0.877193f , - -0.419474f, 0.056760f, 0.905991f , - -0.917318f, -0.153096f, -0.367544f , - -0.833732f, -0.115095f, -0.540040f , - -0.713053f, -0.070336f, -0.697573f , - -0.788095f, -0.194645f, 0.583968f , - -0.090729f, 0.281286f, 0.955325f , - 0.054775f, 0.201059f, 0.978047f , - 0.589646f, 0.271244f, 0.760753f , - 0.449121f, -0.673390f, 0.587227f , - -0.395025f, -0.097517f, 0.913480f , - -0.202631f, -0.094683f, 0.974667f , - -0.073039f, -0.035003f, 0.996715f , - 0.429904f, 0.084124f, 0.898947f , - 0.255589f, 0.057938f, 0.965048f , - -0.003408f, 0.005498f, 0.999979f , - 0.749914f, 0.521670f, 0.406803f , - 0.798241f, 0.540361f, 0.266121f , - 0.817860f, 0.565150f, 0.108214f , - 0.876648f, 0.454570f, -0.157655f , - 0.878158f, 0.470728f, -0.085166f , - 0.835110f, 0.543295f, -0.086149f , - 0.809571f, 0.582419f, -0.073370f , - 0.807073f, 0.580953f, -0.105483f , - 0.802098f, 0.584875f, -0.120668f , - 0.740726f, 0.476454f, -0.473620f , - 0.738537f, 0.504805f, -0.446917f , - 0.117995f, 0.207226f, -0.971151f , - -0.210919f, -0.046043f, -0.976419f , - -0.630594f, -0.422025f, 0.651342f , - -0.157580f, -0.130617f, 0.978830f , - 0.104974f, -0.989447f, 0.099880f , - 0.008302f, -0.996013f, 0.088819f , - -0.114349f, -0.980526f, 0.159665f , - -0.256316f, -0.961385f, 0.100203f , - -0.561637f, -0.820355f, 0.107622f , - -0.497185f, -0.866589f, 0.042795f , - -0.566555f, -0.822727f, -0.046211f , - -0.355739f, -0.924630f, -0.136050f , - -0.251031f, -0.953935f, -0.164289f , - 0.483663f, -0.406786f, -0.774981f , - 0.102789f, -0.993458f, 0.049759f , - 0.073203f, -0.993820f, 0.083440f , - 0.067029f, -0.992007f, 0.106912f , - -0.025168f, -0.999671f, -0.004862f , - -0.132680f, -0.986722f, -0.093680f , - -0.016086f, -0.992645f, -0.119989f , - 0.181310f, -0.947677f, -0.262746f , - 0.125747f, -0.983520f, -0.129908f , - 0.132322f, -0.988176f, -0.077450f , - 0.358058f, -0.849885f, 0.386640f , - 0.404309f, -0.780151f, 0.477386f , - -0.378896f, 0.857644f, 0.347684f , - -0.347470f, 0.707147f, 0.615798f , - 0.023821f, 0.654644f, 0.755562f , - -0.008425f, 0.608088f, 0.793825f , - 0.106311f, -0.314760f, 0.943199f , - 0.141926f, -0.326622f, 0.934438f , - 0.023973f, -0.609925f, 0.792096f , - 0.180110f, -0.517214f, 0.836690f , - 0.275712f, -0.382987f, 0.881648f , - 0.277725f, -0.353224f, 0.893365f , - 0.387527f, -0.243138f, 0.889217f , - 0.450515f, -0.161053f, 0.878122f , - 0.536897f, -0.134071f, 0.832927f , - 0.587771f, -0.181106f, 0.788496f , - 0.595744f, -0.451145f, 0.664498f , - 0.578248f, -0.595638f, 0.557534f , - 0.565856f, -0.679394f, 0.467152f , - -0.124401f, 0.234974f, 0.964008f , - -0.294681f, 0.582132f, 0.757816f , - -0.143164f, 0.662369f, 0.735372f , - -0.105905f, 0.619846f, 0.777544f , - -0.387511f, 0.820012f, 0.421207f , - -0.030907f, 0.898889f, 0.437086f , - 0.039178f, 0.852026f, 0.522032f , - -0.363400f, 0.922833f, 0.127746f , - 0.054611f, 0.986064f, 0.157145f , - 0.213771f, 0.958817f, 0.187008f , - 0.199538f, 0.928620f, 0.312808f , - 0.164495f, 0.911525f, 0.376912f , - 0.671255f, 0.211696f, 0.710353f , - 0.186652f, -0.191626f, 0.963556f , - -0.265306f, -0.508433f, 0.819212f , - 0.699759f, 0.464476f, 0.542770f , - 0.603648f, 0.440571f, 0.664459f , - -0.161240f, -0.001618f, 0.986914f , - 0.755711f, 0.381561f, 0.532271f , - 0.746355f, 0.443251f, 0.496470f , - -0.586669f, -0.317667f, 0.744921f , - -0.589544f, -0.411760f, 0.694904f , - -0.721368f, -0.188269f, 0.666470f , - 0.482873f, 0.498621f, 0.719868f , - 0.824623f, 0.138487f, 0.548470f , - 0.835213f, 0.251782f, 0.488901f , - 0.686130f, 0.338461f, 0.643949f , - 0.836932f, 0.372085f, 0.401370f , - 0.880973f, 0.351230f, 0.317055f , - -0.616589f, 0.225563f, 0.754281f , - 0.071391f, 0.299510f, 0.951419f , - -0.780327f, 0.426860f, 0.457034f , - -0.769655f, 0.350221f, 0.533831f , - 0.928472f, 0.350944f, 0.121566f , - 0.926760f, 0.375653f, 0.000724f , - -0.029570f, 0.999321f, 0.021991f , - -0.614749f, 0.647375f, 0.450544f , - -0.871740f, 0.484725f, 0.071496f , - -0.150856f, 0.988555f, -0.001349f , - -0.109724f, 0.988153f, 0.107306f , - -0.125602f, 0.967429f, 0.219785f , - 0.724750f, -0.105672f, -0.680861f , - -0.213999f, -0.879296f, -0.425491f , - 0.657382f, 0.013726f, 0.753432f , - 0.496932f, -0.611121f, 0.616109f , - 0.358874f, -0.544664f, 0.757991f , - 0.843820f, 0.010043f, 0.536532f , - 0.784877f, -0.069320f, 0.615762f , - 0.882623f, 0.462925f, -0.081710f , - 0.889349f, 0.456897f, -0.017435f , - 0.883803f, 0.432486f, -0.178458f , - 0.719592f, 0.126823f, -0.682717f , - 0.881250f, 0.064012f, -0.468296f , - 0.862559f, 0.502517f, 0.058888f , - 0.843218f, 0.522244f, 0.127455f , - 0.840331f, 0.509709f, 0.184502f , - 0.680422f, 0.620224f, -0.390319f , - 0.076162f, 0.828458f, -0.554848f , - 0.835213f, 0.251783f, -0.488901f , - -0.478559f, 0.298381f, -0.825802f , - 0.027750f, 0.507699f, -0.861087f , - 0.482871f, 0.498621f, -0.719869f , - -0.608691f, -0.317795f, -0.726981f , - -0.721368f, -0.188269f, -0.666470f , - -0.589542f, -0.411759f, -0.694906f , - 0.186650f, -0.191628f, -0.963556f , - 0.746356f, 0.443254f, -0.496467f , - 0.000117f, 0.276275f, -0.961079f , - -0.124400f, 0.234973f, -0.964009f , - 0.577164f, -0.237290f, -0.781393f , - 0.587771f, -0.181105f, -0.788496f , - 0.275712f, -0.382987f, -0.881648f , - 0.141925f, -0.326623f, -0.934438f , - -0.099316f, 0.645494f, -0.757280f , - -0.008426f, 0.608088f, -0.793825f , - 0.067756f, 0.949891f, -0.305149f , - -0.011651f, 0.946384f, -0.322834f , - -0.378895f, 0.857644f, -0.347685f , - 0.489432f, -0.776793f, -0.396293f , - 0.404309f, -0.780152f, -0.477386f , - 0.068464f, -0.677799f, 0.732052f , - 0.507750f, -0.384322f, 0.771030f , - -0.037912f, -0.998951f, 0.025696f , - -0.251030f, -0.953936f, 0.164289f , - 0.822902f, 0.529382f, 0.206366f , - 0.794560f, 0.570524f, 0.207792f , - 0.817860f, 0.565150f, -0.108215f , - 0.748916f, -0.212354f, -0.627719f , - 0.575124f, -0.652131f, -0.493920f , - 0.157829f, -0.014074f, -0.987366f , - 0.248954f, -0.316256f, -0.915426f , - 0.228240f, -0.753089f, -0.617061f , - 0.735823f, 0.467395f, -0.490007f , - 0.646392f, 0.433663f, -0.627785f , - 0.374247f, 0.125919f, -0.918740f , - 0.201109f, 0.134381f, -0.970308f , - 0.054778f, 0.201058f, -0.978047f , - 0.042955f, 0.352045f, -0.934997f , - -0.090730f, 0.281286f, -0.955325f , - -0.483092f, 0.018305f, -0.875378f , - -0.637505f, -0.095550f, -0.764499f , - -0.788095f, -0.194646f, -0.583968f , - -0.822986f, -0.428385f, 0.373068f , - -0.724852f, -0.430191f, 0.538075f , - -0.747620f, -0.182589f, 0.638534f , - -0.713053f, -0.070336f, 0.697573f , - -0.983548f, -0.162419f, -0.079077f , - -0.924703f, -0.157467f, -0.346596f , - -0.909077f, -0.309923f, -0.278435f , - -0.207843f, 0.016420f, -0.978024f , - -0.419475f, 0.056761f, -0.905990f , - -0.895502f, 0.037388f, -0.443485f , - -0.885263f, 0.044559f, -0.462952f , - -0.964334f, 0.036428f, -0.262170f , - -0.879110f, 0.019059f, -0.476238f , - -0.874182f, -0.018771f, -0.485235f , - -0.865321f, -0.061613f, -0.497417f , - -0.892311f, 0.033003f, 0.450214f , - -0.771594f, 0.082158f, 0.630788f , - -0.599249f, 0.144470f, 0.787419f , - -0.897842f, -0.077894f, 0.433373f , - -0.866291f, -0.064027f, 0.495420f , - -0.059330f, 0.190727f, 0.979849f , - 0.029183f, 0.157999f, 0.987008f , - 0.364293f, 0.041841f, 0.930344f , - 0.579563f, -0.067903f, 0.812094f , - -0.450466f, -0.543604f, 0.708220f , - -0.464863f, -0.401233f, 0.789249f , - -0.289215f, -0.382786f, 0.877399f , - 0.082361f, -0.358863f, 0.929749f , - -0.759781f, -0.300641f, 0.576496f , - -0.326869f, -0.585714f, 0.741684f , - -0.322748f, -0.499611f, 0.803880f , - -0.063146f, -0.583144f, 0.809911f , - 0.204785f, -0.647781f, 0.733786f , - 0.582562f, -0.768721f, 0.263989f , - 0.660560f, -0.656244f, 0.364698f , - 0.802192f, -0.397878f, 0.445176f , - 0.911745f, -0.080811f, 0.402728f , - 0.968197f, -0.044095f, 0.246272f , - 0.992283f, -0.024872f, 0.121475f , - 0.842458f, -0.191240f, 0.503678f , - 0.844441f, -0.256210f, 0.470400f , - 0.958451f, -0.195363f, -0.207856f , - 0.983059f, -0.004373f, -0.183239f , - 0.923440f, 0.047566f, -0.380783f , - 0.732515f, 0.111277f, -0.671595f , - 0.724121f, -0.121117f, -0.678955f , - 0.061794f, 0.098248f, -0.993242f , - -0.112079f, 0.068255f, -0.991352f , - -0.233012f, 0.022868f, -0.972205f , - 0.977064f, -0.181498f, 0.111373f , - 0.889212f, -0.377173f, 0.258926f , - 0.757963f, -0.432398f, 0.488389f , - 0.911420f, 0.120102f, -0.393560f , - 0.779058f, 0.085360f, -0.621114f , - 0.677956f, 0.019450f, -0.734845f , - 0.513200f, -0.038397f, -0.857410f , - -0.715274f, 0.661706f, -0.224783f , - -0.055695f, -0.025506f, -0.998122f , - -0.435453f, -0.011173f, -0.900142f , - -0.510789f, 0.032025f, -0.859110f , - -0.628905f, 0.081025f, -0.773248f , - -0.837244f, 0.419963f, -0.350219f , - -0.879090f, 0.279052f, -0.386434f , - -0.911622f, 0.128089f, -0.390561f , - -0.848906f, 0.241982f, -0.469897f , - -0.886783f, 0.182141f, -0.424782f , - -0.856274f, 0.148382f, -0.494750f , - -0.787969f, -0.051125f, -0.613589f , - -0.247949f, 0.309521f, -0.917997f , - -0.348776f, 0.320026f, -0.880874f , - -0.528315f, 0.268494f, -0.805477f , - -0.578815f, 0.255722f, -0.774325f , - -0.530200f, 0.175660f, -0.829477f , - 0.305681f, -0.161076f, -0.938410f , - 0.165676f, 0.011363f, -0.986115f , - 0.180097f, -0.023683f, -0.983364f , - 0.187571f, -0.055910f, -0.980659f , - 0.724903f, -0.433809f, -0.535094f , - 0.609449f, -0.380137f, -0.695750f , - 0.547429f, -0.367768f, -0.751710f , - 0.487664f, -0.462819f, -0.740259f , - 0.485210f, -0.504459f, -0.714207f , - 0.080216f, 0.411694f, -0.907785f , - 0.676172f, 0.440187f, -0.590784f , - 0.871805f, 0.428307f, -0.237718f , - 0.852337f, 0.295021f, -0.431838f , - 0.879410f, 0.355996f, 0.316076f , - 0.947576f, 0.134194f, 0.289987f , - 0.877830f, -0.046013f, -0.476758f , - 0.728076f, -0.005514f, -0.685474f , - -0.031164f, -0.905306f, 0.423615f , - -0.118938f, -0.961902f, 0.246169f , - -0.911709f, 0.212039f, -0.351890f , - -0.919305f, 0.219226f, -0.326832f , - -0.652691f, -0.698843f, 0.292598f , - -0.904948f, -0.357949f, 0.230092f , - -0.912710f, -0.234892f, 0.334344f , - -0.236953f, -0.914418f, -0.328166f , - -0.247452f, -0.911516f, -0.328489f , - 0.013548f, -0.986357f, -0.164063f , - 0.098454f, -0.983578f, -0.151263f , - 0.088978f, -0.991614f, -0.093722f , - 0.114926f, -0.991423f, -0.062236f , - 0.098864f, -0.994686f, -0.028721f , - 0.119749f, -0.992613f, -0.019497f , - 0.102116f, -0.994768f, -0.003036f , - 0.131470f, -0.990522f, 0.039770f , - 0.115132f, -0.991577f, 0.059331f , - 0.140809f, -0.986200f, 0.087082f , - 0.626072f, -0.600486f, 0.497444f , - 0.738645f, -0.097750f, 0.666969f , - 0.614300f, 0.029754f, 0.788511f , - 0.534693f, 0.043301f, 0.843936f , - 0.559584f, 0.022126f, 0.828478f , - 0.463764f, -0.044084f, 0.884861f , - -0.115890f, -0.557067f, 0.822341f , - -0.097519f, -0.510013f, 0.854621f , - 0.068840f, -0.254164f, 0.964708f , - 0.240417f, -0.199655f, 0.949914f , - -0.611489f, -0.593384f, 0.523429f , - -0.505294f, -0.601678f, 0.618597f , - -0.539049f, -0.380253f, 0.751554f , - -0.534105f, -0.275524f, 0.799261f , - -0.859257f, -0.511542f, -0.001202f , - -0.845813f, -0.527677f, 0.078474f , - -0.947388f, -0.296447f, 0.120726f , - -0.978397f, -0.157231f, 0.134230f , - -0.711626f, -0.272062f, -0.647742f , - -0.778599f, -0.345197f, -0.524044f , - -0.807173f, -0.379101f, -0.452498f , - -0.839857f, -0.120088f, -0.529357f , - -0.800728f, 0.034552f, -0.598031f , - 0.807459f, -0.575544f, 0.129460f , - 0.719807f, -0.616793f, 0.318503f , - 0.615295f, -0.536103f, -0.577931f , - 0.608498f, -0.579855f, -0.541754f , - 0.812467f, -0.414344f, 0.410142f , - 0.920376f, -0.251888f, 0.299101f , - 0.967627f, -0.200302f, 0.153550f , - 0.182848f, -0.304758f, 0.934713f , - 0.399599f, -0.321450f, 0.858482f , - 0.363219f, -0.369866f, 0.855144f , - 0.319109f, -0.423929f, 0.847616f , - -0.711482f, -0.163220f, 0.683485f , - -0.516786f, -0.217082f, 0.828135f , - -0.529489f, -0.215987f, 0.820360f , - -0.556059f, -0.248415f, 0.793151f , - -0.996927f, 0.057892f, -0.052775f , - -0.988259f, 0.005310f, 0.152695f , - -0.986763f, 0.047489f, 0.155058f , - -0.989037f, 0.049604f, 0.139085f , - -0.598720f, 0.212970f, -0.772126f , - -0.723539f, 0.201358f, -0.660262f , - -0.709636f, 0.242058f, -0.661683f , - -0.707097f, 0.261101f, -0.657146f , - 0.331680f, 0.042215f, -0.942447f , - 0.344913f, 0.085065f, -0.934772f , - 0.154203f, 0.125687f, -0.980012f , - -0.090731f, 0.171280f, -0.981036f , - -0.081567f, -0.720005f, -0.689159f , - -0.117530f, -0.872787f, -0.473740f , - -0.273117f, -0.830808f, -0.484939f , - -0.219030f, -0.401077f, -0.889474f , - -0.076709f, -0.446872f, -0.891303f , - -0.095369f, -0.389628f, -0.916021f , - -0.088898f, -0.265104f, -0.960113f , - -0.086938f, -0.174405f, -0.980829f , - 0.038875f, -0.599782f, -0.799219f , - 0.019318f, -0.562957f, -0.826260f , - 0.008699f, -0.502560f, -0.864499f , - -0.007086f, -0.376967f, -0.926200f , - -0.067114f, -0.002186f, -0.997743f , - -0.070623f, -0.017009f, -0.997358f , - -0.058527f, 0.062950f, -0.996299f , - -0.048982f, 0.136342f, -0.989450f , - -0.064270f, -0.095877f, -0.993316f , - -0.052650f, -0.064065f, -0.996556f , - -0.079795f, 0.071382f, -0.994252f , - -0.103952f, 0.169828f, -0.979976f , - -0.367361f, -0.052166f, -0.928614f , - -0.391578f, 0.056103f, -0.918433f , - 0.713239f, -0.539427f, -0.447559f , - 0.764959f, -0.497310f, -0.409293f , - 0.737552f, -0.326928f, -0.590877f , - 0.289608f, 0.049977f, -0.955840f , - 0.246420f, 0.006159f, -0.969144f , - 0.216644f, 0.006027f, -0.976232f , - 0.217835f, 0.089910f, -0.971835f , - 0.043094f, 0.121133f, -0.991700f , - -0.247962f, 0.163083f, -0.954944f , - -0.551398f, 0.136604f, -0.822982f , - -0.588023f, 0.155973f, -0.793664f , - -0.722971f, 0.080757f, -0.686142f , - -0.762565f, -0.017247f, -0.646682f , - -0.603586f, 0.163687f, -0.780315f , - -0.069485f, 0.206676f, -0.975939f , - -0.074329f, 0.234363f, -0.969303f , - -0.073286f, 0.274628f, -0.958754f , - 0.029973f, 0.184034f, -0.982463f , - 0.072140f, 0.103437f, -0.992016f , - 0.174583f, -0.094213f, -0.980125f , - 0.237653f, -0.200373f, -0.950459f , - 0.291082f, -0.252465f, -0.922785f , - 0.272782f, -0.079284f, -0.958803f , - 0.384190f, -0.218836f, -0.896944f , - 0.381483f, -0.372028f, -0.846207f , - 0.494716f, -0.569492f, -0.656456f , - 0.417788f, -0.513381f, -0.749595f , - 0.363561f, -0.596853f, -0.715255f , - 0.274542f, -0.625568f, -0.730268f , - -0.277432f, -0.959575f, -0.047405f , - -0.353356f, -0.934677f, -0.038957f , - -0.667779f, 0.136317f, -0.731771f , - -0.678826f, 0.101559f, -0.727242f , - -0.689989f, 0.061964f, -0.721163f , - -0.763024f, -0.130064f, -0.633149f , - -0.724929f, -0.079849f, -0.684180f , - -0.815115f, -0.362164f, -0.452133f , - -0.856882f, -0.249163f, -0.451298f , - -0.888389f, -0.264418f, -0.375297f , - -0.903156f, -0.334662f, -0.268905f , - -0.230273f, -0.576340f, -0.784096f , - -0.267223f, -0.456427f, -0.848685f , - -0.446971f, -0.443155f, -0.777066f , - -0.587266f, -0.430277f, -0.685551f , - -0.554393f, -0.832200f, 0.009560f , - -0.558178f, -0.827365f, -0.062484f , - -0.516288f, -0.839386f, -0.169933f , - -0.735024f, -0.663657f, -0.138919f , - -0.784684f, -0.608183f, -0.119931f , - -0.820813f, -0.567958f, -0.060739f , - -0.216474f, -0.976059f, -0.021170f , - -0.194682f, -0.977385f, -0.082569f , - -0.122438f, -0.978437f, -0.166341f , - 0.045584f, -0.949555f, -0.310271f , - 0.074931f, -0.966393f, -0.245907f , - 0.169499f, -0.950211f, -0.261473f , - 0.292034f, -0.903031f, -0.315040f , - -0.019845f, -0.976755f, -0.213438f , - -0.018627f, -0.974164f, -0.225072f , - -0.008404f, -0.923207f, -0.384210f , - 0.000289f, -0.878328f, -0.478059f , - -0.142139f, -0.962284f, -0.231961f , - -0.085403f, -0.972842f, -0.215138f , - -0.073825f, -0.924561f, -0.373815f , - -0.070518f, -0.889607f, -0.451251f , - -0.384606f, -0.900426f, -0.203251f , - -0.342886f, -0.905456f, -0.250157f , - -0.368080f, -0.851052f, -0.374470f , - -0.482290f, -0.814236f, -0.323134f , - -0.088302f, -0.996086f, -0.003854f , - -0.220015f, -0.973986f, -0.054271f , - -0.257385f, -0.964629f, -0.056950f , - -0.306976f, -0.948916f, 0.072964f , - 0.258363f, -0.965781f, -0.022700f , - 0.171537f, -0.984943f, 0.021506f , - 0.276969f, -0.959005f, 0.059973f , - 0.385240f, -0.917822f, 0.095875f , - 0.498417f, -0.862693f, -0.085681f , - 0.475935f, -0.876191f, -0.075995f , - 0.490637f, -0.860161f, -0.139274f , - 0.523778f, -0.829844f, -0.192395f , - 0.637432f, -0.760203f, -0.125590f , - 0.665698f, -0.737810f, -0.111723f , - 0.643432f, -0.758149f, -0.105855f , - 0.656150f, -0.730387f, -0.189742f , - 0.670924f, -0.698967f, -0.247599f , - -0.219883f, 0.084828f, -0.971831f , - -0.260184f, 0.055291f, -0.963975f , - 0.288098f, -0.222160f, -0.931474f , - 0.192045f, -0.127509f, -0.973067f , - 0.213650f, -0.142066f, -0.966525f , - 0.281590f, -0.114703f, -0.952654f , - 0.579238f, -0.719834f, -0.382520f , - 0.563478f, -0.722593f, -0.400440f , - 0.537151f, -0.641694f, -0.547446f , - 0.488766f, -0.546661f, -0.679904f , - 0.701419f, -0.599195f, -0.385975f , - 0.726305f, -0.589464f, -0.353572f , - 0.701426f, -0.624067f, -0.344299f , - 0.714026f, -0.555896f, -0.425614f , - 0.704651f, -0.438561f, -0.557791f , - 0.525677f, -0.022750f, -0.850380f , - 0.641926f, -0.163600f, -0.749110f , - 0.589332f, -0.191797f, -0.784794f , - 0.586153f, -0.013835f, -0.810082f , - -0.324361f, -0.473179f, -0.819079f , - -0.258184f, -0.617668f, -0.742851f , - -0.042019f, -0.772942f, -0.633084f , - -0.169758f, -0.702244f, -0.691402f , - -0.179867f, -0.741364f, -0.646550f , - -0.204347f, -0.792821f, -0.574175f , - -0.082982f, -0.815892f, -0.572219f , - -0.049573f, -0.781703f, -0.621678f , - 0.005873f, -0.759584f, -0.650383f , - -0.011313f, -0.693836f, -0.720044f , - -0.053919f, -0.647780f, -0.759917f , - -0.112752f, -0.657888f, -0.744628f , - -0.146623f, -0.617098f, -0.773105f , - -0.110885f, -0.518849f, -0.847644f , - 0.004484f, 0.127373f, -0.991845f , - -0.003956f, 0.246029f, -0.969254f , - -0.008524f, 0.376684f, -0.926303f , - 0.038731f, -0.265008f, -0.963468f , - 0.030218f, -0.266135f, -0.963462f , - 0.040400f, -0.218144f, -0.975080f , - 0.058420f, -0.137738f, -0.988744f , - -0.293571f, -0.147102f, -0.944551f , - -0.160743f, -0.201174f, -0.966277f , - -0.180833f, -0.138616f, -0.973697f , - -0.204539f, -0.075287f, -0.975959f , - -0.211326f, -0.065436f, -0.975223f , - -0.274872f, -0.027151f, -0.961097f , - -0.310266f, -0.048094f, -0.949433f , - -0.345035f, -0.070055f, -0.935972f , - -0.179340f, 0.077688f, -0.980715f , - -0.132257f, 0.163406f, -0.977654f , - -0.044645f, 0.264264f, -0.963417f , - 0.127926f, 0.255325f, -0.958355f , - 0.066406f, 0.168511f, -0.983460f , - 0.046777f, 0.161354f, -0.985787f , - 0.022570f, 0.148986f, -0.988582f , - 0.432500f, 0.093379f, -0.896785f , - 0.485596f, 0.190701f, -0.853129f , - 0.442803f, 0.176343f, -0.879107f , - -0.105931f, 0.074128f, -0.991607f , - -0.172050f, -0.034273f, -0.984492f , - -0.141468f, -0.041016f, -0.989093f , - -0.115058f, 0.092707f, -0.989023f , - -0.031728f, 0.291799f, -0.955953f , - -0.031792f, 0.233365f, -0.971869f , - -0.018734f, 0.275915f, -0.960999f , - -0.008741f, 0.343811f, -0.938998f , - -0.194021f, 0.400651f, -0.895452f , - -0.136035f, 0.375478f, -0.916794f , - -0.139431f, 0.457608f, -0.878154f , - -0.126477f, 0.454998f, -0.881465f , - -0.449342f, 0.363432f, -0.816094f , - -0.455878f, 0.491076f, -0.742307f , - -0.457204f, 0.509228f, -0.729144f , - -0.475484f, 0.539026f, -0.695246f , - -0.537781f, 0.485437f, -0.689306f , - -0.507833f, 0.571635f, -0.644468f , - -0.453502f, 0.629436f, -0.630989f , - -0.159069f, 0.609924f, -0.776331f , - -0.221640f, 0.598439f, -0.769900f , - -0.290004f, 0.669770f, -0.683598f , - -0.342955f, 0.667884f, -0.660540f , - -0.184753f, 0.693489f, -0.696376f , - 0.064425f, 0.615802f, -0.785262f , - 0.014818f, 0.616189f, -0.787459f , - 0.031510f, 0.704710f, -0.708796f , - 0.031022f, 0.747511f, -0.663524f , - 0.152402f, 0.569625f, -0.807651f , - 0.133747f, 0.586415f, -0.798892f , - 0.144236f, 0.668048f, -0.730006f , - 0.149187f, 0.719922f, -0.677832f , - 0.144318f, 0.538277f, -0.830319f , - 0.158629f, 0.539224f, -0.827088f , - 0.152786f, 0.537881f, -0.829060f , - 0.175280f, 0.613720f, -0.769821f , - 0.195607f, 0.684080f, -0.702689f , - -0.089206f, 0.574204f, -0.813838f , - -0.116677f, 0.541198f, -0.832761f , - -0.132989f, 0.751614f, -0.646057f , - -0.019940f, 0.511455f, -0.859079f , - -0.034749f, 0.571171f, -0.820095f , - -0.084252f, 0.774802f, -0.626564f , - -0.133147f, 0.375543f, -0.917191f , - -0.102034f, 0.385660f, -0.916982f , - -0.136475f, 0.503611f, -0.853083f , - -0.402915f, 0.452237f, -0.795702f , - -0.328808f, 0.394008f, -0.858279f , - -0.281901f, 0.374514f, -0.883329f , - -0.357455f, 0.597963f, -0.717403f , - -0.359782f, 0.678718f, -0.640233f , - -0.383791f, 0.650965f, -0.654942f , - -0.406292f, 0.717933f, -0.565242f , - -0.446908f, 0.828367f, -0.337761f , - -0.132073f, 0.790690f, -0.597801f , - -0.205211f, 0.769055f, -0.605346f , - -0.215913f, 0.833130f, -0.509191f , - -0.231297f, 0.925018f, -0.301403f , - 0.068506f, 0.817615f, -0.571676f , - 0.034459f, 0.810380f, -0.584891f , - 0.052039f, 0.871322f, -0.487944f , - 0.074559f, 0.955988f, -0.283776f , - 0.195202f, 0.809657f, -0.553490f , - 0.176728f, 0.816533f, -0.549583f , - 0.196199f, 0.880825f, -0.430874f , - 0.214605f, 0.946885f, -0.239487f , - 0.230995f, 0.838313f, -0.493834f , - 0.241320f, 0.814795f, -0.527137f , - 0.236192f, 0.803833f, -0.545954f , - 0.266520f, 0.858433f, -0.438246f , - 0.303256f, 0.918762f, -0.252809f , - -0.755071f, 0.135850f, -0.641414f , - -0.794331f, 0.129161f, -0.593596f , - -0.957801f, 0.279267f, -0.068024f , - -0.956628f, 0.266389f, -0.117900f , - -0.957004f, 0.256816f, -0.134864f , - -0.959577f, 0.266181f, -0.091430f , - -0.961536f, 0.264561f, -0.073863f , - -0.965453f, 0.244844f, -0.089172f , - -0.956843f, 0.173197f, -0.233353f , - -0.942833f, 0.157026f, -0.293955f , - -0.936943f, 0.168188f, -0.306351f , - -0.935320f, 0.169099f, -0.310777f , - -0.937330f, 0.147451f, -0.315706f , - -0.932240f, 0.073857f, -0.354223f , - -0.926222f, 0.063740f, -0.371551f , - -0.834709f, 0.173687f, -0.522584f , - -0.689505f, -0.131282f, -0.712284f , - -0.654821f, -0.186956f, -0.732295f , - -0.583861f, -0.299650f, -0.754530f , - -0.596678f, -0.551456f, -0.582985f , - -0.542695f, -0.629030f, -0.556600f , - -0.440666f, -0.651641f, -0.617395f , - -0.381849f, -0.671682f, -0.634850f , - -0.356696f, -0.612776f, -0.705176f , - -0.244626f, -0.903645f, -0.351544f , - 0.809639f, 0.102759f, 0.577862f , - 0.185710f, 0.065144f, 0.980443f , - -0.011332f, 0.353805f, 0.935251f , - 0.366438f, -0.362732f, -0.856825f , - 0.415385f, -0.538313f, -0.733263f , - 0.410932f, -0.573122f, -0.708990f , - 0.702041f, -0.687410f, -0.186029f , - 0.737124f, -0.665086f, 0.119621f , - 0.914008f, -0.405458f, 0.013878f , - 0.995235f, -0.072868f, -0.064794f , - 0.054711f, 0.792663f, 0.607201f , - 0.058310f, 0.051743f, -0.996957f , - 0.081863f, -0.070707f, -0.994132f , - 0.186760f, -0.228835f, -0.955382f , - 0.312473f, -0.320339f, -0.894284f , - 0.451021f, -0.435150f, -0.779246f , - 0.489749f, -0.263100f, -0.831219f , - 0.453509f, -0.099711f, -0.885657f , - 0.711550f, 0.702624f, 0.004042f , - 0.715495f, 0.698529f, -0.011125f , - 0.781686f, 0.623494f, -0.014916f , - 0.813776f, 0.581160f, 0.004599f , - 0.907617f, 0.419769f, 0.005010f , - 0.909580f, 0.415475f, 0.006725f , - 0.912343f, 0.409426f, 0.000044f , - 0.892113f, 0.449648f, 0.044172f , - 0.870518f, 0.490961f, 0.033996f , - 0.861894f, 0.506229f, -0.029496f , - 0.848529f, 0.507080f, -0.151223f , - 0.838143f, 0.505540f, -0.204806f , - 0.829274f, 0.491212f, -0.266488f , - 0.828961f, 0.438363f, -0.347365f , - 0.832022f, 0.417524f, -0.365257f , - 0.829533f, 0.400847f, -0.388840f , - 0.800572f, 0.362025f, -0.477517f , - 0.779955f, 0.336015f, -0.527981f , - 0.763777f, 0.326096f, -0.557051f , - 0.752008f, 0.355390f, -0.555141f , - 0.755684f, 0.372405f, -0.538754f , - 0.768014f, 0.380850f, -0.514887f , - 0.794740f, 0.450948f, -0.406244f , - 0.784538f, 0.453545f, -0.422845f , - 0.863920f, 0.325768f, -0.384080f , - 0.878647f, 0.328599f, -0.346412f , - 0.874955f, 0.301617f, -0.378788f , - 0.849614f, -0.463608f, -0.251443f , - 0.793084f, -0.426728f, -0.434650f , - 0.832231f, 0.283975f, -0.476183f , - 0.804638f, 0.278398f, -0.524454f , - 0.781344f, 0.275732f, -0.559887f , - 0.737201f, 0.212815f, -0.641283f , - 0.664420f, 0.140566f, -0.734021f , - 0.265768f, 0.113806f, -0.957296f , - 0.283816f, 0.032585f, -0.958325f , - 0.580604f, 0.558942f, 0.592016f , - 0.553517f, 0.640007f, 0.532927f , - 0.504884f, 0.767287f, 0.395427f , - 0.566120f, 0.746291f, 0.350083f , - 0.616953f, 0.758427f, 0.210137f , - 0.451953f, 0.882701f, -0.128756f , - 0.333850f, 0.936001f, -0.111566f , - 0.267071f, 0.962529f, -0.047031f , - 0.220870f, 0.967584f, -0.122462f , - 0.205621f, 0.926604f, -0.314840f , - -0.127110f, 0.954152f, 0.270991f , - -0.190506f, 0.979443f, 0.066323f , - -0.228240f, 0.949605f, -0.214843f , - -0.103350f, 0.966586f, -0.234585f , - 0.048733f, 0.967049f, -0.249882f , - -0.234307f, -0.450675f, -0.861390f , - -0.248925f, -0.414669f, -0.875263f , - 0.159235f, -0.094681f, -0.982690f , - 0.290099f, -0.019969f, -0.956788f , - 0.359296f, -0.017110f, -0.933067f , - 0.291933f, -0.244817f, -0.924576f , - 0.376281f, -0.203379f, -0.903908f , - 0.639318f, -0.074378f, -0.765337f , - 0.843557f, 0.531134f, 0.079421f , - 0.851782f, 0.520007f, 0.063713f , - 0.888608f, 0.455667f, 0.052372f , - 0.771017f, 0.246518f, -0.587164f , - 0.805566f, 0.298314f, -0.511929f , - 0.832422f, 0.317484f, -0.454179f , - 0.899042f, 0.366441f, -0.239676f , - 0.918325f, 0.385876f, -0.088198f , - 0.309560f, 0.059904f, -0.948991f , - 0.276756f, 0.053783f, -0.959434f , - 0.272964f, 0.026100f, -0.961670f , - 0.272897f, -0.005214f, -0.962029f , - 0.454272f, 0.003580f, -0.890856f , - 0.430598f, -0.002473f, -0.902540f , - 0.334505f, 0.008187f, -0.942358f , - 0.429166f, -0.102910f, -0.897344f , - 0.422074f, -0.141578f, -0.895438f , - 0.391213f, -0.166685f, -0.905079f , - 0.857352f, 0.489558f, -0.158996f , - 0.840720f, 0.528573f, -0.117474f , - 0.812147f, 0.580248f, -0.061067f , - 0.902375f, -0.417603f, -0.106428f , - 0.862828f, -0.458252f, -0.213387f , - -0.232735f, -0.933027f, -0.274399f , - -0.331873f, -0.663344f, -0.670698f , - -0.324442f, -0.791871f, -0.517375f , - 0.734394f, -0.167638f, -0.657695f , - 0.860284f, -0.204331f, -0.467076f , - 0.947970f, -0.216156f, -0.233731f , - 0.950697f, -0.158406f, -0.266612f , - 0.922362f, -0.232089f, -0.308843f , - 0.275424f, -0.375916f, -0.884776f , - 0.032163f, -0.463583f, -0.885469f , - -0.161601f, -0.486443f, -0.858638f , - -0.187147f, -0.342540f, -0.920675f , - -0.188429f, -0.225260f, -0.955904f , - -0.071814f, -0.495606f, -0.865573f , - -0.042639f, -0.496935f, -0.866740f , - 0.224395f, -0.026978f, -0.974125f , - 0.146671f, -0.115175f, -0.982457f , - 0.068995f, -0.233960f, -0.969795f , - 0.051289f, -0.267009f, -0.962328f , - 0.024454f, -0.318166f, -0.947720f , - 0.098959f, -0.292650f, -0.951085f , - 0.183024f, -0.301763f, -0.935650f , - 0.458376f, -0.133793f, -0.878630f , - 0.444845f, -0.208153f, -0.871083f , - 0.410203f, -0.314174f, -0.856170f , - 0.262287f, -0.578345f, -0.772479f , - 0.234647f, -0.638905f, -0.732626f , - 0.263237f, -0.627247f, -0.732985f , - -0.016888f, -0.572402f, -0.819799f , - -0.085766f, -0.556713f, -0.826265f , - -0.136777f, -0.552492f, -0.822219f , - -0.144291f, -0.483161f, -0.863560f , - -0.302015f, -0.748015f, -0.590983f , - -0.385182f, -0.802547f, -0.455581f , - 0.149979f, -0.515379f, -0.843736f , - 0.269363f, -0.535527f, -0.800409f , - 0.342602f, -0.553085f, -0.759422f , - 0.376164f, -0.483529f, -0.790380f , - 0.378311f, -0.388528f, -0.840194f , - 0.237375f, -0.329116f, -0.913967f , - 0.136148f, -0.366677f, -0.920332f , - 0.051313f, -0.422761f, -0.904787f , - -0.074129f, -0.443601f, -0.893153f , - -0.127267f, -0.427688f, -0.894922f , - -0.153785f, -0.453622f, -0.877825f , - -0.173332f, -0.534201f, -0.827396f , - -0.226325f, -0.634734f, -0.738844f , - -0.467338f, -0.866751f, -0.174177f , - -0.439088f, -0.882946f, -0.166158f , - -0.396179f, -0.904780f, -0.156255f , - -0.257049f, -0.948436f, -0.185459f , - -0.201468f, -0.941151f, -0.271377f , - -0.203867f, -0.914675f, -0.349010f , - -0.227596f, -0.907781f, -0.352325f , - -0.173292f, -0.929573f, -0.325368f , - -0.025838f, -0.954926f, -0.295716f , - 0.008740f, -0.877225f, -0.480000f , - 0.022618f, -0.818161f, -0.574544f , - 0.034851f, -0.654397f, -0.755348f , - 0.216889f, -0.798725f, -0.561246f , - 0.474686f, -0.689469f, -0.547089f , - -0.110174f, -0.781627f, -0.613939f , - -0.296312f, -0.815256f, -0.497551f , - -0.304616f, -0.728817f, -0.613217f , - -0.139378f, -0.378422f, -0.915080f , - -0.014152f, -0.454338f, -0.890717f , - 0.005742f, -0.382096f, -0.924105f , - -0.085966f, -0.695453f, -0.713411f , - 0.328009f, -0.333490f, -0.883852f , - 0.370680f, -0.381472f, -0.846803f , - -0.096563f, -0.691133f, -0.716248f , - 0.003488f, -0.492398f, -0.870363f , - -0.116065f, -0.491183f, -0.863289f , - 0.308322f, -0.586992f, -0.748584f , - -0.213979f, -0.753959f, -0.621095f , - -0.204183f, -0.556732f, -0.805207f , - -0.193586f, -0.466731f, -0.862952f , - 0.115229f, -0.423849f, -0.898373f , - 0.336789f, -0.452703f, -0.825611f , - 0.275836f, -0.311736f, -0.909250f , - 0.079346f, -0.415724f, -0.906023f , - 0.493392f, 0.037822f, -0.868984f , - 0.470205f, -0.093387f, -0.877602f , - 0.645979f, 0.411403f, -0.643008f , - 0.265164f, -0.005790f, -0.964186f , - -0.282977f, -0.376759f, -0.882030f , - 0.528093f, -0.286192f, -0.799507f , - -0.178395f, -0.620257f, -0.763843f , - 0.557086f, -0.394496f, -0.730772f , - 0.368231f, 0.257551f, -0.893350f , - 0.344472f, -0.200720f, -0.917088f , - 0.399329f, -0.050440f, -0.915419f , - 0.296495f, -0.009126f, -0.954991f , - 0.256013f, -0.025924f, -0.966326f , - 0.391793f, -0.003170f, -0.920048f , - 0.483536f, -0.191441f, -0.854133f , - 0.558163f, 0.060651f, -0.827512f , - 0.281827f, 0.021639f, -0.959221f , - 0.291463f, 0.061303f, -0.954616f , - 0.236832f, -0.020156f, -0.971341f , - 0.705652f, 0.210413f, -0.676596f , - 0.582265f, 0.114086f, -0.804955f , - 0.462881f, 0.138503f, -0.875533f , - 0.370950f, 0.005605f, -0.928636f , - 0.980747f, 0.174099f, -0.088459f , - 0.899053f, 0.437620f, -0.013900f , - 0.745666f, 0.114097f, -0.656479f , - -0.000277f, -0.231584f, -0.972815f , - -0.233236f, -0.592739f, -0.770883f , - -0.428507f, -0.679047f, -0.596051f , - -0.057624f, -0.505573f, -0.860858f , - 0.188716f, -0.443859f, -0.876000f , - 0.151752f, 0.949207f, -0.275641f , - 0.065288f, 0.804187f, -0.590779f , - -0.035965f, 0.888153f, 0.458139f , - -0.074683f, 0.751959f, 0.654966f , - 0.325952f, 0.945378f, -0.003871f , - 0.414344f, 0.786322f, 0.458276f , - 0.435488f, 0.682562f, -0.586907f , - 0.536745f, 0.418692f, -0.732531f , - 0.581352f, 0.805349f, -0.115944f , - 0.571106f, 0.512223f, 0.641456f , - 0.870082f, -0.170935f, -0.462319f , - 0.831746f, -0.449841f, -0.325334f , - 0.857211f, 0.282418f, -0.430615f , - 0.803050f, 0.334063f, -0.493469f , - 0.785631f, 0.384670f, -0.484575f , - 0.019397f, -0.935928f, -0.351657f , - -0.075230f, -0.898483f, -0.432514f , - 0.773307f, 0.459896f, -0.436453f , - 0.662516f, 0.385341f, -0.642328f , - 0.754998f, 0.336601f, -0.562741f , - 0.827904f, 0.266100f, -0.493727f , - 0.736478f, 0.383221f, -0.557443f , - 0.818731f, 0.384460f, -0.426462f , - 0.808601f, 0.436896f, -0.394064f , - 0.826129f, 0.465298f, -0.317820f , - 0.899045f, 0.390599f, -0.197865f , - 0.857204f, 0.505169f, -0.100030f , - 0.837010f, 0.547184f, 0.001955f , - 0.847068f, 0.529308f, -0.048046f , - -0.177133f, 0.970624f, -0.162829f , - -0.216861f, 0.956510f, -0.195091f , - 0.909804f, 0.414799f, 0.014073f , - 0.414019f, -0.533485f, -0.737551f , - 0.110474f, -0.149462f, -0.982577f , - 0.102066f, -0.028562f, -0.994368f , - 0.635738f, -0.740293f, 0.218639f , - 0.234656f, -0.062032f, -0.970097f , - -0.244429f, 0.785282f, 0.568846f , - 0.385142f, -0.297384f, 0.873629f , - -0.175759f, -0.639654f, -0.748299f , - -0.514815f, -0.399492f, -0.758532f , - -0.615065f, -0.468843f, -0.633941f , - -0.360391f, 0.126827f, -0.924139f , - -0.704704f, -0.145143f, -0.694497f , - -0.716967f, 0.012362f, -0.696997f , - -0.788864f, -0.181498f, -0.587156f , - -0.808099f, 0.115047f, -0.577703f , - -0.573169f, 0.387535f, -0.722007f , - -0.679879f, 0.545165f, -0.490469f , - -0.935153f, 0.173065f, -0.309090f , - -0.780282f, 0.543934f, -0.308701f , - -0.966710f, 0.209997f, -0.146195f , - -0.936395f, 0.338040f, -0.094307f , - -0.779149f, 0.576610f, -0.245860f , - -0.958268f, 0.258592f, -0.121872f , - -0.909207f, 0.386051f, -0.155911f , - 0.202648f, 0.872702f, -0.444212f , - 0.051161f, 0.914046f, -0.402371f , - 0.214830f, 0.749508f, -0.626168f , - 0.160159f, 0.764892f, -0.623930f , - 0.028042f, 0.775337f, -0.630925f , - -0.196505f, 0.729236f, -0.655439f , - -0.372549f, 0.643701f, -0.668474f , - -0.390524f, 0.661960f, -0.639765f , - -0.405580f, 0.476699f, -0.779912f , - -0.458788f, 0.518185f, -0.721802f , - -0.110147f, 0.413505f, -0.903815f , - -0.011655f, 0.442674f, -0.896607f , - -0.108861f, 0.341648f, -0.933502f , - 0.261544f, 0.257240f, -0.930281f , - 0.073619f, 0.554506f, -0.828917f , - -0.078282f, 0.610941f, -0.787797f , - 0.124796f, 0.451998f, -0.883246f , - 0.046876f, 0.336160f, -0.940638f , - 0.113923f, 0.479591f, -0.870065f , - -0.004439f, 0.501357f, -0.865229f , - -0.145900f, 0.469392f, -0.870853f , - -0.551804f, 0.379067f, -0.742846f , - -0.420937f, 0.187339f, -0.887534f , - -0.122133f, 0.263001f, -0.957034f , - -0.041496f, 0.195831f, -0.979759f , - -0.182653f, 0.016221f, -0.983044f , - 0.281168f, -0.127756f, -0.951117f , - 0.206931f, -0.351471f, -0.913043f , - 0.515898f, 0.081608f, -0.852754f , - 0.547827f, -0.026253f, -0.836180f , - -0.061668f, 0.040971f, -0.997255f , - 0.097632f, 0.170752f, -0.980465f , - -0.209877f, -0.002596f, -0.977724f , - -0.044925f, -0.106794f, -0.993266f , - -0.432182f, 0.039305f, -0.900929f , - -0.257793f, 0.004874f, -0.966188f , - -0.278659f, 0.147675f, -0.948969f , - -0.145987f, -0.269572f, -0.951850f , - 0.023021f, -0.129861f, -0.991265f , - 0.019897f, -0.324004f, -0.945846f , - 0.014502f, 0.007457f, -0.999867f , - -0.089646f, -0.592549f, -0.800531f , - 0.112394f, -0.629335f, -0.768964f , - 0.317352f, -0.522618f, -0.791302f , - 0.338678f, -0.305400f, -0.889959f , - -0.059725f, -0.653137f, -0.754881f , - -0.033206f, -0.620231f, -0.783716f , - -0.091069f, -0.842341f, -0.531195f , - -0.075899f, -0.867822f, -0.491045f , - 0.004129f, -0.829702f, -0.558191f , - 0.032038f, -0.878439f, -0.476780f , - -0.329478f, -0.852320f, -0.406195f , - -0.499889f, -0.655154f, -0.566466f , - -0.196566f, -0.671387f, -0.714564f , - -0.571073f, -0.378935f, -0.728206f , - 0.598292f, -0.142774f, -0.788456f , - 0.366454f, -0.073649f, -0.927517f , - 0.176856f, -0.040359f, -0.983409f , - 0.658447f, -0.303607f, -0.688673f , - 0.637779f, -0.499125f, -0.586611f , - 0.639879f, -0.636472f, -0.430649f , - 0.686271f, -0.664316f, -0.296171f , - 0.497546f, -0.521435f, -0.693220f , - 0.557034f, -0.783619f, -0.275052f , - 0.511976f, -0.845076f, -0.154036f , - 0.624508f, -0.775493f, -0.092738f , - 0.192256f, -0.090043f, -0.977205f , - 0.164575f, -0.970891f, 0.174029f , - -0.005987f, -0.946062f, 0.323931f , - -0.430040f, -0.902756f, -0.009874f , - -0.663910f, -0.743829f, 0.077081f , - 0.379896f, -0.897726f, -0.223084f , - -0.020058f, -0.975054f, -0.221061f , - -0.172447f, -0.981593f, -0.082081f , - -0.176725f, -0.978138f, 0.109608f , - -0.673949f, -0.713678f, 0.190938f , - -0.877329f, -0.453342f, -0.157401f , - -0.944315f, -0.248558f, -0.215609f , - -0.667777f, -0.723312f, -0.175767f , - -0.491509f, -0.758720f, -0.427508f , - -0.440448f, -0.662939f, -0.605407f , - -0.616903f, -0.260464f, -0.742691f , - -0.126056f, -0.463395f, -0.877140f , - -0.818834f, -0.234283f, -0.524044f , - -0.768880f, -0.119102f, -0.628202f , - -0.783192f, 0.103373f, -0.613127f , - -0.708206f, 0.008887f, -0.705950f , - -0.634639f, 0.120476f, -0.763361f , - 0.521360f, -0.363497f, -0.772045f , - 0.141785f, 0.022945f, -0.989632f , - -0.068972f, 0.191692f, -0.979029f , - -0.439640f, 0.266474f, -0.857735f , - -0.363390f, 0.184357f, -0.913214f , - -0.188869f, 0.163998f, -0.968211f , - -0.353698f, 0.210759f, -0.911306f , - 0.236029f, 0.050069f, -0.970455f , - 0.404510f, -0.114357f, -0.907356f , - 0.311377f, 0.074133f, -0.947390f , - 0.724656f, -0.655665f, -0.212077f , - -0.027922f, -0.220976f, -0.974879f , - -0.081569f, -0.098067f, -0.991831f , - -0.089293f, -0.148106f, -0.984932f , - 0.023487f, -0.598387f, -0.800863f , - -0.111724f, -0.529907f, -0.840664f , - -0.327399f, -0.651074f, -0.684772f , - -0.108186f, 0.198352f, -0.974142f , - 0.546708f, 0.040233f, -0.836356f , - 0.775874f, 0.126579f, -0.618059f , - 0.789021f, 0.369685f, -0.490692f , - 0.405175f, 0.421152f, -0.811458f , - -0.825996f, 0.238931f, -0.510532f , - -0.929428f, 0.198017f, -0.311371f , - -0.754093f, 0.133655f, -0.643024f , - -0.948513f, -0.019775f, 0.316121f , - -0.899417f, -0.140855f, 0.413774f , - -0.987712f, -0.066504f, 0.141431f , - -0.296379f, -0.316266f, 0.901185f , - -0.135510f, -0.461810f, 0.876566f , - -0.524077f, -0.236727f, 0.818110f , - 0.601093f, -0.444274f, 0.664310f , - 0.798966f, -0.479960f, 0.362343f , - 0.643995f, -0.685790f, 0.339060f , - 0.553276f, -0.780796f, 0.290248f , - 0.368501f, -0.255693f, 0.893772f , - 0.344082f, -0.128749f, 0.930071f , - 0.949057f, -0.304475f, -0.081149f , - 0.971776f, -0.072929f, 0.224351f , - 0.716019f, -0.387233f, -0.580834f , - -0.541874f, -0.181995f, -0.820518f , - -0.644968f, -0.687349f, -0.334018f , - -0.639964f, -0.767924f, 0.027185f , - -0.380211f, -0.824514f, 0.419067f , - -0.208860f, -0.796276f, 0.567734f , - 0.502263f, 0.024381f, 0.864371f , - 0.288618f, -0.930869f, 0.224013f , - -0.491462f, -0.541862f, -0.681799f , - 0.807814f, -0.516239f, -0.284489f , - 0.664912f, -0.204393f, -0.718412f , - 0.143491f, 0.051854f, -0.988292f , - -0.439617f, 0.292411f, -0.849254f , - -0.419145f, 0.376640f, -0.826111f , - -0.917143f, 0.315355f, -0.243719f , - -0.993800f, 0.107419f, 0.028690f , - -0.552140f, -0.370803f, 0.746758f , - -0.792820f, 0.534243f, -0.293293f , - -0.784505f, 0.113159f, -0.609710f , - -0.605415f, 0.018432f, -0.795697f , - -0.314264f, -0.032762f, -0.948770f , - -0.019441f, -0.001454f, -0.999810f , - -0.467611f, 0.283194f, -0.837342f , - 0.556090f, -0.131518f, -0.820650f , - 0.683455f, -0.022457f, -0.729647f , - -0.019530f, -0.016527f, -0.999673f , - 0.852039f, 0.127823f, -0.507632f , - 0.989355f, -0.120072f, -0.082218f , - 0.978254f, -0.157312f, 0.135175f , - 0.509304f, -0.331131f, 0.794331f , - 0.720080f, -0.538903f, 0.437113f , - 0.463477f, -0.672167f, 0.577392f , - -0.669003f, -0.074298f, -0.739537f , - -0.241893f, 0.191969f, -0.951123f , - 0.387811f, 0.122750f, -0.913529f , - 0.733118f, 0.242499f, -0.635400f , - 0.984114f, -0.175842f, -0.024474f , - 0.999329f, -0.017379f, -0.032256f , - 0.948583f, 0.303636f, 0.089414f , - 0.647700f, -0.272348f, 0.711555f , - 0.770326f, -0.106578f, 0.628681f , - 0.611938f, 0.087577f, 0.786042f , - -0.565229f, -0.398463f, 0.722318f , - -0.771635f, -0.301970f, 0.559815f , - -0.330534f, 0.190991f, 0.924267f , - -0.665444f, 0.012364f, 0.746345f , - -0.966776f, -0.007358f, 0.255518f , - -0.977292f, -0.004459f, 0.211848f , - -0.991416f, -0.107108f, -0.074978f , - -0.881145f, 0.039960f, -0.471154f , - -0.698224f, 0.061423f, -0.713239f , - -0.802588f, -0.594747f, -0.046148f , - -0.880427f, -0.266353f, -0.392306f , - -0.736472f, -0.317859f, -0.597139f , - -0.548549f, -0.754444f, 0.360427f , - -0.208164f, -0.969415f, 0.130008f , - -0.297721f, 0.153153f, -0.942288f , - -0.029513f, 0.257239f, -0.965897f , - 0.505638f, 0.187630f, -0.842096f , - 0.509449f, 0.222523f, -0.831231f , - 0.688372f, 0.491954f, -0.533034f , - -0.070623f, -0.936639f, -0.343103f , - 0.368714f, -0.704876f, -0.605970f , - 0.813909f, 0.580849f, 0.012920f , - 0.778456f, 0.548698f, 0.304856f , - 0.369336f, -0.756763f, 0.539352f , - 0.308113f, 0.341050f, 0.888117f , - 0.112156f, 0.065390f, 0.991537f , - 0.308113f, 0.341050f, -0.888117f , - 0.496410f, 0.256340f, -0.829377f , - 0.338187f, -0.779024f, -0.527970f , - 0.777910f, 0.549303f, -0.305161f , - 0.813885f, 0.580884f, -0.012848f , - 0.257255f, -0.937220f, 0.235452f , - 0.509449f, 0.222524f, 0.831231f , - 0.505637f, 0.187631f, 0.842096f , - -0.029514f, 0.257239f, 0.965897f , - -0.297721f, 0.153152f, 0.942288f , - -0.208165f, -0.969415f, -0.130007f , - -0.548549f, -0.754444f, -0.360427f , - -0.661786f, -0.673844f, 0.328593f , - -0.736472f, -0.317859f, 0.597139f , - -0.698224f, 0.061422f, 0.713239f , - -0.881145f, 0.039960f, 0.471155f , - -0.973344f, -0.171345f, -0.152454f , - -0.991416f, -0.107108f, 0.074978f , - -0.665444f, 0.012364f, -0.746345f , - -0.330532f, 0.190991f, -0.924268f , - -0.771635f, -0.301970f, -0.559815f , - -0.565229f, -0.398462f, -0.722318f , - 0.611937f, 0.087578f, -0.786043f , - 0.770326f, -0.106577f, -0.628681f , - 0.948584f, 0.303635f, -0.089414f , - 0.999329f, -0.017380f, 0.032256f , - 0.933460f, -0.328973f, -0.142929f , - 0.733118f, 0.242499f, 0.635400f , - 0.387810f, 0.122751f, 0.913529f , - -0.669001f, -0.074297f, 0.739538f , - 0.199272f, -0.585408f, -0.785868f , - 0.463477f, -0.672166f, -0.577392f , - 0.113717f, -0.251988f, -0.961026f , - 0.978254f, -0.157312f, -0.135175f , - 0.852039f, 0.127823f, 0.507632f , - -0.061758f, -0.078132f, 0.995028f , - -0.019530f, -0.016528f, 0.999673f , - 0.683456f, -0.022458f, 0.729647f , - -0.019443f, -0.001452f, 0.999810f , - -0.605416f, 0.018433f, 0.795696f , - -0.659710f, 0.568082f, 0.492002f , - -0.792820f, 0.534243f, 0.293294f , - -0.561595f, -0.081646f, -0.823374f , - -0.552139f, -0.370804f, -0.746758f , - -0.993800f, 0.107419f, -0.028690f , - -0.917143f, 0.315356f, 0.243719f , - -0.419147f, 0.376640f, 0.826110f , - -0.439618f, 0.292411f, 0.849254f , - -0.040142f, 0.289718f, 0.956270f , - 0.143493f, 0.051852f, 0.988292f , - 0.590917f, 0.071197f, 0.803584f , - 0.664911f, -0.204393f, 0.718413f , - 0.288618f, -0.930869f, -0.224015f , - 0.707311f, -0.028383f, -0.706332f , - 0.502260f, 0.024380f, -0.864373f , - -0.208861f, -0.796276f, -0.567734f , - -0.380210f, -0.824514f, -0.419067f , - -0.639963f, -0.767924f, -0.027185f , - -0.644969f, -0.687349f, 0.334017f , - 0.716019f, -0.387232f, 0.580834f , - 0.973689f, 0.168399f, -0.153530f , - 0.800343f, -0.577359f, 0.161580f , - 0.702524f, 0.009090f, -0.711602f , - 0.344081f, -0.128749f, -0.930071f , - 0.368502f, -0.255693f, -0.893772f , - 0.553276f, -0.780796f, -0.290247f , - 0.643995f, -0.685790f, -0.339060f , - 0.798966f, -0.479960f, -0.362343f , - -0.308332f, -0.293578f, -0.904844f , - -0.524077f, -0.236727f, -0.818110f , - -0.135509f, -0.461810f, -0.876566f , - -0.927194f, -0.192090f, -0.321577f , - -0.987712f, -0.066504f, -0.141430f , - -0.973076f, -0.126694f, -0.192540f , - -0.899417f, -0.140855f, -0.413773f , - -0.906478f, -0.021417f, 0.421709f , - -0.754093f, 0.133655f, 0.643024f , - -0.817126f, 0.289284f, 0.498618f , - -0.929429f, 0.198016f, 0.311371f , - 0.405176f, 0.421153f, 0.811457f , - 0.789022f, 0.369684f, 0.490692f , - 0.775874f, 0.126579f, 0.618059f , - 0.546709f, 0.040233f, 0.836356f , - -0.054898f, -0.914452f, -0.400953f , - -0.216027f, -0.976387f, -0.000618f , - -0.329216f, -0.661176f, 0.674138f , - -0.112223f, -0.531298f, 0.839719f , - 0.024181f, -0.603436f, 0.797045f , - -0.089293f, -0.148106f, 0.984932f , - -0.081569f, -0.098066f, 0.991831f , - -0.030644f, -0.332301f, 0.942675f , - -0.027922f, -0.220976f, 0.974879f , - 0.724656f, -0.655666f, 0.212077f , - 0.311378f, 0.074133f, 0.947390f , - 0.682422f, -0.156942f, 0.713911f , - 0.404509f, -0.114356f, 0.907356f , - 0.236031f, 0.050069f, 0.970455f , - -0.535056f, 0.256001f, 0.805096f , - -0.353701f, 0.210759f, 0.911305f , - -0.363391f, 0.184357f, 0.913214f , - 0.069518f, 0.123390f, 0.989920f , - 0.141784f, 0.022945f, 0.989632f , - 0.469304f, -0.091287f, 0.878305f , - 0.521359f, -0.363498f, 0.772045f , - -0.631239f, 0.115697f, 0.766911f , - -0.634638f, 0.120475f, 0.763361f , - -0.783191f, 0.103373f, 0.613128f , - -0.768880f, -0.119102f, 0.628203f , - -0.818834f, -0.234283f, 0.524045f , - -0.126056f, -0.463395f, 0.877140f , - -0.350982f, -0.936382f, 0.000000f , - -0.444143f, -0.895821f, 0.015556f , - -0.442226f, -0.665485f, 0.601303f , - -0.493602f, -0.760968f, 0.421052f , - -0.667875f, -0.723309f, 0.175403f , - -0.944315f, -0.248560f, 0.215608f , - -0.479618f, -0.814477f, -0.326487f , - -0.216339f, -0.976318f, 0.000000f , - -0.176725f, -0.978138f, -0.109608f , - -0.172447f, -0.981593f, 0.082081f , - -0.020058f, -0.975054f, 0.221061f , - -0.021820f, -0.999762f, 0.000000f , - -0.092378f, -0.995724f, 0.000000f , - -0.346378f, -0.938095f, 0.000000f , - -0.207382f, -0.978260f, 0.000000f , - -0.663910f, -0.743829f, -0.077081f , - 0.130275f, -0.991478f, 0.000000f , - -0.005986f, -0.946062f, -0.323931f , - 0.473299f, -0.880902f, 0.000000f , - 0.637549f, -0.770410f, 0.000000f , - 0.587609f, -0.795729f, -0.146735f , - 0.031039f, 0.071589f, 0.996951f , - 0.192255f, -0.090042f, 0.977205f , - 0.624508f, -0.775493f, 0.092738f , - 0.511976f, -0.845076f, 0.154035f , - 0.557034f, -0.783619f, 0.275052f , - 0.436223f, -0.421623f, 0.794949f , - 0.624609f, -0.741523f, 0.244964f , - 0.686270f, -0.664316f, 0.296171f , - 0.502306f, -0.416803f, 0.757604f , - 0.637779f, -0.499125f, 0.586611f , - 0.171117f, 0.056556f, 0.983626f , - 0.176855f, -0.040358f, 0.983409f , - 0.604407f, -0.293734f, 0.740549f , - -0.571074f, -0.378933f, 0.728206f , - -0.196567f, -0.671386f, 0.714565f , - -0.329478f, -0.852321f, 0.406194f , - -0.850824f, -0.505324f, 0.144032f , - 0.032039f, -0.878439f, 0.476780f , - 0.004129f, -0.829702f, 0.558191f , - -0.058742f, -0.886827f, 0.458352f , - -0.075899f, -0.867821f, 0.491045f , - -0.033206f, -0.620232f, 0.783716f , - -0.059725f, -0.653137f, 0.754881f , - 0.124017f, -0.296993f, 0.946792f , - 0.338679f, -0.305400f, 0.889959f , - 0.317352f, -0.522618f, 0.791302f , - 0.112394f, -0.629335f, 0.768964f , - 0.089248f, 0.035241f, 0.995386f , - 0.019897f, -0.324005f, 0.945846f , - 0.047372f, 0.131298f, 0.990210f , - -0.145986f, -0.269573f, 0.951850f , - -0.278657f, 0.147675f, 0.948969f , - -0.257790f, 0.004874f, 0.966189f , - -0.645896f, 0.123001f, 0.753451f , - -0.044924f, -0.106793f, 0.993266f , - -0.209875f, -0.002595f, 0.977725f , - 0.097634f, 0.170751f, 0.980465f , - -0.230456f, -0.063258f, 0.971024f , - 0.439954f, 0.057358f, 0.896187f , - 0.547827f, -0.026254f, 0.836179f , - 0.355044f, -0.253793f, 0.899740f , - 0.206931f, -0.351471f, 0.913043f , - 0.281168f, -0.127756f, 0.951117f , - -0.183502f, 0.016013f, 0.982889f , - -0.060544f, 0.113361f, 0.991707f , - -0.041496f, 0.195831f, 0.979759f , - -0.076108f, 0.177752f, 0.981128f , - -0.122133f, 0.263002f, 0.957034f , - -0.269526f, 0.079237f, 0.959728f , - -0.420937f, 0.187339f, 0.887534f , - -0.609071f, 0.123867f, 0.783384f , - -0.551804f, 0.379068f, 0.742846f , - -0.227978f, 0.338292f, 0.913009f , - -0.145900f, 0.469392f, 0.870853f , - -0.031895f, 0.377044f, 0.925646f , - -0.004439f, 0.501357f, 0.865229f , - 0.113924f, 0.479591f, 0.870066f , - 0.053121f, 0.286378f, 0.956643f , - 0.046876f, 0.336160f, 0.940638f , - 0.124796f, 0.451998f, 0.883246f , - 0.261545f, 0.257239f, 0.930281f , - -0.078281f, 0.610940f, 0.787797f , - -0.109820f, 0.350908f, 0.929948f , - -0.038118f, 0.302212f, 0.952478f , - -0.012357f, 0.449422f, 0.893234f , - -0.085023f, 0.442479f, 0.892739f , - -0.111314f, 0.417803f, 0.901693f , - -0.336976f, 0.494808f, 0.801007f , - -0.458788f, 0.518184f, 0.721803f , - -0.405963f, 0.477089f, 0.779474f , - -0.390954f, 0.647348f, -0.654290f , - -0.477198f, 0.606961f, 0.635516f , - -0.390525f, 0.661960f, 0.639765f , - -0.372549f, 0.643700f, 0.668474f , - -0.467221f, 0.797303f, -0.382116f , - -0.503449f, 0.864025f, 0.000001f , - -0.225118f, 0.669536f, 0.707844f , - -0.196505f, 0.729236f, 0.655440f , - -0.301410f, 0.903605f, -0.304383f , - -0.376587f, 0.926381f, -0.000001f , - 0.003663f, 0.751703f, 0.659492f , - 0.028041f, 0.775336f, 0.630926f , - 0.013273f, 0.954890f, -0.296662f , - -0.061625f, 0.998099f, -0.000001f , - 0.126986f, 0.726685f, 0.675132f , - 0.160159f, 0.764892f, 0.623931f , - 0.194162f, 0.951556f, -0.238417f , - 0.175907f, 0.984407f, -0.000001f , - 0.185328f, 0.686500f, 0.703116f , - 0.214830f, 0.749508f, 0.626168f , - 0.271801f, 0.924847f, -0.266048f , - 0.256444f, 0.966559f, 0.000000f , - 0.051161f, 0.914046f, 0.402371f , - 0.215744f, 0.976450f, 0.000000f , - -0.208798f, 0.974843f, -0.078008f , - -0.233160f, 0.970257f, -0.065093f , - -0.233656f, 0.972319f, 0.000002f , - -0.233160f, 0.970257f, 0.065098f , - -0.208797f, 0.974843f, 0.078010f , - -0.748130f, 0.652703f, -0.119499f , - -0.177130f, 0.970625f, 0.162828f , - -0.216858f, 0.956511f, 0.195089f , - -0.205926f, 0.946472f, 0.248565f , - -0.194335f, 0.933490f, 0.301382f , - -0.169557f, 0.936453f, 0.307093f , - -0.909207f, 0.386051f, 0.155910f , - -0.349653f, 0.869728f, 0.348305f , - -0.723996f, 0.542902f, 0.425542f , - -0.936395f, 0.338041f, 0.094306f , - -0.887333f, 0.225260f, 0.402366f , - -0.361411f, 0.738701f, 0.568949f , - -0.573170f, 0.387535f, 0.722006f , - -0.716967f, 0.012362f, 0.696997f , - -0.880063f, 0.135720f, 0.455048f , - 0.040221f, 0.087068f, 0.995390f , - -0.178203f, 0.356728f, 0.917054f , - -0.499329f, -0.646580f, 0.576719f , - -0.472557f, -0.522748f, 0.709524f , - -0.520867f, -0.278293f, 0.807001f , - -0.008049f, -0.262857f, 0.964801f , - 0.673226f, 0.677724f, -0.295732f , - 0.234655f, -0.062031f, 0.970098f , - 0.635738f, -0.740294f, -0.218638f , - 0.102065f, -0.028560f, 0.994368f , - 0.488324f, -0.685345f, 0.540225f , - 0.414021f, -0.533488f, 0.737548f , - 0.806933f, 0.589529f, 0.036266f , - 0.865004f, 0.501747f, 0.004148f , - 0.822669f, 0.566305f, 0.050132f , - 0.837010f, 0.547184f, -0.001955f , - 0.851268f, 0.453923f, 0.263244f , - 0.828126f, 0.495016f, 0.262994f , - 0.744015f, 0.479826f, 0.464983f , - 0.808601f, 0.436896f, 0.394064f , - 0.575704f, 0.400359f, 0.712936f , - 0.736478f, 0.383219f, 0.557443f , - 0.748573f, 0.340709f, 0.568820f , - 0.719026f, 0.463536f, 0.517818f , - -0.284771f, -0.894527f, 0.344568f , - 0.758686f, 0.337841f, 0.557010f , - 0.785631f, 0.384670f, 0.484575f , - 0.852228f, 0.350768f, 0.388162f , - 0.942606f, -0.166038f, 0.289698f , - 0.831745f, -0.449842f, 0.325334f , - 0.523727f, 0.840878f, 0.136508f , - 0.463533f, 0.886080f, -0.000001f , - 0.621526f, 0.780978f, 0.061467f , - 0.536744f, 0.418691f, 0.732532f , - 0.414345f, 0.786322f, -0.458275f , - 0.325952f, 0.945378f, 0.003870f , - -0.074682f, 0.751959f, -0.654966f , - -0.244225f, 0.918990f, 0.309533f , - -0.428506f, -0.679047f, 0.596051f , - 0.188716f, -0.443859f, 0.876000f , - -0.233236f, -0.592741f, 0.770882f , - 0.843049f, 0.523557f, 0.123112f , - 0.755507f, 0.655141f, 0.000045f , - 0.465063f, -0.075441f, 0.882057f , - 0.980977f, -0.007910f, -0.193963f , - 0.462879f, 0.138504f, 0.875534f , - 0.582264f, 0.114088f, 0.804955f , - 0.705652f, 0.210413f, 0.676596f , - 0.681124f, -0.190386f, 0.706982f , - 0.236833f, -0.020156f, 0.971341f , - 0.250334f, 0.049512f, 0.966893f , - 0.636653f, 0.182604f, 0.749219f , - 0.483537f, -0.191440f, 0.854133f , - 0.256013f, -0.025924f, 0.966326f , - 0.296494f, -0.009128f, 0.954991f , - 0.344474f, -0.200718f, 0.917088f , - 0.896496f, 0.416592f, -0.150817f , - 0.932261f, 0.361715f, 0.007240f , - 0.885825f, 0.464019f, 0.000147f , - 0.932192f, 0.361890f, -0.007297f , - 0.599237f, 0.797804f, -0.066511f , - 0.746215f, 0.664750f, -0.035648f , - 0.821503f, 0.570204f, -0.000595f , - 0.362787f, 0.917959f, -0.160426f , - 0.875797f, -0.465134f, -0.128956f , - 0.907175f, -0.420751f, -0.001229f , - 0.506854f, -0.151893f, 0.848544f , - 0.918098f, -0.326934f, -0.224077f , - 0.833885f, -0.443145f, -0.329026f , - 0.978280f, -0.207288f, 0.000000f , - -0.282977f, -0.376760f, 0.882029f , - -0.053057f, -0.389842f, 0.919352f , - 0.645979f, 0.411403f, 0.643007f , - 0.844241f, 0.069229f, 0.531474f , - -0.006340f, -0.567653f, 0.823243f , - 0.079347f, -0.415723f, 0.906023f , - 0.275838f, -0.311734f, 0.909250f , - -0.239531f, -0.425633f, 0.872618f , - -0.193586f, -0.466733f, 0.862951f , - 0.280270f, -0.641982f, 0.713659f , - -0.116065f, -0.491184f, 0.863289f , - -0.321254f, -0.673282f, 0.665949f , - 0.370679f, -0.381473f, 0.846803f , - 0.005742f, -0.382095f, 0.924105f , - -0.139378f, -0.378420f, 0.915080f , - -0.340365f, -0.852063f, -0.397668f , - -0.250260f, -0.968178f, -0.000626f , - -0.340274f, -0.852039f, 0.397797f , - -0.478589f, -0.866409f, -0.142434f , - -0.242833f, -0.640074f, 0.728929f , - -0.335713f, -0.929891f, -0.150329f , - -0.404532f, -0.914524f, 0.000000f , - -0.224194f, -0.901342f, -0.370567f , - -0.211130f, -0.977458f, 0.000000f , - -0.337902f, -0.810294f, 0.478797f , - 0.034852f, -0.654395f, 0.755349f , - 0.474685f, -0.689469f, 0.547089f , - -0.046558f, -0.998916f, 0.000000f , - -0.221883f, 0.974985f, -0.013131f , - -0.112253f, 0.993651f, -0.007536f , - -0.283124f, 0.959031f, -0.010060f , - 0.459534f, -0.116156f, 0.880532f - -// Faces -15932 - 1959, 0, 1956 ,0, 1, 2 ,0, 0, 0 , - 1959, 1956, 1955 ,0, 2, 3 ,0, 0, 0 , - 1964, 4, 1961 ,4, 5, 6 ,0, 0, 0 , - 1964, 1961, 1960 ,4, 6, 7 ,0, 0, 0 , - 1969, 8, 1966 ,8, 9, 10 ,0, 0, 0 , - 1969, 1966, 1965 ,8, 10, 11 ,0, 0, 0 , - 1973, 12, 1971 ,12, 13, 14 ,0, 0, 0 , - 1973, 1971, 1970 ,12, 14, 15 ,0, 0, 0 , - 1978, 15, 1975 ,16, 17, 18 ,0, 0, 0 , - 1978, 1975, 1974 ,16, 18, 19 ,0, 0, 0 , - 1983, 19, 1980 ,20, 21, 22 ,0, 0, 0 , - 1983, 1980, 1979 ,20, 22, 23 ,0, 0, 0 , - 1989, 23, 1985 ,24, 25, 26 ,0, 0, 0 , - 1989, 1985, 1984 ,24, 26, 27 ,0, 0, 0 , - 1994, 28, 1991 ,28, 29, 30 ,0, 0, 0 , - 1994, 1991, 1990 ,28, 30, 31 ,0, 0, 0 , - 1999, 32, 1996 ,32, 33, 34 ,0, 0, 0 , - 1999, 1996, 1995 ,32, 34, 35 ,0, 0, 0 , - 2003, 36, 2001 ,36, 37, 38 ,0, 0, 0 , - 2003, 2001, 2000 ,36, 38, 39 ,0, 0, 0 , - 2007, 39, 2005 ,40, 41, 42 ,0, 0, 0 , - 2007, 2005, 2004 ,40, 42, 43 ,0, 0, 0 , - 2012, 42, 2009 ,44, 45, 46 ,0, 0, 0 , - 2012, 2009, 2008 ,44, 46, 47 ,0, 0, 0 , - 2017, 46, 2014 ,48, 49, 50 ,0, 0, 0 , - 2017, 2014, 2013 ,48, 50, 51 ,0, 0, 0 , - 2024, 50, 2019 ,52, 53, 54 ,0, 0, 0 , - 2024, 2019, 2018 ,52, 54, 55 ,0, 0, 0 , - 2028, 56, 2026 ,56, 57, 58 ,0, 0, 0 , - 2028, 2026, 2025 ,56, 58, 59 ,0, 0, 0 , - 2032, 59, 2030 ,60, 61, 62 ,0, 0, 0 , - 2032, 2030, 2029 ,60, 62, 63 ,0, 0, 0 , - 2037, 62, 2034 ,64, 65, 66 ,0, 0, 0 , - 2037, 2034, 2033 ,64, 66, 67 ,0, 0, 0 , - 2041, 66, 2039 ,68, 69, 70 ,0, 0, 0 , - 2041, 2039, 2038 ,68, 70, 71 ,0, 0, 0 , - 2044, 69, 2043 ,72, 73, 74 ,0, 0, 0 , - 2044, 2043, 2042 ,72, 74, 75 ,0, 0, 0 , - 2050, 70, 2046 ,76, 77, 78 ,0, 0, 0 , - 2050, 2046, 2045 ,76, 78, 79 ,0, 0, 0 , - 2055, 75, 2052 ,80, 81, 82 ,0, 0, 0 , - 2055, 2052, 2051 ,80, 82, 83 ,0, 0, 0 , - 2059, 80, 2057 ,84, 85, 86 ,0, 0, 0 , - 2059, 2057, 2056 ,84, 86, 87 ,0, 0, 0 , - 2063, 82, 2061 ,88, 89, 90 ,0, 0, 0 , - 2063, 2061, 2060 ,88, 90, 91 ,0, 0, 0 , - 2041, 68, 2061 ,68, 92, 90 ,0, 0, 0 , - 2041, 2061, 2064 ,68, 90, 93 ,0, 0, 0 , - 2069, 84, 2067 ,94, 95, 96 ,0, 0, 0 , - 2069, 2067, 2066 ,94, 96, 97 ,0, 0, 0 , - 2073, 87, 2071 ,98, 99, 100 ,0, 0, 0 , - 2073, 2071, 2070 ,98, 100, 101 ,0, 0, 0 , - 2077, 90, 2075 ,102, 103, 104 ,0, 0, 0 , - 2077, 2075, 2074 ,102, 104, 105 ,0, 0, 0 , - 2080, 93, 2079 ,106, 107, 108 ,0, 0, 0 , - 2080, 2079, 2078 ,106, 108, 109 ,0, 0, 0 , - 2083, 94, 2082 ,110, 111, 112 ,0, 0, 0 , - 2083, 2082, 2081 ,110, 112, 113 ,0, 0, 0 , - 2088, 97, 2085 ,114, 115, 116 ,0, 0, 0 , - 2088, 2085, 2084 ,114, 116, 117 ,0, 0, 0 , - 2093, 101, 2090 ,118, 119, 120 ,0, 0, 0 , - 2093, 2090, 2089 ,118, 120, 121 ,0, 0, 0 , - 2097, 105, 2095 ,122, 123, 124 ,0, 0, 0 , - 2097, 2095, 2094 ,122, 124, 125 ,0, 0, 0 , - 2102, 108, 2099 ,126, 127, 128 ,0, 0, 0 , - 2102, 2099, 2098 ,126, 128, 129 ,0, 0, 0 , - 2106, 112, 2104 ,130, 131, 132 ,0, 0, 0 , - 2106, 2104, 2103 ,130, 132, 133 ,0, 0, 0 , - 2111, 115, 2108 ,134, 135, 136 ,0, 0, 0 , - 2111, 2108, 2107 ,134, 136, 137 ,0, 0, 0 , - 2116, 119, 2113 ,138, 139, 140 ,0, 0, 0 , - 2116, 2113, 2112 ,138, 140, 141 ,0, 0, 0 , - 2121, 123, 2118 ,142, 143, 144 ,0, 0, 0 , - 2121, 2118, 2117 ,142, 144, 145 ,0, 0, 0 , - 2125, 107, 2123 ,146, 147, 148 ,0, 0, 0 , - 2125, 2123, 2122 ,146, 148, 149 ,0, 0, 0 , - 2129, 129, 2127 ,150, 151, 152 ,0, 0, 0 , - 2129, 2127, 2126 ,150, 152, 153 ,0, 0, 0 , - 2134, 132, 2131 ,154, 155, 156 ,0, 0, 0 , - 2134, 2131, 2130 ,154, 156, 157 ,0, 0, 0 , - 2137, 138, 2136 ,158, 159, 160 ,0, 0, 0 , - 2137, 2136, 2135 ,158, 160, 161 ,0, 0, 0 , - 2136, 138, 2139 ,160, 159, 162 ,0, 0, 0 , - 2136, 2139, 2138 ,160, 162, 163 ,0, 0, 0 , - 2144, 136, 2141 ,164, 165, 166 ,0, 0, 0 , - 2144, 2141, 2140 ,164, 166, 167 ,0, 0, 0 , - 2148, 142, 2146 ,168, 169, 170 ,0, 0, 0 , - 2148, 2146, 2145 ,168, 170, 171 ,0, 0, 0 , - 2148, 144, 2150 ,168, 172, 173 ,0, 0, 0 , - 2148, 2150, 2149 ,168, 173, 174 ,0, 0, 0 , - 2156, 146, 2153 ,175, 176, 177 ,0, 0, 0 , - 2156, 2153, 2152 ,175, 177, 178 ,0, 0, 0 , - 2160, 150, 2158 ,179, 180, 181 ,0, 0, 0 , - 2160, 2158, 2157 ,179, 181, 182 ,0, 0, 0 , - 2165, 153, 2162 ,183, 184, 185 ,0, 0, 0 , - 2165, 2162, 2161 ,183, 185, 186 ,0, 0, 0 , - 2169, 157, 2167 ,187, 188, 189 ,0, 0, 0 , - 2169, 2167, 2166 ,187, 189, 190 ,0, 0, 0 , - 2174, 160, 2171 ,191, 192, 193 ,0, 0, 0 , - 2174, 2171, 2170 ,191, 193, 194 ,0, 0, 0 , - 2179, 164, 2176 ,195, 196, 197 ,0, 0, 0 , - 2179, 2176, 2175 ,195, 197, 198 ,0, 0, 0 , - 2184, 168, 2181 ,199, 200, 201 ,0, 0, 0 , - 2184, 2181, 2180 ,199, 201, 202 ,0, 0, 0 , - 2189, 173, 2186 ,203, 204, 205 ,0, 0, 0 , - 2189, 2186, 2185 ,203, 205, 206 ,0, 0, 0 , - 2195, 177, 2191 ,207, 208, 209 ,0, 0, 0 , - 2195, 2191, 2190 ,207, 209, 210 ,0, 0, 0 , - 2200, 182, 2197 ,211, 212, 213 ,0, 0, 0 , - 2200, 2197, 2196 ,211, 213, 214 ,0, 0, 0 , - 2204, 186, 2202 ,215, 216, 217 ,0, 0, 0 , - 2204, 2202, 2201 ,215, 217, 218 ,0, 0, 0 , - 2209, 189, 2206 ,219, 220, 221 ,0, 0, 0 , - 2209, 2206, 2205 ,219, 221, 222 ,0, 0, 0 , - 2214, 193, 2211 ,223, 224, 225 ,0, 0, 0 , - 2214, 2211, 2210 ,223, 225, 226 ,0, 0, 0 , - 2219, 197, 2216 ,227, 228, 229 ,0, 0, 0 , - 2219, 2216, 2215 ,227, 229, 230 ,0, 0, 0 , - 2224, 201, 2221 ,231, 232, 233 ,0, 0, 0 , - 2224, 2221, 2220 ,231, 233, 234 ,0, 0, 0 , - 2229, 205, 2226 ,235, 236, 237 ,0, 0, 0 , - 2229, 2226, 2225 ,235, 237, 238 ,0, 0, 0 , - 2234, 209, 2231 ,239, 240, 241 ,0, 0, 0 , - 2234, 2231, 2230 ,239, 241, 242 ,0, 0, 0 , - 2239, 213, 2236 ,243, 244, 245 ,0, 0, 0 , - 2239, 2236, 2235 ,243, 245, 246 ,0, 0, 0 , - 2244, 217, 2241 ,247, 248, 249 ,0, 0, 0 , - 2244, 2241, 2240 ,247, 249, 250 ,0, 0, 0 , - 2250, 221, 2246 ,251, 252, 253 ,0, 0, 0 , - 2250, 2246, 2245 ,251, 253, 254 ,0, 0, 0 , - 2256, 226, 2252 ,255, 256, 257 ,0, 0, 0 , - 2256, 2252, 2251 ,255, 257, 258 ,0, 0, 0 , - 2262, 231, 2258 ,259, 260, 261 ,0, 0, 0 , - 2262, 2258, 2257 ,259, 261, 262 ,0, 0, 0 , - 2267, 236, 2264 ,263, 264, 265 ,0, 0, 0 , - 2267, 2264, 2263 ,263, 265, 266 ,0, 0, 0 , - 2271, 240, 2269 ,267, 268, 269 ,0, 0, 0 , - 2271, 2269, 2268 ,267, 269, 270 ,0, 0, 0 , - 2276, 243, 2273 ,271, 272, 273 ,0, 0, 0 , - 2276, 2273, 2272 ,271, 273, 274 ,0, 0, 0 , - 2281, 247, 2278 ,275, 276, 277 ,0, 0, 0 , - 2281, 2278, 2277 ,275, 277, 278 ,0, 0, 0 , - 2285, 251, 2283 ,279, 280, 281 ,0, 0, 0 , - 2285, 2283, 2282 ,279, 281, 282 ,0, 0, 0 , - 2290, 254, 2287 ,283, 284, 285 ,0, 0, 0 , - 2290, 2287, 2286 ,283, 285, 286 ,0, 0, 0 , - 2294, 258, 2292 ,287, 288, 289 ,0, 0, 0 , - 2294, 2292, 2291 ,287, 289, 290 ,0, 0, 0 , - 2298, 261, 2296 ,291, 292, 293 ,0, 0, 0 , - 2298, 2296, 2295 ,291, 293, 294 ,0, 0, 0 , - 2296, 261, 2300 ,293, 292, 295 ,0, 0, 0 , - 2296, 2300, 2299 ,293, 295, 296 ,0, 0, 0 , - 2306, 265, 2303 ,297, 298, 299 ,0, 0, 0 , - 2306, 2303, 2302 ,297, 299, 300 ,0, 0, 0 , - 2310, 240, 2308 ,301, 268, 302 ,0, 0, 0 , - 2310, 2308, 2307 ,301, 302, 303 ,0, 0, 0 , - 2310, 271, 2312 ,301, 304, 305 ,0, 0, 0 , - 2310, 2312, 2311 ,301, 305, 306 ,0, 0, 0 , - 2316, 272, 2314 ,307, 308, 309 ,0, 0, 0 , - 2316, 2314, 2313 ,307, 309, 310 ,0, 0, 0 , - 2321, 275, 2318 ,311, 312, 313 ,0, 0, 0 , - 2321, 2318, 2317 ,311, 313, 314 ,0, 0, 0 , - 2326, 279, 2323 ,315, 316, 317 ,0, 0, 0 , - 2326, 2323, 2322 ,315, 317, 318 ,0, 0, 0 , - 2331, 283, 2328 ,319, 320, 321 ,0, 0, 0 , - 2331, 2328, 2327 ,319, 321, 322 ,0, 0, 0 , - 2336, 287, 2333 ,323, 324, 325 ,0, 0, 0 , - 2336, 2333, 2332 ,323, 325, 326 ,0, 0, 0 , - 2341, 291, 2338 ,327, 328, 329 ,0, 0, 0 , - 2341, 2338, 2337 ,327, 329, 330 ,0, 0, 0 , - 2346, 295, 2343 ,331, 332, 333 ,0, 0, 0 , - 2346, 2343, 2342 ,331, 333, 334 ,0, 0, 0 , - 2351, 303, 2348 ,335, 336, 337 ,0, 0, 0 , - 2351, 2348, 2347 ,335, 337, 338 ,0, 0, 0 , - 2356, 312, 2353 ,339, 340, 341 ,0, 0, 0 , - 2356, 2353, 2352 ,339, 341, 342 ,0, 0, 0 , - 2360, 316, 2358 ,343, 344, 345 ,0, 0, 0 , - 2360, 2358, 2357 ,343, 345, 346 ,0, 0, 0 , - 2365, 319, 2362 ,347, 348, 349 ,0, 0, 0 , - 2365, 2362, 2361 ,347, 349, 350 ,0, 0, 0 , - 2370, 323, 2367 ,351, 352, 353 ,0, 0, 0 , - 2370, 2367, 2366 ,351, 353, 354 ,0, 0, 0 , - 2375, 327, 2372 ,355, 356, 357 ,0, 0, 0 , - 2375, 2372, 2371 ,355, 357, 358 ,0, 0, 0 , - 2380, 331, 2377 ,359, 360, 361 ,0, 0, 0 , - 2380, 2377, 2376 ,359, 361, 362 ,0, 0, 0 , - 2385, 335, 2382 ,363, 364, 365 ,0, 0, 0 , - 2385, 2382, 2381 ,363, 365, 366 ,0, 0, 0 , - 2390, 339, 2387 ,367, 368, 369 ,0, 0, 0 , - 2390, 2387, 2386 ,367, 369, 370 ,0, 0, 0 , - 2395, 343, 2392 ,371, 372, 373 ,0, 0, 0 , - 2395, 2392, 2391 ,371, 373, 374 ,0, 0, 0 , - 2400, 347, 2397 ,375, 376, 377 ,0, 0, 0 , - 2400, 2397, 2396 ,375, 377, 378 ,0, 0, 0 , - 2405, 351, 2402 ,379, 380, 381 ,0, 0, 0 , - 2405, 2402, 2401 ,379, 381, 382 ,0, 0, 0 , - 2409, 355, 2407 ,383, 384, 385 ,0, 0, 0 , - 2409, 2407, 2406 ,383, 385, 386 ,0, 0, 0 , - 2414, 358, 2411 ,387, 388, 389 ,0, 0, 0 , - 2414, 2411, 2410 ,387, 389, 390 ,0, 0, 0 , - 2419, 362, 2416 ,391, 392, 393 ,0, 0, 0 , - 2419, 2416, 2415 ,391, 393, 394 ,0, 0, 0 , - 2424, 366, 2421 ,395, 396, 397 ,0, 0, 0 , - 2424, 2421, 2420 ,395, 397, 398 ,0, 0, 0 , - 2428, 370, 2426 ,399, 400, 401 ,0, 0, 0 , - 2428, 2426, 2425 ,399, 401, 402 ,0, 0, 0 , - 2433, 373, 2430 ,403, 404, 405 ,0, 0, 0 , - 2433, 2430, 2429 ,403, 405, 406 ,0, 0, 0 , - 2437, 377, 2435 ,407, 408, 409 ,0, 0, 0 , - 2437, 2435, 2434 ,407, 409, 410 ,0, 0, 0 , - 2441, 380, 2439 ,411, 412, 413 ,0, 0, 0 , - 2441, 2439, 2438 ,411, 413, 414 ,0, 0, 0 , - 2445, 383, 2443 ,415, 416, 417 ,0, 0, 0 , - 2445, 2443, 2442 ,415, 417, 418 ,0, 0, 0 , - 2450, 386, 2447 ,419, 420, 421 ,0, 0, 0 , - 2450, 2447, 2446 ,419, 421, 422 ,0, 0, 0 , - 2455, 390, 2452 ,423, 424, 425 ,0, 0, 0 , - 2455, 2452, 2451 ,423, 425, 426 ,0, 0, 0 , - 2460, 394, 2457 ,427, 428, 429 ,0, 0, 0 , - 2460, 2457, 2456 ,427, 429, 430 ,0, 0, 0 , - 2463, 398, 2462 ,431, 432, 433 ,0, 0, 0 , - 2463, 2462, 2461 ,431, 433, 434 ,0, 0, 0 , - 2467, 399, 2465 ,435, 436, 437 ,0, 0, 0 , - 2467, 2465, 2464 ,435, 437, 438 ,0, 0, 0 , - 2472, 402, 2469 ,439, 440, 441 ,0, 0, 0 , - 2472, 2469, 2468 ,439, 441, 442 ,0, 0, 0 , - 2476, 406, 2474 ,443, 444, 445 ,0, 0, 0 , - 2476, 2474, 2473 ,443, 445, 446 ,0, 0, 0 , - 2481, 409, 2478 ,447, 448, 449 ,0, 0, 0 , - 2481, 2478, 2477 ,447, 449, 450 ,0, 0, 0 , - 2486, 413, 2483 ,451, 452, 453 ,0, 0, 0 , - 2486, 2483, 2482 ,451, 453, 454 ,0, 0, 0 , - 2491, 417, 2488 ,455, 456, 457 ,0, 0, 0 , - 2491, 2488, 2487 ,455, 457, 458 ,0, 0, 0 , - 2496, 421, 2493 ,459, 460, 461 ,0, 0, 0 , - 2496, 2493, 2492 ,459, 461, 462 ,0, 0, 0 , - 2501, 425, 2498 ,463, 464, 465 ,0, 0, 0 , - 2501, 2498, 2497 ,463, 465, 466 ,0, 0, 0 , - 2505, 429, 2503 ,467, 468, 469 ,0, 0, 0 , - 2505, 2503, 2502 ,467, 469, 470 ,0, 0, 0 , - 2509, 432, 2507 ,471, 472, 473 ,0, 0, 0 , - 2509, 2507, 2506 ,471, 473, 474 ,0, 0, 0 , - 2514, 435, 2511 ,475, 476, 477 ,0, 0, 0 , - 2514, 2511, 2510 ,475, 477, 478 ,0, 0, 0 , - 2519, 439, 2516 ,479, 480, 481 ,0, 0, 0 , - 2519, 2516, 2515 ,479, 481, 482 ,0, 0, 0 , - 2524, 443, 2521 ,483, 484, 485 ,0, 0, 0 , - 2524, 2521, 2520 ,483, 485, 486 ,0, 0, 0 , - 2528, 447, 2526 ,487, 488, 489 ,0, 0, 0 , - 2528, 2526, 2525 ,487, 489, 490 ,0, 0, 0 , - 2533, 450, 2530 ,491, 492, 493 ,0, 0, 0 , - 2533, 2530, 2529 ,491, 493, 494 ,0, 0, 0 , - 2538, 454, 2535 ,495, 496, 497 ,0, 0, 0 , - 2538, 2535, 2534 ,495, 497, 498 ,0, 0, 0 , - 2543, 458, 2540 ,499, 500, 501 ,0, 0, 0 , - 2543, 2540, 2539 ,499, 501, 502 ,0, 0, 0 , - 2548, 462, 2545 ,503, 504, 505 ,0, 0, 0 , - 2548, 2545, 2544 ,503, 505, 506 ,0, 0, 0 , - 2553, 466, 2550 ,507, 508, 509 ,0, 0, 0 , - 2553, 2550, 2549 ,507, 509, 510 ,0, 0, 0 , - 2558, 470, 2555 ,511, 512, 513 ,0, 0, 0 , - 2558, 2555, 2554 ,511, 513, 514 ,0, 0, 0 , - 2563, 474, 2560 ,515, 516, 517 ,0, 0, 0 , - 2563, 2560, 2559 ,515, 517, 518 ,0, 0, 0 , - 2568, 478, 2565 ,519, 520, 521 ,0, 0, 0 , - 2568, 2565, 2564 ,519, 521, 522 ,0, 0, 0 , - 2573, 482, 2570 ,523, 524, 525 ,0, 0, 0 , - 2573, 2570, 2569 ,523, 525, 526 ,0, 0, 0 , - 2578, 486, 2575 ,527, 528, 529 ,0, 0, 0 , - 2578, 2575, 2574 ,527, 529, 530 ,0, 0, 0 , - 2583, 490, 2580 ,531, 532, 533 ,0, 0, 0 , - 2583, 2580, 2579 ,531, 533, 534 ,0, 0, 0 , - 2588, 494, 2585 ,535, 536, 537 ,0, 0, 0 , - 2588, 2585, 2584 ,535, 537, 538 ,0, 0, 0 , - 2593, 498, 2590 ,539, 540, 541 ,0, 0, 0 , - 2593, 2590, 2589 ,539, 541, 542 ,0, 0, 0 , - 2598, 502, 2595 ,543, 544, 545 ,0, 0, 0 , - 2598, 2595, 2594 ,543, 545, 546 ,0, 0, 0 , - 2602, 506, 2600 ,547, 548, 549 ,0, 0, 0 , - 2602, 2600, 2599 ,547, 549, 550 ,0, 0, 0 , - 2606, 509, 2604 ,551, 552, 553 ,0, 0, 0 , - 2606, 2604, 2603 ,551, 553, 554 ,0, 0, 0 , - 2611, 512, 2608 ,555, 556, 557 ,0, 0, 0 , - 2611, 2608, 2607 ,555, 557, 558 ,0, 0, 0 , - 2615, 516, 2613 ,559, 560, 561 ,0, 0, 0 , - 2615, 2613, 2612 ,559, 561, 562 ,0, 0, 0 , - 2620, 519, 2617 ,563, 564, 565 ,0, 0, 0 , - 2620, 2617, 2616 ,563, 565, 566 ,0, 0, 0 , - 2625, 523, 2622 ,567, 568, 569 ,0, 0, 0 , - 2625, 2622, 2621 ,567, 569, 570 ,0, 0, 0 , - 2629, 527, 2627 ,571, 572, 573 ,0, 0, 0 , - 2629, 2627, 2626 ,571, 573, 574 ,0, 0, 0 , - 2633, 530, 2631 ,575, 576, 577 ,0, 0, 0 , - 2633, 2631, 2630 ,575, 577, 578 ,0, 0, 0 , - 2638, 533, 2635 ,579, 580, 581 ,0, 0, 0 , - 2638, 2635, 2634 ,579, 581, 582 ,0, 0, 0 , - 2643, 537, 2640 ,583, 584, 585 ,0, 0, 0 , - 2643, 2640, 2639 ,583, 585, 586 ,0, 0, 0 , - 2647, 541, 2645 ,587, 588, 589 ,0, 0, 0 , - 2647, 2645, 2644 ,587, 589, 590 ,0, 0, 0 , - 2651, 544, 2649 ,591, 592, 593 ,0, 0, 0 , - 2651, 2649, 2648 ,591, 593, 594 ,0, 0, 0 , - 2656, 547, 2653 ,595, 596, 597 ,0, 0, 0 , - 2656, 2653, 2652 ,595, 597, 598 ,0, 0, 0 , - 2661, 551, 2658 ,599, 600, 601 ,0, 0, 0 , - 2661, 2658, 2657 ,599, 601, 602 ,0, 0, 0 , - 2666, 555, 2663 ,603, 604, 605 ,0, 0, 0 , - 2666, 2663, 2662 ,603, 605, 606 ,0, 0, 0 , - 2670, 559, 2668 ,607, 608, 609 ,0, 0, 0 , - 2670, 2668, 2667 ,607, 609, 610 ,0, 0, 0 , - 2674, 562, 2672 ,611, 612, 613 ,0, 0, 0 , - 2674, 2672, 2671 ,611, 613, 614 ,0, 0, 0 , - 2679, 565, 2676 ,615, 616, 617 ,0, 0, 0 , - 2679, 2676, 2675 ,615, 617, 618 ,0, 0, 0 , - 2684, 569, 2681 ,619, 620, 621 ,0, 0, 0 , - 2684, 2681, 2680 ,619, 621, 622 ,0, 0, 0 , - 2689, 573, 2686 ,623, 624, 625 ,0, 0, 0 , - 2689, 2686, 2685 ,623, 625, 626 ,0, 0, 0 , - 2694, 577, 2691 ,627, 628, 629 ,0, 0, 0 , - 2694, 2691, 2690 ,627, 629, 630 ,0, 0, 0 , - 2699, 581, 2696 ,631, 632, 633 ,0, 0, 0 , - 2699, 2696, 2695 ,631, 633, 634 ,0, 0, 0 , - 2704, 585, 2701 ,635, 636, 637 ,0, 0, 0 , - 2704, 2701, 2700 ,635, 637, 638 ,0, 0, 0 , - 2709, 589, 2706 ,639, 640, 641 ,0, 0, 0 , - 2709, 2706, 2705 ,639, 641, 642 ,0, 0, 0 , - 2714, 593, 2711 ,643, 644, 645 ,0, 0, 0 , - 2714, 2711, 2710 ,643, 645, 646 ,0, 0, 0 , - 2719, 597, 2716 ,647, 648, 649 ,0, 0, 0 , - 2719, 2716, 2715 ,647, 649, 650 ,0, 0, 0 , - 2723, 601, 2721 ,651, 652, 653 ,0, 0, 0 , - 2723, 2721, 2720 ,651, 653, 654 ,0, 0, 0 , - 2727, 604, 2725 ,655, 656, 657 ,0, 0, 0 , - 2727, 2725, 2724 ,655, 657, 658 ,0, 0, 0 , - 2732, 607, 2729 ,659, 660, 661 ,0, 0, 0 , - 2732, 2729, 2728 ,659, 661, 662 ,0, 0, 0 , - 2736, 611, 2734 ,663, 664, 665 ,0, 0, 0 , - 2736, 2734, 2733 ,663, 665, 666 ,0, 0, 0 , - 2740, 614, 2738 ,667, 668, 669 ,0, 0, 0 , - 2740, 2738, 2737 ,667, 669, 670 ,0, 0, 0 , - 2745, 617, 2742 ,671, 672, 673 ,0, 0, 0 , - 2745, 2742, 2741 ,671, 673, 674 ,0, 0, 0 , - 2750, 621, 2747 ,675, 676, 677 ,0, 0, 0 , - 2750, 2747, 2746 ,675, 677, 678 ,0, 0, 0 , - 2755, 625, 2752 ,679, 680, 681 ,0, 0, 0 , - 2755, 2752, 2751 ,679, 681, 682 ,0, 0, 0 , - 2760, 629, 2757 ,683, 684, 685 ,0, 0, 0 , - 2760, 2757, 2756 ,683, 685, 686 ,0, 0, 0 , - 2765, 633, 2762 ,687, 688, 689 ,0, 0, 0 , - 2765, 2762, 2761 ,687, 689, 690 ,0, 0, 0 , - 2770, 637, 2767 ,691, 692, 693 ,0, 0, 0 , - 2770, 2767, 2766 ,691, 693, 694 ,0, 0, 0 , - 2774, 641, 2772 ,695, 696, 697 ,0, 0, 0 , - 2774, 2772, 2771 ,695, 697, 698 ,0, 0, 0 , - 2778, 644, 2776 ,699, 700, 701 ,0, 0, 0 , - 2778, 2776, 2775 ,699, 701, 702 ,0, 0, 0 , - 2782, 647, 2780 ,703, 704, 705 ,0, 0, 0 , - 2782, 2780, 2779 ,703, 705, 706 ,0, 0, 0 , - 2787, 650, 2784 ,707, 708, 709 ,0, 0, 0 , - 2787, 2784, 2783 ,707, 709, 710 ,0, 0, 0 , - 2792, 654, 2789 ,711, 712, 713 ,0, 0, 0 , - 2792, 2789, 2788 ,711, 713, 714 ,0, 0, 0 , - 2797, 658, 2794 ,715, 716, 717 ,0, 0, 0 , - 2797, 2794, 2793 ,715, 717, 718 ,0, 0, 0 , - 2802, 662, 2799 ,719, 720, 721 ,0, 0, 0 , - 2802, 2799, 2798 ,719, 721, 722 ,0, 0, 0 , - 2807, 666, 2804 ,723, 724, 725 ,0, 0, 0 , - 2807, 2804, 2803 ,723, 725, 726 ,0, 0, 0 , - 2811, 670, 2809 ,727, 728, 729 ,0, 0, 0 , - 2811, 2809, 2808 ,727, 729, 730 ,0, 0, 0 , - 2815, 673, 2813 ,731, 732, 733 ,0, 0, 0 , - 2815, 2813, 2812 ,731, 733, 734 ,0, 0, 0 , - 2827, 676, 2817 ,735, 736, 737 ,0, 0, 0 , - 2827, 2817, 2816 ,735, 737, 738 ,0, 0, 0 , - 2831, 687, 2829 ,739, 740, 741 ,0, 0, 0 , - 2831, 2829, 2828 ,739, 741, 742 ,0, 0, 0 , - 2836, 690, 2833 ,743, 744, 745 ,0, 0, 0 , - 2836, 2833, 2832 ,743, 745, 746 ,0, 0, 0 , - 2841, 694, 2838 ,747, 748, 749 ,0, 0, 0 , - 2841, 2838, 2837 ,747, 749, 750 ,0, 0, 0 , - 2846, 698, 2843 ,751, 752, 753 ,0, 0, 0 , - 2846, 2843, 2842 ,751, 753, 754 ,0, 0, 0 , - 2851, 702, 2848 ,755, 756, 757 ,0, 0, 0 , - 2851, 2848, 2847 ,755, 757, 758 ,0, 0, 0 , - 2856, 706, 2853 ,759, 760, 761 ,0, 0, 0 , - 2856, 2853, 2852 ,759, 761, 762 ,0, 0, 0 , - 2861, 710, 2858 ,763, 764, 765 ,0, 0, 0 , - 2861, 2858, 2857 ,763, 765, 766 ,0, 0, 0 , - 2866, 714, 2863 ,767, 768, 769 ,0, 0, 0 , - 2866, 2863, 2862 ,767, 769, 770 ,0, 0, 0 , - 2872, 718, 2868 ,771, 772, 773 ,0, 0, 0 , - 2872, 2868, 2867 ,771, 773, 774 ,0, 0, 0 , - 2876, 723, 2874 ,775, 776, 777 ,0, 0, 0 , - 2876, 2874, 2873 ,775, 777, 778 ,0, 0, 0 , - 2880, 726, 2878 ,779, 780, 781 ,0, 0, 0 , - 2880, 2878, 2877 ,779, 781, 782 ,0, 0, 0 , - 2885, 729, 2882 ,783, 784, 785 ,0, 0, 0 , - 2885, 2882, 2881 ,783, 785, 786 ,0, 0, 0 , - 2890, 733, 2887 ,787, 788, 789 ,0, 0, 0 , - 2890, 2887, 2886 ,787, 789, 790 ,0, 0, 0 , - 2895, 737, 2892 ,791, 792, 793 ,0, 0, 0 , - 2895, 2892, 2891 ,791, 793, 794 ,0, 0, 0 , - 2899, 741, 2897 ,795, 796, 797 ,0, 0, 0 , - 2899, 2897, 2896 ,795, 797, 798 ,0, 0, 0 , - 2904, 744, 2901 ,799, 800, 801 ,0, 0, 0 , - 2904, 2901, 2900 ,799, 801, 802 ,0, 0, 0 , - 2909, 748, 2906 ,803, 804, 805 ,0, 0, 0 , - 2909, 2906, 2905 ,803, 805, 806 ,0, 0, 0 , - 2913, 752, 2911 ,807, 808, 809 ,0, 0, 0 , - 2913, 2911, 2910 ,807, 809, 810 ,0, 0, 0 , - 2917, 755, 2915 ,811, 812, 813 ,0, 0, 0 , - 2917, 2915, 2914 ,811, 813, 814 ,0, 0, 0 , - 2922, 758, 2919 ,815, 816, 817 ,0, 0, 0 , - 2922, 2919, 2918 ,815, 817, 818 ,0, 0, 0 , - 2926, 762, 2924 ,819, 820, 821 ,0, 0, 0 , - 2926, 2924, 2923 ,819, 821, 822 ,0, 0, 0 , - 2929, 765, 2928 ,823, 824, 825 ,0, 0, 0 , - 2929, 2928, 2927 ,823, 825, 826 ,0, 0, 0 , - 2933, 766, 2931 ,827, 828, 829 ,0, 0, 0 , - 2933, 2931, 2930 ,827, 829, 830 ,0, 0, 0 , - 2938, 769, 2935 ,831, 832, 833 ,0, 0, 0 , - 2938, 2935, 2934 ,831, 833, 834 ,0, 0, 0 , - 2942, 773, 2940 ,835, 836, 837 ,0, 0, 0 , - 2942, 2940, 2939 ,835, 837, 838 ,0, 0, 0 , - 2947, 776, 2944 ,839, 840, 841 ,0, 0, 0 , - 2947, 2944, 2943 ,839, 841, 842 ,0, 0, 0 , - 2952, 780, 2949 ,843, 844, 845 ,0, 0, 0 , - 2952, 2949, 2948 ,843, 845, 846 ,0, 0, 0 , - 2956, 784, 2954 ,847, 848, 849 ,0, 0, 0 , - 2956, 2954, 2953 ,847, 849, 850 ,0, 0, 0 , - 2961, 787, 2958 ,851, 852, 853 ,0, 0, 0 , - 2961, 2958, 2957 ,851, 853, 854 ,0, 0, 0 , - 2966, 791, 2963 ,855, 856, 857 ,0, 0, 0 , - 2966, 2963, 2962 ,855, 857, 858 ,0, 0, 0 , - 2971, 795, 2968 ,859, 860, 861 ,0, 0, 0 , - 2971, 2968, 2967 ,859, 861, 862 ,0, 0, 0 , - 2976, 799, 2973 ,863, 864, 865 ,0, 0, 0 , - 2976, 2973, 2972 ,863, 865, 866 ,0, 0, 0 , - 2981, 803, 2978 ,867, 868, 869 ,0, 0, 0 , - 2981, 2978, 2977 ,867, 869, 870 ,0, 0, 0 , - 2986, 807, 2983 ,871, 872, 873 ,0, 0, 0 , - 2986, 2983, 2982 ,871, 873, 874 ,0, 0, 0 , - 2991, 811, 2988 ,875, 876, 877 ,0, 0, 0 , - 2991, 2988, 2987 ,875, 877, 878 ,0, 0, 0 , - 2996, 815, 2993 ,879, 880, 881 ,0, 0, 0 , - 2996, 2993, 2992 ,879, 881, 882 ,0, 0, 0 , - 3002, 819, 2998 ,883, 884, 885 ,0, 0, 0 , - 3002, 2998, 2997 ,883, 885, 886 ,0, 0, 0 , - 3007, 824, 3004 ,887, 888, 889 ,0, 0, 0 , - 3007, 3004, 3003 ,887, 889, 890 ,0, 0, 0 , - 3012, 828, 3009 ,891, 892, 893 ,0, 0, 0 , - 3012, 3009, 3008 ,891, 893, 894 ,0, 0, 0 , - 3017, 832, 3014 ,895, 896, 897 ,0, 0, 0 , - 3017, 3014, 3013 ,895, 897, 898 ,0, 0, 0 , - 3022, 836, 3019 ,899, 900, 901 ,0, 0, 0 , - 3022, 3019, 3018 ,899, 901, 902 ,0, 0, 0 , - 3027, 840, 3024 ,903, 904, 905 ,0, 0, 0 , - 3027, 3024, 3023 ,903, 905, 906 ,0, 0, 0 , - 3032, 844, 3029 ,907, 908, 909 ,0, 0, 0 , - 3032, 3029, 3028 ,907, 909, 910 ,0, 0, 0 , - 3037, 848, 3034 ,911, 912, 913 ,0, 0, 0 , - 3037, 3034, 3033 ,911, 913, 914 ,0, 0, 0 , - 3041, 852, 3039 ,915, 916, 917 ,0, 0, 0 , - 3041, 3039, 3038 ,915, 917, 918 ,0, 0, 0 , - 3045, 855, 3043 ,919, 920, 921 ,0, 0, 0 , - 3045, 3043, 3042 ,919, 921, 922 ,0, 0, 0 , - 3049, 858, 3047 ,923, 924, 925 ,0, 0, 0 , - 3049, 3047, 3046 ,923, 925, 926 ,0, 0, 0 , - 3054, 861, 3051 ,927, 928, 929 ,0, 0, 0 , - 3054, 3051, 3050 ,927, 929, 930 ,0, 0, 0 , - 3058, 865, 3056 ,931, 932, 933 ,0, 0, 0 , - 3058, 3056, 3055 ,931, 933, 934 ,0, 0, 0 , - 3063, 868, 3060 ,935, 936, 937 ,0, 0, 0 , - 3063, 3060, 3059 ,935, 937, 938 ,0, 0, 0 , - 3067, 873, 3065 ,939, 940, 941 ,0, 0, 0 , - 3067, 3065, 3064 ,939, 941, 942 ,0, 0, 0 , - 3071, 876, 3069 ,943, 944, 945 ,0, 0, 0 , - 3071, 3069, 3068 ,943, 945, 946 ,0, 0, 0 , - 3075, 879, 3073 ,947, 948, 949 ,0, 0, 0 , - 3075, 3073, 3072 ,947, 949, 950 ,0, 0, 0 , - 3081, 882, 3077 ,951, 952, 953 ,0, 0, 0 , - 3081, 3077, 3076 ,951, 953, 954 ,0, 0, 0 , - 3085, 887, 3083 ,955, 956, 957 ,0, 0, 0 , - 3085, 3083, 3082 ,955, 957, 958 ,0, 0, 0 , - 3090, 890, 3087 ,959, 960, 961 ,0, 0, 0 , - 3090, 3087, 3086 ,959, 961, 962 ,0, 0, 0 , - 3095, 894, 3092 ,963, 964, 965 ,0, 0, 0 , - 3095, 3092, 3091 ,963, 965, 966 ,0, 0, 0 , - 3102, 898, 3097 ,967, 968, 969 ,0, 0, 0 , - 3102, 3097, 3096 ,967, 969, 970 ,0, 0, 0 , - 3106, 904, 3104 ,971, 972, 973 ,0, 0, 0 , - 3106, 3104, 3103 ,971, 973, 974 ,0, 0, 0 , - 3113, 907, 3108 ,975, 976, 977 ,0, 0, 0 , - 3113, 3108, 3107 ,975, 977, 978 ,0, 0, 0 , - 3118, 913, 3115 ,979, 980, 981 ,0, 0, 0 , - 3118, 3115, 3114 ,979, 981, 982 ,0, 0, 0 , - 3122, 917, 3120 ,983, 984, 985 ,0, 0, 0 , - 3122, 3120, 3119 ,983, 985, 986 ,0, 0, 0 , - 3127, 920, 3124 ,987, 988, 989 ,0, 0, 0 , - 3127, 3124, 3123 ,987, 989, 990 ,0, 0, 0 , - 3131, 924, 3129 ,991, 992, 993 ,0, 0, 0 , - 3131, 3129, 3128 ,991, 993, 994 ,0, 0, 0 , - 3135, 927, 3133 ,995, 996, 997 ,0, 0, 0 , - 3135, 3133, 3132 ,995, 997, 998 ,0, 0, 0 , - 3140, 930, 3137 ,999, 1000, 1001 ,0, 0, 0 , - 3140, 3137, 3136 ,999, 1001, 1002 ,0, 0, 0 , - 3144, 934, 3142 ,1003, 1004, 1005 ,0, 0, 0 , - 3144, 3142, 3141 ,1003, 1005, 1006 ,0, 0, 0 , - 3148, 937, 3146 ,1007, 1008, 1009 ,0, 0, 0 , - 3148, 3146, 3145 ,1007, 1009, 1010 ,0, 0, 0 , - 3152, 940, 3150 ,1011, 1012, 1013 ,0, 0, 0 , - 3152, 3150, 3149 ,1011, 1013, 1014 ,0, 0, 0 , - 3156, 943, 3154 ,1015, 1016, 1017 ,0, 0, 0 , - 3156, 3154, 3153 ,1015, 1017, 1018 ,0, 0, 0 , - 3161, 946, 3158 ,1019, 1020, 1021 ,0, 0, 0 , - 3161, 3158, 3157 ,1019, 1021, 1022 ,0, 0, 0 , - 3165, 299, 3163 ,1023, 1024, 1025 ,0, 0, 0 , - 3165, 3163, 3162 ,1023, 1025, 1026 ,0, 0, 0 , - 3169, 300, 3167 ,1027, 1028, 1029 ,0, 0, 0 , - 3169, 3167, 3166 ,1027, 1029, 1030 ,0, 0, 0 , - 3173, 300, 3171 ,1031, 1028, 1032 ,0, 0, 0 , - 3173, 3171, 3170 ,1031, 1032, 1033 ,0, 0, 0 , - 3171, 300, 3175 ,1032, 1028, 1034 ,0, 0, 0 , - 3171, 3175, 3174 ,1032, 1034, 1035 ,0, 0, 0 , - 3178, 300, 3169 ,1036, 1028, 1027 ,0, 0, 0 , - 3178, 3169, 3176 ,1036, 1027, 1037 ,0, 0, 0 , - 3182, 302, 3180 ,1038, 1039, 1040 ,0, 0, 0 , - 3182, 3180, 3179 ,1038, 1040, 1041 ,0, 0, 0 , - 3186, 957, 3184 ,1042, 1043, 1044 ,0, 0, 0 , - 3186, 3184, 3183 ,1042, 1044, 1045 ,0, 0, 0 , - 3189, 302, 3182 ,1046, 1039, 1038 ,0, 0, 0 , - 3189, 3182, 3187 ,1046, 1038, 1047 ,0, 0, 0 , - 3193, 307, 3191 ,1048, 1049, 1050 ,0, 0, 0 , - 3193, 3191, 3190 ,1048, 1050, 1051 ,0, 0, 0 , - 3191, 307, 3195 ,1050, 1049, 1052 ,0, 0, 0 , - 3191, 3195, 3194 ,1050, 1052, 1053 ,0, 0, 0 , - 3199, 311, 3198 ,1054, 1055, 1056 ,0, 0, 0 , - 3199, 3198, 3197 ,1054, 1056, 1057 ,0, 0, 0 , - 3198, 311, 3201 ,1056, 1055, 1058 ,0, 0, 0 , - 3198, 3201, 3200 ,1056, 1058, 1059 ,0, 0, 0 , - 3206, 310, 3204 ,1060, 1061, 1062 ,0, 0, 0 , - 3206, 3204, 3203 ,1060, 1062, 1063 ,0, 0, 0 , - 3210, 967, 3208 ,1064, 1065, 1066 ,0, 0, 0 , - 3210, 3208, 3207 ,1064, 1066, 1067 ,0, 0, 0 , - 3213, 310, 3206 ,1068, 1061, 1060 ,0, 0, 0 , - 3213, 3206, 3211 ,1068, 1060, 1069 ,0, 0, 0 , - 3218, 309, 3215 ,1070, 1071, 1072 ,0, 0, 0 , - 3218, 3215, 3214 ,1070, 1072, 1073 ,0, 0, 0 , - 3216, 308, 3215 ,1074, 1075, 1072 ,0, 0, 0 , - 3216, 3215, 3219 ,1074, 1072, 1076 ,0, 0, 0 , - 3223, 872, 3221 ,1077, 1078, 1079 ,0, 0, 0 , - 3223, 3221, 3220 ,1077, 1079, 1080 ,0, 0, 0 , - 3226, 872, 3223 ,1081, 1078, 1077 ,0, 0, 0 , - 3226, 3223, 3224 ,1081, 1077, 1082 ,0, 0, 0 , - 3229, 872, 3226 ,1083, 1078, 1081 ,0, 0, 0 , - 3229, 3226, 3227 ,1083, 1081, 1084 ,0, 0, 0 , - 2831, 689, 3231 ,739, 1085, 1086 ,0, 0, 0 , - 2831, 3231, 3230 ,739, 1086, 1087 ,0, 0, 0 , - 3231, 689, 3234 ,1086, 1085, 1088 ,0, 0, 0 , - 3231, 3234, 3233 ,1086, 1088, 1089 ,0, 0, 0 , - 3234, 689, 3237 ,1088, 1085, 1090 ,0, 0, 0 , - 3234, 3237, 3236 ,1088, 1090, 1091 ,0, 0, 0 , - 3242, 689, 3240 ,1092, 1085, 1093 ,0, 0, 0 , - 3242, 3240, 3239 ,1092, 1093, 1094 ,0, 0, 0 , - 3246, 985, 3244 ,1095, 1096, 1097 ,0, 0, 0 , - 3246, 3244, 3243 ,1095, 1097, 1098 ,0, 0, 0 , - 3249, 984, 3248 ,1099, 1100, 1101 ,0, 0, 0 , - 3249, 3248, 3247 ,1099, 1101, 1102 ,0, 0, 0 , - 3253, 989, 3251 ,1103, 1104, 1105 ,0, 0, 0 , - 3253, 3251, 3250 ,1103, 1105, 1106 ,0, 0, 0 , - 3252, 987, 3255 ,1107, 1108, 1109 ,0, 0, 0 , - 3252, 3255, 3254 ,1107, 1109, 1110 ,0, 0, 0 , - 3260, 992, 3258 ,1111, 1112, 1113 ,0, 0, 0 , - 3260, 3258, 3257 ,1111, 1113, 1114 ,0, 0, 0 , - 3264, 992, 3262 ,1115, 1112, 1116 ,0, 0, 0 , - 3264, 3262, 3261 ,1115, 1116, 1117 ,0, 0, 0 , - 3262, 992, 3266 ,1116, 1112, 1118 ,0, 0, 0 , - 3262, 3266, 3265 ,1116, 1118, 1119 ,0, 0, 0 , - 3266, 992, 3269 ,1118, 1112, 1120 ,0, 0, 0 , - 3266, 3269, 3268 ,1118, 1120, 1121 ,0, 0, 0 , - 3274, 987, 3272 ,1122, 1108, 1123 ,0, 0, 0 , - 3274, 3272, 3271 ,1122, 1123, 1124 ,0, 0, 0 , - 3277, 987, 3274 ,1125, 1108, 1122 ,0, 0, 0 , - 3277, 3274, 3275 ,1125, 1122, 1126 ,0, 0, 0 , - 3280, 987, 3277 ,1127, 1108, 1125 ,0, 0, 0 , - 3280, 3277, 3278 ,1127, 1125, 1128 ,0, 0, 0 , - 3285, 1004, 3282 ,1129, 1130, 1131 ,0, 0, 0 , - 3285, 3282, 3281 ,1129, 1131, 1132 ,0, 0, 0 , - 3283, 1005, 3282 ,1133, 1134, 1131 ,0, 0, 0 , - 3283, 3282, 3286 ,1133, 1131, 1135 ,0, 0, 0 , - 3290, 1010, 3288 ,1136, 1137, 1138 ,0, 0, 0 , - 3290, 3288, 3287 ,1136, 1138, 1139 ,0, 0, 0 , - 3294, 1011, 3292 ,1140, 1141, 1142 ,0, 0, 0 , - 3294, 3292, 3291 ,1140, 1142, 1143 ,0, 0, 0 , - 3297, 1010, 3290 ,1144, 1137, 1136 ,0, 0, 0 , - 3297, 3290, 3295 ,1144, 1136, 1145 ,0, 0, 0 , - 3301, 1015, 3299 ,1146, 1147, 1148 ,0, 0, 0 , - 3301, 3299, 3298 ,1146, 1148, 1149 ,0, 0, 0 , - 3299, 1015, 3303 ,1148, 1147, 1150 ,0, 0, 0 , - 3299, 3303, 3302 ,1148, 1150, 1151 ,0, 0, 0 , - 3308, 1017, 3306 ,1152, 1153, 1154 ,0, 0, 0 , - 3308, 3306, 3305 ,1152, 1154, 1155 ,0, 0, 0 , - 3306, 1017, 3304 ,1154, 1153, 1156 ,0, 0, 0 , - 3306, 3304, 3309 ,1154, 1156, 1157 ,0, 0, 0 , - 3314, 1023, 3312 ,1158, 1159, 1160 ,0, 0, 0 , - 3314, 3312, 3311 ,1158, 1160, 1161 ,0, 0, 0 , - 3318, 1025, 3316 ,1162, 1163, 1164 ,0, 0, 0 , - 3318, 3316, 3315 ,1162, 1164, 1165 ,0, 0, 0 , - 3321, 1023, 3314 ,1166, 1159, 1158 ,0, 0, 0 , - 3321, 3314, 3319 ,1166, 1158, 1167 ,0, 0, 0 , - 3325, 1030, 3323 ,1168, 1169, 1170 ,0, 0, 0 , - 3325, 3323, 3322 ,1168, 1170, 1171 ,0, 0, 0 , - 3329, 1030, 3327 ,1172, 1169, 1173 ,0, 0, 0 , - 3329, 3327, 3326 ,1172, 1173, 1174 ,0, 0, 0 , - 3327, 1030, 3331 ,1173, 1169, 1175 ,0, 0, 0 , - 3327, 3331, 3330 ,1173, 1175, 1176 ,0, 0, 0 , - 3335, 1030, 3325 ,1177, 1169, 1168 ,0, 0, 0 , - 3335, 3325, 3333 ,1177, 1168, 1178 ,0, 0, 0 , - 3338, 1035, 3337 ,1179, 1180, 1181 ,0, 0, 0 , - 3338, 3337, 3336 ,1179, 1181, 1182 ,0, 0, 0 , - 3343, 1036, 3340 ,1183, 1184, 1185 ,0, 0, 0 , - 3343, 3340, 3339 ,1183, 1185, 1186 ,0, 0, 0 , - 3347, 1040, 3345 ,1187, 1188, 1189 ,0, 0, 0 , - 3347, 3345, 3344 ,1187, 1189, 1190 ,0, 0, 0 , - 3351, 1043, 3349 ,1191, 1192, 1193 ,0, 0, 0 , - 3351, 3349, 3348 ,1191, 1193, 1194 ,0, 0, 0 , - 3355, 1046, 3353 ,1195, 1196, 1197 ,0, 0, 0 , - 3355, 3353, 3352 ,1195, 1197, 1198 ,0, 0, 0 , - 3359, 1049, 3357 ,1199, 1200, 1201 ,0, 0, 0 , - 3359, 3357, 3356 ,1199, 1201, 1202 ,0, 0, 0 , - 3364, 1052, 3361 ,1203, 1204, 1205 ,0, 0, 0 , - 3364, 3361, 3360 ,1203, 1205, 1206 ,0, 0, 0 , - 3368, 1056, 3366 ,1207, 1208, 1209 ,0, 0, 0 , - 3368, 3366, 3365 ,1207, 1209, 1210 ,0, 0, 0 , - 3372, 1059, 3370 ,1211, 1212, 1213 ,0, 0, 0 , - 3372, 3370, 3369 ,1211, 1213, 1214 ,0, 0, 0 , - 3377, 1062, 3374 ,1215, 1216, 1217 ,0, 0, 0 , - 3377, 3374, 3373 ,1215, 1217, 1218 ,0, 0, 0 , - 3381, 1066, 3379 ,1219, 1220, 1221 ,0, 0, 0 , - 3381, 3379, 3378 ,1219, 1221, 1222 ,0, 0, 0 , - 3386, 1069, 3383 ,1223, 1224, 1225 ,0, 0, 0 , - 3386, 3383, 3382 ,1223, 1225, 1226 ,0, 0, 0 , - 3393, 1073, 3388 ,1227, 1228, 1229 ,0, 0, 0 , - 3393, 3388, 3387 ,1227, 1229, 1230 ,0, 0, 0 , - 3397, 1079, 3395 ,1231, 1232, 1233 ,0, 0, 0 , - 3397, 3395, 3394 ,1231, 1233, 1234 ,0, 0, 0 , - 3404, 1082, 3399 ,1235, 1236, 1237 ,0, 0, 0 , - 3404, 3399, 3398 ,1235, 1237, 1238 ,0, 0, 0 , - 3409, 1088, 3406 ,1239, 1240, 1241 ,0, 0, 0 , - 3409, 3406, 3405 ,1239, 1241, 1242 ,0, 0, 0 , - 3414, 1092, 3411 ,1243, 1244, 1245 ,0, 0, 0 , - 3414, 3411, 3410 ,1243, 1245, 1246 ,0, 0, 0 , - 3418, 1096, 3416 ,1247, 1248, 1249 ,0, 0, 0 , - 3418, 3416, 3415 ,1247, 1249, 1250 ,0, 0, 0 , - 3424, 1099, 3420 ,1251, 1252, 1253 ,0, 0, 0 , - 3424, 3420, 3419 ,1251, 1253, 1254 ,0, 0, 0 , - 3428, 1104, 3426 ,1255, 1256, 1257 ,0, 0, 0 , - 3428, 3426, 3425 ,1255, 1257, 1258 ,0, 0, 0 , - 3432, 1107, 3430 ,1259, 1260, 1261 ,0, 0, 0 , - 3432, 3430, 3429 ,1259, 1261, 1262 ,0, 0, 0 , - 3436, 1110, 3434 ,1263, 1264, 1265 ,0, 0, 0 , - 3436, 3434, 3433 ,1263, 1265, 1266 ,0, 0, 0 , - 3441, 1113, 3438 ,1267, 1268, 1269 ,0, 0, 0 , - 3441, 3438, 3437 ,1267, 1269, 1270 ,0, 0, 0 , - 3445, 1117, 3443 ,1271, 1272, 1273 ,0, 0, 0 , - 3445, 3443, 3442 ,1271, 1273, 1274 ,0, 0, 0 , - 3450, 1120, 3447 ,1275, 1276, 1277 ,0, 0, 0 , - 3450, 3447, 3446 ,1275, 1277, 1278 ,0, 0, 0 , - 3454, 1124, 3452 ,1279, 1280, 1281 ,0, 0, 0 , - 3454, 3452, 3451 ,1279, 1281, 1282 ,0, 0, 0 , - 3458, 1127, 3456 ,1283, 1284, 1285 ,0, 0, 0 , - 3458, 3456, 3455 ,1283, 1285, 1286 ,0, 0, 0 , - 3462, 1130, 3460 ,1287, 1288, 1289 ,0, 0, 0 , - 3462, 3460, 3459 ,1287, 1289, 1290 ,0, 0, 0 , - 3467, 1133, 3464 ,1291, 1292, 1293 ,0, 0, 0 , - 3467, 3464, 3463 ,1291, 1293, 1294 ,0, 0, 0 , - 3472, 1137, 3469 ,1295, 1296, 1297 ,0, 0, 0 , - 3472, 3469, 3468 ,1295, 1297, 1298 ,0, 0, 0 , - 3477, 1141, 3474 ,1299, 1300, 1301 ,0, 0, 0 , - 3477, 3474, 3473 ,1299, 1301, 1302 ,0, 0, 0 , - 3482, 1145, 3479 ,1303, 1304, 1305 ,0, 0, 0 , - 3482, 3479, 3478 ,1303, 1305, 1306 ,0, 0, 0 , - 3487, 1149, 3484 ,1307, 1308, 1309 ,0, 0, 0 , - 3487, 3484, 3483 ,1307, 1309, 1310 ,0, 0, 0 , - 3492, 1153, 3489 ,1311, 1312, 1313 ,0, 0, 0 , - 3492, 3489, 3488 ,1311, 1313, 1314 ,0, 0, 0 , - 3497, 1157, 3494 ,1315, 1316, 1317 ,0, 0, 0 , - 3497, 3494, 3493 ,1315, 1317, 1318 ,0, 0, 0 , - 3503, 1161, 3499 ,1319, 1320, 1321 ,0, 0, 0 , - 3503, 3499, 3498 ,1319, 1321, 1322 ,0, 0, 0 , - 3508, 1166, 3505 ,1323, 1324, 1325 ,0, 0, 0 , - 3508, 3505, 3504 ,1323, 1325, 1326 ,0, 0, 0 , - 3513, 1170, 3510 ,1327, 1328, 1329 ,0, 0, 0 , - 3513, 3510, 3509 ,1327, 1329, 1330 ,0, 0, 0 , - 3518, 1174, 3515 ,1331, 1332, 1333 ,0, 0, 0 , - 3518, 3515, 3514 ,1331, 1333, 1334 ,0, 0, 0 , - 3523, 1178, 3520 ,1335, 1336, 1337 ,0, 0, 0 , - 3523, 3520, 3519 ,1335, 1337, 1338 ,0, 0, 0 , - 3528, 1182, 3525 ,1339, 1340, 1341 ,0, 0, 0 , - 3528, 3525, 3524 ,1339, 1341, 1342 ,0, 0, 0 , - 3533, 1186, 3530 ,1343, 1344, 1345 ,0, 0, 0 , - 3533, 3530, 3529 ,1343, 1345, 1346 ,0, 0, 0 , - 3538, 1190, 3535 ,1347, 1348, 1349 ,0, 0, 0 , - 3538, 3535, 3534 ,1347, 1349, 1350 ,0, 0, 0 , - 3543, 1194, 3540 ,1351, 1352, 1353 ,0, 0, 0 , - 3543, 3540, 3539 ,1351, 1353, 1354 ,0, 0, 0 , - 3547, 1198, 3545 ,1355, 1356, 1357 ,0, 0, 0 , - 3547, 3545, 3544 ,1355, 1357, 1358 ,0, 0, 0 , - 3552, 1201, 3549 ,1359, 1360, 1361 ,0, 0, 0 , - 3552, 3549, 3548 ,1359, 1361, 1362 ,0, 0, 0 , - 3557, 1205, 3554 ,1363, 1364, 1365 ,0, 0, 0 , - 3557, 3554, 3553 ,1363, 1365, 1366 ,0, 0, 0 , - 3561, 1209, 3559 ,1367, 1368, 1369 ,0, 0, 0 , - 3561, 3559, 3558 ,1367, 1369, 1370 ,0, 0, 0 , - 3566, 1212, 3563 ,1371, 1372, 1373 ,0, 0, 0 , - 3566, 3563, 3562 ,1371, 1373, 1374 ,0, 0, 0 , - 3570, 1216, 3568 ,1375, 1376, 1377 ,0, 0, 0 , - 3570, 3568, 3567 ,1375, 1377, 1378 ,0, 0, 0 , - 3574, 1219, 3572 ,1379, 1380, 1381 ,0, 0, 0 , - 3574, 3572, 3571 ,1379, 1381, 1382 ,0, 0, 0 , - 3573, 1220, 3576 ,1383, 1384, 1385 ,0, 0, 0 , - 3573, 3576, 3575 ,1383, 1385, 1386 ,0, 0, 0 , - 3582, 1223, 3579 ,1387, 1388, 1389 ,0, 0, 0 , - 3582, 3579, 3578 ,1387, 1389, 1390 ,0, 0, 0 , - 3586, 1227, 3584 ,1391, 1392, 1393 ,0, 0, 0 , - 3586, 3584, 3583 ,1391, 1393, 1394 ,0, 0, 0 , - 3590, 1230, 3588 ,1395, 1396, 1397 ,0, 0, 0 , - 3590, 3588, 3587 ,1395, 1397, 1398 ,0, 0, 0 , - 3595, 1233, 3592 ,1399, 1400, 1401 ,0, 0, 0 , - 3595, 3592, 3591 ,1399, 1401, 1402 ,0, 0, 0 , - 3600, 1237, 3597 ,1403, 1404, 1405 ,0, 0, 0 , - 3600, 3597, 3596 ,1403, 1405, 1406 ,0, 0, 0 , - 3604, 1241, 3602 ,1407, 1408, 1409 ,0, 0, 0 , - 3604, 3602, 3601 ,1407, 1409, 1410 ,0, 0, 0 , - 3609, 1244, 3606 ,1411, 1412, 1413 ,0, 0, 0 , - 3609, 3606, 3605 ,1411, 1413, 1414 ,0, 0, 0 , - 3614, 1248, 3611 ,1415, 1416, 1417 ,0, 0, 0 , - 3614, 3611, 3610 ,1415, 1417, 1418 ,0, 0, 0 , - 3619, 1252, 3616 ,1419, 1420, 1421 ,0, 0, 0 , - 3619, 3616, 3615 ,1419, 1421, 1422 ,0, 0, 0 , - 3623, 1256, 3621 ,1423, 1424, 1425 ,0, 0, 0 , - 3623, 3621, 3620 ,1423, 1425, 1426 ,0, 0, 0 , - 3627, 1259, 3625 ,1427, 1428, 1429 ,0, 0, 0 , - 3627, 3625, 3624 ,1427, 1429, 1430 ,0, 0, 0 , - 3633, 1262, 3629 ,1431, 1432, 1433 ,0, 0, 0 , - 3633, 3629, 3628 ,1431, 1433, 1434 ,0, 0, 0 , - 3638, 1267, 3635 ,1435, 1436, 1437 ,0, 0, 0 , - 3638, 3635, 3634 ,1435, 1437, 1438 ,0, 0, 0 , - 3643, 1271, 3640 ,1439, 1440, 1441 ,0, 0, 0 , - 3643, 3640, 3639 ,1439, 1441, 1442 ,0, 0, 0 , - 3648, 1275, 3645 ,1443, 1444, 1445 ,0, 0, 0 , - 3648, 3645, 3644 ,1443, 1445, 1446 ,0, 0, 0 , - 3653, 1279, 3650 ,1447, 1448, 1449 ,0, 0, 0 , - 3653, 3650, 3649 ,1447, 1449, 1450 ,0, 0, 0 , - 3658, 1283, 3655 ,1451, 1452, 1453 ,0, 0, 0 , - 3658, 3655, 3654 ,1451, 1453, 1454 ,0, 0, 0 , - 3663, 1287, 3660 ,1455, 1456, 1457 ,0, 0, 0 , - 3663, 3660, 3659 ,1455, 1457, 1458 ,0, 0, 0 , - 3668, 1291, 3665 ,1459, 1460, 1461 ,0, 0, 0 , - 3668, 3665, 3664 ,1459, 1461, 1462 ,0, 0, 0 , - 3671, 998, 3269 ,1463, 1464, 1120 ,0, 0, 0 , - 3671, 3269, 3669 ,1463, 1120, 1465 ,0, 0, 0 , - 3683, 1296, 3673 ,1466, 1467, 1468 ,0, 0, 0 , - 3683, 3673, 3672 ,1466, 1468, 1469 ,0, 0, 0 , - 3687, 1307, 3685 ,1470, 1471, 1472 ,0, 0, 0 , - 3687, 3685, 3684 ,1470, 1472, 1473 ,0, 0, 0 , - 3691, 1310, 3689 ,1474, 1475, 1476 ,0, 0, 0 , - 3691, 3689, 3688 ,1474, 1476, 1477 ,0, 0, 0 , - 3696, 1313, 3693 ,1478, 1479, 1480 ,0, 0, 0 , - 3696, 3693, 3692 ,1478, 1480, 1481 ,0, 0, 0 , - 3701, 1317, 3698 ,1482, 1483, 1484 ,0, 0, 0 , - 3701, 3698, 3697 ,1482, 1484, 1485 ,0, 0, 0 , - 3706, 1321, 3703 ,1486, 1487, 1488 ,0, 0, 0 , - 3706, 3703, 3702 ,1486, 1488, 1489 ,0, 0, 0 , - 3711, 1325, 3708 ,1490, 1491, 1492 ,0, 0, 0 , - 3711, 3708, 3707 ,1490, 1492, 1493 ,0, 0, 0 , - 3716, 1329, 3713 ,1494, 1495, 1496 ,0, 0, 0 , - 3716, 3713, 3712 ,1494, 1496, 1497 ,0, 0, 0 , - 3720, 1333, 3718 ,1498, 1499, 1500 ,0, 0, 0 , - 3720, 3718, 3717 ,1498, 1500, 1501 ,0, 0, 0 , - 3724, 1336, 3722 ,1502, 1503, 1504 ,0, 0, 0 , - 3724, 3722, 3721 ,1502, 1504, 1505 ,0, 0, 0 , - 3728, 1339, 3726 ,1506, 1507, 1508 ,0, 0, 0 , - 3728, 3726, 3725 ,1506, 1508, 1509 ,0, 0, 0 , - 3733, 1342, 3730 ,1510, 1511, 1512 ,0, 0, 0 , - 3733, 3730, 3729 ,1510, 1512, 1513 ,0, 0, 0 , - 3738, 1346, 3735 ,1514, 1515, 1516 ,0, 0, 0 , - 3738, 3735, 3734 ,1514, 1516, 1517 ,0, 0, 0 , - 3743, 1350, 3740 ,1518, 1519, 1520 ,0, 0, 0 , - 3743, 3740, 3739 ,1518, 1520, 1521 ,0, 0, 0 , - 3748, 1354, 3745 ,1522, 1523, 1524 ,0, 0, 0 , - 3748, 3745, 3744 ,1522, 1524, 1525 ,0, 0, 0 , - 3753, 1358, 3750 ,1526, 1527, 1528 ,0, 0, 0 , - 3753, 3750, 3749 ,1526, 1528, 1529 ,0, 0, 0 , - 3758, 1362, 3755 ,1530, 1531, 1532 ,0, 0, 0 , - 3758, 3755, 3754 ,1530, 1532, 1533 ,0, 0, 0 , - 3762, 1366, 3760 ,1534, 1535, 1536 ,0, 0, 0 , - 3762, 3760, 3759 ,1534, 1536, 1537 ,0, 0, 0 , - 2735, 612, 3764 ,1538, 1539, 1540 ,0, 0, 0 , - 2735, 3764, 3763 ,1538, 1540, 1541 ,0, 0, 0 , - 3770, 1370, 3767 ,1542, 1543, 1544 ,0, 0, 0 , - 3770, 3767, 3766 ,1542, 1544, 1545 ,0, 0, 0 , - 2725, 604, 3772 ,657, 656, 1546 ,0, 0, 0 , - 2725, 3772, 3771 ,657, 1546, 1547 ,0, 0, 0 , - 3777, 1375, 3775 ,1548, 1549, 1550 ,0, 0, 0 , - 3777, 3775, 3774 ,1548, 1550, 1551 ,0, 0, 0 , - 3782, 1378, 3779 ,1552, 1553, 1554 ,0, 0, 0 , - 3782, 3779, 3778 ,1552, 1554, 1555 ,0, 0, 0 , - 3787, 1382, 3784 ,1556, 1557, 1558 ,0, 0, 0 , - 3787, 3784, 3783 ,1556, 1558, 1559 ,0, 0, 0 , - 3792, 1386, 3789 ,1560, 1561, 1562 ,0, 0, 0 , - 3792, 3789, 3788 ,1560, 1562, 1563 ,0, 0, 0 , - 3797, 1390, 3794 ,1564, 1565, 1566 ,0, 0, 0 , - 3797, 3794, 3793 ,1564, 1566, 1567 ,0, 0, 0 , - 3802, 1394, 3799 ,1568, 1569, 1570 ,0, 0, 0 , - 3802, 3799, 3798 ,1568, 1570, 1571 ,0, 0, 0 , - 3807, 1398, 3804 ,1572, 1573, 1574 ,0, 0, 0 , - 3807, 3804, 3803 ,1572, 1574, 1575 ,0, 0, 0 , - 3812, 1402, 3809 ,1576, 1577, 1578 ,0, 0, 0 , - 3812, 3809, 3808 ,1576, 1578, 1579 ,0, 0, 0 , - 3817, 1406, 3814 ,1580, 1581, 1582 ,0, 0, 0 , - 3817, 3814, 3813 ,1580, 1582, 1583 ,0, 0, 0 , - 3822, 1410, 3819 ,1584, 1585, 1586 ,0, 0, 0 , - 3822, 3819, 3818 ,1584, 1586, 1587 ,0, 0, 0 , - 3826, 1414, 3824 ,1588, 1589, 1590 ,0, 0, 0 , - 3826, 3824, 3823 ,1588, 1590, 1591 ,0, 0, 0 , - 3830, 1417, 3828 ,1592, 1593, 1594 ,0, 0, 0 , - 3830, 3828, 3827 ,1592, 1594, 1595 ,0, 0, 0 , - 3835, 1420, 3832 ,1596, 1597, 1598 ,0, 0, 0 , - 3835, 3832, 3831 ,1596, 1598, 1599 ,0, 0, 0 , - 3840, 1424, 3837 ,1600, 1601, 1602 ,0, 0, 0 , - 3840, 3837, 3836 ,1600, 1602, 1603 ,0, 0, 0 , - 3845, 1428, 3842 ,1604, 1605, 1606 ,0, 0, 0 , - 3845, 3842, 3841 ,1604, 1606, 1607 ,0, 0, 0 , - 3849, 1432, 3847 ,1608, 1609, 1610 ,0, 0, 0 , - 3849, 3847, 3846 ,1608, 1610, 1611 ,0, 0, 0 , - 3853, 1435, 3851 ,1612, 1613, 1614 ,0, 0, 0 , - 3853, 3851, 3850 ,1612, 1614, 1615 ,0, 0, 0 , - 3858, 1438, 3855 ,1616, 1617, 1618 ,0, 0, 0 , - 3858, 3855, 3854 ,1616, 1618, 1619 ,0, 0, 0 , - 3863, 1442, 3860 ,1620, 1621, 1622 ,0, 0, 0 , - 3863, 3860, 3859 ,1620, 1622, 1623 ,0, 0, 0 , - 3867, 1446, 3865 ,1624, 1625, 1626 ,0, 0, 0 , - 3867, 3865, 3864 ,1624, 1626, 1627 ,0, 0, 0 , - 3871, 1449, 3869 ,1628, 1629, 1630 ,0, 0, 0 , - 3871, 3869, 3868 ,1628, 1630, 1631 ,0, 0, 0 , - 3876, 1452, 3873 ,1632, 1633, 1634 ,0, 0, 0 , - 3876, 3873, 3872 ,1632, 1634, 1635 ,0, 0, 0 , - 3881, 1456, 3878 ,1636, 1637, 1638 ,0, 0, 0 , - 3881, 3878, 3877 ,1636, 1638, 1639 ,0, 0, 0 , - 3884, 1460, 3883 ,1640, 1641, 1642 ,0, 0, 0 , - 3884, 3883, 3882 ,1640, 1642, 1643 ,0, 0, 0 , - 3889, 1461, 3886 ,1644, 1645, 1646 ,0, 0, 0 , - 3889, 3886, 3885 ,1644, 1646, 1647 ,0, 0, 0 , - 3893, 1465, 3891 ,1648, 1649, 1650 ,0, 0, 0 , - 3893, 3891, 3890 ,1648, 1650, 1651 ,0, 0, 0 , - 3897, 1468, 3895 ,1652, 1653, 1654 ,0, 0, 0 , - 3897, 3895, 3894 ,1652, 1654, 1655 ,0, 0, 0 , - 3902, 1471, 3899 ,1656, 1657, 1658 ,0, 0, 0 , - 3902, 3899, 3898 ,1656, 1658, 1659 ,0, 0, 0 , - 3907, 1475, 3904 ,1660, 1661, 1662 ,0, 0, 0 , - 3907, 3904, 3903 ,1660, 1662, 1663 ,0, 0, 0 , - 3912, 1479, 3909 ,1664, 1665, 1666 ,0, 0, 0 , - 3912, 3909, 3908 ,1664, 1666, 1667 ,0, 0, 0 , - 3917, 1483, 3914 ,1668, 1669, 1670 ,0, 0, 0 , - 3917, 3914, 3913 ,1668, 1670, 1671 ,0, 0, 0 , - 3922, 1487, 3919 ,1672, 1673, 1674 ,0, 0, 0 , - 3922, 3919, 3918 ,1672, 1674, 1675 ,0, 0, 0 , - 3927, 1491, 3924 ,1676, 1677, 1678 ,0, 0, 0 , - 3927, 3924, 3923 ,1676, 1678, 1679 ,0, 0, 0 , - 3932, 1495, 3929 ,1680, 1681, 1682 ,0, 0, 0 , - 3932, 3929, 3928 ,1680, 1682, 1683 ,0, 0, 0 , - 3937, 1499, 3934 ,1684, 1685, 1686 ,0, 0, 0 , - 3937, 3934, 3933 ,1684, 1686, 1687 ,0, 0, 0 , - 3942, 1503, 3939 ,1688, 1689, 1690 ,0, 0, 0 , - 3942, 3939, 3938 ,1688, 1690, 1691 ,0, 0, 0 , - 3947, 1507, 3944 ,1692, 1693, 1694 ,0, 0, 0 , - 3947, 3944, 3943 ,1692, 1694, 1695 ,0, 0, 0 , - 3952, 1511, 3949 ,1696, 1697, 1698 ,0, 0, 0 , - 3952, 3949, 3948 ,1696, 1698, 1699 ,0, 0, 0 , - 3957, 1515, 3954 ,1700, 1701, 1702 ,0, 0, 0 , - 3957, 3954, 3953 ,1700, 1702, 1703 ,0, 0, 0 , - 3962, 1519, 3959 ,1704, 1705, 1706 ,0, 0, 0 , - 3962, 3959, 3958 ,1704, 1706, 1707 ,0, 0, 0 , - 3967, 1523, 3964 ,1708, 1709, 1710 ,0, 0, 0 , - 3967, 3964, 3963 ,1708, 1710, 1711 ,0, 0, 0 , - 3971, 1527, 3969 ,1712, 1713, 1714 ,0, 0, 0 , - 3971, 3969, 3968 ,1712, 1714, 1715 ,0, 0, 0 , - 3976, 1530, 3973 ,1716, 1717, 1718 ,0, 0, 0 , - 3976, 3973, 3972 ,1716, 1718, 1719 ,0, 0, 0 , - 3981, 1534, 3978 ,1720, 1721, 1722 ,0, 0, 0 , - 3981, 3978, 3977 ,1720, 1722, 1723 ,0, 0, 0 , - 3986, 1538, 3983 ,1724, 1725, 1726 ,0, 0, 0 , - 3986, 3983, 3982 ,1724, 1726, 1727 ,0, 0, 0 , - 3990, 1542, 3988 ,1728, 1729, 1730 ,0, 0, 0 , - 3990, 3988, 3987 ,1728, 1730, 1731 ,0, 0, 0 , - 3994, 1545, 3992 ,1732, 1733, 1734 ,0, 0, 0 , - 3994, 3992, 3991 ,1732, 1734, 1735 ,0, 0, 0 , - 3999, 1548, 3996 ,1736, 1737, 1738 ,0, 0, 0 , - 3999, 3996, 3995 ,1736, 1738, 1739 ,0, 0, 0 , - 4004, 1552, 4001 ,1740, 1741, 1742 ,0, 0, 0 , - 4004, 4001, 4000 ,1740, 1742, 1743 ,0, 0, 0 , - 4009, 1556, 4006 ,1744, 1745, 1746 ,0, 0, 0 , - 4009, 4006, 4005 ,1744, 1746, 1747 ,0, 0, 0 , - 4014, 1560, 4011 ,1748, 1749, 1750 ,0, 0, 0 , - 4014, 4011, 4010 ,1748, 1750, 1751 ,0, 0, 0 , - 4019, 1564, 4016 ,1752, 1753, 1754 ,0, 0, 0 , - 4019, 4016, 4015 ,1752, 1754, 1755 ,0, 0, 0 , - 4023, 1568, 4021 ,1756, 1757, 1758 ,0, 0, 0 , - 4023, 4021, 4020 ,1756, 1758, 1759 ,0, 0, 0 , - 4028, 1571, 4025 ,1760, 1761, 1762 ,0, 0, 0 , - 4028, 4025, 4024 ,1760, 1762, 1763 ,0, 0, 0 , - 4032, 1575, 4030 ,1764, 1765, 1766 ,0, 0, 0 , - 4032, 4030, 4029 ,1764, 1766, 1767 ,0, 0, 0 , - 4035, 398, 2463 ,1768, 432, 431 ,0, 0, 0 , - 4035, 2463, 4033 ,1768, 431, 1769 ,0, 0, 0 , - 4040, 1579, 4037 ,1770, 1771, 1772 ,0, 0, 0 , - 4040, 4037, 4036 ,1770, 1772, 1773 ,0, 0, 0 , - 4045, 1583, 4042 ,1774, 1775, 1776 ,0, 0, 0 , - 4045, 4042, 4041 ,1774, 1776, 1777 ,0, 0, 0 , - 4050, 1587, 4047 ,1778, 1779, 1780 ,0, 0, 0 , - 4050, 4047, 4046 ,1778, 1780, 1781 ,0, 0, 0 , - 4054, 1591, 4052 ,1782, 1783, 1784 ,0, 0, 0 , - 4054, 4052, 4051 ,1782, 1784, 1785 ,0, 0, 0 , - 4058, 1594, 4056 ,1786, 1787, 1788 ,0, 0, 0 , - 4058, 4056, 4055 ,1786, 1788, 1789 ,0, 0, 0 , - 4062, 1597, 4060 ,1790, 1791, 1792 ,0, 0, 0 , - 4062, 4060, 4059 ,1790, 1792, 1793 ,0, 0, 0 , - 4067, 1600, 4064 ,1794, 1795, 1796 ,0, 0, 0 , - 4067, 4064, 4063 ,1794, 1796, 1797 ,0, 0, 0 , - 4071, 1604, 4069 ,1798, 1799, 1800 ,0, 0, 0 , - 4071, 4069, 4068 ,1798, 1800, 1801 ,0, 0, 0 , - 4076, 1607, 4073 ,1802, 1803, 1804 ,0, 0, 0 , - 4076, 4073, 4072 ,1802, 1804, 1805 ,0, 0, 0 , - 4081, 1611, 4078 ,1806, 1807, 1808 ,0, 0, 0 , - 4081, 4078, 4077 ,1806, 1808, 1809 ,0, 0, 0 , - 4086, 1615, 4083 ,1810, 1811, 1812 ,0, 0, 0 , - 4086, 4083, 4082 ,1810, 1812, 1813 ,0, 0, 0 , - 4088, 1578, 4034 ,1814, 1815, 1816 ,0, 0, 0 , - 4088, 4034, 4087 ,1814, 1816, 1817 ,0, 0, 0 , - 2403, 352, 4090 ,1818, 1819, 1820 ,0, 0, 0 , - 2403, 4090, 4089 ,1818, 1820, 1821 ,0, 0, 0 , - 2398, 348, 4094 ,1822, 1823, 1824 ,0, 0, 0 , - 2398, 4094, 4093 ,1822, 1824, 1825 ,0, 0, 0 , - 2393, 344, 4098 ,1826, 1827, 1828 ,0, 0, 0 , - 2393, 4098, 4097 ,1826, 1828, 1829 ,0, 0, 0 , - 4105, 1625, 4102 ,1830, 1831, 1832 ,0, 0, 0 , - 4105, 4102, 4101 ,1830, 1832, 1833 ,0, 0, 0 , - 4110, 1629, 4107 ,1834, 1835, 1836 ,0, 0, 0 , - 4110, 4107, 4106 ,1834, 1836, 1837 ,0, 0, 0 , - 4115, 1633, 4112 ,1838, 1839, 1840 ,0, 0, 0 , - 4115, 4112, 4111 ,1838, 1840, 1841 ,0, 0, 0 , - 4120, 1637, 4117 ,1842, 1843, 1844 ,0, 0, 0 , - 4120, 4117, 4116 ,1842, 1844, 1845 ,0, 0, 0 , - 4125, 1641, 4122 ,1846, 1847, 1848 ,0, 0, 0 , - 4125, 4122, 4121 ,1846, 1848, 1849 ,0, 0, 0 , - 4130, 1645, 4127 ,1850, 1851, 1852 ,0, 0, 0 , - 4130, 4127, 4126 ,1850, 1852, 1853 ,0, 0, 0 , - 4134, 1650, 4132 ,1854, 1855, 1856 ,0, 0, 0 , - 4134, 4132, 4131 ,1854, 1856, 1857 ,0, 0, 0 , - 4139, 1653, 4136 ,1858, 1859, 1860 ,0, 0, 0 , - 4139, 4136, 4135 ,1858, 1860, 1861 ,0, 0, 0 , - 4144, 1657, 4141 ,1862, 1863, 1864 ,0, 0, 0 , - 4144, 4141, 4140 ,1862, 1864, 1865 ,0, 0, 0 , - 4149, 1661, 4146 ,1866, 1867, 1868 ,0, 0, 0 , - 4149, 4146, 4145 ,1866, 1868, 1869 ,0, 0, 0 , - 4154, 1665, 4151 ,1870, 1871, 1872 ,0, 0, 0 , - 4154, 4151, 4150 ,1870, 1872, 1873 ,0, 0, 0 , - 4159, 1669, 4156 ,1874, 1875, 1876 ,0, 0, 0 , - 4159, 4156, 4155 ,1874, 1876, 1877 ,0, 0, 0 , - 4164, 1673, 4161 ,1878, 1879, 1880 ,0, 0, 0 , - 4164, 4161, 4160 ,1878, 1880, 1881 ,0, 0, 0 , - 4169, 1677, 4166 ,1882, 1883, 1884 ,0, 0, 0 , - 4169, 4166, 4165 ,1882, 1884, 1885 ,0, 0, 0 , - 4174, 1681, 4171 ,1886, 1887, 1888 ,0, 0, 0 , - 4174, 4171, 4170 ,1886, 1888, 1889 ,0, 0, 0 , - 4178, 1685, 4176 ,1890, 1891, 1892 ,0, 0, 0 , - 4178, 4176, 4175 ,1890, 1892, 1893 ,0, 0, 0 , - 4182, 1688, 4180 ,1894, 1895, 1896 ,0, 0, 0 , - 4182, 4180, 4179 ,1894, 1896, 1897 ,0, 0, 0 , - 4185, 1691, 4184 ,1898, 1899, 1900 ,0, 0, 0 , - 4185, 4184, 4183 ,1898, 1900, 1901 ,0, 0, 0 , - 4190, 1694, 4187 ,1902, 1903, 1904 ,0, 0, 0 , - 4190, 4187, 4186 ,1902, 1904, 1905 ,0, 0, 0 , - 4194, 1698, 4192 ,1906, 1907, 1908 ,0, 0, 0 , - 4194, 4192, 4191 ,1906, 1908, 1909 ,0, 0, 0 , - 4193, 1699, 4196 ,1910, 1911, 1912 ,0, 0, 0 , - 4193, 4196, 4195 ,1910, 1912, 1913 ,0, 0, 0 , - 4201, 1702, 4199 ,1914, 1915, 1916 ,0, 0, 0 , - 4201, 4199, 4198 ,1914, 1916, 1917 ,0, 0, 0 , - 4206, 1705, 4203 ,1918, 1919, 1920 ,0, 0, 0 , - 4206, 4203, 4202 ,1918, 1920, 1921 ,0, 0, 0 , - 4210, 1710, 4208 ,1922, 1923, 1924 ,0, 0, 0 , - 4210, 4208, 4207 ,1922, 1924, 1925 ,0, 0, 0 , - 4215, 1712, 4212 ,1926, 1927, 1928 ,0, 0, 0 , - 4215, 4212, 4211 ,1926, 1928, 1929 ,0, 0, 0 , - 4220, 1716, 4217 ,1930, 1931, 1932 ,0, 0, 0 , - 4220, 4217, 4216 ,1930, 1932, 1933 ,0, 0, 0 , - 4223, 1688, 4182 ,1934, 1895, 1894 ,0, 0, 0 , - 4223, 4182, 4221 ,1934, 1894, 1935 ,0, 0, 0 , - 4228, 1721, 4225 ,1936, 1937, 1938 ,0, 0, 0 , - 4228, 4225, 4224 ,1936, 1938, 1939 ,0, 0, 0 , - 4234, 1725, 4230 ,1940, 1941, 1942 ,0, 0, 0 , - 4234, 4230, 4229 ,1940, 1942, 1943 ,0, 0, 0 , - 4240, 1730, 4236 ,1944, 1945, 1946 ,0, 0, 0 , - 4240, 4236, 4235 ,1944, 1946, 1947 ,0, 0, 0 , - 4246, 1735, 4242 ,1948, 1949, 1950 ,0, 0, 0 , - 4246, 4242, 4241 ,1948, 1950, 1951 ,0, 0, 0 , - 4251, 1740, 4248 ,1952, 1953, 1954 ,0, 0, 0 , - 4251, 4248, 4247 ,1952, 1954, 1955 ,0, 0, 0 , - 4256, 1744, 4253 ,1956, 1957, 1958 ,0, 0, 0 , - 4256, 4253, 4252 ,1956, 1958, 1959 ,0, 0, 0 , - 4261, 1748, 4258 ,1960, 1961, 1962 ,0, 0, 0 , - 4261, 4258, 4257 ,1960, 1962, 1963 ,0, 0, 0 , - 4266, 1752, 4263 ,1964, 1965, 1966 ,0, 0, 0 , - 4266, 4263, 4262 ,1964, 1966, 1967 ,0, 0, 0 , - 4271, 1756, 4268 ,1968, 1969, 1970 ,0, 0, 0 , - 4271, 4268, 4267 ,1968, 1970, 1971 ,0, 0, 0 , - 4276, 1760, 4273 ,1972, 1973, 1974 ,0, 0, 0 , - 4276, 4273, 4272 ,1972, 1974, 1975 ,0, 0, 0 , - 4281, 1764, 4278 ,1976, 1977, 1978 ,0, 0, 0 , - 4281, 4278, 4277 ,1976, 1978, 1979 ,0, 0, 0 , - 4286, 1768, 4283 ,1980, 1981, 1982 ,0, 0, 0 , - 4286, 4283, 4282 ,1980, 1982, 1983 ,0, 0, 0 , - 4290, 1772, 4288 ,1984, 1985, 1986 ,0, 0, 0 , - 4290, 4288, 4287 ,1984, 1986, 1987 ,0, 0, 0 , - 4295, 1775, 4292 ,1988, 1989, 1990 ,0, 0, 0 , - 4295, 4292, 4291 ,1988, 1990, 1991 ,0, 0, 0 , - 4301, 1779, 4297 ,1992, 1993, 1994 ,0, 0, 0 , - 4301, 4297, 4296 ,1992, 1994, 1995 ,0, 0, 0 , - 4306, 1784, 4303 ,1996, 1997, 1998 ,0, 0, 0 , - 4306, 4303, 4302 ,1996, 1998, 1999 ,0, 0, 0 , - 4311, 1792, 4308 ,2000, 2001, 2002 ,0, 0, 0 , - 4311, 4308, 4307 ,2000, 2002, 2003 ,0, 0, 0 , - 4316, 1796, 4313 ,2004, 2005, 2006 ,0, 0, 0 , - 4316, 4313, 4312 ,2004, 2006, 2007 ,0, 0, 0 , - 4321, 1692, 4318 ,2008, 2009, 2010 ,0, 0, 0 , - 4321, 4318, 4317 ,2008, 2010, 2011 ,0, 0, 0 , - 4325, 1802, 4323 ,2012, 2013, 2014 ,0, 0, 0 , - 4325, 4323, 4322 ,2012, 2014, 2015 ,0, 0, 0 , - 4330, 1805, 4327 ,2016, 2017, 2018 ,0, 0, 0 , - 4330, 4327, 4326 ,2016, 2018, 2019 ,0, 0, 0 , - 4334, 1809, 4332 ,2020, 2021, 2022 ,0, 0, 0 , - 4334, 4332, 4331 ,2020, 2022, 2023 ,0, 0, 0 , - 4339, 1812, 4336 ,2024, 2025, 2026 ,0, 0, 0 , - 4339, 4336, 4335 ,2024, 2026, 2027 ,0, 0, 0 , - 4343, 1816, 4341 ,2028, 2029, 2030 ,0, 0, 0 , - 4343, 4341, 4340 ,2028, 2030, 2031 ,0, 0, 0 , - 4346, 1817, 4341 ,2032, 2033, 2030 ,0, 0, 0 , - 4346, 4341, 4344 ,2032, 2030, 2034 ,0, 0, 0 , - 4351, 1820, 4348 ,2035, 2036, 2037 ,0, 0, 0 , - 4351, 4348, 4347 ,2035, 2037, 2038 ,0, 0, 0 , - 4355, 1822, 4353 ,2039, 2040, 2041 ,0, 0, 0 , - 4355, 4353, 4352 ,2039, 2041, 2042 ,0, 0, 0 , - 4358, 1824, 4354 ,2043, 2044, 2045 ,0, 0, 0 , - 4358, 4354, 4356 ,2043, 2045, 2046 ,0, 0, 0 , - 4363, 1827, 4360 ,2047, 2048, 2049 ,0, 0, 0 , - 4363, 4360, 4359 ,2047, 2049, 2050 ,0, 0, 0 , - 4367, 1831, 4365 ,2051, 2052, 2053 ,0, 0, 0 , - 4367, 4365, 4364 ,2051, 2053, 2054 ,0, 0, 0 , - 4370, 1824, 4358 ,2055, 2044, 2043 ,0, 0, 0 , - 4370, 4358, 4368 ,2055, 2043, 2056 ,0, 0, 0 , - 4375, 1835, 4372 ,2057, 2058, 2059 ,0, 0, 0 , - 4375, 4372, 4371 ,2057, 2059, 2060 ,0, 0, 0 , - 4380, 1839, 4377 ,2061, 2062, 2063 ,0, 0, 0 , - 4380, 4377, 4376 ,2061, 2063, 2064 ,0, 0, 0 , - 4385, 1843, 4382 ,2065, 2066, 2067 ,0, 0, 0 , - 4385, 4382, 4381 ,2065, 2067, 2068 ,0, 0, 0 , - 4389, 1847, 4387 ,2069, 2070, 2071 ,0, 0, 0 , - 4389, 4387, 4386 ,2069, 2071, 2072 ,0, 0, 0 , - 4394, 1850, 4391 ,2073, 2074, 2075 ,0, 0, 0 , - 4394, 4391, 4390 ,2073, 2075, 2076 ,0, 0, 0 , - 4397, 1822, 4355 ,2077, 2040, 2039 ,0, 0, 0 , - 4397, 4355, 4395 ,2077, 2039, 2078 ,0, 0, 0 , - 4402, 1855, 4399 ,2079, 2080, 2081 ,0, 0, 0 , - 4402, 4399, 4398 ,2079, 2081, 2082 ,0, 0, 0 , - 4407, 1859, 4404 ,2083, 2084, 2085 ,0, 0, 0 , - 4407, 4404, 4403 ,2083, 2085, 2086 ,0, 0, 0 , - 4411, 1865, 4409 ,2087, 2088, 2089 ,0, 0, 0 , - 4411, 4409, 4408 ,2087, 2089, 2090 ,0, 0, 0 , - 4414, 1867, 4410 ,2091, 2092, 2093 ,0, 0, 0 , - 4414, 4410, 4412 ,2091, 2093, 2094 ,0, 0, 0 , - 4413, 1866, 4416 ,2095, 2096, 2097 ,0, 0, 0 , - 4413, 4416, 4415 ,2095, 2097, 2098 ,0, 0, 0 , - 4421, 1870, 4419 ,2099, 2100, 2101 ,0, 0, 0 , - 4421, 4419, 4418 ,2099, 2101, 2102 ,0, 0, 0 , - 4425, 1873, 4423 ,2103, 2104, 2105 ,0, 0, 0 , - 4425, 4423, 4422 ,2103, 2105, 2106 ,0, 0, 0 , - 4428, 1876, 4427 ,2107, 2108, 2109 ,0, 0, 0 , - 4428, 4427, 4426 ,2107, 2109, 2110 ,0, 0, 0 , - 4431, 1876, 4428 ,2111, 2108, 2107 ,0, 0, 0 , - 4431, 4428, 4429 ,2111, 2107, 2112 ,0, 0, 0 , - 4435, 1884, 4433 ,2113, 2114, 2115 ,0, 0, 0 , - 4435, 4433, 4432 ,2113, 2115, 2116 ,0, 0, 0 , - 4440, 1879, 4437 ,2117, 2118, 2119 ,0, 0, 0 , - 4440, 4437, 4436 ,2117, 2119, 2120 ,0, 0, 0 , - 4446, 1889, 4442 ,2121, 2122, 2123 ,0, 0, 0 , - 4446, 4442, 4441 ,2121, 2123, 2124 ,0, 0, 0 , - 4450, 1894, 4448 ,2125, 2126, 2127 ,0, 0, 0 , - 4450, 4448, 4447 ,2125, 2127, 2128 ,0, 0, 0 , - 4449, 66, 4427 ,2129, 69, 2109 ,0, 0, 0 , - 4449, 4427, 4451 ,2129, 2109, 2130 ,0, 0, 0 , - 4457, 1896, 4454 ,2131, 2132, 2133 ,0, 0, 0 , - 4457, 4454, 4453 ,2131, 2133, 2134 ,0, 0, 0 , - 4461, 1790, 4459 ,2135, 2136, 2137 ,0, 0, 0 , - 4461, 4459, 4458 ,2135, 2137, 2138 ,0, 0, 0 , - 4465, 1883, 4463 ,2139, 2140, 2141 ,0, 0, 0 , - 4465, 4463, 4462 ,2139, 2141, 2142 ,0, 0, 0 , - 4472, 1901, 4467 ,2143, 2144, 2145 ,0, 0, 0 , - 4472, 4467, 4466 ,2143, 2145, 2146 ,0, 0, 0 , - 4477, 1907, 4474 ,2147, 2148, 2149 ,0, 0, 0 , - 4477, 4474, 4473 ,2147, 2149, 2150 ,0, 0, 0 , - 4482, 1911, 4479 ,2151, 2152, 2153 ,0, 0, 0 , - 4482, 4479, 4478 ,2151, 2153, 2154 ,0, 0, 0 , - 4486, 1915, 4484 ,2155, 2156, 2157 ,0, 0, 0 , - 4486, 4484, 4483 ,2155, 2157, 2158 ,0, 0, 0 , - 4490, 1918, 4488 ,2159, 2160, 2161 ,0, 0, 0 , - 4490, 4488, 4487 ,2159, 2161, 2162 ,0, 0, 0 , - 4495, 1921, 4492 ,2163, 2164, 2165 ,0, 0, 0 , - 4495, 4492, 4491 ,2163, 2165, 2166 ,0, 0, 0 , - 4500, 1925, 4497 ,2167, 2168, 2169 ,0, 0, 0 , - 4500, 4497, 4496 ,2167, 2169, 2170 ,0, 0, 0 , - 4506, 1929, 4502 ,2171, 2172, 2173 ,0, 0, 0 , - 4506, 4502, 4501 ,2171, 2173, 2174 ,0, 0, 0 , - 4511, 1934, 4508 ,2175, 2176, 2177 ,0, 0, 0 , - 4511, 4508, 4507 ,2175, 2177, 2178 ,0, 0, 0 , - 4516, 1938, 4513 ,2179, 2180, 2181 ,0, 0, 0 , - 4516, 4513, 4512 ,2179, 2181, 2182 ,0, 0, 0 , - 4519, 12, 1973 ,2183, 13, 12 ,0, 0, 0 , - 4519, 1973, 4517 ,2183, 12, 2184 ,0, 0, 0 , - 4524, 1943, 4521 ,2185, 2186, 2187 ,0, 0, 0 , - 4524, 4521, 4520 ,2185, 2187, 2188 ,0, 0, 0 , - 4529, 1947, 4526 ,2189, 2190, 2191 ,0, 0, 0 , - 4529, 4526, 4525 ,2189, 2191, 2192 ,0, 0, 0 , - 4534, 1951, 4531 ,2193, 2194, 2195 ,0, 0, 0 , - 4534, 4531, 4530 ,2193, 2195, 2196 ,0, 0, 0 , - 4542, 1053, 4536 ,2197, 2198, 2199 ,0, 0, 0 , - 4542, 4536, 4535 ,2197, 2199, 2200 ,0, 0, 0 , - 4548, 1928, 4544 ,2201, 2202, 2203 ,0, 0, 0 , - 4548, 4544, 4543 ,2201, 2203, 2204 ,0, 0, 0 , - 4554, 1937, 4550 ,2205, 2206, 2207 ,0, 0, 0 , - 4554, 4550, 4549 ,2205, 2207, 2208 ,0, 0, 0 , - 4559, 1888, 4556 ,2209, 2210, 2211 ,0, 0, 0 , - 4559, 4556, 4555 ,2209, 2211, 2212 ,0, 0, 0 , - 4563, 1879, 4561 ,2213, 2118, 2214 ,0, 0, 0 , - 4563, 4561, 4560 ,2213, 2214, 2215 ,0, 0, 0 , - 4568, 1881, 4565 ,2216, 2217, 2218 ,0, 0, 0 , - 4568, 4565, 4564 ,2216, 2218, 2219 ,0, 0, 0 , - 4573, 1927, 4570 ,2220, 2221, 2222 ,0, 0, 0 , - 4573, 4570, 4569 ,2220, 2222, 2223 ,0, 0, 0 , - 4578, 1882, 4575 ,2224, 2225, 2226 ,0, 0, 0 , - 4578, 4575, 4574 ,2224, 2226, 2227 ,0, 0, 0 , - 4582, 1923, 4580 ,2228, 2229, 2230 ,0, 0, 0 , - 4582, 4580, 4579 ,2228, 2230, 2231 ,0, 0, 0 , - 4587, 1914, 4584 ,2232, 2233, 2234 ,0, 0, 0 , - 4587, 4584, 4583 ,2232, 2234, 2235 ,0, 0, 0 , - 4591, 1884, 4589 ,2236, 2114, 2237 ,0, 0, 0 , - 4591, 4589, 4588 ,2236, 2237, 2238 ,0, 0, 0 , - 4596, 1918, 4593 ,2239, 2160, 2240 ,0, 0, 0 , - 4596, 4593, 4592 ,2239, 2240, 2241 ,0, 0, 0 , - 4602, 1811, 4598 ,2242, 2243, 2244 ,0, 0, 0 , - 4602, 4598, 4597 ,2242, 2244, 2245 ,0, 0, 0 , - 4607, 1812, 4604 ,2246, 2025, 2247 ,0, 0, 0 , - 4607, 4604, 4603 ,2246, 2247, 2248 ,0, 0, 0 , - 4613, 1885, 4609 ,2249, 2250, 2251 ,0, 0, 0 , - 4613, 4609, 4608 ,2249, 2251, 2252 ,0, 0, 0 , - 4618, 1849, 4615 ,2253, 2254, 2255 ,0, 0, 0 , - 4618, 4615, 4614 ,2253, 2255, 2256 ,0, 0, 0 , - 4623, 1854, 4620 ,2257, 2258, 2259 ,0, 0, 0 , - 4623, 4620, 4619 ,2257, 2259, 2260 ,0, 0, 0 , - 4629, 1824, 4625 ,2261, 2044, 2262 ,0, 0, 0 , - 4629, 4625, 4624 ,2261, 2262, 2263 ,0, 0, 0 , - 4633, 1790, 4631 ,2264, 2136, 2265 ,0, 0, 0 , - 4633, 4631, 4630 ,2264, 2265, 2266 ,0, 0, 0 , - 4636, 1881, 4568 ,2267, 2217, 2216 ,0, 0, 0 , - 4636, 4568, 4634 ,2267, 2216, 2268 ,0, 0, 0 , - 4563, 1880, 4638 ,2213, 2269, 2270 ,0, 0, 0 , - 4563, 4638, 4637 ,2213, 2270, 2271 ,0, 0, 0 , - 4643, 1790, 4641 ,2272, 2136, 2273 ,0, 0, 0 , - 4643, 4641, 4640 ,2272, 2273, 2274 ,0, 0, 0 , - 4647, 1895, 4645 ,2275, 2276, 2277 ,0, 0, 0 , - 4647, 4645, 4644 ,2275, 2277, 2278 ,0, 0, 0 , - 4651, 1878, 4649 ,2279, 2280, 2281 ,0, 0, 0 , - 4651, 4649, 4648 ,2279, 2281, 2282 ,0, 0, 0 , - 4655, 1872, 4653 ,2283, 2284, 2285 ,0, 0, 0 , - 4655, 4653, 4652 ,2283, 2285, 2286 ,0, 0, 0 , - 4659, 1868, 4657 ,2287, 2288, 2289 ,0, 0, 0 , - 4659, 4657, 4656 ,2287, 2289, 2290 ,0, 0, 0 , - 4663, 1863, 4661 ,2291, 2292, 2293 ,0, 0, 0 , - 4663, 4661, 4660 ,2291, 2293, 2294 ,0, 0, 0 , - 4667, 1858, 4665 ,2295, 2296, 2297 ,0, 0, 0 , - 4667, 4665, 4664 ,2295, 2297, 2298 ,0, 0, 0 , - 4671, 1822, 4669 ,2299, 2040, 2300 ,0, 0, 0 , - 4671, 4669, 4668 ,2299, 2300, 2301 ,0, 0, 0 , - 4677, 1820, 4673 ,2302, 2036, 2303 ,0, 0, 0 , - 4677, 4673, 4672 ,2302, 2303, 2304 ,0, 0, 0 , - 4683, 1783, 4679 ,2305, 2306, 2307 ,0, 0, 0 , - 4683, 4679, 4678 ,2305, 2307, 2308 ,0, 0, 0 , - 4689, 1727, 4685 ,2309, 2310, 2311 ,0, 0, 0 , - 4689, 4685, 4684 ,2309, 2311, 2312 ,0, 0, 0 , - 4693, 1817, 4691 ,2313, 2033, 2314 ,0, 0, 0 , - 4693, 4691, 4690 ,2313, 2314, 2315 ,0, 0, 0 , - 4698, 1716, 4695 ,2316, 1931, 2317 ,0, 0, 0 , - 4698, 4695, 4694 ,2316, 2317, 2318 ,0, 0, 0 , - 4705, 1705, 4700 ,2319, 1919, 2320 ,0, 0, 0 , - 4705, 4700, 4699 ,2319, 2320, 2321 ,0, 0, 0 , - 4710, 1689, 4707 ,2322, 2323, 2324 ,0, 0, 0 , - 4710, 4707, 4706 ,2322, 2324, 2325 ,0, 0, 0 , - 4715, 1833, 4712 ,2326, 2327, 2328 ,0, 0, 0 , - 4715, 4712, 4711 ,2326, 2328, 2329 ,0, 0, 0 , - 4719, 1789, 4717 ,2330, 2331, 2332 ,0, 0, 0 , - 4719, 4717, 4716 ,2330, 2332, 2333 ,0, 0, 0 , - 4725, 1778, 4721 ,2334, 2335, 2336 ,0, 0, 0 , - 4725, 4721, 4720 ,2334, 2336, 2337 ,0, 0, 0 , - 4733, 1056, 4727 ,2338, 1208, 2339 ,0, 0, 0 , - 4733, 4727, 4726 ,2338, 2339, 2340 ,0, 0, 0 , - 4737, 1700, 4735 ,2341, 2342, 2343 ,0, 0, 0 , - 4737, 4735, 4734 ,2341, 2343, 2344 ,0, 0, 0 , - 4742, 1785, 4739 ,2345, 2346, 2347 ,0, 0, 0 , - 4742, 4739, 4738 ,2345, 2347, 2348 ,0, 0, 0 , - 4747, 1698, 4744 ,2349, 1907, 2350 ,0, 0, 0 , - 4747, 4744, 4743 ,2349, 2350, 2351 ,0, 0, 0 , - 4753, 1692, 4749 ,2352, 2009, 2353 ,0, 0, 0 , - 4753, 4749, 4748 ,2352, 2353, 2354 ,0, 0, 0 , - 4758, 1734, 4755 ,2355, 2356, 2357 ,0, 0, 0 , - 4758, 4755, 4754 ,2355, 2357, 2358 ,0, 0, 0 , - 4763, 1737, 4760 ,2359, 2360, 2361 ,0, 0, 0 , - 4763, 4760, 4759 ,2359, 2361, 2362 ,0, 0, 0 , - 4767, 1710, 4765 ,2363, 1923, 2364 ,0, 0, 0 , - 4767, 4765, 4764 ,2363, 2364, 2365 ,0, 0, 0 , - 4772, 1771, 4769 ,2366, 2367, 2368 ,0, 0, 0 , - 4772, 4769, 4768 ,2366, 2368, 2369 ,0, 0, 0 , - 4776, 1765, 4774 ,2370, 2371, 2372 ,0, 0, 0 , - 4776, 4774, 4773 ,2370, 2372, 2373 ,0, 0, 0 , - 4781, 1728, 4778 ,2374, 2375, 2376 ,0, 0, 0 , - 4781, 4778, 4777 ,2374, 2376, 2377 ,0, 0, 0 , - 4786, 1653, 4783 ,2378, 1859, 2379 ,0, 0, 0 , - 4786, 4783, 4782 ,2378, 2379, 2380 ,0, 0, 0 , - 4790, 1035, 4788 ,2381, 1180, 2382 ,0, 0, 0 , - 4790, 4788, 4787 ,2381, 2382, 2383 ,0, 0, 0 , - 4788, 1035, 4792 ,2382, 1180, 2384 ,0, 0, 0 , - 4788, 4792, 4791 ,2382, 2384, 2385 ,0, 0, 0 , - 4797, 1032, 4795 ,2386, 2387, 2388 ,0, 0, 0 , - 4797, 4795, 4794 ,2386, 2388, 2389 ,0, 0, 0 , - 4802, 1029, 4799 ,2390, 2391, 2392 ,0, 0, 0 , - 4802, 4799, 4798 ,2390, 2392, 2393 ,0, 0, 0 , - 4807, 1021, 4804 ,2394, 2395, 2396 ,0, 0, 0 , - 4807, 4804, 4803 ,2394, 2396, 2397 ,0, 0, 0 , - 4811, 1729, 4809 ,2398, 2399, 2400 ,0, 0, 0 , - 4811, 4809, 4808 ,2398, 2400, 2401 ,0, 0, 0 , - 4817, 1020, 4813 ,2402, 2403, 2404 ,0, 0, 0 , - 4817, 4813, 4812 ,2402, 2404, 2405 ,0, 0, 0 , - 4822, 1725, 4819 ,2406, 1941, 2407 ,0, 0, 0 , - 4822, 4819, 4818 ,2406, 2407, 2408 ,0, 0, 0 , - 4826, 1018, 4824 ,2409, 2410, 2411 ,0, 0, 0 , - 4826, 4824, 4823 ,2409, 2411, 2412 ,0, 0, 0 , - 4830, 1731, 4828 ,2413, 2414, 2415 ,0, 0, 0 , - 4830, 4828, 4827 ,2413, 2415, 2416 ,0, 0, 0 , - 4836, 1014, 4832 ,2417, 2418, 2419 ,0, 0, 0 , - 4836, 4832, 4831 ,2417, 2419, 2420 ,0, 0, 0 , - 4841, 1732, 4838 ,2421, 2422, 2423 ,0, 0, 0 , - 4841, 4838, 4837 ,2421, 2423, 2424 ,0, 0, 0 , - 4848, 1002, 4843 ,2425, 2426, 2427 ,0, 0, 0 , - 4848, 4843, 4842 ,2425, 2427, 2428 ,0, 0, 0 , - 4852, 1739, 4850 ,2429, 2430, 2431 ,0, 0, 0 , - 4852, 4850, 4849 ,2429, 2431, 2432 ,0, 0, 0 , - 4857, 1651, 4854 ,2433, 2434, 2435 ,0, 0, 0 , - 4857, 4854, 4853 ,2433, 2435, 2436 ,0, 0, 0 , - 4862, 1702, 4859 ,2437, 1915, 2438 ,0, 0, 0 , - 4862, 4859, 4858 ,2437, 2438, 2439 ,0, 0, 0 , - 4865, 1694, 4864 ,2440, 1903, 2441 ,0, 0, 0 , - 4865, 4864, 4863 ,2440, 2441, 2442 ,0, 0, 0 , - 4870, 1695, 4867 ,2443, 2444, 2445 ,0, 0, 0 , - 4870, 4867, 4866 ,2443, 2445, 2446 ,0, 0, 0 , - 4875, 1652, 4872 ,2447, 2448, 2449 ,0, 0, 0 , - 4875, 4872, 4871 ,2447, 2449, 2450 ,0, 0, 0 , - 4878, 1649, 4874 ,2451, 2452, 2453 ,0, 0, 0 , - 4878, 4874, 4876 ,2451, 2453, 2454 ,0, 0, 0 , - 4875, 1649, 4878 ,2447, 2452, 2451 ,0, 0, 0 , - 4875, 4878, 4879 ,2447, 2451, 2455 ,0, 0, 0 , - 4886, 1059, 4882 ,2456, 1212, 2457 ,0, 0, 0 , - 4886, 4882, 4881 ,2456, 2457, 2458 ,0, 0, 0 , - 4890, 1022, 4888 ,2459, 2460, 2461 ,0, 0, 0 , - 4890, 4888, 4887 ,2459, 2461, 2462 ,0, 0, 0 , - 4895, 1033, 4892 ,2463, 2464, 2465 ,0, 0, 0 , - 4895, 4892, 4891 ,2463, 2465, 2466 ,0, 0, 0 , - 4900, 1043, 4897 ,2467, 1192, 2468 ,0, 0, 0 , - 4900, 4897, 4896 ,2467, 2468, 2469 ,0, 0, 0 , - 4807, 1022, 4902 ,2394, 2460, 2470 ,0, 0, 0 , - 4807, 4902, 4901 ,2394, 2470, 2471 ,0, 0, 0 , - 4910, 1019, 4906 ,2472, 2473, 2474 ,0, 0, 0 , - 4910, 4906, 4905 ,2472, 2474, 2475 ,0, 0, 0 , - 4915, 1063, 4912 ,2476, 2477, 2478 ,0, 0, 0 , - 4915, 4912, 4911 ,2476, 2478, 2479 ,0, 0, 0 , - 4920, 1040, 4917 ,2480, 1188, 2481 ,0, 0, 0 , - 4920, 4917, 4916 ,2480, 2481, 2482 ,0, 0, 0 , - 4924, 1017, 4922 ,2483, 1153, 2484 ,0, 0, 0 , - 4924, 4922, 4921 ,2483, 2484, 2485 ,0, 0, 0 , - 4929, 1066, 4926 ,2486, 1220, 2487 ,0, 0, 0 , - 4929, 4926, 4925 ,2486, 2487, 2488 ,0, 0, 0 , - 3294, 1013, 4931 ,1140, 2489, 2490 ,0, 0, 0 , - 3294, 4931, 4930 ,1140, 2490, 2491 ,0, 0, 0 , - 4939, 1037, 4936 ,2492, 2493, 2494 ,0, 0, 0 , - 4939, 4936, 4935 ,2492, 2494, 2495 ,0, 0, 0 , - 4848, 1003, 4847 ,2425, 2496, 2497 ,0, 0, 0 , - 4848, 4847, 4940 ,2425, 2497, 2498 ,0, 0, 0 , - 4950, 1065, 4945 ,2499, 2500, 2501 ,0, 0, 0 , - 4950, 4945, 4944 ,2499, 2501, 2502 ,0, 0, 0 , - 4955, 1611, 4952 ,2503, 1807, 2504 ,0, 0, 0 , - 4955, 4952, 4951 ,2503, 2504, 2505 ,0, 0, 0 , - 4960, 1607, 4957 ,2506, 1803, 2507 ,0, 0, 0 , - 4960, 4957, 4956 ,2506, 2507, 2508 ,0, 0, 0 , - 4965, 1606, 4962 ,2509, 2510, 2511 ,0, 0, 0 , - 4965, 4962, 4961 ,2509, 2511, 2512 ,0, 0, 0 , - 4970, 1600, 4967 ,2513, 1795, 2514 ,0, 0, 0 , - 4970, 4967, 4966 ,2513, 2514, 2515 ,0, 0, 0 , - 4976, 1596, 4972 ,2516, 2517, 2518 ,0, 0, 0 , - 4976, 4972, 4971 ,2516, 2518, 2519 ,0, 0, 0 , - 4982, 1587, 4978 ,2520, 1779, 2521 ,0, 0, 0 , - 4982, 4978, 4977 ,2520, 2521, 2522 ,0, 0, 0 , - 4987, 1583, 4984 ,2523, 1775, 2524 ,0, 0, 0 , - 4987, 4984, 4983 ,2523, 2524, 2525 ,0, 0, 0 , - 4992, 1579, 4989 ,2526, 1771, 2527 ,0, 0, 0 , - 4992, 4989, 4988 ,2526, 2527, 2528 ,0, 0, 0 , - 4996, 1578, 4994 ,2529, 1815, 2530 ,0, 0, 0 , - 4996, 4994, 4993 ,2529, 2530, 2531 ,0, 0, 0 , - 5005, 1047, 4998 ,2532, 2533, 2534 ,0, 0, 0 , - 5005, 4998, 4997 ,2532, 2534, 2535 ,0, 0, 0 , - 5011, 1550, 5007 ,2536, 2537, 2538 ,0, 0, 0 , - 5011, 5007, 5006 ,2536, 2538, 2539 ,0, 0, 0 , - 5016, 1555, 5013 ,2540, 2541, 2542 ,0, 0, 0 , - 5016, 5013, 5012 ,2540, 2542, 2543 ,0, 0, 0 , - 5022, 1405, 5018 ,2544, 2545, 2546 ,0, 0, 0 , - 5022, 5018, 5017 ,2544, 2546, 2547 ,0, 0, 0 , - 5028, 1427, 5024 ,2548, 2549, 2550 ,0, 0, 0 , - 5028, 5024, 5023 ,2548, 2550, 2551 ,0, 0, 0 , - 5035, 1397, 5030 ,2552, 2553, 2554 ,0, 0, 0 , - 5035, 5030, 5029 ,2552, 2554, 2555 ,0, 0, 0 , - 5040, 1390, 5037 ,2556, 1565, 2557 ,0, 0, 0 , - 5040, 5037, 5036 ,2556, 2557, 2558 ,0, 0, 0 , - 5045, 1386, 5042 ,2559, 1561, 2560 ,0, 0, 0 , - 5045, 5042, 5041 ,2559, 2560, 2561 ,0, 0, 0 , - 5050, 1366, 5047 ,2562, 1535, 2563 ,0, 0, 0 , - 5050, 5047, 5046 ,2562, 2563, 2564 ,0, 0, 0 , - 5055, 1377, 5052 ,2565, 2566, 2567 ,0, 0, 0 , - 5055, 5052, 5051 ,2565, 2567, 2568 ,0, 0, 0 , - 5061, 1055, 5057 ,2569, 2570, 2571 ,0, 0, 0 , - 5061, 5057, 5056 ,2569, 2571, 2572 ,0, 0, 0 , - 5066, 1506, 5063 ,2573, 2574, 2575 ,0, 0, 0 , - 5066, 5063, 5062 ,2573, 2575, 2576 ,0, 0, 0 , - 5071, 1560, 5068 ,2577, 1749, 2578 ,0, 0, 0 , - 5071, 5068, 5067 ,2577, 2578, 2579 ,0, 0, 0 , - 5076, 1510, 5073 ,2580, 2581, 2582 ,0, 0, 0 , - 5076, 5073, 5072 ,2580, 2582, 2583 ,0, 0, 0 , - 5081, 1551, 5078 ,2584, 2585, 2586 ,0, 0, 0 , - 5081, 5078, 5077 ,2584, 2586, 2587 ,0, 0, 0 , - 5087, 1233, 5083 ,2588, 1400, 2589 ,0, 0, 0 , - 5087, 5083, 5082 ,2588, 2589, 2590 ,0, 0, 0 , - 5092, 1241, 5089 ,2591, 1408, 2592 ,0, 0, 0 , - 5092, 5089, 5088 ,2591, 2592, 2593 ,0, 0, 0 , - 5097, 1544, 5094 ,2594, 2595, 2596 ,0, 0, 0 , - 5097, 5094, 5093 ,2594, 2596, 2597 ,0, 0, 0 , - 5102, 1552, 5099 ,2598, 1741, 2599 ,0, 0, 0 , - 5102, 5099, 5098 ,2598, 2599, 2600 ,0, 0, 0 , - 5107, 1545, 5104 ,2601, 1733, 2602 ,0, 0, 0 , - 5107, 5104, 5103 ,2601, 2602, 2603 ,0, 0, 0 , - 5112, 1402, 5109 ,2604, 1577, 2605 ,0, 0, 0 , - 5112, 5109, 5108 ,2604, 2605, 2606 ,0, 0, 0 , - 5119, 1401, 5114 ,2607, 2608, 2609 ,0, 0, 0 , - 5119, 5114, 5113 ,2607, 2609, 2610 ,0, 0, 0 , - 5125, 1535, 5121 ,2611, 2612, 2613 ,0, 0, 0 , - 5125, 5121, 5120 ,2611, 2613, 2614 ,0, 0, 0 , - 5130, 1475, 5127 ,2615, 1661, 2616 ,0, 0, 0 , - 5130, 5127, 5126 ,2615, 2616, 2617 ,0, 0, 0 , - 5135, 1438, 5132 ,2618, 1617, 2619 ,0, 0, 0 , - 5135, 5132, 5131 ,2618, 2619, 2620 ,0, 0, 0 , - 5141, 1173, 5137 ,2621, 2622, 2623 ,0, 0, 0 , - 5141, 5137, 5136 ,2621, 2623, 2624 ,0, 0, 0 , - 5146, 1231, 5143 ,2625, 2626, 2627 ,0, 0, 0 , - 5146, 5143, 5142 ,2625, 2627, 2628 ,0, 0, 0 , - 5152, 1051, 5148 ,2629, 2630, 2631 ,0, 0, 0 , - 5152, 5148, 5147 ,2629, 2631, 2632 ,0, 0, 0 , - 5157, 1503, 5154 ,2633, 1689, 2634 ,0, 0, 0 , - 5157, 5154, 5153 ,2633, 2634, 2635 ,0, 0, 0 , - 5162, 1511, 5159 ,2636, 1697, 2637 ,0, 0, 0 , - 5162, 5159, 5158 ,2636, 2637, 2638 ,0, 0, 0 , - 5167, 1071, 5164 ,2639, 2640, 2641 ,0, 0, 0 , - 5167, 5164, 5163 ,2639, 2641, 2642 ,0, 0, 0 , - 5172, 1495, 5169 ,2643, 1681, 2644 ,0, 0, 0 , - 5172, 5169, 5168 ,2643, 2644, 2645 ,0, 0, 0 , - 5177, 1244, 5174 ,2646, 1412, 2647 ,0, 0, 0 , - 5177, 5174, 5173 ,2646, 2647, 2648 ,0, 0, 0 , - 5183, 1248, 5179 ,2649, 1416, 2650 ,0, 0, 0 , - 5183, 5179, 5178 ,2649, 2650, 2651 ,0, 0, 0 , - 5188, 1237, 5185 ,2652, 1404, 2653 ,0, 0, 0 , - 5188, 5185, 5184 ,2652, 2653, 2654 ,0, 0, 0 , - 5193, 1179, 5190 ,2655, 2656, 2657 ,0, 0, 0 , - 5193, 5190, 5189 ,2655, 2657, 2658 ,0, 0, 0 , - 5198, 1175, 5195 ,2659, 2660, 2661 ,0, 0, 0 , - 5198, 5195, 5194 ,2659, 2661, 2662 ,0, 0, 0 , - 5203, 1411, 5200 ,2663, 2664, 2665 ,0, 0, 0 , - 5203, 5200, 5199 ,2663, 2665, 2666 ,0, 0, 0 , - 5209, 1267, 5205 ,2667, 1436, 2668 ,0, 0, 0 , - 5209, 5205, 5204 ,2667, 2668, 2669 ,0, 0, 0 , - 5215, 1286, 5211 ,2670, 2671, 2672 ,0, 0, 0 , - 5215, 5211, 5210 ,2670, 2672, 2673 ,0, 0, 0 , - 5220, 1293, 5217 ,2674, 2675, 2676 ,0, 0, 0 , - 5220, 5217, 5216 ,2674, 2676, 2677 ,0, 0, 0 , - 5226, 1452, 5222 ,2678, 1633, 2679 ,0, 0, 0 , - 5226, 5222, 5221 ,2678, 2679, 2680 ,0, 0, 0 , - 5231, 1383, 5228 ,2681, 2682, 2683 ,0, 0, 0 , - 5231, 5228, 5227 ,2681, 2683, 2684 ,0, 0, 0 , - 5237, 1446, 5233 ,2685, 1625, 2686 ,0, 0, 0 , - 5237, 5233, 5232 ,2685, 2686, 2687 ,0, 0, 0 , - 5242, 1391, 5239 ,2688, 2689, 2690 ,0, 0, 0 , - 5242, 5239, 5238 ,2688, 2690, 2691 ,0, 0, 0 , - 5248, 1288, 5244 ,2692, 2693, 2694 ,0, 0, 0 , - 5248, 5244, 5243 ,2692, 2694, 2695 ,0, 0, 0 , - 5253, 1420, 5250 ,2696, 1597, 2697 ,0, 0, 0 , - 5253, 5250, 5249 ,2696, 2697, 2698 ,0, 0, 0 , - 5259, 1406, 5255 ,2699, 1581, 2700 ,0, 0, 0 , - 5259, 5255, 5254 ,2699, 2700, 2701 ,0, 0, 0 , - 5264, 1403, 5261 ,2702, 2703, 2704 ,0, 0, 0 , - 5264, 5261, 5260 ,2702, 2704, 2705 ,0, 0, 0 , - 5269, 1421, 5266 ,2706, 2707, 2708 ,0, 0, 0 , - 5269, 5266, 5265 ,2706, 2708, 2709 ,0, 0, 0 , - 5275, 1414, 5271 ,2710, 1589, 2711 ,0, 0, 0 , - 5275, 5271, 5270 ,2710, 2711, 2712 ,0, 0, 0 , - 5280, 1282, 5277 ,2713, 2714, 2715 ,0, 0, 0 , - 5280, 5277, 5276 ,2713, 2715, 2716 ,0, 0, 0 , - 5287, 1339, 5282 ,2717, 1507, 2718 ,0, 0, 0 , - 5287, 5282, 5281 ,2717, 2718, 2719 ,0, 0, 0 , - 5292, 1413, 5289 ,2720, 2721, 2722 ,0, 0, 0 , - 5292, 5289, 5288 ,2720, 2722, 2723 ,0, 0, 0 , - 5297, 1335, 5294 ,2724, 2725, 2726 ,0, 0, 0 , - 5297, 5294, 5293 ,2724, 2726, 2727 ,0, 0, 0 , - 5302, 1378, 5299 ,2728, 1553, 2729 ,0, 0, 0 , - 5302, 5299, 5298 ,2728, 2729, 2730 ,0, 0, 0 , - 5307, 1367, 5304 ,2731, 2732, 2733 ,0, 0, 0 , - 5307, 5304, 5303 ,2731, 2733, 2734 ,0, 0, 0 , - 5312, 1372, 5309 ,2735, 2736, 2737 ,0, 0, 0 , - 5312, 5309, 5308 ,2735, 2737, 2738 ,0, 0, 0 , - 5317, 1374, 5314 ,2739, 2740, 2741 ,0, 0, 0 , - 5317, 5314, 5313 ,2739, 2741, 2742 ,0, 0, 0 , - 5320, 398, 5052 ,2743, 432, 2567 ,0, 0, 0 , - 5320, 5052, 5318 ,2743, 2567, 2744 ,0, 0, 0 , - 5325, 1325, 5322 ,2745, 1491, 2746 ,0, 0, 0 , - 5325, 5322, 5321 ,2745, 2746, 2747 ,0, 0, 0 , - 5332, 1254, 5327 ,2748, 2749, 2750 ,0, 0, 0 , - 5332, 5327, 5326 ,2748, 2750, 2751 ,0, 0, 0 , - 5337, 1279, 5334 ,2752, 1448, 2753 ,0, 0, 0 , - 5337, 5334, 5333 ,2752, 2753, 2754 ,0, 0, 0 , - 5342, 1321, 5339 ,2755, 1487, 2756 ,0, 0, 0 , - 5342, 5339, 5338 ,2755, 2756, 2757 ,0, 0, 0 , - 5347, 1290, 5344 ,2758, 2759, 2760 ,0, 0, 0 , - 5347, 5344, 5343 ,2758, 2760, 2761 ,0, 0, 0 , - 5352, 1317, 5349 ,2762, 1483, 2763 ,0, 0, 0 , - 5352, 5349, 5348 ,2762, 2763, 2764 ,0, 0, 0 , - 5357, 1291, 5354 ,2765, 1460, 2766 ,0, 0, 0 , - 5357, 5354, 5353 ,2765, 2766, 2767 ,0, 0, 0 , - 5362, 1313, 5359 ,2768, 1479, 2769 ,0, 0, 0 , - 5362, 5359, 5358 ,2768, 2769, 2770 ,0, 0, 0 , - 5369, 1284, 5364 ,2771, 2772, 2773 ,0, 0, 0 , - 5369, 5364, 5363 ,2771, 2773, 2774 ,0, 0, 0 , - 5375, 1271, 5371 ,2775, 1440, 2776 ,0, 0, 0 , - 5375, 5371, 5370 ,2775, 2776, 2777 ,0, 0, 0 , - 5380, 1341, 5377 ,2778, 2779, 2780 ,0, 0, 0 , - 5380, 5377, 5376 ,2778, 2780, 2781 ,0, 0, 0 , - 5385, 1262, 5382 ,2782, 1432, 2783 ,0, 0, 0 , - 5385, 5382, 5381 ,2782, 2783, 2784 ,0, 0, 0 , - 5390, 1334, 5387 ,2785, 2786, 2787 ,0, 0, 0 , - 5390, 5387, 5386 ,2785, 2787, 2788 ,0, 0, 0 , - 5394, 1298, 5392 ,2789, 2790, 2791 ,0, 0, 0 , - 5394, 5392, 5391 ,2789, 2791, 2792 ,0, 0, 0 , - 5398, 1322, 5396 ,2793, 2794, 2795 ,0, 0, 0 , - 5398, 5396, 5395 ,2793, 2795, 2796 ,0, 0, 0 , - 5402, 1318, 5400 ,2797, 2798, 2799 ,0, 0, 0 , - 5402, 5400, 5399 ,2797, 2799, 2800 ,0, 0, 0 , - 5406, 1314, 5404 ,2801, 2802, 2803 ,0, 0, 0 , - 5406, 5404, 5403 ,2801, 2803, 2804 ,0, 0, 0 , - 5411, 1307, 5408 ,2805, 1471, 2806 ,0, 0, 0 , - 5411, 5408, 5407 ,2805, 2806, 2807 ,0, 0, 0 , - 5416, 994, 5413 ,2808, 2809, 2810 ,0, 0, 0 , - 5416, 5413, 5412 ,2808, 2810, 2811 ,0, 0, 0 , - 5420, 992, 5418 ,2812, 1112, 2813 ,0, 0, 0 , - 5420, 5418, 5417 ,2812, 2813, 2814 ,0, 0, 0 , - 5425, 1256, 5422 ,2815, 1424, 2816 ,0, 0, 0 , - 5425, 5422, 5421 ,2815, 2816, 2817 ,0, 0, 0 , - 5429, 998, 5427 ,2818, 1464, 2819 ,0, 0, 0 , - 5429, 5427, 5426 ,2818, 2819, 2820 ,0, 0, 0 , - 5433, 997, 5431 ,2821, 2822, 2823 ,0, 0, 0 , - 5433, 5431, 5430 ,2821, 2823, 2824 ,0, 0, 0 , - 5438, 993, 5435 ,2825, 2826, 2827 ,0, 0, 0 , - 5438, 5435, 5434 ,2825, 2827, 2828 ,0, 0, 0 , - 5443, 1203, 5440 ,2829, 2830, 2831 ,0, 0, 0 , - 5443, 5440, 5439 ,2829, 2831, 2832 ,0, 0, 0 , - 5450, 1209, 5445 ,2833, 1368, 2834 ,0, 0, 0 , - 5450, 5445, 5444 ,2833, 2834, 2835 ,0, 0, 0 , - 5455, 1212, 5452 ,2836, 1372, 2837 ,0, 0, 0 , - 5455, 5452, 5451 ,2836, 2837, 2838 ,0, 0, 0 , - 5461, 1216, 5457 ,2839, 1376, 2840 ,0, 0, 0 , - 5461, 5457, 5456 ,2839, 2840, 2841 ,0, 0, 0 , - 5469, 1159, 5463 ,2842, 2843, 2844 ,0, 0, 0 , - 5469, 5463, 5462 ,2842, 2844, 2845 ,0, 0, 0 , - 5474, 1156, 5471 ,2846, 2847, 2848 ,0, 0, 0 , - 5474, 5471, 5470 ,2846, 2848, 2849 ,0, 0, 0 , - 5479, 1214, 5476 ,2850, 2851, 2852 ,0, 0, 0 , - 5479, 5476, 5475 ,2850, 2852, 2853 ,0, 0, 0 , - 5484, 1147, 5481 ,2854, 2855, 2856 ,0, 0, 0 , - 5484, 5481, 5480 ,2854, 2856, 2857 ,0, 0, 0 , - 5489, 1141, 5486 ,2858, 1300, 2859 ,0, 0, 0 , - 5489, 5486, 5485 ,2858, 2859, 2860 ,0, 0, 0 , - 5493, 1221, 5491 ,2861, 2862, 2863 ,0, 0, 0 , - 5493, 5491, 5490 ,2861, 2863, 2864 ,0, 0, 0 , - 5501, 1142, 5495 ,2865, 2866, 2867 ,0, 0, 0 , - 5501, 5495, 5494 ,2865, 2867, 2868 ,0, 0, 0 , - 5505, 1196, 5503 ,2869, 2870, 2871 ,0, 0, 0 , - 5505, 5503, 5502 ,2869, 2871, 2872 ,0, 0, 0 , - 5510, 1197, 5507 ,2873, 2874, 2875 ,0, 0, 0 , - 5510, 5507, 5506 ,2873, 2875, 2876 ,0, 0, 0 , - 5515, 1162, 5512 ,2877, 2878, 2879 ,0, 0, 0 , - 5515, 5512, 5511 ,2877, 2879, 2880 ,0, 0, 0 , - 5520, 1166, 5517 ,2881, 1324, 2882 ,0, 0, 0 , - 5520, 5517, 5516 ,2881, 2882, 2883 ,0, 0, 0 , - 5527, 1130, 5522 ,2884, 1288, 2885 ,0, 0, 0 , - 5527, 5522, 5521 ,2884, 2885, 2886 ,0, 0, 0 , - 5533, 1124, 5529 ,2887, 1280, 2888 ,0, 0, 0 , - 5533, 5529, 5528 ,2887, 2888, 2889 ,0, 0, 0 , - 5538, 1182, 5535 ,2890, 1340, 2891 ,0, 0, 0 , - 5538, 5535, 5534 ,2890, 2891, 2892 ,0, 0, 0 , - 5544, 1104, 5540 ,2893, 1256, 2894 ,0, 0, 0 , - 5544, 5540, 5539 ,2893, 2894, 2895 ,0, 0, 0 , - 5548, 1183, 5546 ,2896, 2897, 2898 ,0, 0, 0 , - 5548, 5546, 5545 ,2896, 2898, 2899 ,0, 0, 0 , - 5554, 1098, 5550 ,2900, 2901, 2902 ,0, 0, 0 , - 5554, 5550, 5549 ,2900, 2902, 2903 ,0, 0, 0 , - 5559, 1167, 5556 ,2904, 2905, 2906 ,0, 0, 0 , - 5559, 5556, 5555 ,2904, 2906, 2907 ,0, 0, 0 , - 5564, 1094, 5561 ,2908, 2909, 2910 ,0, 0, 0 , - 5564, 5561, 5560 ,2908, 2910, 2911 ,0, 0, 0 , - 5569, 1150, 5566 ,2912, 2913, 2914 ,0, 0, 0 , - 5569, 5566, 5565 ,2912, 2914, 2915 ,0, 0, 0 , - 5574, 1133, 5571 ,2916, 1292, 2917 ,0, 0, 0 , - 5574, 5571, 5570 ,2916, 2917, 2918 ,0, 0, 0 , - 5579, 1110, 5576 ,2919, 1264, 2920 ,0, 0, 0 , - 5579, 5576, 5575 ,2919, 2920, 2921 ,0, 0, 0 , - 5583, 1134, 5581 ,2922, 2923, 2924 ,0, 0, 0 , - 5583, 5581, 5580 ,2922, 2924, 2925 ,0, 0, 0 , - 5588, 1082, 5585 ,2926, 1236, 2927 ,0, 0, 0 , - 5588, 5585, 5584 ,2926, 2927, 2928 ,0, 0, 0 , - 5594, 1080, 5590 ,2929, 2930, 2931 ,0, 0, 0 , - 5594, 5590, 5589 ,2929, 2931, 2932 ,0, 0, 0 , - 5599, 1089, 5596 ,2933, 2934, 2935 ,0, 0, 0 , - 5599, 5596, 5595 ,2933, 2935, 2936 ,0, 0, 0 , - 5605, 1090, 5601 ,2937, 2938, 2939 ,0, 0, 0 , - 5605, 5601, 5600 ,2937, 2939, 2940 ,0, 0, 0 , - 5610, 999, 5607 ,2941, 2942, 2943 ,0, 0, 0 , - 5610, 5607, 5606 ,2941, 2943, 2944 ,0, 0, 0 , - 5614, 1091, 5612 ,2945, 2946, 2947 ,0, 0, 0 , - 5614, 5612, 5611 ,2945, 2947, 2948 ,0, 0, 0 , - 5618, 1084, 5616 ,2949, 2950, 2951 ,0, 0, 0 , - 5618, 5616, 5615 ,2949, 2951, 2952 ,0, 0, 0 , - 5623, 987, 5620 ,2953, 1108, 2954 ,0, 0, 0 , - 5623, 5620, 5619 ,2953, 2954, 2955 ,0, 0, 0 , - 5627, 1000, 5625 ,2956, 2957, 2958 ,0, 0, 0 , - 5627, 5625, 5624 ,2956, 2958, 2959 ,0, 0, 0 , - 5632, 988, 5629 ,2960, 2961, 2962 ,0, 0, 0 , - 5632, 5629, 5628 ,2960, 2962, 2963 ,0, 0, 0 , - 5636, 987, 5634 ,2964, 1108, 2965 ,0, 0, 0 , - 5636, 5634, 5633 ,2964, 2965, 2966 ,0, 0, 0 , - 5641, 989, 5638 ,2967, 1104, 2968 ,0, 0, 0 , - 5641, 5638, 5637 ,2967, 2968, 2969 ,0, 0, 0 , - 5646, 904, 5643 ,2970, 972, 2971 ,0, 0, 0 , - 5646, 5643, 5642 ,2970, 2971, 2972 ,0, 0, 0 , - 5650, 872, 5648 ,2973, 1078, 2974 ,0, 0, 0 , - 5650, 5648, 5647 ,2973, 2974, 2975 ,0, 0, 0 , - 5655, 975, 5652 ,2976, 2977, 2978 ,0, 0, 0 , - 5655, 5652, 5651 ,2976, 2978, 2979 ,0, 0, 0 , - 5659, 977, 5657 ,2980, 2981, 2982 ,0, 0, 0 , - 5659, 5657, 5656 ,2980, 2982, 2983 ,0, 0, 0 , - 5664, 870, 5661 ,2984, 2985, 2986 ,0, 0, 0 , - 5664, 5661, 5660 ,2984, 2986, 2987 ,0, 0, 0 , - 5668, 866, 5666 ,2988, 2989, 2990 ,0, 0, 0 , - 5668, 5666, 5665 ,2988, 2990, 2991 ,0, 0, 0 , - 5672, 865, 5670 ,2992, 932, 2993 ,0, 0, 0 , - 5672, 5670, 5669 ,2992, 2993, 2994 ,0, 0, 0 , - 5677, 863, 5674 ,2995, 2996, 2997 ,0, 0, 0 , - 5677, 5674, 5673 ,2995, 2997, 2998 ,0, 0, 0 , - 5683, 897, 5679 ,2999, 3000, 3001 ,0, 0, 0 , - 5683, 5679, 5678 ,2999, 3001, 3002 ,0, 0, 0 , - 5688, 894, 5685 ,3003, 964, 3004 ,0, 0, 0 , - 5688, 5685, 5684 ,3003, 3004, 3005 ,0, 0, 0 , - 5694, 892, 5690 ,3006, 3007, 3008 ,0, 0, 0 , - 5694, 5690, 5689 ,3006, 3008, 3009 ,0, 0, 0 , - 5699, 846, 5696 ,3010, 3011, 3012 ,0, 0, 0 , - 5699, 5696, 5695 ,3010, 3012, 3013 ,0, 0, 0 , - 5703, 845, 5701 ,3014, 3015, 3016 ,0, 0, 0 , - 5703, 5701, 5700 ,3014, 3016, 3017 ,0, 0, 0 , - 5708, 873, 5705 ,3018, 940, 3019 ,0, 0, 0 , - 5708, 5705, 5704 ,3018, 3019, 3020 ,0, 0, 0 , - 5713, 828, 5710 ,3021, 892, 3022 ,0, 0, 0 , - 5713, 5710, 5709 ,3021, 3022, 3023 ,0, 0, 0 , - 5718, 826, 5715 ,3024, 3025, 3026 ,0, 0, 0 , - 5718, 5715, 5714 ,3024, 3026, 3027 ,0, 0, 0 , - 5723, 893, 5720 ,3028, 3029, 3030 ,0, 0, 0 , - 5723, 5720, 5719 ,3028, 3030, 3031 ,0, 0, 0 , - 5728, 815, 5725 ,3032, 880, 3033 ,0, 0, 0 , - 5728, 5725, 5724 ,3032, 3033, 3034 ,0, 0, 0 , - 5734, 883, 5730 ,3035, 3036, 3037 ,0, 0, 0 , - 5734, 5730, 5729 ,3035, 3037, 3038 ,0, 0, 0 , - 5738, 797, 5736 ,3039, 3040, 3041 ,0, 0, 0 , - 5738, 5736, 5735 ,3039, 3041, 3042 ,0, 0, 0 , - 5744, 864, 5740 ,3043, 3044, 3045 ,0, 0, 0 , - 5744, 5740, 5739 ,3043, 3045, 3046 ,0, 0, 0 , - 5749, 788, 5746 ,3047, 3048, 3049 ,0, 0, 0 , - 5749, 5746, 5745 ,3047, 3049, 3050 ,0, 0, 0 , - 5755, 857, 5751 ,3051, 3052, 3053 ,0, 0, 0 , - 5755, 5751, 5750 ,3051, 3053, 3054 ,0, 0, 0 , - 5762, 785, 5757 ,3055, 3056, 3057 ,0, 0, 0 , - 5762, 5757, 5756 ,3055, 3057, 3058 ,0, 0, 0 , - 5767, 782, 5764 ,3059, 3060, 3061 ,0, 0, 0 , - 5767, 5764, 5763 ,3059, 3061, 3062 ,0, 0, 0 , - 5772, 781, 5769 ,3063, 3064, 3065 ,0, 0, 0 , - 5772, 5769, 5768 ,3063, 3065, 3066 ,0, 0, 0 , - 5777, 777, 5774 ,3067, 3068, 3069 ,0, 0, 0 , - 5777, 5774, 5773 ,3067, 3069, 3070 ,0, 0, 0 , - 5781, 790, 5779 ,3071, 3072, 3073 ,0, 0, 0 , - 5781, 5779, 5778 ,3071, 3073, 3074 ,0, 0, 0 , - 5789, 774, 5783 ,3075, 3076, 3077 ,0, 0, 0 , - 5789, 5783, 5782 ,3075, 3077, 3078 ,0, 0, 0 , - 5793, 759, 5791 ,3079, 3080, 3081 ,0, 0, 0 , - 5793, 5791, 5790 ,3079, 3081, 3082 ,0, 0, 0 , - 5798, 758, 5795 ,3083, 816, 3084 ,0, 0, 0 , - 5798, 5795, 5794 ,3083, 3084, 3085 ,0, 0, 0 , - 5803, 756, 5800 ,3086, 3087, 3088 ,0, 0, 0 , - 5803, 5800, 5799 ,3086, 3088, 3089 ,0, 0, 0 , - 5808, 760, 5805 ,3090, 3091, 3092 ,0, 0, 0 , - 5808, 5805, 5804 ,3090, 3092, 3093 ,0, 0, 0 , - 5813, 819, 5810 ,3094, 884, 3095 ,0, 0, 0 , - 5813, 5810, 5809 ,3094, 3095, 3096 ,0, 0, 0 , - 5821, 753, 5815 ,3097, 3098, 3099 ,0, 0, 0 , - 5821, 5815, 5814 ,3097, 3099, 3100 ,0, 0, 0 , - 5827, 748, 5823 ,3101, 804, 3102 ,0, 0, 0 , - 5827, 5823, 5822 ,3101, 3102, 3103 ,0, 0, 0 , - 5832, 744, 5829 ,3104, 800, 3105 ,0, 0, 0 , - 5832, 5829, 5828 ,3104, 3105, 3106 ,0, 0, 0 , - 5839, 737, 5834 ,3107, 792, 3108 ,0, 0, 0 , - 5839, 5834, 5833 ,3107, 3108, 3109 ,0, 0, 0 , - 5844, 733, 5841 ,3110, 788, 3111 ,0, 0, 0 , - 5844, 5841, 5840 ,3110, 3111, 3112 ,0, 0, 0 , - 5849, 981, 5846 ,3113, 3114, 3115 ,0, 0, 0 , - 5849, 5846, 5845 ,3113, 3115, 3116 ,0, 0, 0 , - 5853, 979, 5851 ,3117, 3118, 3119 ,0, 0, 0 , - 5853, 5851, 5850 ,3117, 3119, 3120 ,0, 0, 0 , - 5857, 687, 5855 ,3121, 740, 3122 ,0, 0, 0 , - 5857, 5855, 5854 ,3121, 3122, 3123 ,0, 0, 0 , - 5862, 681, 5859 ,3124, 3125, 3126 ,0, 0, 0 , - 5862, 5859, 5858 ,3124, 3126, 3127 ,0, 0, 0 , - 5866, 689, 5864 ,3128, 1085, 3129 ,0, 0, 0 , - 5866, 5864, 5863 ,3128, 3129, 3130 ,0, 0, 0 , - 5871, 710, 5868 ,3131, 764, 3132 ,0, 0, 0 , - 5871, 5868, 5867 ,3131, 3132, 3133 ,0, 0, 0 , - 5876, 670, 5873 ,3134, 728, 3135 ,0, 0, 0 , - 5876, 5873, 5872 ,3134, 3135, 3136 ,0, 0, 0 , - 5880, 666, 5878 ,3137, 724, 3138 ,0, 0, 0 , - 5880, 5878, 5877 ,3137, 3138, 3139 ,0, 0, 0 , - 5884, 662, 5882 ,3140, 720, 3141 ,0, 0, 0 , - 5884, 5882, 5881 ,3140, 3141, 3142 ,0, 0, 0 , - 5888, 658, 5886 ,3143, 716, 3144 ,0, 0, 0 , - 5888, 5886, 5885 ,3143, 3144, 3145 ,0, 0, 0 , - 5892, 654, 5890 ,3146, 712, 3147 ,0, 0, 0 , - 5892, 5890, 5889 ,3146, 3147, 3148 ,0, 0, 0 , - 5897, 644, 5894 ,3149, 700, 3150 ,0, 0, 0 , - 5897, 5894, 5893 ,3149, 3150, 3151 ,0, 0, 0 , - 5902, 639, 5899 ,3152, 3153, 3154 ,0, 0, 0 , - 5902, 5899, 5898 ,3152, 3154, 3155 ,0, 0, 0 , - 5907, 638, 5904 ,3156, 3157, 3158 ,0, 0, 0 , - 5907, 5904, 5903 ,3156, 3158, 3159 ,0, 0, 0 , - 5913, 640, 5909 ,3160, 3161, 3162 ,0, 0, 0 , - 5913, 5909, 5908 ,3160, 3162, 3163 ,0, 0, 0 , - 5920, 635, 5915 ,3164, 3165, 3166 ,0, 0, 0 , - 5920, 5915, 5914 ,3164, 3166, 3167 ,0, 0, 0 , - 5925, 633, 5922 ,3168, 688, 3169 ,0, 0, 0 , - 5925, 5922, 5921 ,3168, 3169, 3170 ,0, 0, 0 , - 5930, 631, 5927 ,3171, 3172, 3173 ,0, 0, 0 , - 5930, 5927, 5926 ,3171, 3173, 3174 ,0, 0, 0 , - 5935, 629, 5932 ,3175, 684, 3176 ,0, 0, 0 , - 5935, 5932, 5931 ,3175, 3176, 3177 ,0, 0, 0 , - 5940, 627, 5937 ,3178, 3179, 3180 ,0, 0, 0 , - 5940, 5937, 5936 ,3178, 3180, 3181 ,0, 0, 0 , - 5945, 625, 5942 ,3182, 680, 3183 ,0, 0, 0 , - 5945, 5942, 5941 ,3182, 3183, 3184 ,0, 0, 0 , - 5950, 623, 5947 ,3185, 3186, 3187 ,0, 0, 0 , - 5950, 5947, 5946 ,3185, 3187, 3188 ,0, 0, 0 , - 5957, 732, 5952 ,3189, 3190, 3191 ,0, 0, 0 , - 5957, 5952, 5951 ,3189, 3191, 3192 ,0, 0, 0 , - 5962, 619, 5959 ,3193, 3194, 3195 ,0, 0, 0 , - 5962, 5959, 5958 ,3193, 3195, 3196 ,0, 0, 0 , - 5966, 609, 5964 ,3197, 3198, 3199 ,0, 0, 0 , - 5966, 5964, 5963 ,3197, 3199, 3200 ,0, 0, 0 , - 5970, 605, 5968 ,3201, 3202, 3203 ,0, 0, 0 , - 5970, 5968, 5967 ,3201, 3203, 3204 ,0, 0, 0 , - 5973, 398, 5320 ,3205, 432, 2743 ,0, 0, 0 , - 5973, 5320, 5971 ,3205, 2743, 3206 ,0, 0, 0 , - 5978, 601, 5975 ,3207, 652, 3208 ,0, 0, 0 , - 5978, 5975, 5974 ,3207, 3208, 3209 ,0, 0, 0 , - 5983, 597, 5980 ,3210, 648, 3211 ,0, 0, 0 , - 5983, 5980, 5979 ,3210, 3211, 3212 ,0, 0, 0 , - 5988, 616, 5985 ,3213, 3214, 3215 ,0, 0, 0 , - 5988, 5985, 5984 ,3213, 3215, 3216 ,0, 0, 0 , - 5993, 589, 5990 ,3217, 640, 3218 ,0, 0, 0 , - 5993, 5990, 5989 ,3217, 3218, 3219 ,0, 0, 0 , - 5998, 651, 5995 ,3220, 3221, 3222 ,0, 0, 0 , - 5998, 5995, 5994 ,3220, 3222, 3223 ,0, 0, 0 , - 6003, 652, 6000 ,3224, 3225, 3226 ,0, 0, 0 , - 6003, 6000, 5999 ,3224, 3226, 3227 ,0, 0, 0 , - 6010, 617, 6005 ,3228, 672, 3229 ,0, 0, 0 , - 6010, 6005, 6004 ,3228, 3229, 3230 ,0, 0, 0 , - 6015, 560, 6012 ,3231, 3232, 3233 ,0, 0, 0 , - 6015, 6012, 6011 ,3231, 3233, 3234 ,0, 0, 0 , - 6021, 705, 6017 ,3235, 3236, 3237 ,0, 0, 0 , - 6021, 6017, 6016 ,3235, 3237, 3238 ,0, 0, 0 , - 6026, 547, 6023 ,3239, 596, 3240 ,0, 0, 0 , - 6026, 6023, 6022 ,3239, 3240, 3241 ,0, 0, 0 , - 6031, 544, 6028 ,3242, 592, 3243 ,0, 0, 0 , - 6031, 6028, 6027 ,3242, 3243, 3244 ,0, 0, 0 , - 6037, 541, 6033 ,3245, 588, 3246 ,0, 0, 0 , - 6037, 6033, 6032 ,3245, 3246, 3247 ,0, 0, 0 , - 6042, 528, 6039 ,3248, 3249, 3250 ,0, 0, 0 , - 6042, 6039, 6038 ,3248, 3250, 3251 ,0, 0, 0 , - 6048, 694, 6044 ,3252, 748, 3253 ,0, 0, 0 , - 6048, 6044, 6043 ,3252, 3253, 3254 ,0, 0, 0 , - 6053, 581, 6050 ,3255, 632, 3256 ,0, 0, 0 , - 6053, 6050, 6049 ,3255, 3256, 3257 ,0, 0, 0 , - 6059, 521, 6055 ,3258, 3259, 3260 ,0, 0, 0 , - 6059, 6055, 6054 ,3258, 3260, 3261 ,0, 0, 0 , - 5230, 518, 6061 ,3262, 3263, 3264 ,0, 0, 0 , - 5230, 6061, 6060 ,3262, 3264, 3265 ,0, 0, 0 , - 6068, 1463, 6065 ,3266, 3267, 3268 ,0, 0, 0 , - 6068, 6065, 6064 ,3266, 3268, 3269 ,0, 0, 0 , - 6072, 514, 6070 ,3270, 3271, 3272 ,0, 0, 0 , - 6072, 6070, 6069 ,3270, 3272, 3273 ,0, 0, 0 , - 6078, 524, 6074 ,3274, 3275, 3276 ,0, 0, 0 , - 6078, 6074, 6073 ,3274, 3276, 3277 ,0, 0, 0 , - 6083, 510, 6080 ,3278, 3279, 3280 ,0, 0, 0 , - 6083, 6080, 6079 ,3278, 3280, 3281 ,0, 0, 0 , - 6089, 509, 6085 ,3282, 552, 3283 ,0, 0, 0 , - 6089, 6085, 6084 ,3282, 3283, 3284 ,0, 0, 0 , - 6094, 533, 6091 ,3285, 580, 3286 ,0, 0, 0 , - 6094, 6091, 6090 ,3285, 3286, 3287 ,0, 0, 0 , - 6100, 715, 6096 ,3288, 3289, 3290 ,0, 0, 0 , - 6100, 6096, 6095 ,3288, 3290, 3291 ,0, 0, 0 , - 6105, 504, 6102 ,3292, 3293, 3294 ,0, 0, 0 , - 6105, 6102, 6101 ,3292, 3294, 3295 ,0, 0, 0 , - 6112, 502, 6107 ,3296, 544, 3297 ,0, 0, 0 , - 6112, 6107, 6106 ,3296, 3297, 3298 ,0, 0, 0 , - 6117, 498, 6114 ,3299, 540, 3300 ,0, 0, 0 , - 6117, 6114, 6113 ,3299, 3300, 3301 ,0, 0, 0 , - 6122, 494, 6119 ,3302, 536, 3303 ,0, 0, 0 , - 6122, 6119, 6118 ,3302, 3303, 3304 ,0, 0, 0 , - 6127, 490, 6124 ,3305, 532, 3306 ,0, 0, 0 , - 6127, 6124, 6123 ,3305, 3306, 3307 ,0, 0, 0 , - 6132, 488, 6129 ,3308, 3309, 3310 ,0, 0, 0 , - 6132, 6129, 6128 ,3308, 3310, 3311 ,0, 0, 0 , - 6137, 486, 6134 ,3312, 528, 3313 ,0, 0, 0 , - 6137, 6134, 6133 ,3312, 3313, 3314 ,0, 0, 0 , - 6142, 484, 6139 ,3315, 3316, 3317 ,0, 0, 0 , - 6142, 6139, 6138 ,3315, 3317, 3318 ,0, 0, 0 , - 6147, 482, 6144 ,3319, 524, 3320 ,0, 0, 0 , - 6147, 6144, 6143 ,3319, 3320, 3321 ,0, 0, 0 , - 6152, 478, 6149 ,3322, 520, 3323 ,0, 0, 0 , - 6152, 6149, 6148 ,3322, 3323, 3324 ,0, 0, 0 , - 6157, 474, 6154 ,3325, 516, 3326 ,0, 0, 0 , - 6157, 6154, 6153 ,3325, 3326, 3327 ,0, 0, 0 , - 6162, 466, 6159 ,3328, 508, 3329 ,0, 0, 0 , - 6162, 6159, 6158 ,3328, 3329, 3330 ,0, 0, 0 , - 6168, 734, 6164 ,3331, 3332, 3333 ,0, 0, 0 , - 6168, 6164, 6163 ,3331, 3333, 3334 ,0, 0, 0 , - 6173, 460, 6170 ,3335, 3336, 3337 ,0, 0, 0 , - 6173, 6170, 6169 ,3335, 3337, 3338 ,0, 0, 0 , - 6178, 458, 6175 ,3339, 500, 3340 ,0, 0, 0 , - 6178, 6175, 6174 ,3339, 3340, 3341 ,0, 0, 0 , - 6183, 454, 6180 ,3342, 496, 3343 ,0, 0, 0 , - 6183, 6180, 6179 ,3342, 3343, 3344 ,0, 0, 0 , - 6188, 452, 6185 ,3345, 3346, 3347 ,0, 0, 0 , - 6188, 6185, 6184 ,3345, 3347, 3348 ,0, 0, 0 , - 6193, 451, 6190 ,3349, 3350, 3351 ,0, 0, 0 , - 6193, 6190, 6189 ,3349, 3351, 3352 ,0, 0, 0 , - 6199, 447, 6195 ,3353, 488, 3354 ,0, 0, 0 , - 6199, 6195, 6194 ,3353, 3354, 3355 ,0, 0, 0 , - 6204, 754, 6201 ,3356, 3357, 3358 ,0, 0, 0 , - 6204, 6201, 6200 ,3356, 3358, 3359 ,0, 0, 0 , - 6210, 441, 6206 ,3360, 3361, 3362 ,0, 0, 0 , - 6210, 6206, 6205 ,3360, 3362, 3363 ,0, 0, 0 , - 6215, 538, 6212 ,3364, 3365, 3366 ,0, 0, 0 , - 6215, 6212, 6211 ,3364, 3366, 3367 ,0, 0, 0 , - 6220, 435, 6217 ,3368, 476, 3369 ,0, 0, 0 , - 6220, 6217, 6216 ,3368, 3369, 3370 ,0, 0, 0 , - 6226, 436, 6222 ,3371, 3372, 3373 ,0, 0, 0 , - 6226, 6222, 6221 ,3371, 3373, 3374 ,0, 0, 0 , - 6233, 430, 6228 ,3375, 3376, 3377 ,0, 0, 0 , - 6233, 6228, 6227 ,3375, 3377, 3378 ,0, 0, 0 , - 6238, 421, 6235 ,3379, 460, 3380 ,0, 0, 0 , - 6238, 6235, 6234 ,3379, 3380, 3381 ,0, 0, 0 , - 6243, 580, 6240 ,3382, 3383, 3384 ,0, 0, 0 , - 6243, 6240, 6239 ,3382, 3384, 3385 ,0, 0, 0 , - 6248, 419, 6245 ,3386, 3387, 3388 ,0, 0, 0 , - 6248, 6245, 6244 ,3386, 3388, 3389 ,0, 0, 0 , - 6253, 417, 6250 ,3390, 456, 3391 ,0, 0, 0 , - 6253, 6250, 6249 ,3390, 3391, 3392 ,0, 0, 0 , - 6258, 741, 6255 ,3393, 796, 3394 ,0, 0, 0 , - 6258, 6255, 6254 ,3393, 3394, 3395 ,0, 0, 0 , - 6264, 411, 6260 ,3396, 3397, 3398 ,0, 0, 0 , - 6264, 6260, 6259 ,3396, 3398, 3399 ,0, 0, 0 , - 6269, 427, 6266 ,3400, 3401, 3402 ,0, 0, 0 , - 6269, 6266, 6265 ,3400, 3402, 3403 ,0, 0, 0 , - 6274, 409, 6271 ,3404, 448, 3405 ,0, 0, 0 , - 6274, 6271, 6270 ,3404, 3405, 3406 ,0, 0, 0 , - 6279, 404, 6276 ,3407, 3408, 3409 ,0, 0, 0 , - 6279, 6276, 6275 ,3407, 3409, 3410 ,0, 0, 0 , - 6284, 400, 6281 ,3411, 3412, 3413 ,0, 0, 0 , - 6284, 6281, 6280 ,3411, 3413, 3414 ,0, 0, 0 , - 6290, 448, 6286 ,3415, 3416, 3417 ,0, 0, 0 , - 6290, 6286, 6285 ,3415, 3417, 3418 ,0, 0, 0 , - 6294, 398, 5973 ,3419, 432, 3205 ,0, 0, 0 , - 6294, 5973, 6291 ,3419, 3205, 3420 ,0, 0, 0 , - 6299, 394, 6296 ,3421, 428, 3422 ,0, 0, 0 , - 6299, 6296, 6295 ,3421, 3422, 3423 ,0, 0, 0 , - 6304, 390, 6301 ,3424, 424, 3425 ,0, 0, 0 , - 6304, 6301, 6300 ,3424, 3425, 3426 ,0, 0, 0 , - 6309, 386, 6306 ,3427, 420, 3428 ,0, 0, 0 , - 6309, 6306, 6305 ,3427, 3428, 3429 ,0, 0, 0 , - 6316, 380, 6311 ,3430, 412, 3431 ,0, 0, 0 , - 6316, 6311, 6310 ,3430, 3431, 3432 ,0, 0, 0 , - 6322, 377, 6318 ,3433, 408, 3434 ,0, 0, 0 , - 6322, 6318, 6317 ,3433, 3434, 3435 ,0, 0, 0 , - 6328, 370, 6324 ,3436, 400, 3437 ,0, 0, 0 , - 6328, 6324, 6323 ,3436, 3437, 3438 ,0, 0, 0 , - 6333, 366, 6330 ,3439, 396, 3440 ,0, 0, 0 , - 6333, 6330, 6329 ,3439, 3440, 3441 ,0, 0, 0 , - 6339, 362, 6335 ,3442, 392, 3443 ,0, 0, 0 , - 6339, 6335, 6334 ,3442, 3443, 3444 ,0, 0, 0 , - 6348, 358, 6341 ,3445, 388, 3446 ,0, 0, 0 , - 6348, 6341, 6340 ,3445, 3446, 3447 ,0, 0, 0 , - 6352, 355, 6350 ,3448, 384, 3449 ,0, 0, 0 , - 6352, 6350, 6349 ,3448, 3449, 3450 ,0, 0, 0 , - 6357, 351, 6354 ,3451, 380, 3452 ,0, 0, 0 , - 6357, 6354, 6353 ,3451, 3452, 3453 ,0, 0, 0 , - 6362, 347, 6359 ,3454, 376, 3455 ,0, 0, 0 , - 6362, 6359, 6358 ,3454, 3455, 3456 ,0, 0, 0 , - 6368, 343, 6364 ,3457, 372, 3458 ,0, 0, 0 , - 6368, 6364, 6363 ,3457, 3458, 3459 ,0, 0, 0 , - 6372, 341, 6370 ,3460, 3461, 3462 ,0, 0, 0 , - 6372, 6370, 6369 ,3460, 3462, 3463 ,0, 0, 0 , - 6378, 339, 6374 ,3464, 368, 3465 ,0, 0, 0 , - 6378, 6374, 6373 ,3464, 3465, 3466 ,0, 0, 0 , - 6383, 337, 6380 ,3467, 3468, 3469 ,0, 0, 0 , - 6383, 6380, 6379 ,3467, 3469, 3470 ,0, 0, 0 , - 6388, 335, 6385 ,3471, 364, 3472 ,0, 0, 0 , - 6388, 6385, 6384 ,3471, 3472, 3473 ,0, 0, 0 , - 6393, 333, 6390 ,3474, 3475, 3476 ,0, 0, 0 , - 6393, 6390, 6389 ,3474, 3476, 3477 ,0, 0, 0 , - 6398, 331, 6395 ,3478, 360, 3479 ,0, 0, 0 , - 6398, 6395, 6394 ,3478, 3479, 3480 ,0, 0, 0 , - 6403, 329, 6400 ,3481, 3482, 3483 ,0, 0, 0 , - 6403, 6400, 6399 ,3481, 3483, 3484 ,0, 0, 0 , - 6408, 327, 6405 ,3485, 356, 3486 ,0, 0, 0 , - 6408, 6405, 6404 ,3485, 3486, 3487 ,0, 0, 0 , - 6413, 325, 6410 ,3488, 3489, 3490 ,0, 0, 0 , - 6413, 6410, 6409 ,3488, 3490, 3491 ,0, 0, 0 , - 6418, 323, 6415 ,3492, 352, 3493 ,0, 0, 0 , - 6418, 6415, 6414 ,3492, 3493, 3494 ,0, 0, 0 , - 6423, 321, 6420 ,3495, 3496, 3497 ,0, 0, 0 , - 6423, 6420, 6419 ,3495, 3497, 3498 ,0, 0, 0 , - 6430, 319, 6425 ,3499, 348, 3500 ,0, 0, 0 , - 6430, 6425, 6424 ,3499, 3500, 3501 ,0, 0, 0 , - 6435, 320, 6432 ,3502, 3503, 3504 ,0, 0, 0 , - 6435, 6432, 6431 ,3502, 3504, 3505 ,0, 0, 0 , - 6442, 295, 6437 ,3506, 332, 3507 ,0, 0, 0 , - 6442, 6437, 6436 ,3506, 3507, 3508 ,0, 0, 0 , - 6447, 296, 6444 ,3509, 3510, 3511 ,0, 0, 0 , - 6447, 6444, 6443 ,3509, 3511, 3512 ,0, 0, 0 , - 6454, 291, 6449 ,3513, 328, 3514 ,0, 0, 0 , - 6454, 6449, 6448 ,3513, 3514, 3515 ,0, 0, 0 , - 6459, 292, 6456 ,3516, 3517, 3518 ,0, 0, 0 , - 6459, 6456, 6455 ,3516, 3518, 3519 ,0, 0, 0 , - 6464, 287, 6461 ,3520, 324, 3521 ,0, 0, 0 , - 6464, 6461, 6460 ,3520, 3521, 3522 ,0, 0, 0 , - 6469, 288, 6466 ,3523, 3524, 3525 ,0, 0, 0 , - 6469, 6466, 6465 ,3523, 3525, 3526 ,0, 0, 0 , - 6473, 283, 6471 ,3527, 320, 3528 ,0, 0, 0 , - 6473, 6471, 6470 ,3527, 3528, 3529 ,0, 0, 0 , - 6478, 284, 6475 ,3530, 3531, 3532 ,0, 0, 0 , - 6478, 6475, 6474 ,3530, 3532, 3533 ,0, 0, 0 , - 6483, 285, 6480 ,3534, 3535, 3536 ,0, 0, 0 , - 6483, 6480, 6479 ,3534, 3536, 3537 ,0, 0, 0 , - 6489, 304, 6485 ,3538, 3539, 3540 ,0, 0, 0 , - 6489, 6485, 6484 ,3538, 3540, 3541 ,0, 0, 0 , - 6494, 279, 6491 ,3542, 316, 3543 ,0, 0, 0 , - 6494, 6491, 6490 ,3542, 3543, 3544 ,0, 0, 0 , - 6499, 280, 6496 ,3545, 3546, 3547 ,0, 0, 0 , - 6499, 6496, 6495 ,3545, 3547, 3548 ,0, 0, 0 , - 6504, 275, 6501 ,3549, 312, 3550 ,0, 0, 0 , - 6504, 6501, 6500 ,3549, 3550, 3551 ,0, 0, 0 , - 6508, 276, 6506 ,3552, 3553, 3554 ,0, 0, 0 , - 6508, 6506, 6505 ,3552, 3554, 3555 ,0, 0, 0 , - 6514, 277, 6510 ,3556, 3557, 3558 ,0, 0, 0 , - 6514, 6510, 6509 ,3556, 3558, 3559 ,0, 0, 0 , - 6518, 265, 6516 ,3560, 298, 3561 ,0, 0, 0 , - 6518, 6516, 6515 ,3560, 3561, 3562 ,0, 0, 0 , - 6521, 261, 6520 ,3563, 292, 3564 ,0, 0, 0 , - 6521, 6520, 6519 ,3563, 3564, 3565 ,0, 0, 0 , - 6524, 318, 6517 ,3566, 3567, 3568 ,0, 0, 0 , - 6524, 6517, 6522 ,3566, 3568, 3569 ,0, 0, 0 , - 6529, 270, 6526 ,3570, 3571, 3572 ,0, 0, 0 , - 6529, 6526, 6525 ,3570, 3572, 3573 ,0, 0, 0 , - 6533, 251, 6531 ,3574, 280, 3575 ,0, 0, 0 , - 6533, 6531, 6530 ,3574, 3575, 3576 ,0, 0, 0 , - 6538, 243, 6535 ,3577, 272, 3578 ,0, 0, 0 , - 6538, 6535, 6534 ,3577, 3578, 3579 ,0, 0, 0 , - 6543, 254, 6540 ,3580, 284, 3581 ,0, 0, 0 , - 6543, 6540, 6539 ,3580, 3581, 3582 ,0, 0, 0 , - 6548, 222, 6545 ,3583, 3584, 3585 ,0, 0, 0 , - 6548, 6545, 6544 ,3583, 3585, 3586 ,0, 0, 0 , - 6553, 217, 6550 ,3587, 248, 3588 ,0, 0, 0 , - 6553, 6550, 6549 ,3587, 3588, 3589 ,0, 0, 0 , - 6557, 218, 6555 ,3590, 3591, 3592 ,0, 0, 0 , - 6557, 6555, 6554 ,3590, 3592, 3593 ,0, 0, 0 , - 6561, 213, 6559 ,3594, 244, 3595 ,0, 0, 0 , - 6561, 6559, 6558 ,3594, 3595, 3596 ,0, 0, 0 , - 6565, 214, 6563 ,3597, 3598, 3599 ,0, 0, 0 , - 6565, 6563, 6562 ,3597, 3599, 3600 ,0, 0, 0 , - 6570, 209, 6567 ,3601, 240, 3602 ,0, 0, 0 , - 6570, 6567, 6566 ,3601, 3602, 3603 ,0, 0, 0 , - 6576, 210, 6572 ,3604, 3605, 3606 ,0, 0, 0 , - 6576, 6572, 6571 ,3604, 3606, 3607 ,0, 0, 0 , - 6580, 205, 6578 ,3608, 236, 3609 ,0, 0, 0 , - 6580, 6578, 6577 ,3608, 3609, 3610 ,0, 0, 0 , - 6584, 206, 6582 ,3611, 3612, 3613 ,0, 0, 0 , - 6584, 6582, 6581 ,3611, 3613, 3614 ,0, 0, 0 , - 6589, 201, 6586 ,3615, 232, 3616 ,0, 0, 0 , - 6589, 6586, 6585 ,3615, 3616, 3617 ,0, 0, 0 , - 6595, 202, 6591 ,3618, 3619, 3620 ,0, 0, 0 , - 6595, 6591, 6590 ,3618, 3620, 3621 ,0, 0, 0 , - 6599, 197, 6597 ,3622, 228, 3623 ,0, 0, 0 , - 6599, 6597, 6596 ,3622, 3623, 3624 ,0, 0, 0 , - 6603, 198, 6601 ,3625, 3626, 3627 ,0, 0, 0 , - 6603, 6601, 6600 ,3625, 3627, 3628 ,0, 0, 0 , - 6608, 195, 6605 ,3629, 3630, 3631 ,0, 0, 0 , - 6608, 6605, 6604 ,3629, 3631, 3632 ,0, 0, 0 , - 6612, 189, 6610 ,3633, 220, 3634 ,0, 0, 0 , - 6612, 6610, 6609 ,3633, 3634, 3635 ,0, 0, 0 , - 6616, 186, 6614 ,3636, 216, 3637 ,0, 0, 0 , - 6616, 6614, 6613 ,3636, 3637, 3638 ,0, 0, 0 , - 6619, 186, 6616 ,3639, 216, 3636 ,0, 0, 0 , - 6619, 6616, 6617 ,3639, 3636, 3640 ,0, 0, 0 , - 6624, 183, 6621 ,3641, 3642, 3643 ,0, 0, 0 , - 6624, 6621, 6620 ,3641, 3643, 3644 ,0, 0, 0 , - 6629, 177, 6626 ,3645, 208, 3646 ,0, 0, 0 , - 6629, 6626, 6625 ,3645, 3646, 3647 ,0, 0, 0 , - 6633, 178, 6631 ,3648, 3649, 3650 ,0, 0, 0 , - 6633, 6631, 6630 ,3648, 3650, 3651 ,0, 0, 0 , - 6638, 179, 6635 ,3652, 3653, 3654 ,0, 0, 0 , - 6638, 6635, 6634 ,3652, 3654, 3655 ,0, 0, 0 , - 6641, 168, 6640 ,3656, 200, 3657 ,0, 0, 0 , - 6641, 6640, 6639 ,3656, 3657, 3658 ,0, 0, 0 , - 6646, 169, 6643 ,3659, 3660, 3661 ,0, 0, 0 , - 6646, 6643, 6642 ,3659, 3661, 3662 ,0, 0, 0 , - 6651, 170, 6648 ,3663, 3664, 3665 ,0, 0, 0 , - 6651, 6648, 6647 ,3663, 3665, 3666 ,0, 0, 0 , - 6656, 164, 6653 ,3667, 196, 3668 ,0, 0, 0 , - 6656, 6653, 6652 ,3667, 3668, 3669 ,0, 0, 0 , - 6661, 165, 6658 ,3670, 3671, 3672 ,0, 0, 0 , - 6661, 6658, 6657 ,3670, 3672, 3673 ,0, 0, 0 , - 6667, 161, 6663 ,3674, 3675, 3676 ,0, 0, 0 , - 6667, 6663, 6662 ,3674, 3676, 3677 ,0, 0, 0 , - 6672, 160, 6669 ,3678, 192, 3679 ,0, 0, 0 , - 6672, 6669, 6668 ,3678, 3679, 3680 ,0, 0, 0 , - 6677, 162, 6674 ,3681, 3682, 3683 ,0, 0, 0 , - 6677, 6674, 6673 ,3681, 3683, 3684 ,0, 0, 0 , - 6681, 247, 6679 ,3685, 276, 3686 ,0, 0, 0 , - 6681, 6679, 6678 ,3685, 3686, 3687 ,0, 0, 0 , - 6689, 150, 6683 ,3688, 180, 3689 ,0, 0, 0 , - 6689, 6683, 6682 ,3688, 3689, 3690 ,0, 0, 0 , - 6695, 146, 6691 ,3691, 176, 3692 ,0, 0, 0 , - 6695, 6691, 6690 ,3691, 3692, 3693 ,0, 0, 0 , - 6700, 132, 6697 ,3694, 155, 3695 ,0, 0, 0 , - 6700, 6697, 6696 ,3694, 3695, 3696 ,0, 0, 0 , - 6704, 123, 6702 ,3697, 143, 3698 ,0, 0, 0 , - 6704, 6702, 6701 ,3697, 3698, 3699 ,0, 0, 0 , - 6709, 124, 6706 ,3700, 3701, 3702 ,0, 0, 0 , - 6709, 6706, 6705 ,3700, 3702, 3703 ,0, 0, 0 , - 6714, 125, 6711 ,3704, 3705, 3706 ,0, 0, 0 , - 6714, 6711, 6710 ,3704, 3706, 3707 ,0, 0, 0 , - 6721, 119, 6716 ,3708, 139, 3709 ,0, 0, 0 , - 6721, 6716, 6715 ,3708, 3709, 3710 ,0, 0, 0 , - 6726, 120, 6723 ,3711, 3712, 3713 ,0, 0, 0 , - 6726, 6723, 6722 ,3711, 3713, 3714 ,0, 0, 0 , - 6730, 116, 6728 ,3715, 3716, 3717 ,0, 0, 0 , - 6730, 6728, 6727 ,3715, 3717, 3718 ,0, 0, 0 , - 6736, 117, 6732 ,3719, 3720, 3721 ,0, 0, 0 , - 6736, 6732, 6731 ,3719, 3721, 3722 ,0, 0, 0 , - 6742, 112, 6738 ,3723, 131, 3724 ,0, 0, 0 , - 6742, 6738, 6737 ,3723, 3724, 3725 ,0, 0, 0 , - 6748, 108, 6744 ,3726, 127, 3727 ,0, 0, 0 , - 6748, 6744, 6743 ,3726, 3727, 3728 ,0, 0, 0 , - 6752, 105, 6750 ,3729, 123, 3730 ,0, 0, 0 , - 6752, 6750, 6749 ,3729, 3730, 3731 ,0, 0, 0 , - 6759, 97, 6754 ,3732, 115, 3733 ,0, 0, 0 , - 6759, 6754, 6753 ,3732, 3733, 3734 ,0, 0, 0 , - 6764, 95, 6761 ,3735, 3736, 3737 ,0, 0, 0 , - 6764, 6761, 6760 ,3735, 3737, 3738 ,0, 0, 0 , - 6769, 96, 6766 ,3739, 3740, 3741 ,0, 0, 0 , - 6769, 6766, 6765 ,3739, 3741, 3742 ,0, 0, 0 , - 6773, 94, 6771 ,3743, 111, 3744 ,0, 0, 0 , - 6773, 6771, 6770 ,3743, 3744, 3745 ,0, 0, 0 , - 6776, 93, 6775 ,3746, 107, 3747 ,0, 0, 0 , - 6776, 6775, 6774 ,3746, 3747, 3748 ,0, 0, 0 , - 6781, 87, 6778 ,3749, 99, 3750 ,0, 0, 0 , - 6781, 6778, 6777 ,3749, 3750, 3751 ,0, 0, 0 , - 6785, 88, 6783 ,3752, 3753, 3754 ,0, 0, 0 , - 6785, 6783, 6782 ,3752, 3754, 3755 ,0, 0, 0 , - 6789, 70, 6787 ,3756, 77, 3757 ,0, 0, 0 , - 6789, 6787, 6786 ,3756, 3757, 3758 ,0, 0, 0 , - 6793, 71, 6791 ,3759, 3760, 3761 ,0, 0, 0 , - 6793, 6791, 6790 ,3759, 3761, 3762 ,0, 0, 0 , - 6798, 69, 6795 ,3763, 73, 3764 ,0, 0, 0 , - 6798, 6795, 6794 ,3763, 3764, 3765 ,0, 0, 0 , - 6802, 62, 6800 ,3766, 65, 3767 ,0, 0, 0 , - 6802, 6800, 6799 ,3766, 3767, 3768 ,0, 0, 0 , - 6806, 63, 6804 ,3769, 3770, 3771 ,0, 0, 0 , - 6806, 6804, 6803 ,3769, 3771, 3772 ,0, 0, 0 , - 6810, 64, 6808 ,3773, 3774, 3775 ,0, 0, 0 , - 6810, 6808, 6807 ,3773, 3775, 3776 ,0, 0, 0 , - 6814, 61, 6812 ,3777, 3778, 3779 ,0, 0, 0 , - 6814, 6812, 6811 ,3777, 3779, 3780 ,0, 0, 0 , - 6818, 50, 6816 ,3781, 53, 3782 ,0, 0, 0 , - 6818, 6816, 6815 ,3781, 3782, 3783 ,0, 0, 0 , - 6822, 52, 6820 ,3784, 3785, 3786 ,0, 0, 0 , - 6822, 6820, 6819 ,3784, 3786, 3787 ,0, 0, 0 , - 6828, 53, 6824 ,3788, 3789, 3790 ,0, 0, 0 , - 6828, 6824, 6823 ,3788, 3790, 3791 ,0, 0, 0 , - 6833, 46, 6830 ,3792, 49, 3793 ,0, 0, 0 , - 6833, 6830, 6829 ,3792, 3793, 3794 ,0, 0, 0 , - 6838, 47, 6835 ,3795, 3796, 3797 ,0, 0, 0 , - 6838, 6835, 6834 ,3795, 3797, 3798 ,0, 0, 0 , - 6844, 42, 6840 ,3799, 45, 3800 ,0, 0, 0 , - 6844, 6840, 6839 ,3799, 3800, 3801 ,0, 0, 0 , - 6849, 43, 6846 ,3802, 3803, 3804 ,0, 0, 0 , - 6849, 6846, 6845 ,3802, 3804, 3805 ,0, 0, 0 , - 6855, 33, 6851 ,3806, 3807, 3808 ,0, 0, 0 , - 6855, 6851, 6850 ,3806, 3808, 3809 ,0, 0, 0 , - 6860, 29, 6857 ,3810, 3811, 3812 ,0, 0, 0 , - 6860, 6857, 6856 ,3810, 3812, 3813 ,0, 0, 0 , - 6864, 23, 6862 ,3814, 25, 3815 ,0, 0, 0 , - 6864, 6862, 6861 ,3814, 3815, 3816 ,0, 0, 0 , - 6869, 24, 6866 ,3817, 3818, 3819 ,0, 0, 0 , - 6869, 6866, 6865 ,3817, 3819, 3820 ,0, 0, 0 , - 6873, 25, 6871 ,3821, 3822, 3823 ,0, 0, 0 , - 6873, 6871, 6870 ,3821, 3823, 3824 ,0, 0, 0 , - 6878, 19, 6875 ,3825, 21, 3826 ,0, 0, 0 , - 6878, 6875, 6874 ,3825, 3826, 3827 ,0, 0, 0 , - 6883, 20, 6880 ,3828, 3829, 3830 ,0, 0, 0 , - 6883, 6880, 6879 ,3828, 3830, 3831 ,0, 0, 0 , - 6887, 15, 6885 ,3832, 17, 3833 ,0, 0, 0 , - 6887, 6885, 6884 ,3832, 3833, 3834 ,0, 0, 0 , - 6890, 76, 6812 ,3835, 3836, 3779 ,0, 0, 0 , - 6890, 6812, 6888 ,3835, 3779, 3837 ,0, 0, 0 , - 6896, 12, 6892 ,3838, 13, 3839 ,0, 0, 0 , - 6896, 6892, 6891 ,3838, 3839, 3840 ,0, 0, 0 , - 6900, 8, 6898 ,3841, 9, 3842 ,0, 0, 0 , - 6900, 6898, 6897 ,3841, 3842, 3843 ,0, 0, 0 , - 6905, 9, 6902 ,3844, 3845, 3846 ,0, 0, 0 , - 6905, 6902, 6901 ,3844, 3846, 3847 ,0, 0, 0 , - 6910, 4, 6907 ,3848, 5, 3849 ,0, 0, 0 , - 6910, 6907, 6906 ,3848, 3849, 3850 ,0, 0, 0 , - 6916, 5, 6912 ,3851, 3852, 3853 ,0, 0, 0 , - 6916, 6912, 6911 ,3851, 3853, 3854 ,0, 0, 0 , - 6921, 0, 6918 ,3855, 1, 3856 ,0, 0, 0 , - 6921, 6918, 6917 ,3855, 3856, 3857 ,0, 0, 0 , - 6927, 1, 6923 ,3858, 3859, 3860 ,0, 0, 0 , - 6927, 6923, 6922 ,3858, 3860, 3861 ,0, 0, 0 , - 6935, 2, 6929 ,3862, 3863, 3864 ,0, 0, 0 , - 6935, 6929, 6928 ,3862, 3864, 3865 ,0, 0, 0 , - 6940, 914, 6937 ,3866, 3867, 3868 ,0, 0, 0 , - 6940, 6937, 6936 ,3866, 3868, 3869 ,0, 0, 0 , - 6938, 1069, 3386 ,3870, 1224, 1223 ,0, 0, 0 , - 6938, 3386, 6941 ,3870, 1223, 3871 ,0, 0, 0 , - 4539, 1915, 4486 ,3872, 2156, 2155 ,0, 0, 0 , - 4539, 4486, 6942 ,3872, 2155, 3873 ,0, 0, 0 , - 4546, 1950, 4528 ,3874, 3875, 3876 ,0, 0, 0 , - 4546, 4528, 6943 ,3874, 3876, 3877 ,0, 0, 0 , - 4545, 1875, 4424 ,3878, 3879, 3880 ,0, 0, 0 , - 4545, 4424, 6944 ,3878, 3880, 3881 ,0, 0, 0 , - 4552, 1946, 4523 ,3882, 3883, 3884 ,0, 0, 0 , - 4552, 4523, 6945 ,3882, 3884, 3885 ,0, 0, 0 , - 4551, 1938, 4516 ,3886, 2180, 2179 ,0, 0, 0 , - 4551, 4516, 6946 ,3886, 2179, 3887 ,0, 0, 0 , - 4557, 1942, 4518 ,3888, 3889, 3890 ,0, 0, 0 , - 4557, 4518, 6947 ,3888, 3890, 3891 ,0, 0, 0 , - 4556, 1888, 4439 ,2211, 2210, 3892 ,0, 0, 0 , - 4556, 4439, 6948 ,2211, 3892, 3893 ,0, 0, 0 , - 4561, 1879, 4440 ,2214, 2118, 2117 ,0, 0, 0 , - 4561, 4440, 6949 ,2214, 2117, 3894 ,0, 0, 0 , - 4550, 1937, 4510 ,2207, 2206, 3895 ,0, 0, 0 , - 4550, 4510, 6950 ,2207, 3895, 3896 ,0, 0, 0 , - 4565, 1881, 4460 ,2218, 2217, 3897 ,0, 0, 0 , - 4565, 4460, 6951 ,2218, 3897, 3898 ,0, 0, 0 , - 4554, 1874, 4423 ,2205, 3899, 2105 ,0, 0, 0 , - 4554, 4423, 6952 ,2205, 2105, 3900 ,0, 0, 0 , - 4571, 1933, 4505 ,3901, 3902, 3903 ,0, 0, 0 , - 4571, 4505, 6953 ,3901, 3903, 3904 ,0, 0, 0 , - 4575, 1882, 4463 ,2226, 2225, 2141 ,0, 0, 0 , - 4575, 4463, 6954 ,2226, 2141, 3905 ,0, 0, 0 , - 4570, 1927, 4498 ,2222, 2221, 3906 ,0, 0, 0 , - 4570, 4498, 6955 ,2222, 3906, 3907 ,0, 0, 0 , - 4580, 1923, 4493 ,2230, 2229, 3908 ,0, 0, 0 , - 4580, 4493, 6956 ,2230, 3908, 3909 ,0, 0, 0 , - 4584, 1914, 4481 ,2234, 2233, 3910 ,0, 0, 0 , - 4584, 4481, 6957 ,2234, 3910, 3911 ,0, 0, 0 , - 4589, 1884, 4435 ,2237, 2114, 2113 ,0, 0, 0 , - 4589, 4435, 6958 ,2237, 2113, 3912 ,0, 0, 0 , - 4573, 1873, 4425 ,2220, 2104, 2103 ,0, 0, 0 , - 4573, 4425, 6959 ,2220, 2103, 3913 ,0, 0, 0 , - 4548, 1917, 4485 ,2201, 3914, 3915 ,0, 0, 0 , - 4548, 4485, 6960 ,2201, 3915, 3916 ,0, 0, 0 , - 4594, 1924, 4494 ,3917, 3918, 3919 ,0, 0, 0 , - 4594, 4494, 6961 ,3917, 3919, 3920 ,0, 0, 0 , - 4593, 1918, 4490 ,2240, 2160, 2159 ,0, 0, 0 , - 4593, 4490, 6962 ,2240, 2159, 3921 ,0, 0, 0 , - 4599, 1807, 4328 ,3922, 3923, 3924 ,0, 0, 0 , - 4599, 4328, 6963 ,3922, 3924, 3925 ,0, 0, 0 , - 4537, 1804, 4324 ,3926, 3927, 3928 ,0, 0, 0 , - 4537, 4324, 6964 ,3926, 3928, 3929 ,0, 0, 0 , - 4596, 1916, 4484 ,2239, 3930, 2157 ,0, 0, 0 , - 4596, 4484, 6965 ,2239, 2157, 3931 ,0, 0, 0 , - 4587, 1806, 4327 ,2232, 3932, 2018 ,0, 0, 0 , - 4587, 4327, 6966 ,2232, 2018, 3933 ,0, 0, 0 , - 4605, 1910, 4476 ,3934, 3935, 3936 ,0, 0, 0 , - 4605, 4476, 6967 ,3934, 3936, 3937 ,0, 0, 0 , - 4609, 1885, 4433 ,2251, 2250, 2115 ,0, 0, 0 , - 4609, 4433, 6968 ,2251, 2115, 3938 ,0, 0, 0 , - 4604, 1812, 4339 ,2247, 2025, 2024 ,0, 0, 0 , - 4604, 4339, 6969 ,2247, 2024, 3939 ,0, 0, 0 , - 4616, 1850, 4394 ,3940, 2074, 2073 ,0, 0, 0 , - 4616, 4394, 6970 ,3940, 2073, 3941 ,0, 0, 0 , - 4621, 1906, 4471 ,3942, 3943, 3944 ,0, 0, 0 , - 4621, 4471, 6971 ,3942, 3944, 3945 ,0, 0, 0 , - 4620, 1854, 4396 ,2259, 2258, 3946 ,0, 0, 0 , - 4620, 4396, 6972 ,2259, 3946, 3947 ,0, 0, 0 , - 4628, 1857, 4400 ,3948, 3949, 3950 ,0, 0, 0 , - 4628, 4400, 6973 ,3948, 3950, 3951 ,0, 0, 0 , - 4631, 1790, 6975 ,2265, 2136, 3952 ,0, 0, 0 , - 4631, 6975, 6974 ,2265, 3952, 3953 ,0, 0, 0 , - 6975, 1790, 4461 ,3952, 2136, 2135 ,0, 0, 0 , - 6975, 4461, 6976 ,3952, 2135, 3954 ,0, 0, 0 , - 4635, 1883, 4465 ,3955, 2140, 2139 ,0, 0, 0 , - 4635, 4465, 6977 ,3955, 2139, 3956 ,0, 0, 0 , - 4578, 1886, 4434 ,2224, 3957, 3958 ,0, 0, 0 , - 4578, 4434, 6978 ,2224, 3958, 3959 ,0, 0, 0 , - 4643, 1896, 4457 ,2272, 2132, 2131 ,0, 0, 0 , - 4643, 4457, 6979 ,2272, 2131, 3960 ,0, 0, 0 , - 4642, 1889, 4446 ,3961, 2122, 2121 ,0, 0, 0 , - 4642, 4446, 6980 ,3961, 2121, 3962 ,0, 0, 0 , - 4645, 1895, 4452 ,2277, 2276, 3963 ,0, 0, 0 , - 4645, 4452, 6981 ,2277, 3963, 3964 ,0, 0, 0 , - 4649, 1878, 4437 ,2281, 2280, 2119 ,0, 0, 0 , - 4649, 4437, 6982 ,2281, 2119, 3965 ,0, 0, 0 , - 4647, 1893, 4445 ,2275, 3966, 3967 ,0, 0, 0 , - 4647, 4445, 6983 ,2275, 3967, 3968 ,0, 0, 0 , - 4641, 1790, 4654 ,2273, 2136, 3969 ,0, 0, 0 , - 4641, 4654, 6984 ,2273, 3969, 3970 ,0, 0, 0 , - 4653, 1872, 4420 ,2285, 2284, 3971 ,0, 0, 0 , - 4653, 4420, 6985 ,2285, 3971, 3972 ,0, 0, 0 , - 4633, 1856, 4399 ,2264, 3973, 2081 ,0, 0, 0 , - 4633, 4399, 6986 ,2264, 2081, 3974 ,0, 0, 0 , - 4651, 1876, 4431 ,2279, 2108, 2111 ,0, 0, 0 , - 4651, 4431, 6988 ,2279, 2111, 3975 ,0, 0, 0 , - 4655, 1790, 6990 ,2283, 2136, 3976 ,0, 0, 0 , - 4655, 6990, 6989 ,2283, 3976, 3977 ,0, 0, 0 , - 4657, 1868, 4417 ,2289, 2288, 3978 ,0, 0, 0 , - 4657, 4417, 6991 ,2289, 3978, 3979 ,0, 0, 0 , - 4659, 1791, 6990 ,2287, 3980, 3976 ,0, 0, 0 , - 4659, 6990, 6992 ,2287, 3976, 3981 ,0, 0, 0 , - 4661, 1863, 6994 ,2293, 2292, 3982 ,0, 0, 0 , - 4661, 6994, 6993 ,2293, 3982, 3983 ,0, 0, 0 , - 4666, 1862, 4406 ,3984, 3985, 3986 ,0, 0, 0 , - 4666, 4406, 6995 ,3984, 3986, 3987 ,0, 0, 0 , - 4665, 1858, 4401 ,2297, 2296, 3988 ,0, 0, 0 , - 4665, 4401, 6996 ,2297, 3988, 3989 ,0, 0, 0 , - 4626, 1832, 4365 ,3990, 3991, 2053 ,0, 0, 0 , - 4626, 4365, 6997 ,3990, 2053, 3992 ,0, 0, 0 , - 4667, 1790, 6987 ,2295, 2136, 3993 ,0, 0, 0 , - 4667, 6987, 6998 ,2295, 3993, 3994 ,0, 0, 0 , - 4623, 1853, 4393 ,2257, 3995, 3996 ,0, 0, 0 , - 4623, 4393, 6999 ,2257, 3996, 3997 ,0, 0, 0 , - 4615, 1849, 4388 ,2255, 2254, 3998 ,0, 0, 0 , - 4615, 4388, 7000 ,2255, 3998, 3999 ,0, 0, 0 , - 4673, 1820, 4351 ,2303, 2036, 2035 ,0, 0, 0 , - 4673, 4351, 7001 ,2303, 2035, 4000 ,0, 0, 0 , - 4618, 1815, 4338 ,2253, 4001, 4002 ,0, 0, 0 , - 4618, 4338, 7002 ,2253, 4002, 4003 ,0, 0, 0 , - 4680, 1845, 4383 ,4004, 4005, 4006 ,0, 0, 0 , - 4680, 4383, 7003 ,4004, 4006, 4007 ,0, 0, 0 , - 4679, 1783, 4300 ,2307, 2306, 4008 ,0, 0, 0 , - 4679, 4300, 7004 ,2307, 4008, 4009 ,0, 0, 0 , - 4687, 1842, 4379 ,4010, 4011, 4012 ,0, 0, 0 , - 4687, 4379, 7005 ,4010, 4012, 4013 ,0, 0, 0 , - 4691, 1817, 4346 ,2314, 2033, 2032 ,0, 0, 0 , - 4691, 4346, 7006 ,2314, 2032, 4014 ,0, 0, 0 , - 4686, 1787, 4305 ,4015, 4016, 4017 ,0, 0, 0 , - 4686, 4305, 7007 ,4015, 4017, 4018 ,0, 0, 0 , - 4695, 1716, 4220 ,2317, 1931, 1930 ,0, 0, 0 , - 4695, 4220, 7008 ,2317, 1930, 4019 ,0, 0, 0 , - 4703, 1818, 4342 ,4020, 4021, 4022 ,0, 0, 0 , - 4703, 4342, 7009 ,4020, 4022, 4023 ,0, 0, 0 , - 4700, 1705, 4206 ,2320, 1919, 1918 ,0, 0, 0 , - 4700, 4206, 7010 ,2320, 1918, 4024 ,0, 0, 0 , - 4708, 1827, 4363 ,4025, 2048, 2047 ,0, 0, 0 , - 4708, 4363, 7011 ,4025, 2047, 4026 ,0, 0, 0 , - 4713, 1834, 4369 ,4027, 4028, 4029 ,0, 0, 0 , - 4713, 4369, 7012 ,4027, 4029, 4030 ,0, 0, 0 , - 4717, 1789, 7014 ,2332, 2331, 4031 ,0, 0, 0 , - 4717, 7014, 7013 ,2332, 4031, 4032 ,0, 0, 0 , - 4712, 1833, 4366 ,2328, 2327, 4033 ,0, 0, 0 , - 4712, 4366, 7015 ,2328, 4033, 4034 ,0, 0, 0 , - 4715, 1830, 4362 ,2326, 4035, 4036 ,0, 0, 0 , - 4715, 4362, 7016 ,2326, 4036, 4037 ,0, 0, 0 , - 4707, 1689, 4180 ,2324, 2323, 1896 ,0, 0, 0 , - 4707, 4180, 7017 ,2324, 1896, 4038 ,0, 0, 0 , - 7019, 1816, 4343 ,4039, 2029, 2028 ,0, 0, 0 , - 7019, 4343, 7018 ,4039, 2028, 4040 ,0, 0, 0 , - 7021, 1788, 4349 ,4041, 4042, 4043 ,0, 0, 0 , - 7021, 4349, 7020 ,4041, 4043, 4044 ,0, 0, 0 , - 4671, 1821, 4350 ,2299, 4045, 4046 ,0, 0, 0 , - 4671, 4350, 7022 ,2299, 4046, 4047 ,0, 0, 0 , - 4677, 1819, 4345 ,2302, 4048, 4049 ,0, 0, 0 , - 4677, 4345, 7023 ,2302, 4049, 4050 ,0, 0, 0 , - 4607, 1805, 4330 ,2246, 2017, 2016 ,0, 0, 0 , - 4607, 4330, 7024 ,2246, 2016, 4051 ,0, 0, 0 , - 4721, 1778, 4294 ,2336, 2335, 4052 ,0, 0, 0 , - 4721, 4294, 7025 ,2336, 4052, 4053 ,0, 0, 0 , - 4723, 1808, 4329 ,4054, 4055, 4056 ,0, 0, 0 , - 4723, 4329, 7026 ,4054, 4056, 4057 ,0, 0, 0 , - 4602, 1803, 4323 ,2242, 4058, 2014 ,0, 0, 0 , - 4602, 4323, 7027 ,2242, 2014, 4059 ,0, 0, 0 , - 4730, 1685, 4178 ,4060, 1891, 1890 ,0, 0, 0 , - 4730, 4178, 7028 ,4060, 1890, 4061 ,0, 0, 0 , - 4536, 1053, 3361 ,2199, 2198, 1205 ,0, 0, 0 , - 4536, 3361, 7029 ,2199, 1205, 4062 ,0, 0, 0 , - 4736, 1713, 4212 ,4063, 4064, 1928 ,0, 0, 0 , - 4736, 4212, 7030 ,4063, 1928, 4065 ,0, 0, 0 , - 4753, 1709, 4209 ,2352, 4066, 4067 ,0, 0, 0 , - 4753, 4209, 7031 ,2352, 4067, 4068 ,0, 0, 0 , - 4744, 1698, 4194 ,2350, 1907, 1906 ,0, 0, 0 , - 4744, 4194, 7032 ,2350, 1906, 4069 ,0, 0, 0 , - 4749, 1692, 4321 ,2353, 2009, 2008 ,0, 0, 0 , - 4749, 4321, 7033 ,2353, 2008, 4070 ,0, 0, 0 , - 4739, 1785, 4303 ,2347, 2346, 1998 ,0, 0, 0 , - 4739, 4303, 7034 ,2347, 1998, 4071 ,0, 0, 0 , - 4755, 1734, 4239 ,2357, 2356, 4072 ,0, 0, 0 , - 4755, 4239, 7035 ,2357, 4072, 4073 ,0, 0, 0 , - 4761, 1723, 4226 ,4074, 4075, 4076 ,0, 0, 0 , - 4761, 4226, 7036 ,4074, 4076, 4077 ,0, 0, 0 , - 4751, 1722, 4225 ,4078, 4079, 1938 ,0, 0, 0 , - 4751, 4225, 7037 ,4078, 1938, 4080 ,0, 0, 0 , - 6645, 1720, 4222 ,4081, 4082, 4083 ,0, 0, 0 , - 6645, 4222, 7038 ,4081, 4083, 4084 ,0, 0, 0 , - 4765, 1710, 4210 ,2364, 1923, 1922 ,0, 0, 0 , - 4765, 4210, 7039 ,2364, 1922, 4085 ,0, 0, 0 , - 4685, 1727, 4231 ,2311, 2310, 4086 ,0, 0, 0 , - 4685, 4231, 7040 ,2311, 4086, 4087 ,0, 0, 0 , - 4742, 1712, 4215 ,2345, 1927, 1926 ,0, 0, 0 , - 4742, 4215, 7041 ,2345, 1926, 4088 ,0, 0, 0 , - 4683, 1777, 4293 ,2305, 4089, 4090 ,0, 0, 0 , - 4683, 4293, 7042 ,2305, 4090, 4091 ,0, 0, 0 , - 4769, 1771, 4285 ,2368, 2367, 4092 ,0, 0, 0 , - 4769, 4285, 7043 ,2368, 4092, 4093 ,0, 0, 0 , - 4774, 1765, 4278 ,2372, 2371, 1978 ,0, 0, 0 , - 4774, 4278, 7044 ,2372, 1978, 4094 ,0, 0, 0 , - 4778, 1728, 4232 ,2376, 2375, 4095 ,0, 0, 0 , - 4778, 4232, 7045 ,2376, 4095, 4096 ,0, 0, 0 , - 4725, 1687, 4177 ,2334, 4097, 4098 ,0, 0, 0 , - 4725, 4177, 7046 ,2334, 4098, 4099 ,0, 0, 0 , - 4784, 1774, 4289 ,4100, 4101, 4102 ,0, 0, 0 , - 4784, 4289, 7047 ,4100, 4102, 4103 ,0, 0, 0 , - 4783, 1653, 4139 ,2379, 1859, 1858 ,0, 0, 0 , - 4783, 4139, 7048 ,2379, 1858, 4104 ,0, 0, 0 , - 4793, 1768, 4286 ,4105, 1981, 1980 ,0, 0, 0 , - 4793, 4286, 7049 ,4105, 1980, 4106 ,0, 0, 0 , - 4792, 1035, 3338 ,2384, 1180, 1179 ,0, 0, 0 , - 4792, 3338, 7050 ,2384, 1179, 4107 ,0, 0, 0 , - 4796, 1766, 4279 ,4108, 4109, 4110 ,0, 0, 0 , - 4796, 4279, 7051 ,4108, 4110, 4111 ,0, 0, 0 , - 4795, 1032, 3332 ,2388, 2387, 4112 ,0, 0, 0 , - 4795, 3332, 7052 ,2388, 4112, 4113 ,0, 0, 0 , - 4800, 1763, 4275 ,4114, 4115, 4116 ,0, 0, 0 , - 4800, 4275, 7053 ,4114, 4116, 4117 ,0, 0, 0 , - 4799, 1029, 3334 ,2392, 2391, 4118 ,0, 0, 0 , - 4799, 3334, 7054 ,2392, 4118, 4119 ,0, 0, 0 , - 4805, 1759, 4270 ,4120, 4121, 4122 ,0, 0, 0 , - 4805, 4270, 7055 ,4120, 4122, 4123 ,0, 0, 0 , - 4809, 1729, 4233 ,2400, 2399, 4124 ,0, 0, 0 , - 4809, 4233, 7056 ,2400, 4124, 4125 ,0, 0, 0 , - 4804, 1021, 3313 ,2396, 2395, 4126 ,0, 0, 0 , - 4804, 3313, 7057 ,2396, 4126, 4127 ,0, 0, 0 , - 4814, 1755, 4265 ,4128, 4129, 4130 ,0, 0, 0 , - 4814, 4265, 7058 ,4128, 4130, 4131 ,0, 0, 0 , - 4819, 1725, 4234 ,2407, 1941, 1940 ,0, 0, 0 , - 4819, 4234, 7059 ,2407, 1940, 4132 ,0, 0, 0 , - 4813, 1020, 3310 ,2404, 2403, 4133 ,0, 0, 0 , - 4813, 3310, 7060 ,2404, 4133, 4134 ,0, 0, 0 , - 4825, 1751, 4260 ,4135, 4136, 4137 ,0, 0, 0 , - 4825, 4260, 7061 ,4135, 4137, 4138 ,0, 0, 0 , - 4828, 1731, 4236 ,2415, 2414, 1946 ,0, 0, 0 , - 4828, 4236, 7062 ,2415, 1946, 4139 ,0, 0, 0 , - 4824, 1018, 3303 ,2411, 2410, 1150 ,0, 0, 0 , - 4824, 3303, 7063 ,2411, 1150, 4140 ,0, 0, 0 , - 4833, 1747, 4255 ,4141, 4142, 4143 ,0, 0, 0 , - 4833, 4255, 7064 ,4141, 4143, 4144 ,0, 0, 0 , - 4838, 1732, 4237 ,2423, 2422, 4145 ,0, 0, 0 , - 4838, 4237, 7065 ,2423, 4145, 4146 ,0, 0, 0 , - 4832, 1014, 3296 ,2419, 2418, 4147 ,0, 0, 0 , - 4832, 3296, 7066 ,2419, 4147, 4148 ,0, 0, 0 , - 4844, 1743, 4250 ,4149, 4150, 4151 ,0, 0, 0 , - 4844, 4250, 7067 ,4149, 4151, 4152 ,0, 0, 0 , - 4850, 1739, 4245 ,2431, 2430, 4153 ,0, 0, 0 , - 4850, 4245, 7068 ,2431, 4153, 4154 ,0, 0, 0 , - 4843, 1002, 3284 ,2427, 2426, 4155 ,0, 0, 0 , - 4843, 3284, 7069 ,2427, 4155, 4156 ,0, 0, 0 , - 6552, 1735, 4246 ,4157, 1949, 1948 ,0, 0, 0 , - 6552, 4246, 7070 ,4157, 1948, 4158 ,0, 0, 0 , - 6547, 1724, 4227 ,4159, 4160, 4161 ,0, 0, 0 , - 6547, 4227, 7071 ,4159, 4161, 4162 ,0, 0, 0 , - 4763, 1733, 4238 ,2359, 4163, 4164 ,0, 0, 0 , - 4763, 4238, 7072 ,2359, 4164, 4165 ,0, 0, 0 , - 4758, 1726, 4230 ,2355, 4166, 1942 ,0, 0, 0 , - 4758, 4230, 7073 ,2355, 1942, 4167 ,0, 0, 0 , - 4855, 1706, 4203 ,4168, 4169, 1920 ,0, 0, 0 , - 4855, 4203, 7074 ,4168, 1920, 4170 ,0, 0, 0 , - 4698, 1715, 4214 ,2316, 4171, 4172 ,0, 0, 0 , - 4698, 4214, 7075 ,2316, 4172, 4173 ,0, 0, 0 , - 4859, 1702, 4201 ,2438, 1915, 1914 ,0, 0, 0 , - 4859, 4201, 7076 ,2438, 1914, 4174 ,0, 0, 0 , - 4735, 1700, 4197 ,2343, 2342, 4175 ,0, 0, 0 , - 4735, 4197, 7077 ,2343, 4175, 4176 ,0, 0, 0 , - 4864, 1694, 4190 ,2441, 1903, 1902 ,0, 0, 0 , - 4864, 4190, 7078 ,2441, 1902, 4177 ,0, 0, 0 , - 4868, 1691, 4185 ,4178, 1899, 1898 ,0, 0, 0 , - 4868, 4185, 7079 ,4178, 1898, 4179 ,0, 0, 0 , - 4854, 1651, 4132 ,2435, 2434, 1856 ,0, 0, 0 , - 4854, 4132, 7080 ,2435, 1856, 4180 ,0, 0, 0 , - 4872, 1652, 4133 ,2449, 2448, 4181 ,0, 0, 0 , - 4872, 4133, 7081 ,2449, 4181, 4182 ,0, 0, 0 , - 4862, 1701, 4196 ,2437, 4183, 1912 ,0, 0, 0 , - 4862, 4196, 7082 ,2437, 1912, 4184 ,0, 0, 0 , - 4747, 1697, 4189 ,2349, 4185, 4186 ,0, 0, 0 , - 4747, 4189, 7083 ,2349, 4186, 4187 ,0, 0, 0 , - 4865, 1690, 4184 ,2440, 4188, 1900 ,0, 0, 0 , - 4865, 4184, 7084 ,2440, 1900, 4189 ,0, 0, 0 , - 4870, 1650, 4134 ,2443, 1855, 1854 ,0, 0, 0 , - 4870, 4134, 7085 ,2443, 1854, 4190 ,0, 0, 0 , - 4729, 1654, 4136 ,4191, 4192, 1860 ,0, 0, 0 , - 4729, 4136, 7086 ,4191, 1860, 4193 ,0, 0, 0 , - 4727, 1056, 3368 ,2339, 1208, 1207 ,0, 0, 0 , - 4727, 3368, 7087 ,2339, 1207, 4194 ,0, 0, 0 , - 4884, 1680, 4168 ,4195, 4196, 4197 ,0, 0, 0 , - 4884, 4168, 7088 ,4195, 4197, 4198 ,0, 0, 0 , - 4888, 1022, 3324 ,2461, 2460, 4199 ,0, 0, 0 , - 4888, 3324, 7089 ,2461, 4199, 4200 ,0, 0, 0 , - 4893, 1655, 4137 ,4201, 4202, 4203 ,0, 0, 0 , - 4893, 4137, 7090 ,4201, 4203, 4204 ,0, 0, 0 , - 4883, 1046, 3355 ,4205, 1196, 1195 ,0, 0, 0 , - 4883, 3355, 7091 ,4205, 1195, 4206 ,0, 0, 0 , - 4898, 1659, 4142 ,4207, 4208, 4209 ,0, 0, 0 , - 4898, 4142, 7092 ,4207, 4209, 4210 ,0, 0, 0 , - 4902, 1022, 4890 ,2470, 2460, 2459 ,0, 0, 0 , - 4902, 4890, 7093 ,2470, 2459, 4211 ,0, 0, 0 , - 4909, 1657, 4144 ,4212, 1863, 1862 ,0, 0, 0 , - 4909, 4144, 7094 ,4212, 1862, 4213 ,0, 0, 0 , - 4912, 1063, 3374 ,2478, 2477, 1217 ,0, 0, 0 , - 4912, 3374, 7095 ,2478, 1217, 4214 ,0, 0, 0 , - 4918, 1672, 4158 ,4215, 4216, 4217 ,0, 0, 0 , - 4918, 4158, 7096 ,4215, 4217, 4218 ,0, 0, 0 , - 4922, 1017, 3308 ,2484, 1153, 1152 ,0, 0, 0 , - 4922, 3308, 7097 ,2484, 1152, 4219 ,0, 0, 0 , - 4917, 1040, 3347 ,2481, 1188, 1187 ,0, 0, 0 , - 4917, 3347, 7098 ,2481, 1187, 4220 ,0, 0, 0 , - 4927, 1668, 4153 ,4221, 4222, 4223 ,0, 0, 0 , - 4927, 4153, 7099 ,4221, 4223, 4224 ,0, 0, 0 , - 4932, 1016, 3300 ,4225, 4226, 4227 ,0, 0, 0 , - 4932, 3300, 7100 ,4225, 4227, 4228 ,0, 0, 0 , - 4926, 1066, 3381 ,2487, 1220, 1219 ,0, 0, 0 , - 4926, 3381, 7101 ,2487, 1219, 4229 ,0, 0, 0 , - 4937, 1664, 4148 ,4230, 4231, 4232 ,0, 0, 0 , - 4937, 4148, 7102 ,4230, 4232, 4233 ,0, 0, 0 , - 4941, 1008, 3289 ,4234, 4235, 4236 ,0, 0, 0 , - 4941, 3289, 7103 ,4234, 4236, 4237 ,0, 0, 0 , - 4936, 1037, 3340 ,2494, 2493, 1185 ,0, 0, 0 , - 4936, 3340, 7104 ,2494, 1185, 4238 ,0, 0, 0 , - 6441, 1006, 3284 ,4239, 4240, 4155 ,0, 0, 0 , - 6441, 3284, 7105 ,4239, 4155, 4241 ,0, 0, 0 , - 4790, 1656, 4138 ,2381, 4242, 4243 ,0, 0, 0 , - 4790, 4138, 7106 ,2381, 4243, 4244 ,0, 0, 0 , - 4906, 1019, 3307 ,2474, 2473, 4245 ,0, 0, 0 , - 4906, 3307, 7107 ,2474, 4245, 4246 ,0, 0, 0 , - 4904, 1658, 4141 ,4247, 4248, 1864 ,0, 0, 0 , - 4904, 4141, 7108 ,4247, 1864, 4249 ,0, 0, 0 , - 4897, 1043, 3351 ,2468, 1192, 1191 ,0, 0, 0 , - 4897, 3351, 7109 ,2468, 1191, 4250 ,0, 0, 0 , - 4835, 1015, 3301 ,4251, 1147, 1146 ,0, 0, 0 , - 4835, 3301, 7110 ,4251, 1146, 4252 ,0, 0, 0 , - 4953, 1642, 4122 ,4253, 4254, 1848 ,0, 0, 0 , - 4953, 4122, 7111 ,4253, 1848, 4255 ,0, 0, 0 , - 6434, 1039, 3342 ,4256, 4257, 4258 ,0, 0, 0 , - 6434, 3342, 7112 ,4256, 4258, 4259 ,0, 0, 0 , - 4946, 1615, 4086 ,4260, 1811, 1810 ,0, 0, 0 , - 4946, 4086, 7113 ,4260, 1810, 4261 ,0, 0, 0 , - 4958, 1638, 4117 ,4262, 4263, 1844 ,0, 0, 0 , - 4958, 4117, 7114 ,4262, 1844, 4264 ,0, 0, 0 , - 4952, 1611, 4081 ,2504, 1807, 1806 ,0, 0, 0 , - 4952, 4081, 7115 ,2504, 1806, 4265 ,0, 0, 0 , - 4963, 1634, 4112 ,4266, 4267, 1840 ,0, 0, 0 , - 4963, 4112, 7116 ,4266, 1840, 4268 ,0, 0, 0 , - 4957, 1607, 4076 ,2507, 1803, 1802 ,0, 0, 0 , - 4957, 4076, 7117 ,2507, 1802, 4269 ,0, 0, 0 , - 4968, 1630, 4107 ,4270, 4271, 1836 ,0, 0, 0 , - 4968, 4107, 7118 ,4270, 1836, 4272 ,0, 0, 0 , - 4962, 1606, 4070 ,2511, 2510, 4273 ,0, 0, 0 , - 4962, 4070, 7119 ,2511, 4273, 4274 ,0, 0, 0 , - 4973, 1626, 4102 ,4275, 4276, 1832 ,0, 0, 0 , - 4973, 4102, 7120 ,4275, 1832, 4277 ,0, 0, 0 , - 4967, 1600, 4067 ,2514, 1795, 1794 ,0, 0, 0 , - 4967, 4067, 7121 ,2514, 1794, 4278 ,0, 0, 0 , - 4979, 1623, 4098 ,4279, 4280, 1828 ,0, 0, 0 , - 4979, 4098, 7122 ,4279, 1828, 4281 ,0, 0, 0 , - 4972, 1596, 4057 ,2518, 2517, 4282 ,0, 0, 0 , - 4972, 4057, 7123 ,2518, 4282, 4283 ,0, 0, 0 , - 4985, 1621, 4094 ,4284, 4285, 1824 ,0, 0, 0 , - 4985, 4094, 7124 ,4284, 1824, 4286 ,0, 0, 0 , - 4978, 1587, 4050 ,2521, 1779, 1778 ,0, 0, 0 , - 4978, 4050, 7126 ,2521, 1778, 4287 ,0, 0, 0 , - 4990, 1619, 4090 ,4288, 4289, 1820 ,0, 0, 0 , - 4990, 4090, 7127 ,4288, 1820, 4290 ,0, 0, 0 , - 4984, 1583, 4045 ,2524, 1775, 1774 ,0, 0, 0 , - 4984, 4045, 7129 ,2524, 1774, 4291 ,0, 0, 0 , - 4994, 1578, 4088 ,2530, 1815, 1814 ,0, 0, 0 , - 4994, 4088, 7130 ,2530, 1814, 4292 ,0, 0, 0 , - 4989, 1579, 4040 ,2527, 1771, 1770 ,0, 0, 0 , - 4989, 4040, 7132 ,2527, 1770, 4293 ,0, 0, 0 , - 5008, 1612, 4078 ,4294, 4295, 1808 ,0, 0, 0 , - 5008, 4078, 7133 ,4294, 1808, 4296 ,0, 0, 0 , - 4945, 1065, 3376 ,2501, 2500, 4297 ,0, 0, 0 , - 4945, 3376, 7134 ,2501, 4297, 4298 ,0, 0, 0 , - 5002, 1572, 4025 ,4299, 4300, 1762 ,0, 0, 0 , - 5002, 4025, 7135 ,4299, 1762, 4301 ,0, 0, 0 , - 5014, 1608, 4073 ,4302, 4303, 1804 ,0, 0, 0 , - 5014, 4073, 7136 ,4302, 1804, 4304 ,0, 0, 0 , - 5007, 1550, 3997 ,2538, 2537, 4305 ,0, 0, 0 , - 5007, 3997, 7137 ,2538, 4305, 4306 ,0, 0, 0 , - 5020, 1604, 4071 ,4307, 1799, 1798 ,0, 0, 0 , - 5020, 4071, 7138 ,4307, 1798, 4308 ,0, 0, 0 , - 5013, 1555, 4003 ,2542, 2541, 4309 ,0, 0, 0 , - 5013, 4003, 7139 ,2542, 4309, 4310 ,0, 0, 0 , - 5019, 1601, 4064 ,4311, 4312, 1796 ,0, 0, 0 , - 5019, 4064, 7140 ,4311, 1796, 4313 ,0, 0, 0 , - 5025, 1597, 4062 ,4314, 1791, 1790 ,0, 0, 0 , - 5025, 4062, 7141 ,4314, 1790, 4315 ,0, 0, 0 , - 5018, 1405, 3811 ,2546, 2545, 4316 ,0, 0, 0 , - 5018, 3811, 7142 ,2546, 4316, 4317 ,0, 0, 0 , - 5032, 1594, 4058 ,4318, 1787, 1786 ,0, 0, 0 , - 5032, 4058, 7143 ,4318, 1786, 4319 ,0, 0, 0 , - 5024, 1427, 3839 ,2550, 2549, 4320 ,0, 0, 0 , - 5024, 3839, 7144 ,2550, 4320, 4321 ,0, 0, 0 , - 5031, 1591, 4054 ,4322, 1783, 1782 ,0, 0, 0 , - 5031, 4054, 7145 ,4322, 1782, 4323 ,0, 0, 0 , - 5038, 1588, 4047 ,4324, 4325, 1780 ,0, 0, 0 , - 5038, 4047, 7146 ,4324, 1780, 4326 ,0, 0, 0 , - 5030, 1397, 3801 ,2554, 2553, 4327 ,0, 0, 0 , - 5030, 3801, 7147 ,2554, 4327, 4328 ,0, 0, 0 , - 5043, 1584, 4042 ,4329, 4330, 1776 ,0, 0, 0 , - 5043, 4042, 7148 ,4329, 1776, 4331 ,0, 0, 0 , - 5037, 1390, 3797 ,2557, 1565, 1564 ,0, 0, 0 , - 5037, 3797, 7149 ,2557, 1564, 4332 ,0, 0, 0 , - 5048, 1580, 4037 ,4333, 4334, 1772 ,0, 0, 0 , - 5048, 4037, 7150 ,4333, 1772, 4335 ,0, 0, 0 , - 5042, 1386, 3792 ,2560, 1561, 1560 ,0, 0, 0 , - 5042, 3792, 7151 ,2560, 1560, 4336 ,0, 0, 0 , - 5053, 398, 4035 ,4337, 432, 1768 ,0, 0, 0 , - 5053, 4035, 7152 ,4337, 1768, 4338 ,0, 0, 0 , - 5047, 1366, 3762 ,2563, 1535, 1534 ,0, 0, 0 , - 5047, 3762, 7153 ,2563, 1534, 4339 ,0, 0, 0 , - 5058, 1529, 3970 ,4340, 4341, 4342 ,0, 0, 0 , - 5058, 3970, 7154 ,4340, 4342, 4343 ,0, 0, 0 , - 5063, 1506, 3941 ,2575, 2574, 4344 ,0, 0, 0 , - 5063, 3941, 7155 ,2575, 4344, 4345 ,0, 0, 0 , - 4999, 1061, 3371 ,4346, 4347, 4348 ,0, 0, 0 , - 4999, 3371, 7156 ,4346, 4348, 4349 ,0, 0, 0 , - 5074, 1565, 4016 ,4350, 4351, 1754 ,0, 0, 0 , - 5074, 4016, 7157 ,4350, 1754, 4352 ,0, 0, 0 , - 5069, 1568, 4023 ,4353, 1757, 1756 ,0, 0, 0 , - 5069, 4023, 7158 ,4353, 1756, 4354 ,0, 0, 0 , - 5001, 1505, 3940 ,4355, 4356, 4357 ,0, 0, 0 , - 5001, 3940, 7159 ,4355, 4357, 4358 ,0, 0, 0 , - 5078, 1551, 3998 ,2586, 2585, 4359 ,0, 0, 0 , - 5078, 3998, 7160 ,2586, 4359, 4360 ,0, 0, 0 , - 5068, 1560, 4014 ,2578, 1749, 1748 ,0, 0, 0 , - 5068, 4014, 7161 ,2578, 1748, 4361 ,0, 0, 0 , - 5089, 1241, 3604 ,2592, 1408, 1407 ,0, 0, 0 , - 5089, 3604, 7162 ,2592, 1407, 4362 ,0, 0, 0 , - 5085, 1561, 4011 ,4363, 4364, 1750 ,0, 0, 0 , - 5085, 4011, 7163 ,4363, 1750, 4365 ,0, 0, 0 , - 5073, 1510, 3946 ,2582, 2581, 4366 ,0, 0, 0 , - 5073, 3946, 7164 ,2582, 4366, 4367 ,0, 0, 0 , - 5095, 1557, 4006 ,4368, 4369, 1746 ,0, 0, 0 , - 5095, 4006, 7165 ,4368, 1746, 4370 ,0, 0, 0 , - 5084, 1532, 3974 ,4371, 4372, 4373 ,0, 0, 0 , - 5084, 3974, 7166 ,4371, 4373, 4374 ,0, 0, 0 , - 5105, 1400, 3805 ,4375, 4376, 4377 ,0, 0, 0 , - 5105, 3805, 7167 ,4375, 4377, 4378 ,0, 0, 0 , - 5100, 1548, 3999 ,4379, 1737, 1736 ,0, 0, 0 , - 5100, 3999, 7168 ,4379, 1736, 4380 ,0, 0, 0 , - 5094, 1544, 3989 ,2596, 2595, 4381 ,0, 0, 0 , - 5094, 3989, 7169 ,2596, 4381, 4382 ,0, 0, 0 , - 5016, 1549, 3996 ,2540, 4383, 1738 ,0, 0, 0 , - 5016, 3996, 7170 ,2540, 1738, 4384 ,0, 0, 0 , - 5102, 1399, 3804 ,2598, 4385, 1574 ,0, 0, 0 , - 5102, 3804, 7171 ,2598, 1574, 4386 ,0, 0, 0 , - 5109, 1402, 3812 ,2605, 1577, 1576 ,0, 0, 0 , - 5109, 3812, 7172 ,2605, 1576, 4387 ,0, 0, 0 , - 5122, 1538, 3986 ,4388, 1725, 1724 ,0, 0, 0 , - 5122, 3986, 7173 ,4388, 1724, 4389 ,0, 0, 0 , - 5114, 1401, 3806 ,2609, 2608, 4390 ,0, 0, 0 , - 5114, 3806, 7174 ,2609, 4390, 4391 ,0, 0, 0 , - 5107, 1543, 3988 ,2601, 4392, 1730 ,0, 0, 0 , - 5107, 3988, 7175 ,2601, 1730, 4393 ,0, 0, 0 , - 5097, 1531, 3973 ,2594, 4394, 1718 ,0, 0, 0 , - 5097, 3973, 7176 ,2594, 1718, 4395 ,0, 0, 0 , - 5132, 1438, 3858 ,2619, 1617, 1616 ,0, 0, 0 , - 5132, 3858, 7177 ,2619, 1616, 4396 ,0, 0, 0 , - 5121, 1535, 3978 ,2613, 2612, 1722 ,0, 0, 0 , - 5121, 3978, 7178 ,2613, 1722, 4397 ,0, 0, 0 , - 5127, 1475, 3907 ,2616, 1661, 1660 ,0, 0, 0 , - 5127, 3907, 7179 ,2616, 1660, 4398 ,0, 0, 0 , - 5143, 1231, 3588 ,2627, 2626, 1397 ,0, 0, 0 , - 5143, 3588, 7180 ,2627, 1397, 4399 ,0, 0, 0 , - 5139, 1479, 3912 ,4400, 1665, 1664 ,0, 0, 0 , - 5139, 3912, 7181 ,4400, 1664, 4401 ,0, 0, 0 , - 5125, 1530, 3976 ,2611, 1717, 1716 ,0, 0, 0 , - 5125, 3976, 7182 ,2611, 1716, 4402 ,0, 0, 0 , - 5083, 1233, 3595 ,2589, 1400, 1399 ,0, 0, 0 , - 5083, 3595, 7183 ,2589, 1399, 4403 ,0, 0, 0 , - 5057, 1055, 3363 ,2571, 2570, 4404 ,0, 0, 0 , - 5057, 3363, 7184 ,2571, 4404, 4405 ,0, 0, 0 , - 5150, 1525, 3965 ,4406, 4407, 4408 ,0, 0, 0 , - 5150, 3965, 7185 ,4406, 4408, 4409 ,0, 0, 0 , - 5149, 1519, 3962 ,4410, 1705, 1704 ,0, 0, 0 , - 5149, 3962, 7186 ,4410, 1704, 4411 ,0, 0, 0 , - 5159, 1511, 3952 ,2637, 1697, 1696 ,0, 0, 0 , - 5159, 3952, 7187 ,2637, 1696, 4412 ,0, 0, 0 , - 5154, 1503, 3942 ,2634, 1689, 1688 ,0, 0, 0 , - 5154, 3942, 7188 ,2634, 1688, 4413 ,0, 0, 0 , - 5170, 1516, 3954 ,4414, 4415, 1702 ,0, 0, 0 , - 5170, 3954, 7189 ,4414, 1702, 4416 ,0, 0, 0 , - 5148, 1051, 3358 ,2631, 2630, 4417 ,0, 0, 0 , - 5148, 3358, 7190 ,2631, 4417, 4418 ,0, 0, 0 , - 5165, 1499, 3937 ,4419, 1685, 1684 ,0, 0, 0 , - 5165, 3937, 7191 ,4419, 1684, 4420 ,0, 0, 0 , - 5179, 1248, 3614 ,2650, 1416, 1415 ,0, 0, 0 , - 5179, 3614, 7192 ,2650, 1415, 4421 ,0, 0, 0 , - 5175, 1512, 3949 ,4422, 4423, 1698 ,0, 0, 0 , - 5175, 3949, 7193 ,4422, 1698, 4424 ,0, 0, 0 , - 5169, 1495, 3932 ,2644, 1681, 1680 ,0, 0, 0 , - 5169, 3932, 7194 ,2644, 1680, 4425 ,0, 0, 0 , - 5186, 1508, 3944 ,4426, 4427, 1694 ,0, 0, 0 , - 5186, 3944, 7195 ,4426, 1694, 4428 ,0, 0, 0 , - 5174, 1244, 3609 ,2647, 1412, 1411 ,0, 0, 0 , - 5174, 3609, 7196 ,2647, 1411, 4429 ,0, 0, 0 , - 5076, 1504, 3939 ,2580, 4430, 1690 ,0, 0, 0 , - 5076, 3939, 7197 ,2580, 1690, 4431 ,0, 0, 0 , - 5185, 1237, 3600 ,2653, 1404, 1403 ,0, 0, 0 , - 5185, 3600, 7198 ,2653, 1403, 4432 ,0, 0, 0 , - 6150, 1496, 3929 ,4433, 4434, 1682 ,0, 0, 0 , - 6150, 3929, 7199 ,4433, 1682, 4435 ,0, 0, 0 , - 5164, 1071, 3384 ,2641, 2640, 4436 ,0, 0, 0 , - 5164, 3384, 7200 ,2641, 4436, 4437 ,0, 0, 0 , - 6145, 1492, 3924 ,4438, 4439, 1678 ,0, 0, 0 , - 6145, 3924, 7201 ,4438, 1678, 4440 ,0, 0, 0 , - 6135, 1488, 3919 ,4441, 4442, 1674 ,0, 0, 0 , - 6135, 3919, 7202 ,4441, 1674, 4443 ,0, 0, 0 , - 5190, 1179, 3520 ,2657, 2656, 1337 ,0, 0, 0 , - 5190, 3520, 7203 ,2657, 1337, 4444 ,0, 0, 0 , - 6125, 1484, 3914 ,4445, 4446, 1670 ,0, 0, 0 , - 6125, 3914, 7204 ,4445, 1670, 4447 ,0, 0, 0 , - 5195, 1175, 3515 ,2661, 2660, 1333 ,0, 0, 0 , - 5195, 3515, 7205 ,2661, 1333, 4448 ,0, 0, 0 , - 6120, 1480, 3909 ,4449, 4450, 1666 ,0, 0, 0 , - 6120, 3909, 7206 ,4449, 1666, 4451 ,0, 0, 0 , - 5137, 1173, 3512 ,2623, 2622, 4452 ,0, 0, 0 , - 5137, 3512, 7207 ,2623, 4452, 4453 ,0, 0, 0 , - 6115, 1476, 3904 ,4454, 4455, 1662 ,0, 0, 0 , - 6115, 3904, 7208 ,4454, 1662, 4456 ,0, 0, 0 , - 6110, 1472, 3899 ,4457, 4458, 1658 ,0, 0, 0 , - 6110, 3899, 7209 ,4457, 1658, 4459 ,0, 0, 0 , - 5205, 1267, 3638 ,2668, 1436, 1435 ,0, 0, 0 , - 5205, 3638, 7210 ,2668, 1435, 4460 ,0, 0, 0 , - 5201, 1439, 3855 ,4461, 4462, 1618 ,0, 0, 0 , - 5201, 3855, 7211 ,4461, 1618, 4463 ,0, 0, 0 , - 6109, 1468, 3897 ,4464, 1653, 1652 ,0, 0, 0 , - 6109, 3897, 7212 ,4464, 1652, 4465 ,0, 0, 0 , - 6092, 1443, 3860 ,4466, 4467, 1622 ,0, 0, 0 , - 6092, 3860, 7213 ,4466, 1622, 4468 ,0, 0, 0 , - 5222, 1452, 3876 ,2679, 1633, 1632 ,0, 0, 0 , - 5222, 3876, 7214 ,2679, 1632, 4469 ,0, 0, 0 , - 5217, 1293, 3666 ,2676, 2675, 4470 ,0, 0, 0 , - 5217, 3666, 7215 ,2676, 4470, 4471 ,0, 0, 0 , - 5213, 1462, 3886 ,4472, 4473, 1646 ,0, 0, 0 , - 5213, 3886, 7216 ,4472, 1646, 4474 ,0, 0, 0 , - 6071, 516, 3883 ,4475, 560, 1642 ,0, 0, 0 , - 6071, 3883, 7217 ,4475, 1642, 4476 ,0, 0, 0 , - 5212, 1445, 3862 ,4477, 4478, 4479 ,0, 0, 0 , - 5212, 3862, 7218 ,4477, 4479, 4480 ,0, 0, 0 , - 5229, 1457, 3878 ,4481, 4482, 1638 ,0, 0, 0 , - 5229, 3878, 7219 ,4481, 1638, 4483 ,0, 0, 0 , - 5240, 1395, 3799 ,4484, 4485, 1570 ,0, 0, 0 , - 5240, 3799, 7220 ,4484, 1570, 4486 ,0, 0, 0 , - 5235, 1453, 3873 ,4487, 4488, 1634 ,0, 0, 0 , - 5235, 3873, 7221 ,4487, 1634, 4489 ,0, 0, 0 , - 5228, 1383, 3784 ,2683, 2682, 1558 ,0, 0, 0 , - 5228, 3784, 7222 ,2683, 1558, 4490 ,0, 0, 0 , - 5244, 1288, 3660 ,2694, 2693, 1457 ,0, 0, 0 , - 5244, 3660, 7223 ,2694, 1457, 4491 ,0, 0, 0 , - 5234, 1450, 3869 ,4492, 4493, 1630 ,0, 0, 0 , - 5234, 3869, 7224 ,4492, 1630, 4494 ,0, 0, 0 , - 5233, 1446, 3867 ,2686, 1625, 1624 ,0, 0, 0 , - 5233, 3867, 7225 ,2686, 1624, 4495 ,0, 0, 0 , - 5250, 1420, 3835 ,2697, 1597, 1596 ,0, 0, 0 , - 5250, 3835, 7226 ,2697, 1596, 4496 ,0, 0, 0 , - 5034, 1426, 3838 ,4497, 4498, 4499 ,0, 0, 0 , - 5034, 3838, 7227 ,4497, 4499, 4500 ,0, 0, 0 , - 5237, 1394, 3802 ,2685, 1569, 1568 ,0, 0, 0 , - 5237, 3802, 7228 ,2685, 1568, 4501 ,0, 0, 0 , - 5211, 1286, 3657 ,2672, 2671, 4502 ,0, 0, 0 , - 5211, 3657, 7229 ,2672, 4502, 4503 ,0, 0, 0 , - 5257, 1435, 3853 ,4504, 1613, 1612 ,0, 0, 0 , - 5257, 3853, 7230 ,4504, 1612, 4505 ,0, 0, 0 , - 5200, 1411, 3819 ,2665, 2664, 1586 ,0, 0, 0 , - 5200, 3819, 7231 ,2665, 1586, 4506 ,0, 0, 0 , - 5262, 1432, 3849 ,4507, 1609, 1608 ,0, 0, 0 , - 5262, 3849, 7232 ,4507, 1608, 4508 ,0, 0, 0 , - 5256, 1428, 3845 ,4509, 1605, 1604 ,0, 0, 0 , - 5256, 3845, 7233 ,4509, 1604, 4510 ,0, 0, 0 , - 5111, 1398, 3807 ,4511, 1573, 1572 ,0, 0, 0 , - 5111, 3807, 7234 ,4511, 1572, 4512 ,0, 0, 0 , - 5261, 1403, 3809 ,2704, 2703, 1578 ,0, 0, 0 , - 5261, 3809, 7235 ,2704, 1578, 4513 ,0, 0, 0 , - 5027, 1404, 3810 ,4514, 4515, 4516 ,0, 0, 0 , - 5027, 3810, 7236 ,4514, 4516, 4517 ,0, 0, 0 , - 5255, 1406, 3817 ,2700, 1581, 1580 ,0, 0, 0 , - 5255, 3817, 7237 ,2700, 1580, 4518 ,0, 0, 0 , - 5267, 1424, 3840 ,4519, 1601, 1600 ,0, 0, 0 , - 5267, 3840, 7238 ,4519, 1600, 4520 ,0, 0, 0 , - 5266, 1421, 3832 ,2708, 2707, 1598 ,0, 0, 0 , - 5266, 3832, 7239 ,2708, 1598, 4521 ,0, 0, 0 , - 5273, 1281, 3651 ,4522, 4523, 4524 ,0, 0, 0 , - 5273, 3651, 7240 ,4522, 4524, 4525 ,0, 0, 0 , - 5269, 1409, 3816 ,2706, 4526, 4527 ,0, 0, 0 , - 5269, 3816, 7241 ,2706, 4527, 4528 ,0, 0, 0 , - 5284, 1363, 3755 ,4529, 4530, 1532 ,0, 0, 0 , - 5284, 3755, 7242 ,4529, 1532, 4531 ,0, 0, 0 , - 5277, 1282, 3652 ,2715, 2714, 4532 ,0, 0, 0 , - 5277, 3652, 7243 ,2715, 4532, 4533 ,0, 0, 0 , - 5271, 1414, 3826 ,2711, 1589, 1588 ,0, 0, 0 , - 5271, 3826, 7244 ,2711, 1588, 4534 ,0, 0, 0 , - 5290, 1332, 3715 ,4535, 4536, 4537 ,0, 0, 0 , - 5290, 3715, 7245 ,4535, 4537, 4538 ,0, 0, 0 , - 5275, 1408, 3815 ,2710, 4539, 4540 ,0, 0, 0 , - 5275, 3815, 7246 ,2710, 4540, 4541 ,0, 0, 0 , - 5295, 1329, 3716 ,4542, 1495, 1494 ,0, 0, 0 , - 5295, 3716, 7247 ,4542, 1494, 4543 ,0, 0, 0 , - 5292, 1407, 3814 ,2720, 4544, 1582 ,0, 0, 0 , - 5292, 3814, 7248 ,2720, 1582, 4545 ,0, 0, 0 , - 5203, 1270, 3637 ,2663, 4546, 4547 ,0, 0, 0 , - 5203, 3637, 7249 ,2663, 4547, 4548 ,0, 0, 0 , - 5239, 1391, 3794 ,2690, 2689, 1566 ,0, 0, 0 , - 5239, 3794, 7250 ,2690, 1566, 4549 ,0, 0, 0 , - 5300, 1387, 3789 ,4550, 4551, 1562 ,0, 0, 0 , - 5300, 3789, 7251 ,4550, 1562, 4552 ,0, 0, 0 , - 5242, 1382, 3787 ,2688, 1557, 1556 ,0, 0, 0 , - 5242, 3787, 7252 ,2688, 1556, 4553 ,0, 0, 0 , - 5304, 1367, 3760 ,2733, 2732, 1536 ,0, 0, 0 , - 5304, 3760, 7253 ,2733, 1536, 4554 ,0, 0, 0 , - 5299, 1378, 3782 ,2729, 1553, 1552 ,0, 0, 0 , - 5299, 3782, 7254 ,2729, 1552, 4555 ,0, 0, 0 , - 5310, 1379, 3779 ,4556, 4557, 1554 ,0, 0, 0 , - 5310, 3779, 7255 ,4556, 1554, 4558 ,0, 0, 0 , - 5231, 613, 3765 ,2681, 4559, 4560 ,0, 0, 0 , - 5231, 3765, 7256 ,2681, 4560, 4561 ,0, 0, 0 , - 5315, 1376, 3775 ,4562, 4563, 1550 ,0, 0, 0 , - 5315, 3775, 7257 ,4562, 1550, 4564 ,0, 0, 0 , - 5309, 1372, 3768 ,2737, 2736, 4565 ,0, 0, 0 , - 5309, 3768, 7258 ,2737, 4565, 4566 ,0, 0, 0 , - 5055, 1368, 3761 ,2565, 4567, 4568 ,0, 0, 0 , - 5055, 3761, 7259 ,2565, 4568, 4569 ,0, 0, 0 , - 5314, 1374, 3772 ,2741, 2740, 1546 ,0, 0, 0 , - 5314, 3772, 7260 ,2741, 1546, 4570 ,0, 0, 0 , - 5317, 1371, 3767 ,2739, 4571, 1544 ,0, 0, 0 , - 5317, 3767, 7261 ,2739, 1544, 4572 ,0, 0, 0 , - 5312, 1369, 3764 ,2735, 4573, 1540 ,0, 0, 0 , - 5312, 3764, 7262 ,2735, 1540, 4574 ,0, 0, 0 , - 5327, 1254, 3617 ,2750, 2749, 4575 ,0, 0, 0 , - 5327, 3617, 7263 ,2750, 4575, 4576 ,0, 0, 0 , - 5323, 1359, 3750 ,4577, 4578, 1528 ,0, 0, 0 , - 5323, 3750, 7264 ,4577, 1528, 4579 ,0, 0, 0 , - 5283, 1278, 3647 ,4580, 4581, 4582 ,0, 0, 0 , - 5283, 3647, 7265 ,4580, 4582, 4583 ,0, 0, 0 , - 5340, 1355, 3745 ,4584, 4585, 1524 ,0, 0, 0 , - 5340, 3745, 7266 ,4584, 1524, 4586 ,0, 0, 0 , - 5334, 1279, 3653 ,2753, 1448, 1447 ,0, 0, 0 , - 5334, 3653, 7267 ,2753, 1447, 4587 ,0, 0, 0 , - 5322, 1325, 3711 ,2746, 1491, 1490 ,0, 0, 0 , - 5322, 3711, 7268 ,2746, 1490, 4588 ,0, 0, 0 , - 5350, 1351, 3740 ,4589, 4590, 1520 ,0, 0, 0 , - 5350, 3740, 7269 ,4589, 1520, 4591 ,0, 0, 0 , - 5344, 1290, 3662 ,2760, 2759, 4592 ,0, 0, 0 , - 5344, 3662, 7270 ,2760, 4592, 4593 ,0, 0, 0 , - 5339, 1321, 3706 ,2756, 1487, 1486 ,0, 0, 0 , - 5339, 3706, 7271 ,2756, 1486, 4594 ,0, 0, 0 , - 5360, 1347, 3735 ,4595, 4596, 1516 ,0, 0, 0 , - 5360, 3735, 7272 ,4595, 1516, 4597 ,0, 0, 0 , - 5354, 1291, 3668 ,2766, 1460, 1459 ,0, 0, 0 , - 5354, 3668, 7273 ,2766, 1459, 4598 ,0, 0, 0 , - 5349, 1317, 3701 ,2763, 1483, 1482 ,0, 0, 0 , - 5349, 3701, 7274 ,2763, 1482, 4599 ,0, 0, 0 , - 5372, 1344, 3731 ,4600, 4601, 4602 ,0, 0, 0 , - 5372, 3731, 7275 ,4600, 4602, 4603 ,0, 0, 0 , - 5364, 1284, 3655 ,2773, 2772, 1453 ,0, 0, 0 , - 5364, 3655, 7276 ,2773, 1453, 4604 ,0, 0, 0 , - 5359, 1313, 3696 ,2769, 1479, 1478 ,0, 0, 0 , - 5359, 3696, 7277 ,2769, 1478, 4605 ,0, 0, 0 , - 5371, 1271, 3643 ,2776, 1440, 1439 ,0, 0, 0 , - 5371, 3643, 7278 ,2776, 1439, 4606 ,0, 0, 0 , - 5383, 1276, 3645 ,4607, 4608, 1445 ,0, 0, 0 , - 5383, 3645, 7279 ,4607, 1445, 4609 ,0, 0, 0 , - 5378, 1338, 3723 ,4610, 4611, 4612 ,0, 0, 0 , - 5378, 3723, 7280 ,4610, 4612, 4613 ,0, 0, 0 , - 5388, 1336, 3724 ,4614, 1503, 1502 ,0, 0, 0 , - 5388, 3724, 7281 ,4614, 1502, 4615 ,0, 0, 0 , - 5380, 1275, 3648 ,2778, 1444, 1443 ,0, 0, 0 , - 5380, 3648, 7282 ,2778, 1443, 4616 ,0, 0, 0 , - 5287, 1331, 3714 ,2717, 4617, 4618 ,0, 0, 0 , - 5287, 3714, 7283 ,2717, 4618, 4619 ,0, 0, 0 , - 5387, 1334, 3718 ,2787, 2786, 1500 ,0, 0, 0 , - 5387, 3718, 7284 ,2787, 1500, 4620 ,0, 0, 0 , - 5390, 1330, 3713 ,2785, 4621, 1496 ,0, 0, 0 , - 5390, 3713, 7285 ,2785, 1496, 4622 ,0, 0, 0 , - 5297, 1269, 3636 ,2724, 4623, 4624 ,0, 0, 0 , - 5297, 3636, 7286 ,2724, 4624, 4625 ,0, 0, 0 , - 5396, 1322, 3703 ,2795, 2794, 1488 ,0, 0, 0 , - 5396, 3703, 7287 ,2795, 1488, 4626 ,0, 0, 0 , - 5325, 1253, 3616 ,2745, 4627, 1421 ,0, 0, 0 , - 5325, 3616, 7288 ,2745, 1421, 4628 ,0, 0, 0 , - 5392, 1298, 3674 ,2791, 2790, 4629 ,0, 0, 0 , - 5392, 3674, 7289 ,2791, 4629, 4630 ,0, 0, 0 , - 5400, 1318, 3698 ,2799, 2798, 1484 ,0, 0, 0 , - 5400, 3698, 7290 ,2799, 1484, 4631 ,0, 0, 0 , - 5398, 1297, 3673 ,2793, 4632, 1468 ,0, 0, 0 , - 5398, 3673, 7291 ,2793, 1468, 4633 ,0, 0, 0 , - 5404, 1314, 3693 ,2803, 2802, 1480 ,0, 0, 0 , - 5404, 3693, 7292 ,2803, 1480, 4634 ,0, 0, 0 , - 5402, 1296, 3683 ,2797, 1467, 1466 ,0, 0, 0 , - 5402, 3683, 7293 ,2797, 1466, 4635 ,0, 0, 0 , - 5409, 1310, 3691 ,4636, 1475, 1474 ,0, 0, 0 , - 5409, 3691, 7294 ,4636, 1474, 4637 ,0, 0, 0 , - 5406, 1306, 3682 ,2801, 4638, 4639 ,0, 0, 0 , - 5406, 3682, 7295 ,2801, 4639, 4640 ,0, 0, 0 , - 5414, 1272, 3640 ,4641, 4642, 1441 ,0, 0, 0 , - 5414, 3640, 7296 ,4641, 1441, 4643 ,0, 0, 0 , - 5408, 1307, 3687 ,2806, 1471, 1470 ,0, 0, 0 , - 5408, 3687, 7297 ,2806, 1470, 4644 ,0, 0, 0 , - 5418, 992, 3260 ,2813, 1112, 1111 ,0, 0, 0 , - 5418, 3260, 7298 ,2813, 1111, 4645 ,0, 0, 0 , - 5411, 1305, 3681 ,2805, 4646, 4647 ,0, 0, 0 , - 5411, 3681, 7299 ,2805, 4647, 4648 ,0, 0, 0 , - 5394, 1252, 3619 ,2789, 1420, 1419 ,0, 0, 0 , - 5394, 3619, 7300 ,2789, 1419, 4649 ,0, 0, 0 , - 5423, 1295, 3670 ,4650, 4651, 4652 ,0, 0, 0 , - 5423, 3670, 7301 ,4650, 4652, 4653 ,0, 0, 0 , - 7302, 992, 7304 ,4654, 1112, 4655 ,0, 0, 0 , - 7302, 7304, 7303 ,4654, 4655, 4656 ,0, 0, 0 , - 7304, 992, 7306 ,4655, 1112, 4657 ,0, 0, 0 , - 7304, 7306, 7305 ,4655, 4657, 4658 ,0, 0, 0 , - 7308, 992, 5420 ,4659, 1112, 2812 ,0, 0, 0 , - 7308, 5420, 7307 ,4659, 2812, 4660 ,0, 0, 0 , - 5422, 1256, 3623 ,2816, 1424, 1423 ,0, 0, 0 , - 5422, 3623, 7309 ,2816, 1423, 4661 ,0, 0, 0 , - 5429, 1259, 3627 ,2818, 1428, 1427 ,0, 0, 0 , - 5429, 3627, 7310 ,2818, 1427, 4662 ,0, 0, 0 , - 5433, 1265, 3631 ,2821, 4663, 4664 ,0, 0, 0 , - 5433, 3631, 7311 ,2821, 4664, 4665 ,0, 0, 0 , - 5437, 1273, 3641 ,4666, 4667, 4668 ,0, 0, 0 , - 5437, 3641, 7313 ,4666, 4668, 4669 ,0, 0, 0 , - 5220, 1287, 3663 ,2674, 1456, 1455 ,0, 0, 0 , - 5220, 3663, 7314 ,2674, 1455, 4670 ,0, 0, 0 , - 5357, 1283, 3658 ,2765, 1452, 1451 ,0, 0, 0 , - 5357, 3658, 7315 ,2765, 1451, 4671 ,0, 0, 0 , - 5248, 1280, 3650 ,2692, 4672, 1449 ,0, 0, 0 , - 5248, 3650, 7316 ,2692, 1449, 4673 ,0, 0, 0 , - 5369, 1268, 3635 ,2771, 4674, 1437 ,0, 0, 0 , - 5369, 3635, 7317 ,2771, 1437, 4675 ,0, 0, 0 , - 5382, 1262, 3633 ,2783, 1432, 1431 ,0, 0, 0 , - 5382, 3633, 7318 ,2783, 1431, 4676 ,0, 0, 0 , - 5436, 1263, 3629 ,4677, 4678, 1433 ,0, 0, 0 , - 5436, 3629, 7319 ,4677, 1433, 4679 ,0, 0, 0 , - 5432, 1261, 3626 ,4680, 4681, 4682 ,0, 0, 0 , - 5432, 3626, 7320 ,4680, 4682, 4683 ,0, 0, 0 , - 5428, 1258, 3622 ,4684, 4685, 4686 ,0, 0, 0 , - 5428, 3622, 7321 ,4684, 4686, 4687 ,0, 0, 0 , - 5425, 1255, 3618 ,2815, 4688, 4689 ,0, 0, 0 , - 5425, 3618, 7322 ,2815, 4689, 4690 ,0, 0, 0 , - 5448, 1245, 3606 ,4691, 4692, 1413 ,0, 0, 0 , - 5448, 3606, 7323 ,4691, 1413, 4693 ,0, 0, 0 , - 5183, 1178, 3523 ,2649, 1336, 1335 ,0, 0, 0 , - 5183, 3523, 7324 ,2649, 1335, 4694 ,0, 0, 0 , - 5441, 1208, 3556 ,4695, 4696, 4697 ,0, 0, 0 , - 5441, 3556, 7325 ,4695, 4697, 4698 ,0, 0, 0 , - 5453, 1238, 3597 ,4699, 4700, 1405 ,0, 0, 0 , - 5453, 3597, 7326 ,4699, 1405, 4701 ,0, 0, 0 , - 5447, 1220, 3572 ,4702, 1384, 1381 ,0, 0, 0 , - 5447, 3572, 7327 ,4702, 1381, 4703 ,0, 0, 0 , - 5458, 1234, 3592 ,4704, 4705, 1401 ,0, 0, 0 , - 5458, 3592, 7328 ,4704, 1401, 4706 ,0, 0, 0 , - 5092, 1240, 3599 ,2591, 4707, 4708 ,0, 0, 0 , - 5092, 3599, 7329 ,2591, 4708, 4709 ,0, 0, 0 , - 5452, 1212, 3566 ,2837, 1372, 1371 ,0, 0, 0 , - 5452, 3566, 7330 ,2837, 1371, 4710 ,0, 0, 0 , - 5465, 1232, 3589 ,4711, 4712, 4713 ,0, 0, 0 , - 5465, 3589, 7331 ,4711, 4713, 4714 ,0, 0, 0 , - 5457, 1216, 3570 ,2840, 1376, 1375 ,0, 0, 0 , - 5457, 3570, 7332 ,2840, 1375, 4715 ,0, 0, 0 , - 5464, 1170, 3513 ,4716, 1328, 1327 ,0, 0, 0 , - 5464, 3513, 7333 ,4716, 1327, 4717 ,0, 0, 0 , - 5477, 1226, 3581 ,4718, 4719, 4720 ,0, 0, 0 , - 5477, 3581, 7334 ,4718, 4720, 4721 ,0, 0, 0 , - 5481, 1147, 3480 ,2856, 2855, 4722 ,0, 0, 0 , - 5481, 3480, 7335 ,2856, 4722, 4723 ,0, 0, 0 , - 5467, 1218, 3569 ,4724, 4725, 4726 ,0, 0, 0 , - 5467, 3569, 7336 ,4724, 4726, 4727 ,0, 0, 0 , - 5476, 1214, 3564 ,2852, 2851, 4728 ,0, 0, 0 , - 5476, 3564, 7337 ,2852, 4728, 4729 ,0, 0, 0 , - 5491, 1221, 3577 ,2863, 2862, 4730 ,0, 0, 0 , - 5491, 3577, 7338 ,2863, 4730, 4731 ,0, 0, 0 , - 5486, 1141, 3477 ,2859, 1300, 1299 ,0, 0, 0 , - 5486, 3477, 7339 ,2859, 1299, 4732 ,0, 0, 0 , - 5446, 1109, 3431 ,4733, 4734, 4735 ,0, 0, 0 , - 5446, 3431, 7340 ,4733, 4735, 4736 ,0, 0, 0 , - 5493, 1213, 3563 ,2861, 4737, 1373 ,0, 0, 0 , - 5493, 3563, 7341 ,2861, 1373, 4738 ,0, 0, 0 , - 5461, 1215, 3565 ,2839, 4739, 4740 ,0, 0, 0 , - 5461, 3565, 7342 ,2839, 4740, 4741 ,0, 0, 0 , - 5503, 1196, 3541 ,2871, 2870, 4742 ,0, 0, 0 , - 5503, 3541, 7343 ,2871, 4742, 4743 ,0, 0, 0 , - 5496, 1107, 3432 ,4744, 1260, 1259 ,0, 0, 0 , - 5496, 3432, 7344 ,4744, 1259, 4745 ,0, 0, 0 , - 5450, 1207, 3555 ,2833, 4746, 4747 ,0, 0, 0 , - 5450, 3555, 7345 ,2833, 4747, 4748 ,0, 0, 0 , - 5440, 1203, 3550 ,2831, 2830, 4749 ,0, 0, 0 , - 5440, 3550, 7346 ,2831, 4749, 4750 ,0, 0, 0 , - 5507, 1197, 3542 ,2875, 2874, 4751 ,0, 0, 0 , - 5507, 3542, 7347 ,2875, 4751, 4752 ,0, 0, 0 , - 5443, 1181, 3522 ,2829, 4753, 4754 ,0, 0, 0 , - 5443, 3522, 7348 ,2829, 4754, 4755 ,0, 0, 0 , - 5517, 1166, 3508 ,2882, 1324, 1323 ,0, 0, 0 , - 5517, 3508, 7349 ,2882, 1323, 4756 ,0, 0, 0 , - 5513, 1188, 3531 ,4757, 4758, 4759 ,0, 0, 0 , - 5513, 3531, 7350 ,4757, 4759, 4760 ,0, 0, 0 , - 5530, 1128, 3456 ,4761, 4762, 1285 ,0, 0, 0 , - 5530, 3456, 7351 ,4761, 1285, 4763 ,0, 0, 0 , - 5525, 1112, 3435 ,4764, 4765, 4766 ,0, 0, 0 , - 5525, 3435, 7352 ,4764, 4766, 4767 ,0, 0, 0 , - 5499, 1190, 3538 ,4768, 1348, 1347 ,0, 0, 0 , - 5499, 3538, 7353 ,4768, 1347, 4769 ,0, 0, 0 , - 5510, 1187, 3530 ,2873, 4770, 1345 ,0, 0, 0 , - 5510, 3530, 7354 ,2873, 1345, 4771 ,0, 0, 0 , - 5536, 1191, 3535 ,4772, 4773, 1349 ,0, 0, 0 , - 5536, 3535, 7355 ,4772, 1349, 4774 ,0, 0, 0 , - 5541, 1122, 3448 ,4775, 4776, 4777 ,0, 0, 0 , - 5541, 3448, 7356 ,4775, 4777, 4778 ,0, 0, 0 , - 5535, 1182, 3528 ,2891, 1340, 1339 ,0, 0, 0 , - 5535, 3528, 7357 ,2891, 1339, 4779 ,0, 0, 0 , - 5512, 1162, 3499 ,2879, 2878, 1321 ,0, 0, 0 , - 5512, 3499, 7358 ,2879, 1321, 4780 ,0, 0, 0 , - 5546, 1183, 3525 ,2898, 2897, 1341 ,0, 0, 0 , - 5546, 3525, 7359 ,2898, 1341, 4781 ,0, 0, 0 , - 5551, 1100, 3420 ,4782, 4783, 1253 ,0, 0, 0 , - 5551, 3420, 7360 ,4782, 1253, 4784 ,0, 0, 0 , - 5548, 1161, 3503 ,2896, 1320, 1319 ,0, 0, 0 , - 5548, 3503, 7361 ,2896, 1319, 4785 ,0, 0, 0 , - 5193, 1174, 3518 ,2655, 1332, 1331 ,0, 0, 0 , - 5193, 3518, 7362 ,2655, 1331, 4786 ,0, 0, 0 , - 5556, 1167, 3505 ,2906, 2905, 1325 ,0, 0, 0 , - 5556, 3505, 7363 ,2906, 1325, 4787 ,0, 0, 0 , - 5198, 1172, 3511 ,2659, 4788, 4789 ,0, 0, 0 , - 5198, 3511, 7364 ,2659, 4789, 4790 ,0, 0, 0 , - 5463, 1159, 3495 ,2844, 2843, 4791 ,0, 0, 0 , - 5463, 3495, 7365 ,2844, 4791, 4792 ,0, 0, 0 , - 5472, 1163, 3500 ,4793, 4794, 4795 ,0, 0, 0 , - 5472, 3500, 7366 ,4793, 4795, 4796 ,0, 0, 0 , - 5559, 1158, 3494 ,2904, 4797, 1317 ,0, 0, 0 , - 5559, 3494, 7367 ,2904, 1317, 4798 ,0, 0, 0 , - 5561, 1094, 3412 ,2910, 2909, 4799 ,0, 0, 0 , - 5561, 3412, 7368 ,2910, 4799, 4800 ,0, 0, 0 , - 5471, 1156, 3491 ,2848, 2847, 4801 ,0, 0, 0 , - 5471, 3491, 7369 ,2848, 4801, 4802 ,0, 0, 0 , - 5469, 1146, 3479 ,2842, 4803, 1305 ,0, 0, 0 , - 5469, 3479, 7370 ,2842, 1305, 4804 ,0, 0, 0 , - 5567, 1153, 3492 ,4805, 1312, 1311 ,0, 0, 0 , - 5567, 3492, 7371 ,4805, 1311, 4806 ,0, 0, 0 , - 5566, 1150, 3484 ,2914, 2913, 1309 ,0, 0, 0 , - 5566, 3484, 7372 ,2914, 1309, 4807 ,0, 0, 0 , - 5571, 1133, 3467 ,2917, 1292, 1291 ,0, 0, 0 , - 5571, 3467, 7373 ,2917, 1291, 4808 ,0, 0, 0 , - 5576, 1110, 3436 ,2920, 1264, 1263 ,0, 0, 0 , - 5576, 3436, 7374 ,2920, 1263, 4809 ,0, 0, 0 , - 5523, 1139, 3470 ,4810, 4811, 4812 ,0, 0, 0 , - 5523, 3470, 7375 ,4810, 4812, 4813 ,0, 0, 0 , - 5569, 1145, 3482 ,2912, 1304, 1303 ,0, 0, 0 , - 5569, 3482, 7376 ,2912, 1303, 4814 ,0, 0, 0 , - 5484, 1144, 3476 ,2854, 4815, 4816 ,0, 0, 0 , - 5484, 3476, 7377 ,2854, 4816, 4817 ,0, 0, 0 , - 5489, 1108, 3430 ,2858, 4818, 1261 ,0, 0, 0 , - 5489, 3430, 7378 ,2858, 1261, 4819 ,0, 0, 0 , - 5501, 1111, 3434 ,2865, 4820, 1265 ,0, 0, 0 , - 5501, 3434, 7379 ,2865, 1265, 4821 ,0, 0, 0 , - 5522, 1130, 3462 ,2885, 1288, 1287 ,0, 0, 0 , - 5522, 3462, 7380 ,2885, 1287, 4822 ,0, 0, 0 , - 5585, 1082, 3404 ,2927, 1236, 1235 ,0, 0, 0 , - 5585, 3404, 7381 ,2927, 1235, 4823 ,0, 0, 0 , - 5581, 1134, 3464 ,2924, 2923, 1293 ,0, 0, 0 , - 5581, 3464, 7382 ,2924, 1293, 4824 ,0, 0, 0 , - 5591, 1095, 3413 ,4825, 4826, 4827 ,0, 0, 0 , - 5591, 3413, 7383 ,4825, 4827, 4828 ,0, 0, 0 , - 5583, 1087, 3403 ,2922, 4829, 4830 ,0, 0, 0 , - 5583, 3403, 7384 ,2922, 4830, 4831 ,0, 0, 0 , - 5596, 1089, 3406 ,2935, 2934, 1241 ,0, 0, 0 , - 5596, 3406, 7385 ,2935, 1241, 4832 ,0, 0, 0 , - 5527, 1127, 3458 ,2884, 1284, 1283 ,0, 0, 0 , - 5527, 3458, 7386 ,2884, 1283, 4833 ,0, 0, 0 , - 5529, 1124, 3454 ,2888, 1280, 1279 ,0, 0, 0 , - 5529, 3454, 7387 ,2888, 1279, 4834 ,0, 0, 0 , - 5601, 1090, 3407 ,2939, 2938, 4835 ,0, 0, 0 , - 5601, 3407, 7388 ,2939, 4835, 4836 ,0, 0, 0 , - 5533, 1121, 3447 ,2887, 4837, 1277 ,0, 0, 0 , - 5533, 3447, 7389 ,2887, 1277, 4838 ,0, 0, 0 , - 5540, 1104, 3428 ,2894, 1256, 1255 ,0, 0, 0 , - 5540, 3428, 7390 ,2894, 1255, 4839 ,0, 0, 0 , - 5608, 1115, 3439 ,4840, 4841, 4842 ,0, 0, 0 , - 5608, 3439, 7391 ,4840, 4842, 4843 ,0, 0, 0 , - 5604, 1114, 3438 ,4844, 4845, 1269 ,0, 0, 0 , - 5604, 3438, 7392 ,4844, 1269, 4846 ,0, 0, 0 , - 5616, 1084, 3400 ,2951, 2950, 4847 ,0, 0, 0 , - 5616, 3400, 7393 ,2951, 4847, 4848 ,0, 0, 0 , - 5612, 1091, 3408 ,2947, 2946, 4849 ,0, 0, 0 , - 5612, 3408, 7394 ,2947, 4849, 4850 ,0, 0, 0 , - 5607, 999, 3272 ,2943, 2942, 1123 ,0, 0, 0 , - 5607, 3272, 7395 ,2943, 1123, 4851 ,0, 0, 0 , - 5622, 1085, 3401 ,4852, 4853, 4854 ,0, 0, 0 , - 5622, 3401, 7396 ,4852, 4854, 4855 ,0, 0, 0 , - 7398, 1075, 3389 ,4856, 4857, 4858 ,0, 0, 0 , - 7398, 3389, 7397 ,4856, 4858, 4859 ,0, 0, 0 , - 5610, 1106, 3427 ,2941, 4860, 4861 ,0, 0, 0 , - 5610, 3427, 7399 ,2941, 4861, 4862 ,0, 0, 0 , - 7402, 1077, 3391 ,4863, 4864, 4865 ,0, 0, 0 , - 7402, 3391, 7400 ,4863, 4865, 4866 ,0, 0, 0 , - 5627, 1103, 3423 ,2956, 4867, 4868 ,0, 0, 0 , - 5627, 3423, 7403 ,2956, 4868, 4869 ,0, 0, 0 , - 5641, 1079, 3397 ,2967, 1232, 1231 ,0, 0, 0 , - 5641, 3397, 7405 ,2967, 1231, 4870 ,0, 0, 0 , - 5636, 1078, 3392 ,2964, 4871, 4872 ,0, 0, 0 , - 5636, 3392, 7406 ,2964, 4872, 4873 ,0, 0, 0 , - 5631, 1097, 3416 ,4874, 4875, 1249 ,0, 0, 0 , - 5631, 3416, 7407 ,4874, 1249, 4876 ,0, 0, 0 , - 5544, 1099, 3424 ,2893, 1252, 1251 ,0, 0, 0 , - 5544, 3424, 7408 ,2893, 1251, 4877 ,0, 0, 0 , - 5550, 1098, 3417 ,2902, 2901, 4878 ,0, 0, 0 , - 5550, 3417, 7409 ,2902, 4878, 4879 ,0, 0, 0 , - 5554, 1093, 3411 ,2900, 4880, 1245 ,0, 0, 0 , - 5554, 3411, 7410 ,2900, 1245, 4881 ,0, 0, 0 , - 5590, 1080, 3395 ,2931, 2930, 1233 ,0, 0, 0 , - 5590, 3395, 7411 ,2931, 1233, 4882 ,0, 0, 0 , - 5614, 1083, 3399 ,2945, 4883, 1237 ,0, 0, 0 , - 5614, 3399, 7412 ,2945, 1237, 4884 ,0, 0, 0 , - 5621, 1074, 3388 ,4885, 4886, 1229 ,0, 0, 0 , - 5621, 3388, 7413 ,4885, 1229, 4887 ,0, 0, 0 , - 5594, 1073, 3393 ,2929, 1228, 1227 ,0, 0, 0 , - 5594, 3393, 7414 ,2929, 1227, 4888 ,0, 0, 0 , - 5167, 1050, 3357 ,2639, 4889, 1201 ,0, 0, 0 , - 5167, 3357, 7415 ,2639, 1201, 4890 ,0, 0, 0 , - 4948, 1038, 3341 ,4891, 4892, 4893 ,0, 0, 0 , - 4948, 3341, 7416 ,4891, 4893, 4894 ,0, 0, 0 , - 4929, 1042, 3346 ,2486, 4895, 4896 ,0, 0, 0 , - 4929, 3346, 7417 ,2486, 4896, 4897 ,0, 0, 0 , - 4950, 1041, 3345 ,2499, 4898, 1189 ,0, 0, 0 , - 4950, 3345, 7418 ,2499, 1189, 4899 ,0, 0, 0 , - 4915, 1045, 3350 ,2476, 4900, 4901 ,0, 0, 0 , - 4915, 3350, 7419 ,2476, 4901, 4902 ,0, 0, 0 , - 4998, 1047, 3353 ,2534, 2533, 1197 ,0, 0, 0 , - 4998, 3353, 7420 ,2534, 1197, 4903 ,0, 0, 0 , - 4886, 1058, 3367 ,2456, 4904, 4905 ,0, 0, 0 , - 4886, 3367, 7421 ,2456, 4905, 4906 ,0, 0, 0 , - 4733, 1052, 3364 ,2338, 1204, 1203 ,0, 0, 0 , - 4733, 3364, 7422 ,2338, 1203, 4907 ,0, 0, 0 , - 4542, 1049, 3359 ,2197, 1200, 1199 ,0, 0, 0 , - 4542, 3359, 7423 ,2197, 1199, 4908 ,0, 0, 0 , - 5005, 1044, 3349 ,2532, 4909, 1193 ,0, 0, 0 , - 5005, 3349, 7424 ,2532, 1193, 4910 ,0, 0, 0 , - 3331, 1030, 3335 ,1175, 1169, 1177 ,0, 0, 0 , - 3331, 3335, 7425 ,1175, 1177, 4911 ,0, 0, 0 , - 3323, 1030, 3329 ,1170, 1169, 1172 ,0, 0, 0 , - 3323, 3329, 7426 ,1170, 1172, 4912 ,0, 0, 0 , - 7428, 1023, 3321 ,4913, 1159, 1166 ,0, 0, 0 , - 7428, 3321, 7427 ,4913, 1166, 4914 ,0, 0, 0 , - 7428, 1025, 3318 ,4913, 1163, 1162 ,0, 0, 0 , - 7428, 3318, 7429 ,4913, 1162, 4915 ,0, 0, 0 , - 3288, 1010, 3297 ,1138, 1137, 1144 ,0, 0, 0 , - 3288, 3297, 7430 ,1138, 1144, 4916 ,0, 0, 0 , - 7312, 1264, 3630 ,4917, 4918, 4919 ,0, 0, 0 , - 7312, 3630, 7431 ,4917, 4919, 4920 ,0, 0, 0 , - 7306, 992, 7308 ,4657, 1112, 4659 ,0, 0, 0 , - 7306, 7308, 7432 ,4657, 4659, 4921 ,0, 0, 0 , - 7404, 1102, 3422 ,4922, 4923, 4924 ,0, 0, 0 , - 7404, 3422, 7433 ,4922, 4924, 4925 ,0, 0, 0 , - 7401, 1076, 3390 ,4926, 4927, 4928 ,0, 0, 0 , - 7401, 3390, 7434 ,4926, 4928, 4929 ,0, 0, 0 , - 3258, 992, 3264 ,1113, 1112, 1115 ,0, 0, 0 , - 3258, 3264, 7435 ,1113, 1115, 4930 ,0, 0, 0 , - 3255, 987, 3280 ,1109, 1108, 1127 ,0, 0, 0 , - 3255, 3280, 7436 ,1109, 1127, 4931 ,0, 0, 0 , - 3248, 984, 3249 ,1101, 1100, 1099 ,0, 0, 0 , - 3248, 3249, 7437 ,1101, 1099, 4932 ,0, 0, 0 , - 3237, 689, 3242 ,1090, 1085, 1092 ,0, 0, 0 , - 3237, 3242, 7438 ,1090, 1092, 4933 ,0, 0, 0 , - 7441, 872, 7440 ,4934, 1078, 4935 ,0, 0, 0 , - 7441, 7440, 7439 ,4934, 4935, 4936 ,0, 0, 0 , - 7443, 976, 3222 ,4937, 4938, 4939 ,0, 0, 0 , - 7443, 3222, 7442 ,4937, 4939, 4940 ,0, 0, 0 , - 7446, 678, 2818 ,4941, 4942, 4943 ,0, 0, 0 , - 7446, 2818, 7444 ,4941, 4943, 4944 ,0, 0, 0 , - 7448, 980, 3238 ,4945, 4946, 4947 ,0, 0, 0 , - 7448, 3238, 7447 ,4945, 4947, 4948 ,0, 0, 0 , - 3213, 967, 3210 ,1068, 1065, 1064 ,0, 0, 0 , - 3213, 3210, 7449 ,1068, 1064, 4949 ,0, 0, 0 , - 7451, 302, 3189 ,4950, 1039, 1046 ,0, 0, 0 , - 7451, 3189, 7450 ,4950, 1046, 4951 ,0, 0, 0 , - 7451, 957, 3186 ,4950, 1043, 1042 ,0, 0, 0 , - 7451, 3186, 7452 ,4950, 1042, 4952 ,0, 0, 0 , - 3175, 300, 3178 ,1034, 1028, 1036 ,0, 0, 0 , - 3175, 3178, 7453 ,1034, 1036, 4953 ,0, 0, 0 , - 3167, 300, 3173 ,1029, 1028, 1031 ,0, 0, 0 , - 3167, 3173, 7454 ,1029, 1031, 4954 ,0, 0, 0 , - 6346, 939, 3147 ,4955, 4956, 4957 ,0, 0, 0 , - 6346, 3147, 7455 ,4955, 4957, 4958 ,0, 0, 0 , - 6933, 930, 3140 ,4959, 1000, 999 ,0, 0, 0 , - 6933, 3140, 7456 ,4959, 999, 4960 ,0, 0, 0 , - 6687, 927, 3135 ,4961, 996, 995 ,0, 0, 0 , - 6687, 3135, 7457 ,4961, 995, 4962 ,0, 0, 0 , - 6513, 924, 3131 ,4963, 992, 991 ,0, 0, 0 , - 6513, 3131, 7458 ,4963, 991, 4964 ,0, 0, 0 , - 6345, 925, 3129 ,4965, 4966, 993 ,0, 0, 0 , - 6345, 3129, 7459 ,4965, 993, 4967 ,0, 0, 0 , - 6481, 920, 3127 ,4968, 988, 987 ,0, 0, 0 , - 6481, 3127, 7460 ,4968, 987, 4969 ,0, 0, 0 , - 6427, 922, 3125 ,4970, 4971, 4972 ,0, 0, 0 , - 6427, 3125, 7461 ,4970, 4972, 4973 ,0, 0, 0 , - 6468, 917, 3122 ,4974, 984, 983 ,0, 0, 0 , - 6468, 3122, 7462 ,4974, 983, 4975 ,0, 0, 0 , - 6429, 919, 3121 ,4976, 4977, 4978 ,0, 0, 0 , - 6429, 3121, 7463 ,4976, 4978, 4979 ,0, 0, 0 , - 6182, 916, 3117 ,4980, 4981, 4982 ,0, 0, 0 , - 6182, 3117, 7464 ,4980, 4982, 4983 ,0, 0, 0 , - 6156, 1070, 3383 ,4984, 4985, 1225 ,0, 0, 0 , - 6156, 3383, 7465 ,4984, 1225, 4986 ,0, 0, 0 , - 6446, 1036, 3343 ,4987, 1184, 1183 ,0, 0, 0 , - 6446, 3343, 7466 ,4987, 1183, 4988 ,0, 0, 0 , - 5691, 906, 3105 ,4989, 4990, 4991 ,0, 0, 0 , - 5691, 3105, 7467 ,4989, 4991, 4992 ,0, 0, 0 , - 5662, 898, 3102 ,4993, 968, 967 ,0, 0, 0 , - 5662, 3102, 7468 ,4993, 967, 4994 ,0, 0, 0 , - 5671, 896, 3093 ,4995, 4996, 4997 ,0, 0, 0 , - 5671, 3093, 7469 ,4995, 4997, 4998 ,0, 0, 0 , - 5690, 892, 3088 ,3008, 3007, 4999 ,0, 0, 0 , - 5690, 3088, 7470 ,3008, 4999, 5000 ,0, 0, 0 , - 5731, 888, 3083 ,5001, 5002, 957 ,0, 0, 0 , - 5731, 3083, 7471 ,5001, 957, 5003 ,0, 0, 0 , - 5730, 883, 3077 ,3037, 3036, 953 ,0, 0, 0 , - 5730, 3077, 7472 ,3037, 953, 5004 ,0, 0, 0 , - 5741, 879, 3075 ,5005, 948, 947 ,0, 0, 0 , - 5741, 3075, 7473 ,5005, 947, 5006 ,0, 0, 0 , - 5653, 986, 3244 ,5007, 5008, 1097 ,0, 0, 0 , - 5653, 3244, 7474 ,5007, 1097, 5009 ,0, 0, 0 , - 5648, 872, 7476 ,2974, 1078, 5010 ,0, 0, 0 , - 5648, 7476, 7475 ,2974, 5010, 5011 ,0, 0, 0 , - 5646, 985, 3246 ,2970, 1096, 1095 ,0, 0, 0 , - 5646, 3246, 7477 ,2970, 1095, 5012 ,0, 0, 0 , - 5657, 977, 3225 ,2982, 2981, 5013 ,0, 0, 0 , - 5657, 3225, 7478 ,2982, 5013, 5014 ,0, 0, 0 , - 7476, 872, 7441 ,5010, 1078, 4934 ,0, 0, 0 , - 7476, 7441, 7479 ,5010, 4934, 5015 ,0, 0, 0 , - 5676, 978, 3228 ,5016, 5017, 5018 ,0, 0, 0 , - 5676, 3228, 7480 ,5016, 5018, 5019 ,0, 0, 0 , - 7440, 872, 5663 ,4935, 1078, 5020 ,0, 0, 0 , - 7440, 5663, 7481 ,4935, 5020, 5021 ,0, 0, 0 , - 5661, 870, 3061 ,2986, 2985, 5022 ,0, 0, 0 , - 5661, 3061, 7482 ,2986, 5022, 5023 ,0, 0, 0 , - 5675, 871, 3062 ,5024, 5025, 5026 ,0, 0, 0 , - 5675, 3062, 7483 ,5024, 5026, 5027 ,0, 0, 0 , - 5670, 865, 3058 ,2993, 932, 931 ,0, 0, 0 , - 5670, 3058, 7484 ,2993, 931, 5028 ,0, 0, 0 , - 5666, 866, 3056 ,2990, 2989, 933 ,0, 0, 0 , - 5666, 3056, 7485 ,2990, 933, 5029 ,0, 0, 0 , - 5680, 867, 3057 ,5030, 5031, 5032 ,0, 0, 0 , - 5680, 3057, 7486 ,5030, 5032, 5033 ,0, 0, 0 , - 5674, 863, 3052 ,2997, 2996, 5034 ,0, 0, 0 , - 5674, 3052, 7487 ,2997, 5034, 5035 ,0, 0, 0 , - 5740, 864, 3053 ,3045, 3044, 5036 ,0, 0, 0 , - 5740, 3053, 7488 ,3045, 5036, 5037 ,0, 0, 0 , - 5752, 858, 3049 ,5038, 924, 923 ,0, 0, 0 , - 5752, 3049, 7489 ,5038, 923, 5039 ,0, 0, 0 , - 5683, 860, 3048 ,2999, 5040, 5041 ,0, 0, 0 , - 5683, 3048, 7490 ,2999, 5041, 5042 ,0, 0, 0 , - 5751, 857, 3044 ,3053, 3052, 5043 ,0, 0, 0 , - 5751, 3044, 7491 ,3053, 5043, 5044 ,0, 0, 0 , - 5761, 852, 3041 ,5045, 916, 915 ,0, 0, 0 , - 5761, 3041, 7492 ,5045, 915, 5046 ,0, 0, 0 , - 5688, 854, 3040 ,3003, 5047, 5048 ,0, 0, 0 , - 5688, 3040, 7493 ,3003, 5048, 5049 ,0, 0, 0 , - 5702, 848, 3037 ,5050, 912, 911 ,0, 0, 0 , - 5702, 3037, 7494 ,5050, 911, 5051 ,0, 0, 0 , - 5694, 851, 3036 ,3006, 5052, 5053 ,0, 0, 0 , - 5694, 3036, 7495 ,3006, 5053, 5054 ,0, 0, 0 , - 5701, 845, 3029 ,3016, 3015, 909 ,0, 0, 0 , - 5701, 3029, 7496 ,3016, 909, 5055 ,0, 0, 0 , - 5696, 846, 3030 ,3012, 3011, 5056 ,0, 0, 0 , - 5696, 3030, 7497 ,3012, 5056, 5057 ,0, 0, 0 , - 5760, 847, 3031 ,5058, 5059, 5060 ,0, 0, 0 , - 5760, 3031, 7498 ,5058, 5060, 5061 ,0, 0, 0 , - 5785, 840, 3027 ,5062, 904, 903 ,0, 0, 0 , - 5785, 3027, 7499 ,5062, 903, 5063 ,0, 0, 0 , - 5796, 841, 3024 ,5064, 5065, 905 ,0, 0, 0 , - 5796, 3024, 7500 ,5064, 905, 5066 ,0, 0, 0 , - 5801, 839, 3021 ,5067, 5068, 5069 ,0, 0, 0 , - 5801, 3021, 7501 ,5067, 5069, 5070 ,0, 0, 0 , - 5717, 832, 3017 ,5071, 896, 895 ,0, 0, 0 , - 5717, 3017, 7502 ,5071, 895, 5072 ,0, 0, 0 , - 5759, 834, 3015 ,5073, 5074, 5075 ,0, 0, 0 , - 5759, 3015, 7503 ,5073, 5075, 5076 ,0, 0, 0 , - 5708, 835, 3016 ,3018, 5077, 5078 ,0, 0, 0 , - 5708, 3016, 7504 ,3018, 5078, 5079 ,0, 0, 0 , - 5710, 828, 3012 ,3022, 892, 891 ,0, 0, 0 , - 5710, 3012, 7505 ,3022, 891, 5080 ,0, 0, 0 , - 5716, 829, 3009 ,5081, 5082, 893 ,0, 0, 0 , - 5716, 3009, 7506 ,5081, 893, 5083 ,0, 0, 0 , - 5715, 826, 3005 ,3026, 3025, 5084 ,0, 0, 0 , - 5715, 3005, 7507 ,3026, 5084, 5085 ,0, 0, 0 , - 5817, 827, 3006 ,5086, 5087, 5088 ,0, 0, 0 , - 5817, 3006, 7508 ,5086, 5088, 5089 ,0, 0, 0 , - 5810, 819, 3002 ,3095, 884, 883 ,0, 0, 0 , - 5810, 3002, 7509 ,3095, 883, 5090 ,0, 0, 0 , - 5723, 823, 3001 ,3028, 5091, 5092 ,0, 0, 0 , - 5723, 3001, 7510 ,3028, 5092, 5093 ,0, 0, 0 , - 5725, 815, 2996 ,3033, 880, 879 ,0, 0, 0 , - 5725, 2996, 7511 ,3033, 879, 5094 ,0, 0, 0 , - 5813, 818, 2995 ,3094, 5095, 5096 ,0, 0, 0 , - 5813, 2995, 7512 ,3094, 5096, 5097 ,0, 0, 0 , - 5816, 812, 2988 ,5098, 5099, 877 ,0, 0, 0 , - 5816, 2988, 7513 ,5098, 877, 5100 ,0, 0, 0 , - 6130, 807, 2986 ,5101, 872, 871 ,0, 0, 0 , - 6130, 2986, 7514 ,5101, 871, 5102 ,0, 0, 0 , - 5728, 810, 2985 ,3032, 5103, 5104 ,0, 0, 0 , - 5728, 2985, 7515 ,3032, 5104, 5105 ,0, 0, 0 , - 6140, 803, 2981 ,5106, 868, 867 ,0, 0, 0 , - 6140, 2981, 7516 ,5106, 867, 5107 ,0, 0, 0 , - 5737, 799, 2976 ,5108, 864, 863 ,0, 0, 0 , - 5737, 2976, 7517 ,5108, 863, 5109 ,0, 0, 0 , - 5734, 802, 2975 ,3035, 5110, 5111 ,0, 0, 0 , - 5734, 2975, 7518 ,3035, 5111, 5112 ,0, 0, 0 , - 5736, 797, 2969 ,3041, 3040, 5113 ,0, 0, 0 , - 5736, 2969, 7519 ,3041, 5113, 5114 ,0, 0, 0 , - 5770, 798, 2970 ,5115, 5116, 5117 ,0, 0, 0 , - 5770, 2970, 7520 ,5115, 5117, 5118 ,0, 0, 0 , - 5747, 791, 2966 ,5119, 856, 855 ,0, 0, 0 , - 5747, 2966, 7521 ,5119, 855, 5120 ,0, 0, 0 , - 5744, 794, 2965 ,3043, 5121, 5122 ,0, 0, 0 , - 5744, 2965, 7522 ,3043, 5122, 5123 ,0, 0, 0 , - 5746, 788, 2958 ,3049, 3048, 853 ,0, 0, 0 , - 5746, 2958, 7523 ,3049, 853, 5124 ,0, 0, 0 , - 5775, 789, 2959 ,5125, 5126, 5127 ,0, 0, 0 , - 5775, 2959, 7524 ,5125, 5127, 5128 ,0, 0, 0 , - 5787, 784, 2956 ,5129, 848, 847 ,0, 0, 0 , - 5787, 2956, 7525 ,5129, 847, 5130 ,0, 0, 0 , - 5757, 785, 2954 ,3057, 3056, 849 ,0, 0, 0 , - 5757, 2954, 7526 ,3057, 849, 5131 ,0, 0, 0 , - 5755, 786, 2955 ,3051, 5132, 5133 ,0, 0, 0 , - 5755, 2955, 7527 ,3051, 5133, 5134 ,0, 0, 0 , - 5769, 781, 2949 ,3065, 3064, 845 ,0, 0, 0 , - 5769, 2949, 7528 ,3065, 845, 5135 ,0, 0, 0 , - 5764, 782, 2950 ,3061, 3060, 5136 ,0, 0, 0 , - 5764, 2950, 7529 ,3061, 5136, 5137 ,0, 0, 0 , - 5843, 783, 2951 ,5138, 5139, 5140 ,0, 0, 0 , - 5843, 2951, 7530 ,5138, 5140, 5141 ,0, 0, 0 , - 5774, 777, 2944 ,3069, 3068, 841 ,0, 0, 0 , - 5774, 2944, 7531 ,3069, 841, 5142 ,0, 0, 0 , - 5842, 778, 2945 ,5143, 5144, 5145 ,0, 0, 0 , - 5842, 2945, 7532 ,5143, 5145, 5146 ,0, 0, 0 , - 5837, 773, 2942 ,5147, 836, 835 ,0, 0, 0 , - 5837, 2942, 7533 ,5147, 835, 5148 ,0, 0, 0 , - 5783, 774, 2940 ,3077, 3076, 837 ,0, 0, 0 , - 5783, 2940, 7534 ,3077, 837, 5149 ,0, 0, 0 , - 5781, 775, 2941 ,3071, 5150, 5151 ,0, 0, 0 , - 5781, 2941, 7535 ,3071, 5151, 5152 ,0, 0, 0 , - 5824, 766, 2933 ,5153, 828, 827 ,0, 0, 0 , - 5824, 2933, 7536 ,5153, 827, 5154 ,0, 0, 0 , - 5792, 763, 2928 ,5155, 5156, 825 ,0, 0, 0 , - 5792, 2928, 7537 ,5155, 825, 5157 ,0, 0, 0 , - 5835, 762, 2926 ,5158, 820, 819 ,0, 0, 0 , - 5835, 2926, 7538 ,5158, 819, 5159 ,0, 0, 0 , - 5795, 758, 2922 ,3084, 816, 815 ,0, 0, 0 , - 5795, 2922, 7539 ,3084, 815, 5160 ,0, 0, 0 , - 5791, 759, 2919 ,3081, 3080, 817 ,0, 0, 0 , - 5791, 2919, 7540 ,3081, 817, 5161 ,0, 0, 0 , - 5805, 760, 2920 ,3092, 3091, 5162 ,0, 0, 0 , - 5805, 2920, 7541 ,3092, 5162, 5163 ,0, 0, 0 , - 5819, 755, 2917 ,5164, 812, 811 ,0, 0, 0 , - 5819, 2917, 7542 ,5164, 811, 5165 ,0, 0, 0 , - 5800, 756, 2915 ,3088, 3087, 813 ,0, 0, 0 , - 5800, 2915, 7543 ,3088, 813, 5166 ,0, 0, 0 , - 5808, 757, 2916 ,3090, 5167, 5168 ,0, 0, 0 , - 5808, 2916, 7544 ,3090, 5168, 5169 ,0, 0, 0 , - 5815, 753, 2911 ,3099, 3098, 809 ,0, 0, 0 , - 5815, 2911, 7545 ,3099, 809, 5170 ,0, 0, 0 , - 5823, 748, 2909 ,3102, 804, 803 ,0, 0, 0 , - 5823, 2909, 7546 ,3102, 803, 5171 ,0, 0, 0 , - 5821, 751, 2908 ,3097, 5172, 5173 ,0, 0, 0 , - 5821, 2908, 7547 ,3097, 5173, 5174 ,0, 0, 0 , - 5829, 744, 2904 ,3105, 800, 799 ,0, 0, 0 , - 5829, 2904, 7548 ,3105, 799, 5175 ,0, 0, 0 , - 6255, 741, 2899 ,3394, 796, 795 ,0, 0, 0 , - 6255, 2899, 7549 ,3394, 795, 5176 ,0, 0, 0 , - 5827, 743, 2898 ,3101, 5177, 5178 ,0, 0, 0 , - 5827, 2898, 7550 ,3101, 5178, 5179 ,0, 0, 0 , - 5834, 737, 2895 ,3108, 792, 791 ,0, 0, 0 , - 5834, 2895, 7551 ,3108, 791, 5180 ,0, 0, 0 , - 5832, 740, 2894 ,3104, 5181, 5182 ,0, 0, 0 , - 5832, 2894, 7552 ,3104, 5182, 5183 ,0, 0, 0 , - 5841, 733, 2890 ,3111, 788, 787 ,0, 0, 0 , - 5841, 2890, 7553 ,3111, 787, 5184 ,0, 0, 0 , - 6164, 734, 2887 ,3333, 3332, 789 ,0, 0, 0 , - 6164, 2887, 7554 ,3333, 789, 5185 ,0, 0, 0 , - 5839, 736, 2889 ,3107, 5186, 5187 ,0, 0, 0 , - 5839, 2889, 7555 ,3107, 5187, 5188 ,0, 0, 0 , - 5861, 726, 2880 ,5189, 780, 779 ,0, 0, 0 , - 5861, 2880, 7556 ,5189, 779, 5190 ,0, 0, 0 , - 5856, 723, 2876 ,5191, 776, 775 ,0, 0, 0 , - 5856, 2876, 7557 ,5191, 775, 5192 ,0, 0, 0 , - 5852, 722, 2871 ,5193, 5194, 5195 ,0, 0, 0 , - 5852, 2871, 7558 ,5193, 5195, 5196 ,0, 0, 0 , - 5848, 713, 2860 ,5197, 5198, 5199 ,0, 0, 0 , - 5848, 2860, 7559 ,5197, 5199, 5200 ,0, 0, 0 , - 5900, 706, 2856 ,5201, 760, 759 ,0, 0, 0 , - 5900, 2856, 7560 ,5201, 759, 5202 ,0, 0, 0 , - 5916, 698, 2846 ,5203, 752, 751 ,0, 0, 0 , - 5916, 2846, 7561 ,5203, 751, 5204 ,0, 0, 0 , - 6044, 694, 2841 ,3253, 748, 747 ,0, 0, 0 , - 6044, 2841, 7562 ,3253, 747, 5205 ,0, 0, 0 , - 5928, 691, 2833 ,5206, 5207, 745 ,0, 0, 0 , - 5928, 2833, 7563 ,5206, 745, 5208 ,0, 0, 0 , - 6081, 693, 2835 ,5209, 5210, 5211 ,0, 0, 0 , - 6081, 2835, 7564 ,5209, 5211, 5212 ,0, 0, 0 , - 5847, 983, 3241 ,5213, 5214, 5215 ,0, 0, 0 , - 5847, 3241, 7565 ,5213, 5215, 5216 ,0, 0, 0 , - 5851, 979, 3235 ,3119, 3118, 5217 ,0, 0, 0 , - 5851, 3235, 7566 ,3119, 5217, 5218 ,0, 0, 0 , - 5855, 687, 3232 ,3122, 740, 5219 ,0, 0, 0 , - 5855, 3232, 7567 ,3122, 5219, 5220 ,0, 0, 0 , - 5860, 688, 2829 ,5221, 5222, 741 ,0, 0, 0 , - 5860, 2829, 7568 ,5221, 741, 5223 ,0, 0, 0 , - 7445, 677, 2817 ,5224, 5225, 737 ,0, 0, 0 , - 7445, 2817, 7569 ,5224, 737, 5226 ,0, 0, 0 , - 7571, 679, 2819 ,5227, 5228, 5229 ,0, 0, 0 , - 7571, 2819, 7570 ,5227, 5229, 5230 ,0, 0, 0 , - 7573, 680, 2820 ,5231, 5232, 5233 ,0, 0, 0 , - 7573, 2820, 7572 ,5231, 5233, 5234 ,0, 0, 0 , - 5859, 681, 2821 ,3126, 3125, 5235 ,0, 0, 0 , - 5859, 2821, 7574 ,3126, 5235, 5236 ,0, 0, 0 , - 5891, 682, 2822 ,5237, 5238, 5239 ,0, 0, 0 , - 5891, 2822, 7575 ,5237, 5239, 5240 ,0, 0, 0 , - 5874, 673, 2815 ,5241, 732, 731 ,0, 0, 0 , - 5874, 2815, 7576 ,5241, 731, 5242 ,0, 0, 0 , - 5866, 675, 2814 ,3128, 5243, 5244 ,0, 0, 0 , - 5866, 2814, 7577 ,3128, 5244, 5245 ,0, 0, 0 , - 5873, 670, 2811 ,3135, 728, 727 ,0, 0, 0 , - 5873, 2811, 7578 ,3135, 727, 5246 ,0, 0, 0 , - 5871, 672, 2810 ,3131, 5247, 5248 ,0, 0, 0 , - 5871, 2810, 7579 ,3131, 5248, 5249 ,0, 0, 0 , - 5878, 666, 2807 ,3138, 724, 723 ,0, 0, 0 , - 5878, 2807, 7580 ,3138, 723, 5250 ,0, 0, 0 , - 5876, 669, 2806 ,3134, 5251, 5252 ,0, 0, 0 , - 5876, 2806, 7581 ,3134, 5252, 5253 ,0, 0, 0 , - 5882, 662, 2802 ,3141, 720, 719 ,0, 0, 0 , - 5882, 2802, 7582 ,3141, 719, 5254 ,0, 0, 0 , - 5880, 665, 2801 ,3137, 5255, 5256 ,0, 0, 0 , - 5880, 2801, 7583 ,3137, 5256, 5257 ,0, 0, 0 , - 5886, 658, 2797 ,3144, 716, 715 ,0, 0, 0 , - 5886, 2797, 7584 ,3144, 715, 5258 ,0, 0, 0 , - 5884, 661, 2796 ,3140, 5259, 5260 ,0, 0, 0 , - 5884, 2796, 7585 ,3140, 5260, 5261 ,0, 0, 0 , - 5890, 654, 2792 ,3147, 712, 711 ,0, 0, 0 , - 5890, 2792, 7586 ,3147, 711, 5262 ,0, 0, 0 , - 5961, 655, 2789 ,5263, 5264, 713 ,0, 0, 0 , - 5961, 2789, 7587 ,5263, 713, 5265 ,0, 0, 0 , - 5888, 657, 2791 ,3143, 5266, 5267 ,0, 0, 0 , - 5888, 2791, 7588 ,3143, 5267, 5268 ,0, 0, 0 , - 5996, 648, 2780 ,5269, 5270, 705 ,0, 0, 0 , - 5996, 2780, 7589 ,5269, 705, 5271 ,0, 0, 0 , - 5895, 649, 2781 ,5272, 5273, 5274 ,0, 0, 0 , - 5895, 2781, 7590 ,5272, 5274, 5275 ,0, 0, 0 , - 5894, 644, 2778 ,3150, 700, 699 ,0, 0, 0 , - 5894, 2778, 7591 ,3150, 699, 5276 ,0, 0, 0 , - 6007, 641, 2774 ,5277, 696, 695 ,0, 0, 0 , - 6007, 2774, 7592 ,5277, 695, 5278 ,0, 0, 0 , - 5906, 642, 2772 ,5279, 5280, 697 ,0, 0, 0 , - 5906, 2772, 7593 ,5279, 697, 5281 ,0, 0, 0 , - 5897, 643, 2773 ,3149, 5282, 5283 ,0, 0, 0 , - 5897, 2773, 7594 ,3149, 5283, 5284 ,0, 0, 0 , - 5904, 638, 2767 ,3158, 3157, 693 ,0, 0, 0 , - 5904, 2767, 7595 ,3158, 693, 5285 ,0, 0, 0 , - 5899, 639, 2768 ,3154, 3153, 5286 ,0, 0, 0 , - 5899, 2768, 7596 ,3154, 5286, 5287 ,0, 0, 0 , - 5909, 640, 2769 ,3162, 3161, 5288 ,0, 0, 0 , - 5909, 2769, 7597 ,3162, 5288, 5289 ,0, 0, 0 , - 5922, 633, 2765 ,3169, 688, 687 ,0, 0, 0 , - 5922, 2765, 7598 ,3169, 687, 5290 ,0, 0, 0 , - 5915, 635, 2763 ,3166, 3165, 5291 ,0, 0, 0 , - 5915, 2763, 7599 ,3166, 5291, 5292 ,0, 0, 0 , - 5913, 636, 2764 ,3160, 5293, 5294 ,0, 0, 0 , - 5913, 2764, 7600 ,3160, 5294, 5295 ,0, 0, 0 , - 5932, 629, 2760 ,3176, 684, 683 ,0, 0, 0 , - 5932, 2760, 7601 ,3176, 683, 5296 ,0, 0, 0 , - 5927, 631, 2758 ,3173, 3172, 5297 ,0, 0, 0 , - 5927, 2758, 7602 ,3173, 5297, 5298 ,0, 0, 0 , - 5925, 632, 2759 ,3168, 5299, 5300 ,0, 0, 0 , - 5925, 2759, 7603 ,3168, 5300, 5301 ,0, 0, 0 , - 5942, 625, 2755 ,3183, 680, 679 ,0, 0, 0 , - 5942, 2755, 7604 ,3183, 679, 5302 ,0, 0, 0 , - 5937, 627, 2753 ,3180, 3179, 5303 ,0, 0, 0 , - 5937, 2753, 7605 ,3180, 5303, 5304 ,0, 0, 0 , - 5935, 628, 2754 ,3175, 5305, 5306 ,0, 0, 0 , - 5935, 2754, 7606 ,3175, 5306, 5307 ,0, 0, 0 , - 5960, 621, 2750 ,5308, 676, 675 ,0, 0, 0 , - 5960, 2750, 7607 ,5308, 675, 5309 ,0, 0, 0 , - 5947, 623, 2748 ,3187, 3186, 5310 ,0, 0, 0 , - 5947, 2748, 7608 ,3187, 5310, 5311 ,0, 0, 0 , - 5945, 624, 2749 ,3182, 5312, 5313 ,0, 0, 0 , - 5945, 2749, 7609 ,3182, 5313, 5314 ,0, 0, 0 , - 6005, 617, 2745 ,3229, 672, 671 ,0, 0, 0 , - 6005, 2745, 7610 ,3229, 671, 5315 ,0, 0, 0 , - 5959, 619, 2743 ,3195, 3194, 5316 ,0, 0, 0 , - 5959, 2743, 7611 ,3195, 5316, 5317 ,0, 0, 0 , - 5957, 620, 2744 ,3189, 5318, 5319 ,0, 0, 0 , - 5957, 2744, 7612 ,3189, 5319, 5320 ,0, 0, 0 , - 5964, 609, 2730 ,3199, 3198, 5321 ,0, 0, 0 , - 5964, 2730, 7613 ,3199, 5321, 5322 ,0, 0, 0 , - 5981, 610, 2731 ,5323, 5324, 5325 ,0, 0, 0 , - 5981, 2731, 7614 ,5323, 5325, 5326 ,0, 0, 0 , - 5976, 606, 2726 ,5327, 5328, 5329 ,0, 0, 0 , - 5976, 2726, 7615 ,5327, 5329, 5330 ,0, 0, 0 , - 5975, 601, 2723 ,3208, 652, 651 ,0, 0, 0 , - 5975, 2723, 7616 ,3208, 651, 5331 ,0, 0, 0 , - 6292, 603, 2722 ,5332, 5333, 5334 ,0, 0, 0 , - 6292, 2722, 7617 ,5332, 5334, 5335 ,0, 0, 0 , - 5980, 597, 2719 ,3211, 648, 647 ,0, 0, 0 , - 5980, 2719, 7618 ,3211, 647, 5336 ,0, 0, 0 , - 5978, 600, 2718 ,3207, 5337, 5338 ,0, 0, 0 , - 5978, 2718, 7619 ,3207, 5338, 5339 ,0, 0, 0 , - 6063, 593, 2714 ,5340, 644, 643 ,0, 0, 0 , - 6063, 2714, 7620 ,5340, 643, 5341 ,0, 0, 0 , - 5983, 596, 2713 ,3210, 5342, 5343 ,0, 0, 0 , - 5983, 2713, 7621 ,3210, 5343, 5344 ,0, 0, 0 , - 5990, 589, 2709 ,3218, 640, 639 ,0, 0, 0 , - 5990, 2709, 7622 ,3218, 639, 5345 ,0, 0, 0 , - 5988, 592, 2708 ,3213, 5346, 5347 ,0, 0, 0 , - 5988, 2708, 7623 ,3213, 5347, 5348 ,0, 0, 0 , - 6051, 585, 2704 ,5349, 636, 635 ,0, 0, 0 , - 6051, 2704, 7624 ,5349, 635, 5350 ,0, 0, 0 , - 5993, 588, 2703 ,3217, 5351, 5352 ,0, 0, 0 , - 5993, 2703, 7625 ,3217, 5352, 5353 ,0, 0, 0 , - 6050, 581, 2699 ,3256, 632, 631 ,0, 0, 0 , - 6050, 2699, 7626 ,3256, 631, 5354 ,0, 0, 0 , - 6104, 565, 2679 ,5355, 616, 615 ,0, 0, 0 , - 6104, 2679, 7627 ,5355, 615, 5356 ,0, 0, 0 , - 6001, 567, 2677 ,5357, 5358, 5359 ,0, 0, 0 , - 6001, 2677, 7628 ,5357, 5359, 5360 ,0, 0, 0 , - 5998, 568, 2678 ,3220, 5361, 5362 ,0, 0, 0 , - 5998, 2678, 7629 ,3220, 5362, 5363 ,0, 0, 0 , - 6019, 562, 2674 ,5364, 612, 611 ,0, 0, 0 , - 6019, 2674, 7630 ,5364, 611, 5365 ,0, 0, 0 , - 6003, 564, 2673 ,3224, 5366, 5367 ,0, 0, 0 , - 6003, 2673, 7631 ,3224, 5367, 5368 ,0, 0, 0 , - 6018, 559, 2670 ,5369, 608, 607 ,0, 0, 0 , - 6018, 2670, 7632 ,5369, 607, 5370 ,0, 0, 0 , - 6012, 560, 2668 ,3233, 3232, 609 ,0, 0, 0 , - 6012, 2668, 7633 ,3233, 609, 5371 ,0, 0, 0 , - 6010, 561, 2669 ,3228, 5372, 5373 ,0, 0, 0 , - 6010, 2669, 7634 ,3228, 5373, 5374 ,0, 0, 0 , - 6025, 555, 2666 ,5375, 604, 603 ,0, 0, 0 , - 6025, 2666, 7635 ,5375, 603, 5376 ,0, 0, 0 , - 6021, 558, 2665 ,3235, 5377, 5378 ,0, 0, 0 , - 6021, 2665, 7636 ,3235, 5378, 5379 ,0, 0, 0 , - 6024, 552, 2658 ,5380, 5381, 601 ,0, 0, 0 , - 6024, 2658, 7637 ,5380, 601, 5382 ,0, 0, 0 , - 6023, 547, 2656 ,3240, 596, 595 ,0, 0, 0 , - 6023, 2656, 7638 ,3240, 595, 5383 ,0, 0, 0 , - 6034, 548, 2653 ,5384, 5385, 597 ,0, 0, 0 , - 6034, 2653, 7639 ,5384, 597, 5386 ,0, 0, 0 , - 6320, 550, 2655 ,5387, 5388, 5389 ,0, 0, 0 , - 6320, 2655, 7640 ,5387, 5389, 5390 ,0, 0, 0 , - 6028, 544, 2651 ,3243, 592, 591 ,0, 0, 0 , - 6028, 2651, 7641 ,3243, 591, 5391 ,0, 0, 0 , - 6237, 546, 2650 ,5392, 5393, 5394 ,0, 0, 0 , - 6237, 2650, 7642 ,5392, 5394, 5395 ,0, 0, 0 , - 6033, 541, 2647 ,3246, 588, 587 ,0, 0, 0 , - 6033, 2647, 7643 ,3246, 587, 5396 ,0, 0, 0 , - 6031, 543, 2646 ,3242, 5397, 5398 ,0, 0, 0 , - 6031, 2646, 7644 ,3242, 5398, 5399 ,0, 0, 0 , - 6103, 537, 2643 ,5400, 584, 583 ,0, 0, 0 , - 6103, 2643, 7645 ,5400, 583, 5401 ,0, 0, 0 , - 6037, 540, 2642 ,3245, 5402, 5403 ,0, 0, 0 , - 6037, 2642, 7646 ,3245, 5403, 5404 ,0, 0, 0 , - 6091, 533, 2638 ,3286, 580, 579 ,0, 0, 0 , - 6091, 2638, 7647 ,3286, 579, 5405 ,0, 0, 0 , - 6087, 535, 2636 ,5406, 5407, 5408 ,0, 0, 0 , - 6087, 2636, 7648 ,5406, 5408, 5409 ,0, 0, 0 , - 6058, 530, 2633 ,5410, 576, 575 ,0, 0, 0 , - 6058, 2633, 7649 ,5410, 575, 5411 ,0, 0, 0 , - 6314, 532, 2632 ,5412, 5413, 5414 ,0, 0, 0 , - 6314, 2632, 7650 ,5412, 5414, 5415 ,0, 0, 0 , - 6039, 528, 2627 ,3250, 3249, 573 ,0, 0, 0 , - 6039, 2627, 7651 ,3250, 573, 5416 ,0, 0, 0 , - 6057, 529, 2628 ,5417, 5418, 5419 ,0, 0, 0 , - 6057, 2628, 7652 ,5417, 5419, 5420 ,0, 0, 0 , - 6056, 523, 2625 ,5421, 568, 567 ,0, 0, 0 , - 6056, 2625, 7653 ,5421, 567, 5422 ,0, 0, 0 , - 6048, 526, 2624 ,3252, 5423, 5424 ,0, 0, 0 , - 6048, 2624, 7654 ,3252, 5424, 5425 ,0, 0, 0 , - 6062, 519, 2620 ,5426, 564, 563 ,0, 0, 0 , - 6062, 2620, 7655 ,5426, 563, 5427 ,0, 0, 0 , - 6055, 521, 2618 ,3260, 3259, 5428 ,0, 0, 0 , - 6055, 2618, 7656 ,3260, 5428, 5429 ,0, 0, 0 , - 6053, 522, 2619 ,3255, 5430, 5431 ,0, 0, 0 , - 6053, 2619, 7657 ,3255, 5431, 5432 ,0, 0, 0 , - 6061, 518, 2614 ,3264, 3263, 5433 ,0, 0, 0 , - 6061, 2614, 7658 ,3264, 5433, 5434 ,0, 0, 0 , - 6086, 512, 2611 ,5435, 556, 555 ,0, 0, 0 , - 6086, 2611, 7659 ,5435, 555, 5436 ,0, 0, 0 , - 6070, 514, 2609 ,3272, 3271, 5437 ,0, 0, 0 , - 6070, 2609, 7660 ,3272, 5437, 5438 ,0, 0, 0 , - 6068, 515, 2610 ,3266, 5439, 5440 ,0, 0, 0 , - 6068, 2610, 7661 ,3266, 5440, 5441 ,0, 0, 0 , - 6085, 509, 2606 ,3283, 552, 551 ,0, 0, 0 , - 6085, 2606, 7662 ,3283, 551, 5442 ,0, 0, 0 , - 6080, 510, 2604 ,3280, 3279, 553 ,0, 0, 0 , - 6080, 2604, 7663 ,3280, 553, 5443 ,0, 0, 0 , - 6078, 511, 2605 ,3274, 5444, 5445 ,0, 0, 0 , - 6078, 2605, 7664 ,3274, 5445, 5446 ,0, 0, 0 , - 6108, 506, 2602 ,5447, 548, 547 ,0, 0, 0 , - 6108, 2602, 7665 ,5447, 547, 5448 ,0, 0, 0 , - 6094, 508, 2601 ,3285, 5449, 5450 ,0, 0, 0 , - 6094, 2601, 7666 ,3285, 5450, 5451 ,0, 0, 0 , - 6107, 502, 2598 ,3297, 544, 543 ,0, 0, 0 , - 6107, 2598, 7667 ,3297, 543, 5452 ,0, 0, 0 , - 6102, 504, 2596 ,3294, 3293, 5453 ,0, 0, 0 , - 6102, 2596, 7668 ,3294, 5453, 5454 ,0, 0, 0 , - 6100, 505, 2597 ,3288, 5455, 5456 ,0, 0, 0 , - 6100, 2597, 7669 ,3288, 5456, 5457 ,0, 0, 0 , - 6114, 498, 2593 ,3300, 540, 539 ,0, 0, 0 , - 6114, 2593, 7670 ,3300, 539, 5458 ,0, 0, 0 , - 6112, 501, 2592 ,3296, 5459, 5460 ,0, 0, 0 , - 6112, 2592, 7671 ,3296, 5460, 5461 ,0, 0, 0 , - 6119, 494, 2588 ,3303, 536, 535 ,0, 0, 0 , - 6119, 2588, 7672 ,3303, 535, 5462 ,0, 0, 0 , - 6117, 497, 2587 ,3299, 5463, 5464 ,0, 0, 0 , - 6117, 2587, 7673 ,3299, 5464, 5465 ,0, 0, 0 , - 6124, 490, 2583 ,3306, 532, 531 ,0, 0, 0 , - 6124, 2583, 7674 ,3306, 531, 5466 ,0, 0, 0 , - 6208, 492, 2581 ,5467, 5468, 5469 ,0, 0, 0 , - 6208, 2581, 7675 ,5467, 5469, 5470 ,0, 0, 0 , - 6122, 493, 2582 ,3302, 5471, 5472 ,0, 0, 0 , - 6122, 2582, 7676 ,3302, 5472, 5473 ,0, 0, 0 , - 6134, 486, 2578 ,3313, 528, 527 ,0, 0, 0 , - 6134, 2578, 7677 ,3313, 527, 5474 ,0, 0, 0 , - 6129, 488, 2576 ,3310, 3309, 5475 ,0, 0, 0 , - 6129, 2576, 7678 ,3310, 5475, 5476 ,0, 0, 0 , - 6127, 489, 2577 ,3305, 5477, 5478 ,0, 0, 0 , - 6127, 2577, 7679 ,3305, 5478, 5479 ,0, 0, 0 , - 6144, 482, 2573 ,3320, 524, 523 ,0, 0, 0 , - 6144, 2573, 7680 ,3320, 523, 5480 ,0, 0, 0 , - 6139, 484, 2571 ,3317, 3316, 5481 ,0, 0, 0 , - 6139, 2571, 7681 ,3317, 5481, 5482 ,0, 0, 0 , - 6137, 485, 2572 ,3312, 5483, 5484 ,0, 0, 0 , - 6137, 2572, 7682 ,3312, 5484, 5485 ,0, 0, 0 , - 6149, 478, 2568 ,3323, 520, 519 ,0, 0, 0 , - 6149, 2568, 7683 ,3323, 519, 5486 ,0, 0, 0 , - 6147, 481, 2567 ,3319, 5487, 5488 ,0, 0, 0 , - 6147, 2567, 7684 ,3319, 5488, 5489 ,0, 0, 0 , - 6154, 474, 2563 ,3326, 516, 515 ,0, 0, 0 , - 6154, 2563, 7685 ,3326, 515, 5490 ,0, 0, 0 , - 6181, 475, 2560 ,5491, 5492, 517 ,0, 0, 0 , - 6181, 2560, 7686 ,5491, 517, 5493 ,0, 0, 0 , - 6152, 477, 2562 ,3322, 5494, 5495 ,0, 0, 0 , - 6152, 2562, 7687 ,3322, 5495, 5496 ,0, 0, 0 , - 6159, 466, 2553 ,3329, 508, 507 ,0, 0, 0 , - 6159, 2553, 7688 ,3329, 507, 5497 ,0, 0, 0 , - 6272, 468, 2551 ,5498, 5499, 5500 ,0, 0, 0 , - 6272, 2551, 7689 ,5498, 5500, 5501 ,0, 0, 0 , - 6171, 462, 2548 ,5502, 504, 503 ,0, 0, 0 , - 6171, 2548, 7690 ,5502, 503, 5503 ,0, 0, 0 , - 6162, 465, 2547 ,3328, 5504, 5505 ,0, 0, 0 , - 6162, 2547, 7691 ,3328, 5505, 5506 ,0, 0, 0 , - 6175, 458, 2543 ,3340, 500, 499 ,0, 0, 0 , - 6175, 2543, 7692 ,3340, 499, 5507 ,0, 0, 0 , - 6170, 460, 2541 ,3337, 3336, 5508 ,0, 0, 0 , - 6170, 2541, 7693 ,3337, 5508, 5509 ,0, 0, 0 , - 6168, 461, 2542 ,3331, 5510, 5511 ,0, 0, 0 , - 6168, 2542, 7694 ,3331, 5511, 5512 ,0, 0, 0 , - 6180, 454, 2538 ,3343, 496, 495 ,0, 0, 0 , - 6180, 2538, 7695 ,3343, 495, 5513 ,0, 0, 0 , - 6197, 455, 2535 ,5514, 5515, 497 ,0, 0, 0 , - 6197, 2535, 7696 ,5514, 497, 5516 ,0, 0, 0 , - 6178, 457, 2537 ,3339, 5517, 5518 ,0, 0, 0 , - 6178, 2537, 7697 ,3339, 5518, 5519 ,0, 0, 0 , - 6190, 451, 2530 ,3351, 3350, 493 ,0, 0, 0 , - 6190, 2530, 7698 ,3351, 493, 5520 ,0, 0, 0 , - 6185, 452, 2531 ,3347, 3346, 5521 ,0, 0, 0 , - 6185, 2531, 7699 ,3347, 5521, 5522 ,0, 0, 0 , - 6196, 453, 2532 ,5523, 5524, 5525 ,0, 0, 0 , - 6196, 2532, 7700 ,5523, 5525, 5526 ,0, 0, 0 , - 6195, 447, 2528 ,3354, 488, 487 ,0, 0, 0 , - 6195, 2528, 7701 ,3354, 487, 5527 ,0, 0, 0 , - 6286, 448, 2526 ,3417, 3416, 489 ,0, 0, 0 , - 6286, 2526, 7702 ,3417, 489, 5528 ,0, 0, 0 , - 6262, 446, 2523 ,5529, 5530, 5531 ,0, 0, 0 , - 6262, 2523, 7703 ,5529, 5531, 5532 ,0, 0, 0 , - 6223, 439, 2519 ,5533, 480, 479 ,0, 0, 0 , - 6223, 2519, 7704 ,5533, 479, 5534 ,0, 0, 0 , - 6206, 441, 2517 ,3362, 3361, 5535 ,0, 0, 0 , - 6206, 2517, 7705 ,3362, 5535, 5536 ,0, 0, 0 , - 6204, 442, 2518 ,3356, 5537, 5538 ,0, 0, 0 , - 6204, 2518, 7706 ,3356, 5538, 5539 ,0, 0, 0 , - 6217, 435, 2514 ,3369, 476, 475 ,0, 0, 0 , - 6217, 2514, 7707 ,3369, 475, 5540 ,0, 0, 0 , - 6222, 436, 2511 ,3373, 3372, 477 ,0, 0, 0 , - 6222, 2511, 7708 ,3373, 477, 5541 ,0, 0, 0 , - 6215, 438, 2513 ,3364, 5542, 5543 ,0, 0, 0 , - 6215, 2513, 7709 ,3364, 5543, 5544 ,0, 0, 0 , - 6251, 433, 2507 ,5545, 5546, 473 ,0, 0, 0 , - 6251, 2507, 7710 ,5545, 473, 5547 ,0, 0, 0 , - 6241, 429, 2505 ,5548, 468, 467 ,0, 0, 0 , - 6241, 2505, 7711 ,5548, 467, 5549 ,0, 0, 0 , - 6228, 430, 2503 ,3377, 3376, 469 ,0, 0, 0 , - 6228, 2503, 7712 ,3377, 469, 5550 ,0, 0, 0 , - 6226, 431, 2504 ,3371, 5551, 5552 ,0, 0, 0 , - 6226, 2504, 7713 ,3371, 5552, 5553 ,0, 0, 0 , - 6235, 421, 2496 ,3380, 460, 459 ,0, 0, 0 , - 6235, 2496, 7714 ,3380, 459, 5554 ,0, 0, 0 , - 6247, 422, 2493 ,5555, 5556, 461 ,0, 0, 0 , - 6247, 2493, 7715 ,5555, 461, 5557 ,0, 0, 0 , - 6331, 423, 2494 ,5558, 5559, 5560 ,0, 0, 0 , - 6331, 2494, 7716 ,5558, 5560, 5561 ,0, 0, 0 , - 6250, 417, 2491 ,3391, 456, 455 ,0, 0, 0 , - 6250, 2491, 7717 ,3391, 455, 5562 ,0, 0, 0 , - 6245, 419, 2489 ,3388, 3387, 5563 ,0, 0, 0 , - 6245, 2489, 7718 ,3388, 5563, 5564 ,0, 0, 0 , - 6243, 420, 2490 ,3382, 5565, 5566 ,0, 0, 0 , - 6243, 2490, 7719 ,3382, 5566, 5567 ,0, 0, 0 , - 6261, 413, 2486 ,5568, 452, 451 ,0, 0, 0 , - 6261, 2486, 7720 ,5568, 451, 5569 ,0, 0, 0 , - 6253, 416, 2485 ,3390, 5570, 5571 ,0, 0, 0 , - 6253, 2485, 7721 ,3390, 5571, 5572 ,0, 0, 0 , - 6271, 409, 2481 ,3405, 448, 447 ,0, 0, 0 , - 6271, 2481, 7722 ,3405, 447, 5573 ,0, 0, 0 , - 6260, 411, 2479 ,3398, 3397, 5574 ,0, 0, 0 , - 6260, 2479, 7723 ,3398, 5574, 5575 ,0, 0, 0 , - 6258, 412, 2480 ,3393, 5576, 5577 ,0, 0, 0 , - 6258, 2480, 7724 ,3393, 5577, 5578 ,0, 0, 0 , - 6277, 406, 2476 ,5579, 444, 443 ,0, 0, 0 , - 6277, 2476, 7725 ,5579, 443, 5580 ,0, 0, 0 , - 6269, 408, 2475 ,3400, 5581, 5582 ,0, 0, 0 , - 6269, 2475, 7726 ,3400, 5582, 5583 ,0, 0, 0 , - 6342, 402, 2472 ,5584, 440, 439 ,0, 0, 0 , - 6342, 2472, 7727 ,5584, 439, 5585 ,0, 0, 0 , - 6276, 404, 2470 ,3409, 3408, 5586 ,0, 0, 0 , - 6276, 2470, 7728 ,3409, 5586, 5587 ,0, 0, 0 , - 6274, 405, 2471 ,3404, 5588, 5589 ,0, 0, 0 , - 6274, 2471, 7729 ,3404, 5589, 5590 ,0, 0, 0 , - 6344, 399, 2467 ,5591, 436, 435 ,0, 0, 0 , - 6344, 2467, 7730 ,5591, 435, 5592 ,0, 0, 0 , - 6281, 400, 2465 ,3413, 3412, 437 ,0, 0, 0 , - 6281, 2465, 7731 ,3413, 437, 5593 ,0, 0, 0 , - 6290, 401, 2466 ,3415, 5594, 5595 ,0, 0, 0 , - 6290, 2466, 7732 ,3415, 5595, 5596 ,0, 0, 0 , - 6296, 394, 2460 ,3422, 428, 427 ,0, 0, 0 , - 6296, 2460, 7733 ,3422, 427, 5597 ,0, 0, 0 , - 6294, 397, 2459 ,3419, 5598, 5599 ,0, 0, 0 , - 6294, 2459, 7734 ,3419, 5599, 5600 ,0, 0, 0 , - 6301, 390, 2455 ,3425, 424, 423 ,0, 0, 0 , - 6301, 2455, 7735 ,3425, 423, 5601 ,0, 0, 0 , - 6299, 393, 2454 ,3421, 5602, 5603 ,0, 0, 0 , - 6299, 2454, 7736 ,3421, 5603, 5604 ,0, 0, 0 , - 6306, 386, 2450 ,3428, 420, 419 ,0, 0, 0 , - 6306, 2450, 7737 ,3428, 419, 5605 ,0, 0, 0 , - 6304, 389, 2449 ,3424, 5606, 5607 ,0, 0, 0 , - 6304, 2449, 7738 ,3424, 5607, 5608 ,0, 0, 0 , - 6312, 383, 2445 ,5609, 416, 415 ,0, 0, 0 , - 6312, 2445, 7739 ,5609, 415, 5610 ,0, 0, 0 , - 6309, 385, 2444 ,3427, 5611, 5612 ,0, 0, 0 , - 6309, 2444, 7740 ,3427, 5612, 5613 ,0, 0, 0 , - 6311, 380, 2441 ,3431, 412, 411 ,0, 0, 0 , - 6311, 2441, 7741 ,3431, 411, 5614 ,0, 0, 0 , - 6318, 377, 2437 ,3434, 408, 407 ,0, 0, 0 , - 6318, 2437, 7742 ,3434, 407, 5615 ,0, 0, 0 , - 6316, 379, 2436 ,3430, 5616, 5617 ,0, 0, 0 , - 6316, 2436, 7743 ,3430, 5617, 5618 ,0, 0, 0 , - 6325, 373, 2433 ,5619, 404, 403 ,0, 0, 0 , - 6325, 2433, 7744 ,5619, 403, 5620 ,0, 0, 0 , - 6322, 376, 2432 ,3433, 5621, 5622 ,0, 0, 0 , - 6322, 2432, 7745 ,3433, 5622, 5623 ,0, 0, 0 , - 6324, 370, 2428 ,3437, 400, 399 ,0, 0, 0 , - 6324, 2428, 7746 ,3437, 399, 5624 ,0, 0, 0 , - 6330, 366, 2424 ,3440, 396, 395 ,0, 0, 0 , - 6330, 2424, 7747 ,3440, 395, 5625 ,0, 0, 0 , - 6328, 369, 2423 ,3436, 5626, 5627 ,0, 0, 0 , - 6328, 2423, 7748 ,3436, 5627, 5628 ,0, 0, 0 , - 6335, 362, 2419 ,3443, 392, 391 ,0, 0, 0 , - 6335, 2419, 7749 ,3443, 391, 5629 ,0, 0, 0 , - 6333, 365, 2418 ,3439, 5630, 5631 ,0, 0, 0 , - 6333, 2418, 7750 ,3439, 5631, 5632 ,0, 0, 0 , - 6341, 358, 2414 ,3446, 388, 387 ,0, 0, 0 , - 6341, 2414, 7751 ,3446, 387, 5633 ,0, 0, 0 , - 6426, 359, 2411 ,5634, 5635, 389 ,0, 0, 0 , - 6426, 2411, 7752 ,5634, 389, 5636 ,0, 0, 0 , - 6339, 361, 2413 ,3442, 5637, 5638 ,0, 0, 0 , - 6339, 2413, 7753 ,3442, 5638, 5639 ,0, 0, 0 , - 6354, 351, 2405 ,3452, 380, 379 ,0, 0, 0 , - 6354, 2405, 7754 ,3452, 379, 5640 ,0, 0, 0 , - 6352, 354, 2404 ,3448, 5641, 5642 ,0, 0, 0 , - 6352, 2404, 7755 ,3448, 5642, 5643 ,0, 0, 0 , - 6359, 347, 2400 ,3455, 376, 375 ,0, 0, 0 , - 6359, 2400, 7756 ,3455, 375, 5644 ,0, 0, 0 , - 6357, 350, 2399 ,3451, 5645, 5646 ,0, 0, 0 , - 6357, 2399, 7757 ,3451, 5646, 5647 ,0, 0, 0 , - 6364, 343, 2395 ,3458, 372, 371 ,0, 0, 0 , - 6364, 2395, 7758 ,3458, 371, 5648 ,0, 0, 0 , - 6362, 346, 2394 ,3454, 5649, 5650 ,0, 0, 0 , - 6362, 2394, 7759 ,3454, 5650, 5651 ,0, 0, 0 , - 6374, 339, 2390 ,3465, 368, 367 ,0, 0, 0 , - 6374, 2390, 7760 ,3465, 367, 5652 ,0, 0, 0 , - 6370, 341, 2388 ,3462, 3461, 5653 ,0, 0, 0 , - 6370, 2388, 7761 ,3462, 5653, 5654 ,0, 0, 0 , - 6368, 342, 2389 ,3457, 5655, 5656 ,0, 0, 0 , - 6368, 2389, 7762 ,3457, 5656, 5657 ,0, 0, 0 , - 6385, 335, 2385 ,3472, 364, 363 ,0, 0, 0 , - 6385, 2385, 7763 ,3472, 363, 5658 ,0, 0, 0 , - 6380, 337, 2383 ,3469, 3468, 5659 ,0, 0, 0 , - 6380, 2383, 7764 ,3469, 5659, 5660 ,0, 0, 0 , - 6378, 338, 2384 ,3464, 5661, 5662 ,0, 0, 0 , - 6378, 2384, 7765 ,3464, 5662, 5663 ,0, 0, 0 , - 6395, 331, 2380 ,3479, 360, 359 ,0, 0, 0 , - 6395, 2380, 7766 ,3479, 359, 5664 ,0, 0, 0 , - 6390, 333, 2378 ,3476, 3475, 5665 ,0, 0, 0 , - 6390, 2378, 7767 ,3476, 5665, 5666 ,0, 0, 0 , - 6388, 334, 2379 ,3471, 5667, 5668 ,0, 0, 0 , - 6388, 2379, 7768 ,3471, 5668, 5669 ,0, 0, 0 , - 6405, 327, 2375 ,3486, 356, 355 ,0, 0, 0 , - 6405, 2375, 7769 ,3486, 355, 5670 ,0, 0, 0 , - 6400, 329, 2373 ,3483, 3482, 5671 ,0, 0, 0 , - 6400, 2373, 7770 ,3483, 5671, 5672 ,0, 0, 0 , - 6398, 330, 2374 ,3478, 5673, 5674 ,0, 0, 0 , - 6398, 2374, 7771 ,3478, 5674, 5675 ,0, 0, 0 , - 6415, 323, 2370 ,3493, 352, 351 ,0, 0, 0 , - 6415, 2370, 7772 ,3493, 351, 5676 ,0, 0, 0 , - 6410, 325, 2368 ,3490, 3489, 5677 ,0, 0, 0 , - 6410, 2368, 7773 ,3490, 5677, 5678 ,0, 0, 0 , - 6408, 326, 2369 ,3485, 5679, 5680 ,0, 0, 0 , - 6408, 2369, 7774 ,3485, 5680, 5681 ,0, 0, 0 , - 6425, 319, 2365 ,3500, 348, 347 ,0, 0, 0 , - 6425, 2365, 7775 ,3500, 347, 5682 ,0, 0, 0 , - 6432, 320, 2362 ,3504, 3503, 349 ,0, 0, 0 , - 6432, 2362, 7776 ,3504, 349, 5683 ,0, 0, 0 , - 6420, 321, 2363 ,3497, 3496, 5684 ,0, 0, 0 , - 6420, 2363, 7777 ,3497, 5684, 5685 ,0, 0, 0 , - 6418, 322, 2364 ,3492, 5686, 5687 ,0, 0, 0 , - 6418, 2364, 7778 ,3492, 5687, 5688 ,0, 0, 0 , - 6575, 969, 3209 ,5689, 5690, 5691 ,0, 0, 0 , - 6575, 3209, 7779 ,5689, 5691, 5692 ,0, 0, 0 , - 6497, 306, 2350 ,5693, 5694, 5695 ,0, 0, 0 , - 6497, 2350, 7780 ,5693, 5695, 5696 ,0, 0, 0 , - 6493, 956, 3181 ,5697, 5698, 5699 ,0, 0, 0 , - 6493, 3181, 7781 ,5697, 5699, 5700 ,0, 0, 0 , - 6487, 959, 3185 ,5701, 5702, 5703 ,0, 0, 0 , - 6487, 3185, 7782 ,5701, 5703, 5704 ,0, 0, 0 , - 6618, 299, 3165 ,5705, 1024, 1023 ,0, 0, 0 , - 6618, 3165, 7783 ,5705, 1023, 5706 ,0, 0, 0 , - 6437, 295, 2346 ,3507, 332, 331 ,0, 0, 0 , - 6437, 2346, 7784 ,3507, 331, 5707 ,0, 0, 0 , - 6444, 296, 2343 ,3511, 3510, 333 ,0, 0, 0 , - 6444, 2343, 7785 ,3511, 333, 5708 ,0, 0, 0 , - 6457, 297, 2344 ,5709, 5710, 5711 ,0, 0, 0 , - 6457, 2344, 7786 ,5709, 5711, 5712 ,0, 0, 0 , - 6449, 291, 2341 ,3514, 328, 327 ,0, 0, 0 , - 6449, 2341, 7787 ,3514, 327, 5713 ,0, 0, 0 , - 6456, 292, 2338 ,3518, 3517, 329 ,0, 0, 0 , - 6456, 2338, 7788 ,3518, 329, 5714 ,0, 0, 0 , - 6467, 293, 2339 ,5715, 5716, 5717 ,0, 0, 0 , - 6467, 2339, 7789 ,5715, 5717, 5718 ,0, 0, 0 , - 6461, 287, 2336 ,3521, 324, 323 ,0, 0, 0 , - 6461, 2336, 7790 ,3521, 323, 5719 ,0, 0, 0 , - 6466, 288, 2333 ,3525, 3524, 325 ,0, 0, 0 , - 6466, 2333, 7791 ,3525, 325, 5720 ,0, 0, 0 , - 6476, 289, 2334 ,5721, 5722, 5723 ,0, 0, 0 , - 6476, 2334, 7792 ,5721, 5723, 5724 ,0, 0, 0 , - 6471, 283, 2331 ,3528, 320, 319 ,0, 0, 0 , - 6471, 2331, 7793 ,3528, 319, 5725 ,0, 0, 0 , - 6475, 284, 2328 ,3532, 3531, 321 ,0, 0, 0 , - 6475, 2328, 7794 ,3532, 321, 5726 ,0, 0, 0 , - 6480, 285, 2329 ,3536, 3535, 5727 ,0, 0, 0 , - 6480, 2329, 7795 ,3536, 5727, 5728 ,0, 0, 0 , - 6489, 286, 2330 ,3538, 5729, 5730 ,0, 0, 0 , - 6489, 2330, 7796 ,3538, 5730, 5731 ,0, 0, 0 , - 6491, 279, 2326 ,3543, 316, 315 ,0, 0, 0 , - 6491, 2326, 7797 ,3543, 315, 5732 ,0, 0, 0 , - 6496, 280, 2323 ,3547, 3546, 317 ,0, 0, 0 , - 6496, 2323, 7798 ,3547, 317, 5733 ,0, 0, 0 , - 6511, 281, 2324 ,5734, 5735, 5736 ,0, 0, 0 , - 6511, 2324, 7799 ,5734, 5736, 5737 ,0, 0, 0 , - 6501, 275, 2321 ,3550, 312, 311 ,0, 0, 0 , - 6501, 2321, 7800 ,3550, 311, 5738 ,0, 0, 0 , - 6506, 276, 2318 ,3554, 3553, 313 ,0, 0, 0 , - 6506, 2318, 7801 ,3554, 313, 5739 ,0, 0, 0 , - 6510, 277, 2319 ,3558, 3557, 5740 ,0, 0, 0 , - 6510, 2319, 7802 ,3558, 5740, 5741 ,0, 0, 0 , - 6686, 278, 2320 ,5742, 5743, 5744 ,0, 0, 0 , - 6686, 2320, 7803 ,5742, 5744, 5745 ,0, 0, 0 , - 6684, 272, 2316 ,5746, 308, 307 ,0, 0, 0 , - 6684, 2316, 7804 ,5746, 307, 5747 ,0, 0, 0 , - 6527, 266, 2303 ,5748, 5749, 299 ,0, 0, 0 , - 6527, 2303, 7805 ,5748, 299, 5750 ,0, 0, 0 , - 6532, 267, 2304 ,5751, 5752, 5753 ,0, 0, 0 , - 6532, 2304, 7806 ,5751, 5753, 5754 ,0, 0, 0 , - 6670, 264, 2300 ,5755, 5756, 295 ,0, 0, 0 , - 6670, 2300, 7807 ,5755, 295, 5757 ,0, 0, 0 , - 6536, 258, 2294 ,5758, 288, 287 ,0, 0, 0 , - 6536, 2294, 7808 ,5758, 287, 5759 ,0, 0, 0 , - 6524, 260, 2293 ,3566, 5760, 5761 ,0, 0, 0 , - 6524, 2293, 7809 ,3566, 5761, 5762 ,0, 0, 0 , - 6540, 254, 2290 ,3581, 284, 283 ,0, 0, 0 , - 6540, 2290, 7810 ,3581, 283, 5763 ,0, 0, 0 , - 6529, 257, 2289 ,3570, 5764, 5765 ,0, 0, 0 , - 6529, 2289, 7811 ,3570, 5765, 5766 ,0, 0, 0 , - 6531, 251, 2285 ,3575, 280, 279 ,0, 0, 0 , - 6531, 2285, 7812 ,3575, 279, 5767 ,0, 0, 0 , - 6679, 247, 2281 ,3686, 276, 275 ,0, 0, 0 , - 6679, 2281, 7813 ,3686, 275, 5768 ,0, 0, 0 , - 6535, 243, 2276 ,3578, 272, 271 ,0, 0, 0 , - 6535, 2276, 7814 ,3578, 271, 5769 ,0, 0, 0 , - 6724, 244, 2273 ,5770, 5771, 273 ,0, 0, 0 , - 6724, 2273, 7815 ,5770, 273, 5772 ,0, 0, 0 , - 6543, 246, 2275 ,3580, 5773, 5774 ,0, 0, 0 , - 6543, 2275, 7816 ,3580, 5774, 5775 ,0, 0, 0 , - 6644, 242, 2270 ,5776, 5777, 5778 ,0, 0, 0 , - 6644, 2270, 7817 ,5776, 5778, 5779 ,0, 0, 0 , - 6546, 238, 2265 ,5780, 5781, 5782 ,0, 0, 0 , - 6546, 2265, 7818 ,5780, 5782, 5783 ,0, 0, 0 , - 6659, 229, 2254 ,5784, 5785, 5786 ,0, 0, 0 , - 6659, 2254, 7819 ,5784, 5786, 5787 ,0, 0, 0 , - 6655, 221, 2250 ,5788, 252, 251 ,0, 0, 0 , - 6655, 2250, 7820 ,5788, 251, 5789 ,0, 0, 0 , - 6545, 222, 2246 ,3585, 3584, 253 ,0, 0, 0 , - 6545, 2246, 7821 ,3585, 253, 5790 ,0, 0, 0 , - 6551, 223, 2247 ,5791, 5792, 5793 ,0, 0, 0 , - 6551, 2247, 7822 ,5791, 5793, 5794 ,0, 0, 0 , - 6550, 217, 2244 ,3588, 248, 247 ,0, 0, 0 , - 6550, 2244, 7823 ,3588, 247, 5795 ,0, 0, 0 , - 6555, 218, 2241 ,3592, 3591, 249 ,0, 0, 0 , - 6555, 2241, 7824 ,3592, 249, 5796 ,0, 0, 0 , - 6564, 219, 2242 ,5797, 5798, 5799 ,0, 0, 0 , - 6564, 2242, 7825 ,5797, 5799, 5800 ,0, 0, 0 , - 6559, 213, 2239 ,3595, 244, 243 ,0, 0, 0 , - 6559, 2239, 7826 ,3595, 243, 5801 ,0, 0, 0 , - 6563, 214, 2236 ,3599, 3598, 245 ,0, 0, 0 , - 6563, 2236, 7827 ,3599, 245, 5802 ,0, 0, 0 , - 6573, 215, 2237 ,5803, 5804, 5805 ,0, 0, 0 , - 6573, 2237, 7828 ,5803, 5805, 5806 ,0, 0, 0 , - 6567, 209, 2234 ,3602, 240, 239 ,0, 0, 0 , - 6567, 2234, 7829 ,3602, 239, 5807 ,0, 0, 0 , - 6572, 210, 2231 ,3606, 3605, 241 ,0, 0, 0 , - 6572, 2231, 7830 ,3606, 241, 5808 ,0, 0, 0 , - 6583, 211, 2232 ,5809, 5810, 5811 ,0, 0, 0 , - 6583, 2232, 7831 ,5809, 5811, 5812 ,0, 0, 0 , - 6578, 205, 2229 ,3609, 236, 235 ,0, 0, 0 , - 6578, 2229, 7832 ,3609, 235, 5813 ,0, 0, 0 , - 6582, 206, 2226 ,3613, 3612, 237 ,0, 0, 0 , - 6582, 2226, 7833 ,3613, 237, 5814 ,0, 0, 0 , - 6592, 207, 2227 ,5815, 5816, 5817 ,0, 0, 0 , - 6592, 2227, 7834 ,5815, 5817, 5818 ,0, 0, 0 , - 6586, 201, 2224 ,3616, 232, 231 ,0, 0, 0 , - 6586, 2224, 7835 ,3616, 231, 5819 ,0, 0, 0 , - 6591, 202, 2221 ,3620, 3619, 233 ,0, 0, 0 , - 6591, 2221, 7836 ,3620, 233, 5820 ,0, 0, 0 , - 6602, 203, 2222 ,5821, 5822, 5823 ,0, 0, 0 , - 6602, 2222, 7837 ,5821, 5823, 5824 ,0, 0, 0 , - 6597, 197, 2219 ,3623, 228, 227 ,0, 0, 0 , - 6597, 2219, 7838 ,3623, 227, 5825 ,0, 0, 0 , - 6601, 198, 2216 ,3627, 3626, 229 ,0, 0, 0 , - 6601, 2216, 7839 ,3627, 229, 5826 ,0, 0, 0 , - 6606, 199, 2217 ,5827, 5828, 5829 ,0, 0, 0 , - 6606, 2217, 7840 ,5827, 5829, 5830 ,0, 0, 0 , - 6605, 195, 2212 ,3631, 3630, 5831 ,0, 0, 0 , - 6605, 2212, 7841 ,3631, 5831, 5832 ,0, 0, 0 , - 6611, 196, 2213 ,5833, 5834, 5835 ,0, 0, 0 , - 6611, 2213, 7842 ,5833, 5835, 5836 ,0, 0, 0 , - 6610, 189, 2209 ,3634, 220, 219 ,0, 0, 0 , - 6610, 2209, 7843 ,3634, 219, 5837 ,0, 0, 0 , - 6615, 190, 2206 ,5838, 5839, 221 ,0, 0, 0 , - 6615, 2206, 7844 ,5838, 221, 5840 ,0, 0, 0 , - 6614, 186, 2204 ,3637, 216, 215 ,0, 0, 0 , - 6614, 2204, 7845 ,3637, 215, 5841 ,0, 0, 0 , - 6622, 187, 2202 ,5842, 5843, 217 ,0, 0, 0 , - 6622, 2202, 7846 ,5842, 217, 5844 ,0, 0, 0 , - 6621, 183, 2197 ,3643, 3642, 213 ,0, 0, 0 , - 6621, 2197, 7847 ,3643, 213, 5845 ,0, 0, 0 , - 6692, 184, 2198 ,5846, 5847, 5848 ,0, 0, 0 , - 6692, 2198, 7848 ,5846, 5848, 5849 ,0, 0, 0 , - 6626, 177, 2195 ,3646, 208, 207 ,0, 0, 0 , - 6626, 2195, 7849 ,3646, 207, 5850 ,0, 0, 0 , - 6631, 178, 2191 ,3650, 3649, 209 ,0, 0, 0 , - 6631, 2191, 7850 ,3650, 209, 5851 ,0, 0, 0 , - 6635, 179, 2192 ,3654, 3653, 5852 ,0, 0, 0 , - 6635, 2192, 7851 ,3654, 5852, 5853 ,0, 0, 0 , - 6740, 180, 2193 ,5854, 5855, 5856 ,0, 0, 0 , - 6740, 2193, 7852 ,5854, 5856, 5857 ,0, 0, 0 , - 6676, 173, 2189 ,5858, 204, 203 ,0, 0, 0 , - 6676, 2189, 7853 ,5858, 203, 5859 ,0, 0, 0 , - 6734, 175, 2187 ,5860, 5861, 5862 ,0, 0, 0 , - 6734, 2187, 7854 ,5860, 5862, 5863 ,0, 0, 0 , - 6640, 168, 2184 ,3657, 200, 199 ,0, 0, 0 , - 6640, 2184, 7855 ,3657, 199, 5864 ,0, 0, 0 , - 6643, 169, 2181 ,3661, 3660, 201 ,0, 0, 0 , - 6643, 2181, 7856 ,3661, 201, 5865 ,0, 0, 0 , - 6648, 170, 2182 ,3665, 3664, 5866 ,0, 0, 0 , - 6648, 2182, 7857 ,3665, 5866, 5867 ,0, 0, 0 , - 6665, 171, 2183 ,5868, 5869, 5870 ,0, 0, 0 , - 6665, 2183, 7858 ,5868, 5870, 5871 ,0, 0, 0 , - 6653, 164, 2179 ,3668, 196, 195 ,0, 0, 0 , - 6653, 2179, 7859 ,3668, 195, 5872 ,0, 0, 0 , - 6658, 165, 2176 ,3672, 3671, 197 ,0, 0, 0 , - 6658, 2176, 7860 ,3672, 197, 5873 ,0, 0, 0 , - 6675, 166, 2177 ,5874, 5875, 5876 ,0, 0, 0 , - 6675, 2177, 7861 ,5874, 5876, 5877 ,0, 0, 0 , - 6667, 167, 2178 ,3674, 5878, 5879 ,0, 0, 0 , - 6667, 2178, 7862 ,3674, 5879, 5880 ,0, 0, 0 , - 6669, 160, 2174 ,3679, 192, 191 ,0, 0, 0 , - 6669, 2174, 7863 ,3679, 191, 5881 ,0, 0, 0 , - 6663, 161, 2171 ,3676, 3675, 193 ,0, 0, 0 , - 6663, 2171, 7864 ,3676, 193, 5882 ,0, 0, 0 , - 6681, 163, 2173 ,3685, 5883, 5884 ,0, 0, 0 , - 6681, 2173, 7865 ,3685, 5884, 5885 ,0, 0, 0 , - 6932, 158, 2167 ,5886, 5887, 189 ,0, 0, 0 , - 6932, 2167, 7866 ,5886, 189, 5888 ,0, 0, 0 , - 6683, 150, 2160 ,3689, 180, 179 ,0, 0, 0 , - 6683, 2160, 7867 ,3689, 179, 5889 ,0, 0, 0 , - 6853, 151, 2158 ,5890, 5891, 181 ,0, 0, 0 , - 6853, 2158, 7868 ,5890, 181, 5892 ,0, 0, 0 , - 6694, 152, 2159 ,5893, 5894, 5895 ,0, 0, 0 , - 6694, 2159, 7869 ,5893, 5895, 5896 ,0, 0, 0 , - 6691, 146, 2156 ,3692, 176, 175 ,0, 0, 0 , - 6691, 2156, 7870 ,3692, 175, 5897 ,0, 0, 0 , - 6848, 147, 2153 ,5898, 5899, 177 ,0, 0, 0 , - 6848, 2153, 7871 ,5898, 177, 5900 ,0, 0, 0 , - 6745, 139, 2141 ,5901, 5902, 166 ,0, 0, 0 , - 6745, 2141, 7872 ,5901, 166, 5903 ,0, 0, 0 , - 6750, 105, 2139 ,3730, 123, 162 ,0, 0, 0 , - 6750, 2139, 7874 ,3730, 162, 5904 ,0, 0, 0 , - 7875, 138, 2137 ,5905, 159, 158 ,0, 0, 0 , - 7875, 2137, 7876 ,5905, 158, 5906 ,0, 0, 0 , - 7873, 136, 7878 ,5907, 165, 5908 ,0, 0, 0 , - 7873, 7878, 7877 ,5907, 5908, 5909 ,0, 0, 0 , - 6697, 132, 2134 ,3695, 155, 154 ,0, 0, 0 , - 6697, 2134, 7879 ,3695, 154, 5910 ,0, 0, 0 , - 6712, 133, 2131 ,5911, 5912, 156 ,0, 0, 0 , - 6712, 2131, 7880 ,5911, 156, 5913 ,0, 0, 0 , - 6708, 130, 2127 ,5914, 5915, 152 ,0, 0, 0 , - 6708, 2127, 7881 ,5914, 152, 5916 ,0, 0, 0 , - 6707, 127, 2123 ,5917, 5918, 148 ,0, 0, 0 , - 6707, 2123, 7882 ,5917, 148, 5919 ,0, 0, 0 , - 6702, 123, 2121 ,3698, 143, 142 ,0, 0, 0 , - 6702, 2121, 7883 ,3698, 142, 5920 ,0, 0, 0 , - 6706, 124, 2118 ,3702, 3701, 144 ,0, 0, 0 , - 6706, 2118, 7884 ,3702, 144, 5921 ,0, 0, 0 , - 6711, 125, 2119 ,3706, 3705, 5922 ,0, 0, 0 , - 6711, 2119, 7885 ,3706, 5922, 5923 ,0, 0, 0 , - 6719, 126, 2120 ,5924, 5925, 5926 ,0, 0, 0 , - 6719, 2120, 7886 ,5924, 5926, 5927 ,0, 0, 0 , - 6716, 119, 2116 ,3709, 139, 138 ,0, 0, 0 , - 6716, 2116, 7887 ,3709, 138, 5928 ,0, 0, 0 , - 6723, 120, 2113 ,3713, 3712, 140 ,0, 0, 0 , - 6723, 2113, 7888 ,3713, 140, 5929 ,0, 0, 0 , - 6733, 121, 2114 ,5930, 5931, 5932 ,0, 0, 0 , - 6733, 2114, 7889 ,5930, 5932, 5933 ,0, 0, 0 , - 6728, 116, 2108 ,3717, 3716, 136 ,0, 0, 0 , - 6728, 2108, 7890 ,3717, 136, 5934 ,0, 0, 0 , - 6732, 117, 2109 ,3721, 3720, 5935 ,0, 0, 0 , - 6732, 2109, 7891 ,3721, 5935, 5936 ,0, 0, 0 , - 6739, 118, 2110 ,5937, 5938, 5939 ,0, 0, 0 , - 6739, 2110, 7892 ,5937, 5939, 5940 ,0, 0, 0 , - 6738, 112, 2106 ,3724, 131, 130 ,0, 0, 0 , - 6738, 2106, 7893 ,3724, 130, 5941 ,0, 0, 0 , - 6837, 113, 2104 ,5942, 5943, 132 ,0, 0, 0 , - 6837, 2104, 7894 ,5942, 132, 5944 ,0, 0, 0 , - 6744, 108, 2102 ,3727, 127, 126 ,0, 0, 0 , - 6744, 2102, 7895 ,3727, 126, 5945 ,0, 0, 0 , - 6836, 109, 2099 ,5946, 5947, 128 ,0, 0, 0 , - 6836, 2099, 7896 ,5946, 128, 5948 ,0, 0, 0 , - 6832, 106, 2095 ,5949, 5950, 124 ,0, 0, 0 , - 6832, 2095, 7897 ,5949, 124, 5951 ,0, 0, 0 , - 6768, 103, 2091 ,5952, 5953, 5954 ,0, 0, 0 , - 6768, 2091, 7898 ,5952, 5954, 5955 ,0, 0, 0 , - 6754, 97, 2088 ,3733, 115, 114 ,0, 0, 0 , - 6754, 2088, 7900 ,3733, 114, 5956 ,0, 0, 0 , - 6826, 98, 2085 ,5957, 5958, 116 ,0, 0, 0 , - 6826, 2085, 7901 ,5957, 116, 5959 ,0, 0, 0 , - 6767, 99, 2086 ,5960, 5961, 5962 ,0, 0, 0 , - 6767, 2086, 7902 ,5960, 5962, 5963 ,0, 0, 0 , - 6766, 96, 7904 ,3741, 3740, 5964 ,0, 0, 0 , - 6766, 7904, 7903 ,3741, 5964, 5965 ,0, 0, 0 , - 6771, 94, 2083 ,3744, 111, 110 ,0, 0, 0 , - 6771, 2083, 7905 ,3744, 110, 5966 ,0, 0, 0 , - 6775, 93, 2082 ,3747, 107, 112 ,0, 0, 0 , - 6775, 2082, 7907 ,3747, 112, 5967 ,0, 0, 0 , - 6784, 91, 2079 ,5968, 5969, 108 ,0, 0, 0 , - 6784, 2079, 7908 ,5968, 108, 5970 ,0, 0, 0 , - 7906, 90, 2077 ,5971, 103, 102 ,0, 0, 0 , - 7906, 2077, 7910 ,5971, 102, 5972 ,0, 0, 0 , - 6783, 88, 2071 ,3754, 3753, 100 ,0, 0, 0 , - 6783, 2071, 7911 ,3754, 100, 5973 ,0, 0, 0 , - 6792, 89, 2072 ,5974, 5975, 5976 ,0, 0, 0 , - 6792, 2072, 7912 ,5974, 5976, 5977 ,0, 0, 0 , - 4430, 82, 2063 ,5978, 89, 88 ,0, 0, 0 , - 4430, 2063, 7913 ,5978, 88, 5979 ,0, 0, 0 , - 6801, 75, 2055 ,5980, 81, 80 ,0, 0, 0 , - 6801, 2055, 7914 ,5980, 80, 5981 ,0, 0, 0 , - 6821, 59, 7899 ,5982, 61, 5983 ,0, 0, 0 , - 6821, 7899, 7915 ,5982, 5983, 5984 ,0, 0, 0 , - 6787, 70, 2050 ,3757, 77, 76 ,0, 0, 0 , - 6787, 2050, 7916 ,3757, 76, 5985 ,0, 0, 0 , - 6791, 71, 2046 ,3761, 3760, 78 ,0, 0, 0 , - 6791, 2046, 7917 ,3761, 78, 5986 ,0, 0, 0 , - 6809, 72, 2047 ,5987, 5988, 5989 ,0, 0, 0 , - 6809, 2047, 7918 ,5987, 5989, 5990 ,0, 0, 0 , - 6795, 69, 2044 ,3764, 73, 72 ,0, 0, 0 , - 6795, 2044, 7919 ,3764, 72, 5991 ,0, 0, 0 , - 6805, 67, 2043 ,5992, 5993, 74 ,0, 0, 0 , - 6805, 2043, 7920 ,5992, 74, 5994 ,0, 0, 0 , - 6800, 62, 2037 ,3767, 65, 64 ,0, 0, 0 , - 6800, 2037, 7921 ,3767, 64, 5995 ,0, 0, 0 , - 6804, 63, 2034 ,3771, 3770, 66 ,0, 0, 0 , - 6804, 2034, 7922 ,3771, 66, 5996 ,0, 0, 0 , - 6808, 64, 2035 ,3775, 3774, 5997 ,0, 0, 0 , - 6808, 2035, 7923 ,3775, 5997, 5998 ,0, 0, 0 , - 6810, 59, 2032 ,3773, 61, 60 ,0, 0, 0 , - 6810, 2032, 7924 ,3773, 60, 5999 ,0, 0, 0 , - 6876, 56, 2028 ,6000, 57, 56 ,0, 0, 0 , - 6876, 2028, 7925 ,6000, 56, 6001 ,0, 0, 0 , - 6816, 50, 2024 ,3782, 53, 52 ,0, 0, 0 , - 6816, 2024, 7926 ,3782, 52, 6002 ,0, 0, 0 , - 7928, 51, 2019 ,6003, 6004, 54 ,0, 0, 0 , - 7928, 2019, 7927 ,6003, 54, 6005 ,0, 0, 0 , - 6820, 52, 2020 ,3786, 3785, 6006 ,0, 0, 0 , - 6820, 2020, 7929 ,3786, 6006, 6007 ,0, 0, 0 , - 6824, 53, 2021 ,3790, 3789, 6008 ,0, 0, 0 , - 6824, 2021, 7930 ,3790, 6008, 6009 ,0, 0, 0 , - 6831, 54, 2022 ,6010, 6011, 6012 ,0, 0, 0 , - 6831, 2022, 7931 ,6010, 6012, 6013 ,0, 0, 0 , - 6830, 46, 2017 ,3793, 49, 48 ,0, 0, 0 , - 6830, 2017, 7932 ,3793, 48, 6014 ,0, 0, 0 , - 6835, 47, 2014 ,3797, 3796, 50 ,0, 0, 0 , - 6835, 2014, 7933 ,3797, 50, 6015 ,0, 0, 0 , - 6847, 48, 2015 ,6016, 6017, 6018 ,0, 0, 0 , - 6847, 2015, 7934 ,6016, 6018, 6019 ,0, 0, 0 , - 6840, 42, 2012 ,3800, 45, 44 ,0, 0, 0 , - 6840, 2012, 7935 ,3800, 44, 6020 ,0, 0, 0 , - 6846, 43, 2009 ,3804, 3803, 46 ,0, 0, 0 , - 6846, 2009, 7936 ,3804, 46, 6021 ,0, 0, 0 , - 6867, 44, 2010 ,6022, 6023, 6024 ,0, 0, 0 , - 6867, 2010, 7937 ,6022, 6024, 6025 ,0, 0, 0 , - 6859, 36, 2003 ,6026, 37, 36 ,0, 0, 0 , - 6859, 2003, 7938 ,6026, 36, 6027 ,0, 0, 0 , - 6931, 38, 2002 ,6028, 6029, 6030 ,0, 0, 0 , - 6931, 2002, 7939 ,6028, 6030, 6031 ,0, 0, 0 , - 6851, 33, 1996 ,3808, 3807, 34 ,0, 0, 0 , - 6851, 1996, 7940 ,3808, 34, 6032 ,0, 0, 0 , - 6858, 34, 1997 ,6033, 6034, 6035 ,0, 0, 0 , - 6858, 1997, 7941 ,6033, 6035, 6036 ,0, 0, 0 , - 6857, 29, 1991 ,3812, 3811, 30 ,0, 0, 0 , - 6857, 1991, 7942 ,3812, 30, 6037 ,0, 0, 0 , - 6926, 30, 1992 ,6038, 6039, 6040 ,0, 0, 0 , - 6926, 1992, 7943 ,6038, 6040, 6041 ,0, 0, 0 , - 6882, 31, 1993 ,6042, 6043, 6044 ,0, 0, 0 , - 6882, 1993, 7944 ,6042, 6044, 6045 ,0, 0, 0 , - 6862, 23, 1989 ,3815, 25, 24 ,0, 0, 0 , - 6862, 1989, 7945 ,3815, 24, 6046 ,0, 0, 0 , - 6866, 24, 1985 ,3819, 3818, 26 ,0, 0, 0 , - 6866, 1985, 7946 ,3819, 26, 6047 ,0, 0, 0 , - 6871, 25, 1986 ,3823, 3822, 6048 ,0, 0, 0 , - 6871, 1986, 7947 ,3823, 6048, 6049 ,0, 0, 0 , - 6881, 26, 1987 ,6050, 6051, 6052 ,0, 0, 0 , - 6881, 1987, 7948 ,6050, 6052, 6053 ,0, 0, 0 , - 6875, 19, 1983 ,3826, 21, 20 ,0, 0, 0 , - 6875, 1983, 7949 ,3826, 20, 6054 ,0, 0, 0 , - 6880, 20, 1980 ,3830, 3829, 22 ,0, 0, 0 , - 6880, 1980, 7950 ,3830, 22, 6055 ,0, 0, 0 , - 6915, 21, 1981 ,6056, 6057, 6058 ,0, 0, 0 , - 6915, 1981, 7951 ,6056, 6058, 6059 ,0, 0, 0 , - 6885, 15, 1978 ,3833, 17, 16 ,0, 0, 0 , - 6885, 1978, 7952 ,3833, 16, 6060 ,0, 0, 0 , - 6914, 16, 1975 ,6061, 6062, 18 ,0, 0, 0 , - 6914, 1975, 7953 ,6061, 18, 6063 ,0, 0, 0 , - 6890, 18, 1977 ,3835, 6064, 6065 ,0, 0, 0 , - 6890, 1977, 7954 ,3835, 6065, 6066 ,0, 0, 0 , - 6903, 13, 1971 ,6067, 6068, 14 ,0, 0, 0 , - 6903, 1971, 7955 ,6067, 14, 6069 ,0, 0, 0 , - 6898, 8, 1969 ,3842, 9, 8 ,0, 0, 0 , - 6898, 1969, 7956 ,3842, 8, 6070 ,0, 0, 0 , - 6902, 9, 1966 ,3846, 3845, 10 ,0, 0, 0 , - 6902, 1966, 7957 ,3846, 10, 6071 ,0, 0, 0 , - 6913, 10, 1967 ,6072, 6073, 6074 ,0, 0, 0 , - 6913, 1967, 7958 ,6072, 6074, 6075 ,0, 0, 0 , - 6907, 4, 1964 ,3849, 5, 4 ,0, 0, 0 , - 6907, 1964, 7959 ,3849, 4, 6076 ,0, 0, 0 , - 6912, 5, 1961 ,3853, 3852, 6 ,0, 0, 0 , - 6912, 1961, 7960 ,3853, 6, 6077 ,0, 0, 0 , - 6924, 6, 1962 ,6078, 6079, 6080 ,0, 0, 0 , - 6924, 1962, 7961 ,6078, 6080, 6081 ,0, 0, 0 , - 6918, 0, 1959 ,3856, 1, 0 ,0, 0, 0 , - 6918, 1959, 7962 ,3856, 0, 6082 ,0, 0, 0 , - 6923, 1, 1956 ,3860, 3859, 2 ,0, 0, 0 , - 6923, 1956, 7963 ,3860, 2, 6083 ,0, 0, 0 , - 6929, 2, 1957 ,3864, 3863, 6084 ,0, 0, 0 , - 6929, 1957, 7964 ,3864, 6084, 6085 ,0, 0, 0 , - 6940, 3, 1958 ,3866, 6086, 6087 ,0, 0, 0 , - 6940, 1958, 7965 ,3866, 6087, 6088 ,0, 0, 0 , - 1956, 1, 1957 ,2, 3859, 6084 ,0, 0, 0 , - 1956, 1957, 1955 ,2, 6084, 3 ,0, 0, 0 , - 1957, 2, 1958 ,6084, 3863, 6087 ,0, 0, 0 , - 1957, 1958, 1955 ,6084, 6087, 3 ,0, 0, 0 , - 1958, 3, 1959 ,6087, 6086, 0 ,0, 0, 0 , - 1958, 1959, 1955 ,6087, 0, 3 ,0, 0, 0 , - 1961, 5, 1962 ,6, 3852, 6080 ,0, 0, 0 , - 1961, 1962, 1960 ,6, 6080, 7 ,0, 0, 0 , - 1962, 6, 1963 ,6080, 6079, 6089 ,0, 0, 0 , - 1962, 1963, 1960 ,6080, 6089, 7 ,0, 0, 0 , - 1963, 7, 1964 ,6089, 6090, 4 ,0, 0, 0 , - 1963, 1964, 1960 ,6089, 4, 7 ,0, 0, 0 , - 1966, 9, 1967 ,10, 3845, 6074 ,0, 0, 0 , - 1966, 1967, 1965 ,10, 6074, 11 ,0, 0, 0 , - 1967, 10, 1968 ,6074, 6073, 6091 ,0, 0, 0 , - 1967, 1968, 1965 ,6074, 6091, 11 ,0, 0, 0 , - 1968, 11, 1969 ,6091, 6092, 8 ,0, 0, 0 , - 1968, 1969, 1965 ,6091, 8, 11 ,0, 0, 0 , - 1971, 13, 1972 ,14, 6068, 6093 ,0, 0, 0 , - 1971, 1972, 1970 ,14, 6093, 15 ,0, 0, 0 , - 1972, 14, 1973 ,6093, 6094, 12 ,0, 0, 0 , - 1972, 1973, 1970 ,6093, 12, 15 ,0, 0, 0 , - 1975, 16, 1976 ,18, 6062, 6095 ,0, 0, 0 , - 1975, 1976, 1974 ,18, 6095, 19 ,0, 0, 0 , - 1976, 17, 1977 ,6095, 6096, 6065 ,0, 0, 0 , - 1976, 1977, 1974 ,6095, 6065, 19 ,0, 0, 0 , - 1977, 18, 1978 ,6065, 6064, 16 ,0, 0, 0 , - 1977, 1978, 1974 ,6065, 16, 19 ,0, 0, 0 , - 1980, 20, 1981 ,22, 3829, 6058 ,0, 0, 0 , - 1980, 1981, 1979 ,22, 6058, 23 ,0, 0, 0 , - 1981, 21, 1982 ,6058, 6057, 6097 ,0, 0, 0 , - 1981, 1982, 1979 ,6058, 6097, 23 ,0, 0, 0 , - 1982, 22, 1983 ,6097, 6098, 20 ,0, 0, 0 , - 1982, 1983, 1979 ,6097, 20, 23 ,0, 0, 0 , - 1985, 24, 1986 ,26, 3818, 6048 ,0, 0, 0 , - 1985, 1986, 1984 ,26, 6048, 27 ,0, 0, 0 , - 1986, 25, 1987 ,6048, 3822, 6052 ,0, 0, 0 , - 1986, 1987, 1984 ,6048, 6052, 27 ,0, 0, 0 , - 1987, 26, 1988 ,6052, 6051, 6099 ,0, 0, 0 , - 1987, 1988, 1984 ,6052, 6099, 27 ,0, 0, 0 , - 1988, 27, 1989 ,6099, 6100, 24 ,0, 0, 0 , - 1988, 1989, 1984 ,6099, 24, 27 ,0, 0, 0 , - 1991, 29, 1992 ,30, 3811, 6040 ,0, 0, 0 , - 1991, 1992, 1990 ,30, 6040, 31 ,0, 0, 0 , - 1992, 30, 1993 ,6040, 6039, 6044 ,0, 0, 0 , - 1992, 1993, 1990 ,6040, 6044, 31 ,0, 0, 0 , - 1993, 31, 1994 ,6044, 6043, 28 ,0, 0, 0 , - 1993, 1994, 1990 ,6044, 28, 31 ,0, 0, 0 , - 1996, 33, 1997 ,34, 3807, 6035 ,0, 0, 0 , - 1996, 1997, 1995 ,34, 6035, 35 ,0, 0, 0 , - 1997, 34, 1998 ,6035, 6034, 6101 ,0, 0, 0 , - 1997, 1998, 1995 ,6035, 6101, 35 ,0, 0, 0 , - 1998, 35, 1999 ,6101, 6102, 32 ,0, 0, 0 , - 1998, 1999, 1995 ,6101, 32, 35 ,0, 0, 0 , - 2001, 37, 2002 ,38, 6103, 6030 ,0, 0, 0 , - 2001, 2002, 2000 ,38, 6030, 39 ,0, 0, 0 , - 2002, 38, 2003 ,6030, 6029, 36 ,0, 0, 0 , - 2002, 2003, 2000 ,6030, 36, 39 ,0, 0, 0 , - 2005, 40, 2006 ,42, 6104, 6105 ,0, 0, 0 , - 2005, 2006, 2004 ,42, 6105, 43 ,0, 0, 0 , - 2006, 41, 2007 ,6105, 6106, 40 ,0, 0, 0 , - 2006, 2007, 2004 ,6105, 40, 43 ,0, 0, 0 , - 2009, 43, 2010 ,46, 3803, 6024 ,0, 0, 0 , - 2009, 2010, 2008 ,46, 6024, 47 ,0, 0, 0 , - 2010, 44, 2011 ,6024, 6023, 6107 ,0, 0, 0 , - 2010, 2011, 2008 ,6024, 6107, 47 ,0, 0, 0 , - 2011, 45, 2012 ,6107, 6108, 44 ,0, 0, 0 , - 2011, 2012, 2008 ,6107, 44, 47 ,0, 0, 0 , - 2014, 47, 2015 ,50, 3796, 6018 ,0, 0, 0 , - 2014, 2015, 2013 ,50, 6018, 51 ,0, 0, 0 , - 2015, 48, 2016 ,6018, 6017, 6109 ,0, 0, 0 , - 2015, 2016, 2013 ,6018, 6109, 51 ,0, 0, 0 , - 2016, 49, 2017 ,6109, 6110, 48 ,0, 0, 0 , - 2016, 2017, 2013 ,6109, 48, 51 ,0, 0, 0 , - 2019, 51, 2020 ,54, 6004, 6006 ,0, 0, 0 , - 2019, 2020, 2018 ,54, 6006, 55 ,0, 0, 0 , - 2020, 52, 2021 ,6006, 3785, 6008 ,0, 0, 0 , - 2020, 2021, 2018 ,6006, 6008, 55 ,0, 0, 0 , - 2021, 53, 2022 ,6008, 3789, 6012 ,0, 0, 0 , - 2021, 2022, 2018 ,6008, 6012, 55 ,0, 0, 0 , - 2022, 54, 2023 ,6012, 6011, 6111 ,0, 0, 0 , - 2022, 2023, 2018 ,6012, 6111, 55 ,0, 0, 0 , - 2023, 55, 2024 ,6111, 6112, 52 ,0, 0, 0 , - 2023, 2024, 2018 ,6111, 52, 55 ,0, 0, 0 , - 2026, 57, 2027 ,58, 6113, 6114 ,0, 0, 0 , - 2026, 2027, 2025 ,58, 6114, 59 ,0, 0, 0 , - 2027, 58, 2028 ,6114, 6115, 56 ,0, 0, 0 , - 2027, 2028, 2025 ,6114, 56, 59 ,0, 0, 0 , - 2030, 60, 2031 ,62, 6116, 6117 ,0, 0, 0 , - 2030, 2031, 2029 ,62, 6117, 63 ,0, 0, 0 , - 2031, 61, 2032 ,6117, 3778, 60 ,0, 0, 0 , - 2031, 2032, 2029 ,6117, 60, 63 ,0, 0, 0 , - 2034, 63, 2035 ,66, 3770, 5997 ,0, 0, 0 , - 2034, 2035, 2033 ,66, 5997, 67 ,0, 0, 0 , - 2035, 64, 2036 ,5997, 3774, 6118 ,0, 0, 0 , - 2035, 2036, 2033 ,5997, 6118, 67 ,0, 0, 0 , - 2036, 65, 2037 ,6118, 6119, 64 ,0, 0, 0 , - 2036, 2037, 2033 ,6118, 64, 67 ,0, 0, 0 , - 2039, 67, 2040 ,70, 5993, 6120 ,0, 0, 0 , - 2039, 2040, 2038 ,70, 6120, 71 ,0, 0, 0 , - 2040, 68, 2041 ,6120, 92, 68 ,0, 0, 0 , - 2040, 2041, 2038 ,6120, 68, 71 ,0, 0, 0 , - 2043, 67, 2039 ,74, 5993, 70 ,0, 0, 0 , - 2043, 2039, 2042 ,74, 70, 75 ,0, 0, 0 , - 2039, 66, 2044 ,70, 69, 72 ,0, 0, 0 , - 2039, 2044, 2042 ,70, 72, 75 ,0, 0, 0 , - 2046, 71, 2047 ,78, 3760, 5989 ,0, 0, 0 , - 2046, 2047, 2045 ,78, 5989, 79 ,0, 0, 0 , - 2047, 72, 2048 ,5989, 5988, 6121 ,0, 0, 0 , - 2047, 2048, 2045 ,5989, 6121, 79 ,0, 0, 0 , - 2048, 73, 2049 ,6121, 6122, 6123 ,0, 0, 0 , - 2048, 2049, 2045 ,6121, 6123, 79 ,0, 0, 0 , - 2049, 74, 2050 ,6123, 6124, 76 ,0, 0, 0 , - 2049, 2050, 2045 ,6123, 76, 79 ,0, 0, 0 , - 2052, 76, 2053 ,82, 3836, 6125 ,0, 0, 0 , - 2052, 2053, 2051 ,82, 6125, 83 ,0, 0, 0 , - 2053, 77, 2054 ,6125, 6126, 6127 ,0, 0, 0 , - 2053, 2054, 2051 ,6125, 6127, 83 ,0, 0, 0 , - 2054, 78, 2055 ,6127, 6128, 80 ,0, 0, 0 , - 2054, 2055, 2051 ,6127, 80, 83 ,0, 0, 0 , - 2057, 79, 2058 ,86, 6129, 6130 ,0, 0, 0 , - 2057, 2058, 2056 ,86, 6130, 87 ,0, 0, 0 , - 2058, 81, 2059 ,6130, 6131, 84 ,0, 0, 0 , - 2058, 2059, 2056 ,6130, 84, 87 ,0, 0, 0 , - 2061, 68, 2062 ,90, 92, 6132 ,0, 0, 0 , - 2061, 2062, 2060 ,90, 6132, 91 ,0, 0, 0 , - 2062, 83, 2063 ,6132, 6133, 88 ,0, 0, 0 , - 2062, 2063, 2060 ,6132, 88, 91 ,0, 0, 0 , - 2061, 82, 2065 ,90, 89, 6134 ,0, 0, 0 , - 2061, 2065, 2064 ,90, 6134, 93 ,0, 0, 0 , - 2065, 66, 2041 ,6134, 69, 68 ,0, 0, 0 , - 2065, 2041, 2064 ,6134, 68, 93 ,0, 0, 0 , - 2067, 85, 2068 ,96, 6135, 6136 ,0, 0, 0 , - 2067, 2068, 2066 ,96, 6136, 97 ,0, 0, 0 , - 2068, 86, 2069 ,6136, 6137, 94 ,0, 0, 0 , - 2068, 2069, 2066 ,6136, 94, 97 ,0, 0, 0 , - 2071, 88, 2072 ,100, 3753, 5976 ,0, 0, 0 , - 2071, 2072, 2070 ,100, 5976, 101 ,0, 0, 0 , - 2072, 89, 2073 ,5976, 5975, 98 ,0, 0, 0 , - 2072, 2073, 2070 ,5976, 98, 101 ,0, 0, 0 , - 2075, 91, 2076 ,104, 5969, 6138 ,0, 0, 0 , - 2075, 2076, 2074 ,104, 6138, 105 ,0, 0, 0 , - 2076, 92, 2077 ,6138, 6139, 102 ,0, 0, 0 , - 2076, 2077, 2074 ,6138, 102, 105 ,0, 0, 0 , - 2079, 91, 2075 ,108, 5969, 104 ,0, 0, 0 , - 2079, 2075, 2078 ,108, 104, 109 ,0, 0, 0 , - 2075, 90, 2080 ,104, 103, 106 ,0, 0, 0 , - 2075, 2080, 2078 ,104, 106, 109 ,0, 0, 0 , - 2082, 93, 2080 ,112, 107, 106 ,0, 0, 0 , - 2082, 2080, 2081 ,112, 106, 113 ,0, 0, 0 , - 2080, 90, 2083 ,106, 103, 110 ,0, 0, 0 , - 2080, 2083, 2081 ,106, 110, 113 ,0, 0, 0 , - 2085, 98, 2086 ,116, 5958, 5962 ,0, 0, 0 , - 2085, 2086, 2084 ,116, 5962, 117 ,0, 0, 0 , - 2086, 99, 2087 ,5962, 5961, 6140 ,0, 0, 0 , - 2086, 2087, 2084 ,5962, 6140, 117 ,0, 0, 0 , - 2087, 100, 2088 ,6140, 6141, 114 ,0, 0, 0 , - 2087, 2088, 2084 ,6140, 114, 117 ,0, 0, 0 , - 2090, 102, 2091 ,120, 6142, 5954 ,0, 0, 0 , - 2090, 2091, 2089 ,120, 5954, 121 ,0, 0, 0 , - 2091, 103, 2092 ,5954, 5953, 6143 ,0, 0, 0 , - 2091, 2092, 2089 ,5954, 6143, 121 ,0, 0, 0 , - 2092, 104, 2093 ,6143, 6144, 118 ,0, 0, 0 , - 2092, 2093, 2089 ,6143, 118, 121 ,0, 0, 0 , - 2095, 106, 2096 ,124, 5950, 6145 ,0, 0, 0 , - 2095, 2096, 2094 ,124, 6145, 125 ,0, 0, 0 , - 2096, 107, 2097 ,6145, 147, 122 ,0, 0, 0 , - 2096, 2097, 2094 ,6145, 122, 125 ,0, 0, 0 , - 2099, 109, 2100 ,128, 5947, 6146 ,0, 0, 0 , - 2099, 2100, 2098 ,128, 6146, 129 ,0, 0, 0 , - 2100, 110, 2101 ,6146, 6147, 6148 ,0, 0, 0 , - 2100, 2101, 2098 ,6146, 6148, 129 ,0, 0, 0 , - 2101, 111, 2102 ,6148, 6149, 126 ,0, 0, 0 , - 2101, 2102, 2098 ,6148, 126, 129 ,0, 0, 0 , - 2104, 113, 2105 ,132, 5943, 6150 ,0, 0, 0 , - 2104, 2105, 2103 ,132, 6150, 133 ,0, 0, 0 , - 2105, 114, 2106 ,6150, 6151, 130 ,0, 0, 0 , - 2105, 2106, 2103 ,6150, 130, 133 ,0, 0, 0 , - 2108, 116, 2109 ,136, 3716, 5935 ,0, 0, 0 , - 2108, 2109, 2107 ,136, 5935, 137 ,0, 0, 0 , - 2109, 117, 2110 ,5935, 3720, 5939 ,0, 0, 0 , - 2109, 2110, 2107 ,5935, 5939, 137 ,0, 0, 0 , - 2110, 118, 2111 ,5939, 5938, 134 ,0, 0, 0 , - 2110, 2111, 2107 ,5939, 134, 137 ,0, 0, 0 , - 2113, 120, 2114 ,140, 3712, 5932 ,0, 0, 0 , - 2113, 2114, 2112 ,140, 5932, 141 ,0, 0, 0 , - 2114, 121, 2115 ,5932, 5931, 6152 ,0, 0, 0 , - 2114, 2115, 2112 ,5932, 6152, 141 ,0, 0, 0 , - 2115, 122, 2116 ,6152, 6153, 138 ,0, 0, 0 , - 2115, 2116, 2112 ,6152, 138, 141 ,0, 0, 0 , - 2118, 124, 2119 ,144, 3701, 5922 ,0, 0, 0 , - 2118, 2119, 2117 ,144, 5922, 145 ,0, 0, 0 , - 2119, 125, 2120 ,5922, 3705, 5926 ,0, 0, 0 , - 2119, 2120, 2117 ,5922, 5926, 145 ,0, 0, 0 , - 2120, 126, 2121 ,5926, 5925, 142 ,0, 0, 0 , - 2120, 2121, 2117 ,5926, 142, 145 ,0, 0, 0 , - 2123, 127, 2124 ,148, 5918, 6154 ,0, 0, 0 , - 2123, 2124, 2122 ,148, 6154, 149 ,0, 0, 0 , - 2124, 128, 2125 ,6154, 6155, 146 ,0, 0, 0 , - 2124, 2125, 2122 ,6154, 146, 149 ,0, 0, 0 , - 2127, 130, 2128 ,152, 5915, 6156 ,0, 0, 0 , - 2127, 2128, 2126 ,152, 6156, 153 ,0, 0, 0 , - 2128, 131, 2129 ,6156, 6157, 150 ,0, 0, 0 , - 2128, 2129, 2126 ,6156, 150, 153 ,0, 0, 0 , - 2131, 133, 2132 ,156, 5912, 6158 ,0, 0, 0 , - 2131, 2132, 2130 ,156, 6158, 157 ,0, 0, 0 , - 2132, 134, 2133 ,6158, 6159, 6160 ,0, 0, 0 , - 2132, 2133, 2130 ,6158, 6160, 157 ,0, 0, 0 , - 2133, 135, 2134 ,6160, 6161, 154 ,0, 0, 0 , - 2133, 2134, 2130 ,6160, 154, 157 ,0, 0, 0 , - 2136, 107, 2125 ,160, 147, 146 ,0, 0, 0 , - 2136, 2125, 2135 ,160, 146, 161 ,0, 0, 0 , - 2125, 128, 2137 ,146, 6155, 158 ,0, 0, 0 , - 2125, 2137, 2135 ,146, 158, 161 ,0, 0, 0 , - 2139, 105, 2097 ,162, 123, 122 ,0, 0, 0 , - 2139, 2097, 2138 ,162, 122, 163 ,0, 0, 0 , - 2097, 107, 2136 ,122, 147, 160 ,0, 0, 0 , - 2097, 2136, 2138 ,122, 160, 163 ,0, 0, 0 , - 2141, 139, 2142 ,166, 5902, 6162 ,0, 0, 0 , - 2141, 2142, 2140 ,166, 6162, 167 ,0, 0, 0 , - 2142, 140, 2143 ,6162, 6163, 6164 ,0, 0, 0 , - 2142, 2143, 2140 ,6162, 6164, 167 ,0, 0, 0 , - 2143, 141, 2144 ,6164, 6165, 164 ,0, 0, 0 , - 2143, 2144, 2140 ,6164, 164, 167 ,0, 0, 0 , - 2146, 143, 2147 ,170, 6166, 6167 ,0, 0, 0 , - 2146, 2147, 2145 ,170, 6167, 171 ,0, 0, 0 , - 2147, 144, 2148 ,6167, 172, 168 ,0, 0, 0 , - 2147, 2148, 2145 ,6167, 168, 171 ,0, 0, 0 , - 2150, 145, 2151 ,173, 6168, 6169 ,0, 0, 0 , - 2150, 2151, 2149 ,173, 6169, 174 ,0, 0, 0 , - 2151, 142, 2148 ,6169, 169, 168 ,0, 0, 0 , - 2151, 2148, 2149 ,6169, 168, 174 ,0, 0, 0 , - 2153, 147, 2154 ,177, 5899, 6170 ,0, 0, 0 , - 2153, 2154, 2152 ,177, 6170, 178 ,0, 0, 0 , - 2154, 148, 2155 ,6170, 6171, 6172 ,0, 0, 0 , - 2154, 2155, 2152 ,6170, 6172, 178 ,0, 0, 0 , - 2155, 149, 2156 ,6172, 6173, 175 ,0, 0, 0 , - 2155, 2156, 2152 ,6172, 175, 178 ,0, 0, 0 , - 2158, 151, 2159 ,181, 5891, 5895 ,0, 0, 0 , - 2158, 2159, 2157 ,181, 5895, 182 ,0, 0, 0 , - 2159, 152, 2160 ,5895, 5894, 179 ,0, 0, 0 , - 2159, 2160, 2157 ,5895, 179, 182 ,0, 0, 0 , - 2162, 154, 2163 ,185, 6174, 6175 ,0, 0, 0 , - 2162, 2163, 2161 ,185, 6175, 186 ,0, 0, 0 , - 2163, 155, 2164 ,6175, 6176, 6177 ,0, 0, 0 , - 2163, 2164, 2161 ,6175, 6177, 186 ,0, 0, 0 , - 2164, 156, 2165 ,6177, 6178, 183 ,0, 0, 0 , - 2164, 2165, 2161 ,6177, 183, 186 ,0, 0, 0 , - 2167, 158, 2168 ,189, 5887, 6179 ,0, 0, 0 , - 2167, 2168, 2166 ,189, 6179, 190 ,0, 0, 0 , - 2168, 159, 2169 ,6179, 6180, 187 ,0, 0, 0 , - 2168, 2169, 2166 ,6179, 187, 190 ,0, 0, 0 , - 2171, 161, 2172 ,193, 3675, 6181 ,0, 0, 0 , - 2171, 2172, 2170 ,193, 6181, 194 ,0, 0, 0 , - 2172, 162, 2173 ,6181, 3682, 5884 ,0, 0, 0 , - 2172, 2173, 2170 ,6181, 5884, 194 ,0, 0, 0 , - 2173, 163, 2174 ,5884, 5883, 191 ,0, 0, 0 , - 2173, 2174, 2170 ,5884, 191, 194 ,0, 0, 0 , - 2176, 165, 2177 ,197, 3671, 5876 ,0, 0, 0 , - 2176, 2177, 2175 ,197, 5876, 198 ,0, 0, 0 , - 2177, 166, 2178 ,5876, 5875, 5879 ,0, 0, 0 , - 2177, 2178, 2175 ,5876, 5879, 198 ,0, 0, 0 , - 2178, 167, 2179 ,5879, 5878, 195 ,0, 0, 0 , - 2178, 2179, 2175 ,5879, 195, 198 ,0, 0, 0 , - 2181, 169, 2182 ,201, 3660, 5866 ,0, 0, 0 , - 2181, 2182, 2180 ,201, 5866, 202 ,0, 0, 0 , - 2182, 170, 2183 ,5866, 3664, 5870 ,0, 0, 0 , - 2182, 2183, 2180 ,5866, 5870, 202 ,0, 0, 0 , - 2183, 171, 2184 ,5870, 5869, 199 ,0, 0, 0 , - 2183, 2184, 2180 ,5870, 199, 202 ,0, 0, 0 , - 2186, 174, 2187 ,205, 6182, 5862 ,0, 0, 0 , - 2186, 2187, 2185 ,205, 5862, 206 ,0, 0, 0 , - 2187, 175, 2188 ,5862, 5861, 6183 ,0, 0, 0 , - 2187, 2188, 2185 ,5862, 6183, 206 ,0, 0, 0 , - 2188, 176, 2189 ,6183, 6184, 203 ,0, 0, 0 , - 2188, 2189, 2185 ,6183, 203, 206 ,0, 0, 0 , - 2191, 178, 2192 ,209, 3649, 5852 ,0, 0, 0 , - 2191, 2192, 2190 ,209, 5852, 210 ,0, 0, 0 , - 2192, 179, 2193 ,5852, 3653, 5856 ,0, 0, 0 , - 2192, 2193, 2190 ,5852, 5856, 210 ,0, 0, 0 , - 2193, 180, 2194 ,5856, 5855, 6185 ,0, 0, 0 , - 2193, 2194, 2190 ,5856, 6185, 210 ,0, 0, 0 , - 2194, 181, 2195 ,6185, 6186, 207 ,0, 0, 0 , - 2194, 2195, 2190 ,6185, 207, 210 ,0, 0, 0 , - 2197, 183, 2198 ,213, 3642, 5848 ,0, 0, 0 , - 2197, 2198, 2196 ,213, 5848, 214 ,0, 0, 0 , - 2198, 184, 2199 ,5848, 5847, 6187 ,0, 0, 0 , - 2198, 2199, 2196 ,5848, 6187, 214 ,0, 0, 0 , - 2199, 185, 2200 ,6187, 6188, 211 ,0, 0, 0 , - 2199, 2200, 2196 ,6187, 211, 214 ,0, 0, 0 , - 2202, 187, 2203 ,217, 5843, 6189 ,0, 0, 0 , - 2202, 2203, 2201 ,217, 6189, 218 ,0, 0, 0 , - 2203, 188, 2204 ,6189, 6190, 215 ,0, 0, 0 , - 2203, 2204, 2201 ,6189, 215, 218 ,0, 0, 0 , - 2206, 190, 2207 ,221, 5839, 6191 ,0, 0, 0 , - 2206, 2207, 2205 ,221, 6191, 222 ,0, 0, 0 , - 2207, 191, 2208 ,6191, 6192, 6193 ,0, 0, 0 , - 2207, 2208, 2205 ,6191, 6193, 222 ,0, 0, 0 , - 2208, 192, 2209 ,6193, 6194, 219 ,0, 0, 0 , - 2208, 2209, 2205 ,6193, 219, 222 ,0, 0, 0 , - 2211, 194, 2212 ,225, 6195, 5831 ,0, 0, 0 , - 2211, 2212, 2210 ,225, 5831, 226 ,0, 0, 0 , - 2212, 195, 2213 ,5831, 3630, 5835 ,0, 0, 0 , - 2212, 2213, 2210 ,5831, 5835, 226 ,0, 0, 0 , - 2213, 196, 2214 ,5835, 5834, 223 ,0, 0, 0 , - 2213, 2214, 2210 ,5835, 223, 226 ,0, 0, 0 , - 2216, 198, 2217 ,229, 3626, 5829 ,0, 0, 0 , - 2216, 2217, 2215 ,229, 5829, 230 ,0, 0, 0 , - 2217, 199, 2218 ,5829, 5828, 6196 ,0, 0, 0 , - 2217, 2218, 2215 ,5829, 6196, 230 ,0, 0, 0 , - 2218, 200, 2219 ,6196, 6197, 227 ,0, 0, 0 , - 2218, 2219, 2215 ,6196, 227, 230 ,0, 0, 0 , - 2221, 202, 2222 ,233, 3619, 5823 ,0, 0, 0 , - 2221, 2222, 2220 ,233, 5823, 234 ,0, 0, 0 , - 2222, 203, 2223 ,5823, 5822, 6198 ,0, 0, 0 , - 2222, 2223, 2220 ,5823, 6198, 234 ,0, 0, 0 , - 2223, 204, 2224 ,6198, 6199, 231 ,0, 0, 0 , - 2223, 2224, 2220 ,6198, 231, 234 ,0, 0, 0 , - 2226, 206, 2227 ,237, 3612, 5817 ,0, 0, 0 , - 2226, 2227, 2225 ,237, 5817, 238 ,0, 0, 0 , - 2227, 207, 2228 ,5817, 5816, 6200 ,0, 0, 0 , - 2227, 2228, 2225 ,5817, 6200, 238 ,0, 0, 0 , - 2228, 208, 2229 ,6200, 6201, 235 ,0, 0, 0 , - 2228, 2229, 2225 ,6200, 235, 238 ,0, 0, 0 , - 2231, 210, 2232 ,241, 3605, 5811 ,0, 0, 0 , - 2231, 2232, 2230 ,241, 5811, 242 ,0, 0, 0 , - 2232, 211, 2233 ,5811, 5810, 6202 ,0, 0, 0 , - 2232, 2233, 2230 ,5811, 6202, 242 ,0, 0, 0 , - 2233, 212, 2234 ,6202, 6203, 239 ,0, 0, 0 , - 2233, 2234, 2230 ,6202, 239, 242 ,0, 0, 0 , - 2236, 214, 2237 ,245, 3598, 5805 ,0, 0, 0 , - 2236, 2237, 2235 ,245, 5805, 246 ,0, 0, 0 , - 2237, 215, 2238 ,5805, 5804, 6204 ,0, 0, 0 , - 2237, 2238, 2235 ,5805, 6204, 246 ,0, 0, 0 , - 2238, 216, 2239 ,6204, 6205, 243 ,0, 0, 0 , - 2238, 2239, 2235 ,6204, 243, 246 ,0, 0, 0 , - 2241, 218, 2242 ,249, 3591, 5799 ,0, 0, 0 , - 2241, 2242, 2240 ,249, 5799, 250 ,0, 0, 0 , - 2242, 219, 2243 ,5799, 5798, 6206 ,0, 0, 0 , - 2242, 2243, 2240 ,5799, 6206, 250 ,0, 0, 0 , - 2243, 220, 2244 ,6206, 6207, 247 ,0, 0, 0 , - 2243, 2244, 2240 ,6206, 247, 250 ,0, 0, 0 , - 2246, 222, 2247 ,253, 3584, 5793 ,0, 0, 0 , - 2246, 2247, 2245 ,253, 5793, 254 ,0, 0, 0 , - 2247, 223, 2248 ,5793, 5792, 6208 ,0, 0, 0 , - 2247, 2248, 2245 ,5793, 6208, 254 ,0, 0, 0 , - 2248, 224, 2249 ,6208, 6209, 6210 ,0, 0, 0 , - 2248, 2249, 2245 ,6208, 6210, 254 ,0, 0, 0 , - 2249, 225, 2250 ,6210, 6211, 251 ,0, 0, 0 , - 2249, 2250, 2245 ,6210, 251, 254 ,0, 0, 0 , - 2252, 227, 2253 ,257, 6212, 6213 ,0, 0, 0 , - 2252, 2253, 2251 ,257, 6213, 258 ,0, 0, 0 , - 2253, 228, 2254 ,6213, 6214, 5786 ,0, 0, 0 , - 2253, 2254, 2251 ,6213, 5786, 258 ,0, 0, 0 , - 2254, 229, 2255 ,5786, 5785, 6215 ,0, 0, 0 , - 2254, 2255, 2251 ,5786, 6215, 258 ,0, 0, 0 , - 2255, 230, 2256 ,6215, 6216, 255 ,0, 0, 0 , - 2255, 2256, 2251 ,6215, 255, 258 ,0, 0, 0 , - 2258, 232, 2259 ,261, 6217, 6218 ,0, 0, 0 , - 2258, 2259, 2257 ,261, 6218, 262 ,0, 0, 0 , - 2259, 233, 2260 ,6218, 6219, 6220 ,0, 0, 0 , - 2259, 2260, 2257 ,6218, 6220, 262 ,0, 0, 0 , - 2260, 234, 2261 ,6220, 6221, 6222 ,0, 0, 0 , - 2260, 2261, 2257 ,6220, 6222, 262 ,0, 0, 0 , - 2261, 235, 2262 ,6222, 6223, 259 ,0, 0, 0 , - 2261, 2262, 2257 ,6222, 259, 262 ,0, 0, 0 , - 2264, 237, 2265 ,265, 6224, 5782 ,0, 0, 0 , - 2264, 2265, 2263 ,265, 5782, 266 ,0, 0, 0 , - 2265, 238, 2266 ,5782, 5781, 6225 ,0, 0, 0 , - 2265, 2266, 2263 ,5782, 6225, 266 ,0, 0, 0 , - 2266, 239, 2267 ,6225, 6226, 263 ,0, 0, 0 , - 2266, 2267, 2263 ,6225, 263, 266 ,0, 0, 0 , - 2269, 241, 2270 ,269, 6227, 5778 ,0, 0, 0 , - 2269, 2270, 2268 ,269, 5778, 270 ,0, 0, 0 , - 2270, 242, 2271 ,5778, 5777, 267 ,0, 0, 0 , - 2270, 2271, 2268 ,5778, 267, 270 ,0, 0, 0 , - 2273, 244, 2274 ,273, 5771, 6228 ,0, 0, 0 , - 2273, 2274, 2272 ,273, 6228, 274 ,0, 0, 0 , - 2274, 245, 2275 ,6228, 6229, 5774 ,0, 0, 0 , - 2274, 2275, 2272 ,6228, 5774, 274 ,0, 0, 0 , - 2275, 246, 2276 ,5774, 5773, 271 ,0, 0, 0 , - 2275, 2276, 2272 ,5774, 271, 274 ,0, 0, 0 , - 2278, 248, 2279 ,277, 6230, 6231 ,0, 0, 0 , - 2278, 2279, 2277 ,277, 6231, 278 ,0, 0, 0 , - 2279, 249, 2280 ,6231, 6232, 6233 ,0, 0, 0 , - 2279, 2280, 2277 ,6231, 6233, 278 ,0, 0, 0 , - 2280, 250, 2281 ,6233, 6234, 275 ,0, 0, 0 , - 2280, 2281, 2277 ,6233, 275, 278 ,0, 0, 0 , - 2283, 252, 2284 ,281, 6235, 6236 ,0, 0, 0 , - 2283, 2284, 2282 ,281, 6236, 282 ,0, 0, 0 , - 2284, 253, 2285 ,6236, 6237, 279 ,0, 0, 0 , - 2284, 2285, 2282 ,6236, 279, 282 ,0, 0, 0 , - 2287, 255, 2288 ,285, 6238, 6239 ,0, 0, 0 , - 2287, 2288, 2286 ,285, 6239, 286 ,0, 0, 0 , - 2288, 256, 2289 ,6239, 6240, 5765 ,0, 0, 0 , - 2288, 2289, 2286 ,6239, 5765, 286 ,0, 0, 0 , - 2289, 257, 2290 ,5765, 5764, 283 ,0, 0, 0 , - 2289, 2290, 2286 ,5765, 283, 286 ,0, 0, 0 , - 2292, 259, 2293 ,289, 6241, 5761 ,0, 0, 0 , - 2292, 2293, 2291 ,289, 5761, 290 ,0, 0, 0 , - 2293, 260, 2294 ,5761, 5760, 287 ,0, 0, 0 , - 2293, 2294, 2291 ,5761, 287, 290 ,0, 0, 0 , - 2296, 262, 2297 ,293, 6242, 6243 ,0, 0, 0 , - 2296, 2297, 2295 ,293, 6243, 294 ,0, 0, 0 , - 2297, 263, 2298 ,6243, 6244, 291 ,0, 0, 0 , - 2297, 2298, 2295 ,6243, 291, 294 ,0, 0, 0 , - 2300, 264, 2301 ,295, 5756, 6245 ,0, 0, 0 , - 2300, 2301, 2299 ,295, 6245, 296 ,0, 0, 0 , - 2301, 262, 2296 ,6245, 6242, 293 ,0, 0, 0 , - 2301, 2296, 2299 ,6245, 293, 296 ,0, 0, 0 , - 2303, 266, 2304 ,299, 5749, 5753 ,0, 0, 0 , - 2303, 2304, 2302 ,299, 5753, 300 ,0, 0, 0 , - 2304, 267, 2305 ,5753, 5752, 6246 ,0, 0, 0 , - 2304, 2305, 2302 ,5753, 6246, 300 ,0, 0, 0 , - 2305, 268, 2306 ,6246, 6247, 297 ,0, 0, 0 , - 2305, 2306, 2302 ,6246, 297, 300 ,0, 0, 0 , - 2308, 270, 2309 ,302, 3571, 6248 ,0, 0, 0 , - 2308, 2309, 2307 ,302, 6248, 303 ,0, 0, 0 , - 2309, 271, 2310 ,6248, 304, 301 ,0, 0, 0 , - 2309, 2310, 2307 ,6248, 301, 303 ,0, 0, 0 , - 2312, 241, 2269 ,305, 6227, 269 ,0, 0, 0 , - 2312, 2269, 2311 ,305, 269, 306 ,0, 0, 0 , - 2269, 240, 2310 ,269, 268, 301 ,0, 0, 0 , - 2269, 2310, 2311 ,269, 301, 306 ,0, 0, 0 , - 2314, 273, 2315 ,309, 6249, 6250 ,0, 0, 0 , - 2314, 2315, 2313 ,309, 6250, 310 ,0, 0, 0 , - 2315, 274, 2316 ,6250, 6251, 307 ,0, 0, 0 , - 2315, 2316, 2313 ,6250, 307, 310 ,0, 0, 0 , - 2318, 276, 2319 ,313, 3553, 5740 ,0, 0, 0 , - 2318, 2319, 2317 ,313, 5740, 314 ,0, 0, 0 , - 2319, 277, 2320 ,5740, 3557, 5744 ,0, 0, 0 , - 2319, 2320, 2317 ,5740, 5744, 314 ,0, 0, 0 , - 2320, 278, 2321 ,5744, 5743, 311 ,0, 0, 0 , - 2320, 2321, 2317 ,5744, 311, 314 ,0, 0, 0 , - 2323, 280, 2324 ,317, 3546, 5736 ,0, 0, 0 , - 2323, 2324, 2322 ,317, 5736, 318 ,0, 0, 0 , - 2324, 281, 2325 ,5736, 5735, 6252 ,0, 0, 0 , - 2324, 2325, 2322 ,5736, 6252, 318 ,0, 0, 0 , - 2325, 282, 2326 ,6252, 6253, 315 ,0, 0, 0 , - 2325, 2326, 2322 ,6252, 315, 318 ,0, 0, 0 , - 2328, 284, 2329 ,321, 3531, 5727 ,0, 0, 0 , - 2328, 2329, 2327 ,321, 5727, 322 ,0, 0, 0 , - 2329, 285, 2330 ,5727, 3535, 5730 ,0, 0, 0 , - 2329, 2330, 2327 ,5727, 5730, 322 ,0, 0, 0 , - 2330, 286, 2331 ,5730, 5729, 319 ,0, 0, 0 , - 2330, 2331, 2327 ,5730, 319, 322 ,0, 0, 0 , - 2333, 288, 2334 ,325, 3524, 5723 ,0, 0, 0 , - 2333, 2334, 2332 ,325, 5723, 326 ,0, 0, 0 , - 2334, 289, 2335 ,5723, 5722, 6254 ,0, 0, 0 , - 2334, 2335, 2332 ,5723, 6254, 326 ,0, 0, 0 , - 2335, 290, 2336 ,6254, 6255, 323 ,0, 0, 0 , - 2335, 2336, 2332 ,6254, 323, 326 ,0, 0, 0 , - 2338, 292, 2339 ,329, 3517, 5717 ,0, 0, 0 , - 2338, 2339, 2337 ,329, 5717, 330 ,0, 0, 0 , - 2339, 293, 2340 ,5717, 5716, 6256 ,0, 0, 0 , - 2339, 2340, 2337 ,5717, 6256, 330 ,0, 0, 0 , - 2340, 294, 2341 ,6256, 6257, 327 ,0, 0, 0 , - 2340, 2341, 2337 ,6256, 327, 330 ,0, 0, 0 , - 2343, 296, 2344 ,333, 3510, 5711 ,0, 0, 0 , - 2343, 2344, 2342 ,333, 5711, 334 ,0, 0, 0 , - 2344, 297, 2345 ,5711, 5710, 6258 ,0, 0, 0 , - 2344, 2345, 2342 ,5711, 6258, 334 ,0, 0, 0 , - 2345, 298, 2346 ,6258, 6259, 331 ,0, 0, 0 , - 2345, 2346, 2342 ,6258, 331, 334 ,0, 0, 0 , - 2348, 304, 2349 ,337, 3539, 6260 ,0, 0, 0 , - 2348, 2349, 2347 ,337, 6260, 338 ,0, 0, 0 , - 2349, 305, 2350 ,6260, 6261, 5695 ,0, 0, 0 , - 2349, 2350, 2347 ,6260, 5695, 338 ,0, 0, 0 , - 2350, 306, 2351 ,5695, 5694, 335 ,0, 0, 0 , - 2350, 2351, 2347 ,5695, 335, 338 ,0, 0, 0 , - 2353, 313, 2354 ,341, 6262, 6263 ,0, 0, 0 , - 2353, 2354, 2352 ,341, 6263, 342 ,0, 0, 0 , - 2354, 314, 2355 ,6263, 6264, 6265 ,0, 0, 0 , - 2354, 2355, 2352 ,6263, 6265, 342 ,0, 0, 0 , - 2355, 315, 2356 ,6265, 6266, 339 ,0, 0, 0 , - 2355, 2356, 2352 ,6265, 339, 342 ,0, 0, 0 , - 2358, 317, 2359 ,345, 6267, 6268 ,0, 0, 0 , - 2358, 2359, 2357 ,345, 6268, 346 ,0, 0, 0 , - 2359, 318, 2360 ,6268, 3567, 343 ,0, 0, 0 , - 2359, 2360, 2357 ,6268, 343, 346 ,0, 0, 0 , - 2362, 320, 2363 ,349, 3503, 5684 ,0, 0, 0 , - 2362, 2363, 2361 ,349, 5684, 350 ,0, 0, 0 , - 2363, 321, 2364 ,5684, 3496, 5687 ,0, 0, 0 , - 2363, 2364, 2361 ,5684, 5687, 350 ,0, 0, 0 , - 2364, 322, 2365 ,5687, 5686, 347 ,0, 0, 0 , - 2364, 2365, 2361 ,5687, 347, 350 ,0, 0, 0 , - 2367, 324, 2368 ,353, 6269, 5677 ,0, 0, 0 , - 2367, 2368, 2366 ,353, 5677, 354 ,0, 0, 0 , - 2368, 325, 2369 ,5677, 3489, 5680 ,0, 0, 0 , - 2368, 2369, 2366 ,5677, 5680, 354 ,0, 0, 0 , - 2369, 326, 2370 ,5680, 5679, 351 ,0, 0, 0 , - 2369, 2370, 2366 ,5680, 351, 354 ,0, 0, 0 , - 2372, 328, 2373 ,357, 6270, 5671 ,0, 0, 0 , - 2372, 2373, 2371 ,357, 5671, 358 ,0, 0, 0 , - 2373, 329, 2374 ,5671, 3482, 5674 ,0, 0, 0 , - 2373, 2374, 2371 ,5671, 5674, 358 ,0, 0, 0 , - 2374, 330, 2375 ,5674, 5673, 355 ,0, 0, 0 , - 2374, 2375, 2371 ,5674, 355, 358 ,0, 0, 0 , - 2377, 332, 2378 ,361, 6271, 5665 ,0, 0, 0 , - 2377, 2378, 2376 ,361, 5665, 362 ,0, 0, 0 , - 2378, 333, 2379 ,5665, 3475, 5668 ,0, 0, 0 , - 2378, 2379, 2376 ,5665, 5668, 362 ,0, 0, 0 , - 2379, 334, 2380 ,5668, 5667, 359 ,0, 0, 0 , - 2379, 2380, 2376 ,5668, 359, 362 ,0, 0, 0 , - 2382, 336, 2383 ,365, 6272, 5659 ,0, 0, 0 , - 2382, 2383, 2381 ,365, 5659, 366 ,0, 0, 0 , - 2383, 337, 2384 ,5659, 3468, 5662 ,0, 0, 0 , - 2383, 2384, 2381 ,5659, 5662, 366 ,0, 0, 0 , - 2384, 338, 2385 ,5662, 5661, 363 ,0, 0, 0 , - 2384, 2385, 2381 ,5662, 363, 366 ,0, 0, 0 , - 2387, 340, 2388 ,369, 6273, 5653 ,0, 0, 0 , - 2387, 2388, 2386 ,369, 5653, 370 ,0, 0, 0 , - 2388, 341, 2389 ,5653, 3461, 5656 ,0, 0, 0 , - 2388, 2389, 2386 ,5653, 5656, 370 ,0, 0, 0 , - 2389, 342, 2390 ,5656, 5655, 367 ,0, 0, 0 , - 2389, 2390, 2386 ,5656, 367, 370 ,0, 0, 0 , - 2392, 344, 2393 ,373, 1827, 1826 ,0, 0, 0 , - 2392, 2393, 2391 ,373, 1826, 374 ,0, 0, 0 , - 2393, 345, 2394 ,1826, 6274, 5650 ,0, 0, 0 , - 2393, 2394, 2391 ,1826, 5650, 374 ,0, 0, 0 , - 2394, 346, 2395 ,5650, 5649, 371 ,0, 0, 0 , - 2394, 2395, 2391 ,5650, 371, 374 ,0, 0, 0 , - 2397, 348, 2398 ,377, 1823, 1822 ,0, 0, 0 , - 2397, 2398, 2396 ,377, 1822, 378 ,0, 0, 0 , - 2398, 349, 2399 ,1822, 6275, 5646 ,0, 0, 0 , - 2398, 2399, 2396 ,1822, 5646, 378 ,0, 0, 0 , - 2399, 350, 2400 ,5646, 5645, 375 ,0, 0, 0 , - 2399, 2400, 2396 ,5646, 375, 378 ,0, 0, 0 , - 2402, 352, 2403 ,381, 1819, 1818 ,0, 0, 0 , - 2402, 2403, 2401 ,381, 1818, 382 ,0, 0, 0 , - 2403, 353, 2404 ,1818, 6276, 5642 ,0, 0, 0 , - 2403, 2404, 2401 ,1818, 5642, 382 ,0, 0, 0 , - 2404, 354, 2405 ,5642, 5641, 379 ,0, 0, 0 , - 2404, 2405, 2401 ,5642, 379, 382 ,0, 0, 0 , - 2407, 356, 2408 ,385, 6277, 6278 ,0, 0, 0 , - 2407, 2408, 2406 ,385, 6278, 386 ,0, 0, 0 , - 2408, 357, 2409 ,6278, 6279, 383 ,0, 0, 0 , - 2408, 2409, 2406 ,6278, 383, 386 ,0, 0, 0 , - 2411, 359, 2412 ,389, 5635, 6280 ,0, 0, 0 , - 2411, 2412, 2410 ,389, 6280, 390 ,0, 0, 0 , - 2412, 360, 2413 ,6280, 6281, 5638 ,0, 0, 0 , - 2412, 2413, 2410 ,6280, 5638, 390 ,0, 0, 0 , - 2413, 361, 2414 ,5638, 5637, 387 ,0, 0, 0 , - 2413, 2414, 2410 ,5638, 387, 390 ,0, 0, 0 , - 2416, 363, 2417 ,393, 6282, 6283 ,0, 0, 0 , - 2416, 2417, 2415 ,393, 6283, 394 ,0, 0, 0 , - 2417, 364, 2418 ,6283, 6284, 5631 ,0, 0, 0 , - 2417, 2418, 2415 ,6283, 5631, 394 ,0, 0, 0 , - 2418, 365, 2419 ,5631, 5630, 391 ,0, 0, 0 , - 2418, 2419, 2415 ,5631, 391, 394 ,0, 0, 0 , - 2421, 367, 2422 ,397, 6285, 6286 ,0, 0, 0 , - 2421, 2422, 2420 ,397, 6286, 398 ,0, 0, 0 , - 2422, 368, 2423 ,6286, 6287, 5627 ,0, 0, 0 , - 2422, 2423, 2420 ,6286, 5627, 398 ,0, 0, 0 , - 2423, 369, 2424 ,5627, 5626, 395 ,0, 0, 0 , - 2423, 2424, 2420 ,5627, 395, 398 ,0, 0, 0 , - 2426, 371, 2427 ,401, 6288, 6289 ,0, 0, 0 , - 2426, 2427, 2425 ,401, 6289, 402 ,0, 0, 0 , - 2427, 372, 2428 ,6289, 6290, 399 ,0, 0, 0 , - 2427, 2428, 2425 ,6289, 399, 402 ,0, 0, 0 , - 2430, 374, 2431 ,405, 6291, 6292 ,0, 0, 0 , - 2430, 2431, 2429 ,405, 6292, 406 ,0, 0, 0 , - 2431, 375, 2432 ,6292, 6293, 5622 ,0, 0, 0 , - 2431, 2432, 2429 ,6292, 5622, 406 ,0, 0, 0 , - 2432, 376, 2433 ,5622, 5621, 403 ,0, 0, 0 , - 2432, 2433, 2429 ,5622, 403, 406 ,0, 0, 0 , - 2435, 378, 2436 ,409, 6294, 5617 ,0, 0, 0 , - 2435, 2436, 2434 ,409, 5617, 410 ,0, 0, 0 , - 2436, 379, 2437 ,5617, 5616, 407 ,0, 0, 0 , - 2436, 2437, 2434 ,5617, 407, 410 ,0, 0, 0 , - 2439, 381, 2440 ,413, 6295, 6296 ,0, 0, 0 , - 2439, 2440, 2438 ,413, 6296, 414 ,0, 0, 0 , - 2440, 382, 2441 ,6296, 6297, 411 ,0, 0, 0 , - 2440, 2441, 2438 ,6296, 411, 414 ,0, 0, 0 , - 2443, 384, 2444 ,417, 6298, 5612 ,0, 0, 0 , - 2443, 2444, 2442 ,417, 5612, 418 ,0, 0, 0 , - 2444, 385, 2445 ,5612, 5611, 415 ,0, 0, 0 , - 2444, 2445, 2442 ,5612, 415, 418 ,0, 0, 0 , - 2447, 387, 2448 ,421, 6299, 6300 ,0, 0, 0 , - 2447, 2448, 2446 ,421, 6300, 422 ,0, 0, 0 , - 2448, 388, 2449 ,6300, 6301, 5607 ,0, 0, 0 , - 2448, 2449, 2446 ,6300, 5607, 422 ,0, 0, 0 , - 2449, 389, 2450 ,5607, 5606, 419 ,0, 0, 0 , - 2449, 2450, 2446 ,5607, 419, 422 ,0, 0, 0 , - 2452, 391, 2453 ,425, 6302, 6303 ,0, 0, 0 , - 2452, 2453, 2451 ,425, 6303, 426 ,0, 0, 0 , - 2453, 392, 2454 ,6303, 6304, 5603 ,0, 0, 0 , - 2453, 2454, 2451 ,6303, 5603, 426 ,0, 0, 0 , - 2454, 393, 2455 ,5603, 5602, 423 ,0, 0, 0 , - 2454, 2455, 2451 ,5603, 423, 426 ,0, 0, 0 , - 2457, 395, 2458 ,429, 6305, 6306 ,0, 0, 0 , - 2457, 2458, 2456 ,429, 6306, 430 ,0, 0, 0 , - 2458, 396, 2459 ,6306, 6307, 5599 ,0, 0, 0 , - 2458, 2459, 2456 ,6306, 5599, 430 ,0, 0, 0 , - 2459, 397, 2460 ,5599, 5598, 427 ,0, 0, 0 , - 2459, 2460, 2456 ,5599, 427, 430 ,0, 0, 0 , - 2462, 355, 2409 ,433, 384, 383 ,0, 0, 0 , - 2462, 2409, 2461 ,433, 383, 434 ,0, 0, 0 , - 2409, 357, 2463 ,383, 6279, 431 ,0, 0, 0 , - 2409, 2463, 2461 ,383, 431, 434 ,0, 0, 0 , - 2465, 400, 2466 ,437, 3412, 5595 ,0, 0, 0 , - 2465, 2466, 2464 ,437, 5595, 438 ,0, 0, 0 , - 2466, 401, 2467 ,5595, 5594, 435 ,0, 0, 0 , - 2466, 2467, 2464 ,5595, 435, 438 ,0, 0, 0 , - 2469, 403, 2470 ,441, 6308, 5586 ,0, 0, 0 , - 2469, 2470, 2468 ,441, 5586, 442 ,0, 0, 0 , - 2470, 404, 2471 ,5586, 3408, 5589 ,0, 0, 0 , - 2470, 2471, 2468 ,5586, 5589, 442 ,0, 0, 0 , - 2471, 405, 2472 ,5589, 5588, 439 ,0, 0, 0 , - 2471, 2472, 2468 ,5589, 439, 442 ,0, 0, 0 , - 2474, 407, 2475 ,445, 6309, 5582 ,0, 0, 0 , - 2474, 2475, 2473 ,445, 5582, 446 ,0, 0, 0 , - 2475, 408, 2476 ,5582, 5581, 443 ,0, 0, 0 , - 2475, 2476, 2473 ,5582, 443, 446 ,0, 0, 0 , - 2478, 410, 2479 ,449, 6310, 5574 ,0, 0, 0 , - 2478, 2479, 2477 ,449, 5574, 450 ,0, 0, 0 , - 2479, 411, 2480 ,5574, 3397, 5577 ,0, 0, 0 , - 2479, 2480, 2477 ,5574, 5577, 450 ,0, 0, 0 , - 2480, 412, 2481 ,5577, 5576, 447 ,0, 0, 0 , - 2480, 2481, 2477 ,5577, 447, 450 ,0, 0, 0 , - 2483, 414, 2484 ,453, 6311, 6312 ,0, 0, 0 , - 2483, 2484, 2482 ,453, 6312, 454 ,0, 0, 0 , - 2484, 415, 2485 ,6312, 6313, 5571 ,0, 0, 0 , - 2484, 2485, 2482 ,6312, 5571, 454 ,0, 0, 0 , - 2485, 416, 2486 ,5571, 5570, 451 ,0, 0, 0 , - 2485, 2486, 2482 ,5571, 451, 454 ,0, 0, 0 , - 2488, 418, 2489 ,457, 6314, 5563 ,0, 0, 0 , - 2488, 2489, 2487 ,457, 5563, 458 ,0, 0, 0 , - 2489, 419, 2490 ,5563, 3387, 5566 ,0, 0, 0 , - 2489, 2490, 2487 ,5563, 5566, 458 ,0, 0, 0 , - 2490, 420, 2491 ,5566, 5565, 455 ,0, 0, 0 , - 2490, 2491, 2487 ,5566, 455, 458 ,0, 0, 0 , - 2493, 422, 2494 ,461, 5556, 5560 ,0, 0, 0 , - 2493, 2494, 2492 ,461, 5560, 462 ,0, 0, 0 , - 2494, 423, 2495 ,5560, 5559, 6315 ,0, 0, 0 , - 2494, 2495, 2492 ,5560, 6315, 462 ,0, 0, 0 , - 2495, 424, 2496 ,6315, 6316, 459 ,0, 0, 0 , - 2495, 2496, 2492 ,6315, 459, 462 ,0, 0, 0 , - 2498, 426, 2499 ,465, 6317, 6318 ,0, 0, 0 , - 2498, 2499, 2497 ,465, 6318, 466 ,0, 0, 0 , - 2499, 427, 2500 ,6318, 3401, 6319 ,0, 0, 0 , - 2499, 2500, 2497 ,6318, 6319, 466 ,0, 0, 0 , - 2500, 428, 2501 ,6319, 6320, 463 ,0, 0, 0 , - 2500, 2501, 2497 ,6319, 463, 466 ,0, 0, 0 , - 2503, 430, 2504 ,469, 3376, 5552 ,0, 0, 0 , - 2503, 2504, 2502 ,469, 5552, 470 ,0, 0, 0 , - 2504, 431, 2505 ,5552, 5551, 467 ,0, 0, 0 , - 2504, 2505, 2502 ,5552, 467, 470 ,0, 0, 0 , - 2507, 433, 2508 ,473, 5546, 6321 ,0, 0, 0 , - 2507, 2508, 2506 ,473, 6321, 474 ,0, 0, 0 , - 2508, 434, 2509 ,6321, 6322, 471 ,0, 0, 0 , - 2508, 2509, 2506 ,6321, 471, 474 ,0, 0, 0 , - 2511, 436, 2512 ,477, 3372, 6323 ,0, 0, 0 , - 2511, 2512, 2510 ,477, 6323, 478 ,0, 0, 0 , - 2512, 437, 2513 ,6323, 6324, 5543 ,0, 0, 0 , - 2512, 2513, 2510 ,6323, 5543, 478 ,0, 0, 0 , - 2513, 438, 2514 ,5543, 5542, 475 ,0, 0, 0 , - 2513, 2514, 2510 ,5543, 475, 478 ,0, 0, 0 , - 2516, 440, 2517 ,481, 6325, 5535 ,0, 0, 0 , - 2516, 2517, 2515 ,481, 5535, 482 ,0, 0, 0 , - 2517, 441, 2518 ,5535, 3361, 5538 ,0, 0, 0 , - 2517, 2518, 2515 ,5535, 5538, 482 ,0, 0, 0 , - 2518, 442, 2519 ,5538, 5537, 479 ,0, 0, 0 , - 2518, 2519, 2515 ,5538, 479, 482 ,0, 0, 0 , - 2521, 444, 2522 ,485, 6326, 6327 ,0, 0, 0 , - 2521, 2522, 2520 ,485, 6327, 486 ,0, 0, 0 , - 2522, 445, 2523 ,6327, 6328, 5531 ,0, 0, 0 , - 2522, 2523, 2520 ,6327, 5531, 486 ,0, 0, 0 , - 2523, 446, 2524 ,5531, 5530, 483 ,0, 0, 0 , - 2523, 2524, 2520 ,5531, 483, 486 ,0, 0, 0 , - 2526, 448, 2527 ,489, 3416, 6329 ,0, 0, 0 , - 2526, 2527, 2525 ,489, 6329, 490 ,0, 0, 0 , - 2527, 449, 2528 ,6329, 6330, 487 ,0, 0, 0 , - 2527, 2528, 2525 ,6329, 487, 490 ,0, 0, 0 , - 2530, 451, 2531 ,493, 3350, 5521 ,0, 0, 0 , - 2530, 2531, 2529 ,493, 5521, 494 ,0, 0, 0 , - 2531, 452, 2532 ,5521, 3346, 5525 ,0, 0, 0 , - 2531, 2532, 2529 ,5521, 5525, 494 ,0, 0, 0 , - 2532, 453, 2533 ,5525, 5524, 491 ,0, 0, 0 , - 2532, 2533, 2529 ,5525, 491, 494 ,0, 0, 0 , - 2535, 455, 2536 ,497, 5515, 6331 ,0, 0, 0 , - 2535, 2536, 2534 ,497, 6331, 498 ,0, 0, 0 , - 2536, 456, 2537 ,6331, 6332, 5518 ,0, 0, 0 , - 2536, 2537, 2534 ,6331, 5518, 498 ,0, 0, 0 , - 2537, 457, 2538 ,5518, 5517, 495 ,0, 0, 0 , - 2537, 2538, 2534 ,5518, 495, 498 ,0, 0, 0 , - 2540, 459, 2541 ,501, 6333, 5508 ,0, 0, 0 , - 2540, 2541, 2539 ,501, 5508, 502 ,0, 0, 0 , - 2541, 460, 2542 ,5508, 3336, 5511 ,0, 0, 0 , - 2541, 2542, 2539 ,5508, 5511, 502 ,0, 0, 0 , - 2542, 461, 2543 ,5511, 5510, 499 ,0, 0, 0 , - 2542, 2543, 2539 ,5511, 499, 502 ,0, 0, 0 , - 2545, 463, 2546 ,505, 6334, 6335 ,0, 0, 0 , - 2545, 2546, 2544 ,505, 6335, 506 ,0, 0, 0 , - 2546, 464, 2547 ,6335, 6336, 5505 ,0, 0, 0 , - 2546, 2547, 2544 ,6335, 5505, 506 ,0, 0, 0 , - 2547, 465, 2548 ,5505, 5504, 503 ,0, 0, 0 , - 2547, 2548, 2544 ,5505, 503, 506 ,0, 0, 0 , - 2550, 467, 2551 ,509, 6337, 5500 ,0, 0, 0 , - 2550, 2551, 2549 ,509, 5500, 510 ,0, 0, 0 , - 2551, 468, 2552 ,5500, 5499, 6338 ,0, 0, 0 , - 2551, 2552, 2549 ,5500, 6338, 510 ,0, 0, 0 , - 2552, 469, 2553 ,6338, 6339, 507 ,0, 0, 0 , - 2552, 2553, 2549 ,6338, 507, 510 ,0, 0, 0 , - 2555, 471, 2556 ,513, 6340, 6341 ,0, 0, 0 , - 2555, 2556, 2554 ,513, 6341, 514 ,0, 0, 0 , - 2556, 472, 2557 ,6341, 6342, 6343 ,0, 0, 0 , - 2556, 2557, 2554 ,6341, 6343, 514 ,0, 0, 0 , - 2557, 473, 2558 ,6343, 6344, 511 ,0, 0, 0 , - 2557, 2558, 2554 ,6343, 511, 514 ,0, 0, 0 , - 2560, 475, 2561 ,517, 5492, 6345 ,0, 0, 0 , - 2560, 2561, 2559 ,517, 6345, 518 ,0, 0, 0 , - 2561, 476, 2562 ,6345, 6346, 5495 ,0, 0, 0 , - 2561, 2562, 2559 ,6345, 5495, 518 ,0, 0, 0 , - 2562, 477, 2563 ,5495, 5494, 515 ,0, 0, 0 , - 2562, 2563, 2559 ,5495, 515, 518 ,0, 0, 0 , - 2565, 479, 2566 ,521, 6347, 6348 ,0, 0, 0 , - 2565, 2566, 2564 ,521, 6348, 522 ,0, 0, 0 , - 2566, 480, 2567 ,6348, 6349, 5488 ,0, 0, 0 , - 2566, 2567, 2564 ,6348, 5488, 522 ,0, 0, 0 , - 2567, 481, 2568 ,5488, 5487, 519 ,0, 0, 0 , - 2567, 2568, 2564 ,5488, 519, 522 ,0, 0, 0 , - 2570, 483, 2571 ,525, 6350, 5481 ,0, 0, 0 , - 2570, 2571, 2569 ,525, 5481, 526 ,0, 0, 0 , - 2571, 484, 2572 ,5481, 3316, 5484 ,0, 0, 0 , - 2571, 2572, 2569 ,5481, 5484, 526 ,0, 0, 0 , - 2572, 485, 2573 ,5484, 5483, 523 ,0, 0, 0 , - 2572, 2573, 2569 ,5484, 523, 526 ,0, 0, 0 , - 2575, 487, 2576 ,529, 6351, 5475 ,0, 0, 0 , - 2575, 2576, 2574 ,529, 5475, 530 ,0, 0, 0 , - 2576, 488, 2577 ,5475, 3309, 5478 ,0, 0, 0 , - 2576, 2577, 2574 ,5475, 5478, 530 ,0, 0, 0 , - 2577, 489, 2578 ,5478, 5477, 527 ,0, 0, 0 , - 2577, 2578, 2574 ,5478, 527, 530 ,0, 0, 0 , - 2580, 491, 2581 ,533, 6352, 5469 ,0, 0, 0 , - 2580, 2581, 2579 ,533, 5469, 534 ,0, 0, 0 , - 2581, 492, 2582 ,5469, 5468, 5472 ,0, 0, 0 , - 2581, 2582, 2579 ,5469, 5472, 534 ,0, 0, 0 , - 2582, 493, 2583 ,5472, 5471, 531 ,0, 0, 0 , - 2582, 2583, 2579 ,5472, 531, 534 ,0, 0, 0 , - 2585, 495, 2586 ,537, 6353, 6354 ,0, 0, 0 , - 2585, 2586, 2584 ,537, 6354, 538 ,0, 0, 0 , - 2586, 496, 2587 ,6354, 6355, 5464 ,0, 0, 0 , - 2586, 2587, 2584 ,6354, 5464, 538 ,0, 0, 0 , - 2587, 497, 2588 ,5464, 5463, 535 ,0, 0, 0 , - 2587, 2588, 2584 ,5464, 535, 538 ,0, 0, 0 , - 2590, 499, 2591 ,541, 6356, 6357 ,0, 0, 0 , - 2590, 2591, 2589 ,541, 6357, 542 ,0, 0, 0 , - 2591, 500, 2592 ,6357, 6358, 5460 ,0, 0, 0 , - 2591, 2592, 2589 ,6357, 5460, 542 ,0, 0, 0 , - 2592, 501, 2593 ,5460, 5459, 539 ,0, 0, 0 , - 2592, 2593, 2589 ,5460, 539, 542 ,0, 0, 0 , - 2595, 503, 2596 ,545, 6359, 5453 ,0, 0, 0 , - 2595, 2596, 2594 ,545, 5453, 546 ,0, 0, 0 , - 2596, 504, 2597 ,5453, 3293, 5456 ,0, 0, 0 , - 2596, 2597, 2594 ,5453, 5456, 546 ,0, 0, 0 , - 2597, 505, 2598 ,5456, 5455, 543 ,0, 0, 0 , - 2597, 2598, 2594 ,5456, 543, 546 ,0, 0, 0 , - 2600, 507, 2601 ,549, 6360, 5450 ,0, 0, 0 , - 2600, 2601, 2599 ,549, 5450, 550 ,0, 0, 0 , - 2601, 508, 2602 ,5450, 5449, 547 ,0, 0, 0 , - 2601, 2602, 2599 ,5450, 547, 550 ,0, 0, 0 , - 2604, 510, 2605 ,553, 3279, 5445 ,0, 0, 0 , - 2604, 2605, 2603 ,553, 5445, 554 ,0, 0, 0 , - 2605, 511, 2606 ,5445, 5444, 551 ,0, 0, 0 , - 2605, 2606, 2603 ,5445, 551, 554 ,0, 0, 0 , - 2608, 513, 2609 ,557, 6361, 5437 ,0, 0, 0 , - 2608, 2609, 2607 ,557, 5437, 558 ,0, 0, 0 , - 2609, 514, 2610 ,5437, 3271, 5440 ,0, 0, 0 , - 2609, 2610, 2607 ,5437, 5440, 558 ,0, 0, 0 , - 2610, 515, 2611 ,5440, 5439, 555 ,0, 0, 0 , - 2610, 2611, 2607 ,5440, 555, 558 ,0, 0, 0 , - 2613, 517, 2614 ,561, 6362, 5433 ,0, 0, 0 , - 2613, 2614, 2612 ,561, 5433, 562 ,0, 0, 0 , - 2614, 518, 2615 ,5433, 3263, 559 ,0, 0, 0 , - 2614, 2615, 2612 ,5433, 559, 562 ,0, 0, 0 , - 2617, 520, 2618 ,565, 6363, 5428 ,0, 0, 0 , - 2617, 2618, 2616 ,565, 5428, 566 ,0, 0, 0 , - 2618, 521, 2619 ,5428, 3259, 5431 ,0, 0, 0 , - 2618, 2619, 2616 ,5428, 5431, 566 ,0, 0, 0 , - 2619, 522, 2620 ,5431, 5430, 563 ,0, 0, 0 , - 2619, 2620, 2616 ,5431, 563, 566 ,0, 0, 0 , - 2622, 524, 2623 ,569, 3275, 6364 ,0, 0, 0 , - 2622, 2623, 2621 ,569, 6364, 570 ,0, 0, 0 , - 2623, 525, 2624 ,6364, 6365, 5424 ,0, 0, 0 , - 2623, 2624, 2621 ,6364, 5424, 570 ,0, 0, 0 , - 2624, 526, 2625 ,5424, 5423, 567 ,0, 0, 0 , - 2624, 2625, 2621 ,5424, 567, 570 ,0, 0, 0 , - 2627, 528, 2628 ,573, 3249, 5419 ,0, 0, 0 , - 2627, 2628, 2626 ,573, 5419, 574 ,0, 0, 0 , - 2628, 529, 2629 ,5419, 5418, 571 ,0, 0, 0 , - 2628, 2629, 2626 ,5419, 571, 574 ,0, 0, 0 , - 2631, 531, 2632 ,577, 6366, 5414 ,0, 0, 0 , - 2631, 2632, 2630 ,577, 5414, 578 ,0, 0, 0 , - 2632, 532, 2633 ,5414, 5413, 575 ,0, 0, 0 , - 2632, 2633, 2630 ,5414, 575, 578 ,0, 0, 0 , - 2635, 534, 2636 ,581, 6367, 5408 ,0, 0, 0 , - 2635, 2636, 2634 ,581, 5408, 582 ,0, 0, 0 , - 2636, 535, 2637 ,5408, 5407, 6368 ,0, 0, 0 , - 2636, 2637, 2634 ,5408, 6368, 582 ,0, 0, 0 , - 2637, 536, 2638 ,6368, 6369, 579 ,0, 0, 0 , - 2637, 2638, 2634 ,6368, 579, 582 ,0, 0, 0 , - 2640, 538, 2641 ,585, 3365, 6370 ,0, 0, 0 , - 2640, 2641, 2639 ,585, 6370, 586 ,0, 0, 0 , - 2641, 539, 2642 ,6370, 6371, 5403 ,0, 0, 0 , - 2641, 2642, 2639 ,6370, 5403, 586 ,0, 0, 0 , - 2642, 540, 2643 ,5403, 5402, 583 ,0, 0, 0 , - 2642, 2643, 2639 ,5403, 583, 586 ,0, 0, 0 , - 2645, 542, 2646 ,589, 6372, 5398 ,0, 0, 0 , - 2645, 2646, 2644 ,589, 5398, 590 ,0, 0, 0 , - 2646, 543, 2647 ,5398, 5397, 587 ,0, 0, 0 , - 2646, 2647, 2644 ,5398, 587, 590 ,0, 0, 0 , - 2649, 545, 2650 ,593, 6373, 5394 ,0, 0, 0 , - 2649, 2650, 2648 ,593, 5394, 594 ,0, 0, 0 , - 2650, 546, 2651 ,5394, 5393, 591 ,0, 0, 0 , - 2650, 2651, 2648 ,5394, 591, 594 ,0, 0, 0 , - 2653, 548, 2654 ,597, 5385, 6374 ,0, 0, 0 , - 2653, 2654, 2652 ,597, 6374, 598 ,0, 0, 0 , - 2654, 549, 2655 ,6374, 6375, 5389 ,0, 0, 0 , - 2654, 2655, 2652 ,6374, 5389, 598 ,0, 0, 0 , - 2655, 550, 2656 ,5389, 5388, 595 ,0, 0, 0 , - 2655, 2656, 2652 ,5389, 595, 598 ,0, 0, 0 , - 2658, 552, 2659 ,601, 5381, 6376 ,0, 0, 0 , - 2658, 2659, 2657 ,601, 6376, 602 ,0, 0, 0 , - 2659, 553, 2660 ,6376, 6377, 6378 ,0, 0, 0 , - 2659, 2660, 2657 ,6376, 6378, 602 ,0, 0, 0 , - 2660, 554, 2661 ,6378, 6379, 599 ,0, 0, 0 , - 2660, 2661, 2657 ,6378, 599, 602 ,0, 0, 0 , - 2663, 556, 2664 ,605, 6380, 6381 ,0, 0, 0 , - 2663, 2664, 2662 ,605, 6381, 606 ,0, 0, 0 , - 2664, 557, 2665 ,6381, 6382, 5378 ,0, 0, 0 , - 2664, 2665, 2662 ,6381, 5378, 606 ,0, 0, 0 , - 2665, 558, 2666 ,5378, 5377, 603 ,0, 0, 0 , - 2665, 2666, 2662 ,5378, 603, 606 ,0, 0, 0 , - 2668, 560, 2669 ,609, 3232, 5373 ,0, 0, 0 , - 2668, 2669, 2667 ,609, 5373, 610 ,0, 0, 0 , - 2669, 561, 2670 ,5373, 5372, 607 ,0, 0, 0 , - 2669, 2670, 2667 ,5373, 607, 610 ,0, 0, 0 , - 2672, 563, 2673 ,613, 6383, 5367 ,0, 0, 0 , - 2672, 2673, 2671 ,613, 5367, 614 ,0, 0, 0 , - 2673, 564, 2674 ,5367, 5366, 611 ,0, 0, 0 , - 2673, 2674, 2671 ,5367, 611, 614 ,0, 0, 0 , - 2676, 566, 2677 ,617, 6384, 5359 ,0, 0, 0 , - 2676, 2677, 2675 ,617, 5359, 618 ,0, 0, 0 , - 2677, 567, 2678 ,5359, 5358, 5362 ,0, 0, 0 , - 2677, 2678, 2675 ,5359, 5362, 618 ,0, 0, 0 , - 2678, 568, 2679 ,5362, 5361, 615 ,0, 0, 0 , - 2678, 2679, 2675 ,5362, 615, 618 ,0, 0, 0 , - 2681, 570, 2682 ,621, 6385, 6386 ,0, 0, 0 , - 2681, 2682, 2680 ,621, 6386, 622 ,0, 0, 0 , - 2682, 571, 2683 ,6386, 6387, 6388 ,0, 0, 0 , - 2682, 2683, 2680 ,6386, 6388, 622 ,0, 0, 0 , - 2683, 572, 2684 ,6388, 6389, 619 ,0, 0, 0 , - 2683, 2684, 2680 ,6388, 619, 622 ,0, 0, 0 , - 2686, 574, 2687 ,625, 6390, 6391 ,0, 0, 0 , - 2686, 2687, 2685 ,625, 6391, 626 ,0, 0, 0 , - 2687, 575, 2688 ,6391, 6392, 6393 ,0, 0, 0 , - 2687, 2688, 2685 ,6391, 6393, 626 ,0, 0, 0 , - 2688, 576, 2689 ,6393, 6394, 623 ,0, 0, 0 , - 2688, 2689, 2685 ,6393, 623, 626 ,0, 0, 0 , - 2691, 578, 2692 ,629, 6395, 6396 ,0, 0, 0 , - 2691, 2692, 2690 ,629, 6396, 630 ,0, 0, 0 , - 2692, 579, 2693 ,6396, 6397, 6398 ,0, 0, 0 , - 2692, 2693, 2690 ,6396, 6398, 630 ,0, 0, 0 , - 2693, 580, 2694 ,6398, 3383, 627 ,0, 0, 0 , - 2693, 2694, 2690 ,6398, 627, 630 ,0, 0, 0 , - 2696, 582, 2697 ,633, 6399, 6400 ,0, 0, 0 , - 2696, 2697, 2695 ,633, 6400, 634 ,0, 0, 0 , - 2697, 583, 2698 ,6400, 6401, 6402 ,0, 0, 0 , - 2697, 2698, 2695 ,6400, 6402, 634 ,0, 0, 0 , - 2698, 584, 2699 ,6402, 6403, 631 ,0, 0, 0 , - 2698, 2699, 2695 ,6402, 631, 634 ,0, 0, 0 , - 2701, 586, 2702 ,637, 6404, 6405 ,0, 0, 0 , - 2701, 2702, 2700 ,637, 6405, 638 ,0, 0, 0 , - 2702, 587, 2703 ,6405, 6406, 5352 ,0, 0, 0 , - 2702, 2703, 2700 ,6405, 5352, 638 ,0, 0, 0 , - 2703, 588, 2704 ,5352, 5351, 635 ,0, 0, 0 , - 2703, 2704, 2700 ,5352, 635, 638 ,0, 0, 0 , - 2706, 590, 2707 ,641, 6407, 6408 ,0, 0, 0 , - 2706, 2707, 2705 ,641, 6408, 642 ,0, 0, 0 , - 2707, 591, 2708 ,6408, 6409, 5347 ,0, 0, 0 , - 2707, 2708, 2705 ,6408, 5347, 642 ,0, 0, 0 , - 2708, 592, 2709 ,5347, 5346, 639 ,0, 0, 0 , - 2708, 2709, 2705 ,5347, 639, 642 ,0, 0, 0 , - 2711, 594, 2712 ,645, 6410, 6411 ,0, 0, 0 , - 2711, 2712, 2710 ,645, 6411, 646 ,0, 0, 0 , - 2712, 595, 2713 ,6411, 6412, 5343 ,0, 0, 0 , - 2712, 2713, 2710 ,6411, 5343, 646 ,0, 0, 0 , - 2713, 596, 2714 ,5343, 5342, 643 ,0, 0, 0 , - 2713, 2714, 2710 ,5343, 643, 646 ,0, 0, 0 , - 2716, 598, 2717 ,649, 6413, 6414 ,0, 0, 0 , - 2716, 2717, 2715 ,649, 6414, 650 ,0, 0, 0 , - 2717, 599, 2718 ,6414, 6415, 5338 ,0, 0, 0 , - 2717, 2718, 2715 ,6414, 5338, 650 ,0, 0, 0 , - 2718, 600, 2719 ,5338, 5337, 647 ,0, 0, 0 , - 2718, 2719, 2715 ,5338, 647, 650 ,0, 0, 0 , - 2721, 602, 2722 ,653, 6416, 5334 ,0, 0, 0 , - 2721, 2722, 2720 ,653, 5334, 654 ,0, 0, 0 , - 2722, 603, 2723 ,5334, 5333, 651 ,0, 0, 0 , - 2722, 2723, 2720 ,5334, 651, 654 ,0, 0, 0 , - 2725, 605, 2726 ,657, 3202, 5329 ,0, 0, 0 , - 2725, 2726, 2724 ,657, 5329, 658 ,0, 0, 0 , - 2726, 606, 2727 ,5329, 5328, 655 ,0, 0, 0 , - 2726, 2727, 2724 ,5329, 655, 658 ,0, 0, 0 , - 2729, 608, 2730 ,661, 6417, 5321 ,0, 0, 0 , - 2729, 2730, 2728 ,661, 5321, 662 ,0, 0, 0 , - 2730, 609, 2731 ,5321, 3198, 5325 ,0, 0, 0 , - 2730, 2731, 2728 ,5321, 5325, 662 ,0, 0, 0 , - 2731, 610, 2732 ,5325, 5324, 659 ,0, 0, 0 , - 2731, 2732, 2728 ,5325, 659, 662 ,0, 0, 0 , - 2734, 612, 2735 ,665, 1539, 1538 ,0, 0, 0 , - 2734, 2735, 2733 ,665, 1538, 666 ,0, 0, 0 , - 2735, 613, 2736 ,1538, 4559, 663 ,0, 0, 0 , - 2735, 2736, 2733 ,1538, 663, 666 ,0, 0, 0 , - 2738, 615, 2739 ,669, 6418, 6419 ,0, 0, 0 , - 2738, 2739, 2737 ,669, 6419, 670 ,0, 0, 0 , - 2739, 616, 2740 ,6419, 3214, 667 ,0, 0, 0 , - 2739, 2740, 2737 ,6419, 667, 670 ,0, 0, 0 , - 2742, 618, 2743 ,673, 6420, 5316 ,0, 0, 0 , - 2742, 2743, 2741 ,673, 5316, 674 ,0, 0, 0 , - 2743, 619, 2744 ,5316, 3194, 5319 ,0, 0, 0 , - 2743, 2744, 2741 ,5316, 5319, 674 ,0, 0, 0 , - 2744, 620, 2745 ,5319, 5318, 671 ,0, 0, 0 , - 2744, 2745, 2741 ,5319, 671, 674 ,0, 0, 0 , - 2747, 622, 2748 ,677, 6421, 5310 ,0, 0, 0 , - 2747, 2748, 2746 ,677, 5310, 678 ,0, 0, 0 , - 2748, 623, 2749 ,5310, 3186, 5313 ,0, 0, 0 , - 2748, 2749, 2746 ,5310, 5313, 678 ,0, 0, 0 , - 2749, 624, 2750 ,5313, 5312, 675 ,0, 0, 0 , - 2749, 2750, 2746 ,5313, 675, 678 ,0, 0, 0 , - 2752, 626, 2753 ,681, 6422, 5303 ,0, 0, 0 , - 2752, 2753, 2751 ,681, 5303, 682 ,0, 0, 0 , - 2753, 627, 2754 ,5303, 3179, 5306 ,0, 0, 0 , - 2753, 2754, 2751 ,5303, 5306, 682 ,0, 0, 0 , - 2754, 628, 2755 ,5306, 5305, 679 ,0, 0, 0 , - 2754, 2755, 2751 ,5306, 679, 682 ,0, 0, 0 , - 2757, 630, 2758 ,685, 6423, 5297 ,0, 0, 0 , - 2757, 2758, 2756 ,685, 5297, 686 ,0, 0, 0 , - 2758, 631, 2759 ,5297, 3172, 5300 ,0, 0, 0 , - 2758, 2759, 2756 ,5297, 5300, 686 ,0, 0, 0 , - 2759, 632, 2760 ,5300, 5299, 683 ,0, 0, 0 , - 2759, 2760, 2756 ,5300, 683, 686 ,0, 0, 0 , - 2762, 634, 2763 ,689, 6424, 5291 ,0, 0, 0 , - 2762, 2763, 2761 ,689, 5291, 690 ,0, 0, 0 , - 2763, 635, 2764 ,5291, 3165, 5294 ,0, 0, 0 , - 2763, 2764, 2761 ,5291, 5294, 690 ,0, 0, 0 , - 2764, 636, 2765 ,5294, 5293, 687 ,0, 0, 0 , - 2764, 2765, 2761 ,5294, 687, 690 ,0, 0, 0 , - 2767, 638, 2768 ,693, 3157, 5286 ,0, 0, 0 , - 2767, 2768, 2766 ,693, 5286, 694 ,0, 0, 0 , - 2768, 639, 2769 ,5286, 3153, 5288 ,0, 0, 0 , - 2768, 2769, 2766 ,5286, 5288, 694 ,0, 0, 0 , - 2769, 640, 2770 ,5288, 3161, 691 ,0, 0, 0 , - 2769, 2770, 2766 ,5288, 691, 694 ,0, 0, 0 , - 2772, 642, 2773 ,697, 5280, 5283 ,0, 0, 0 , - 2772, 2773, 2771 ,697, 5283, 698 ,0, 0, 0 , - 2773, 643, 2774 ,5283, 5282, 695 ,0, 0, 0 , - 2773, 2774, 2771 ,5283, 695, 698 ,0, 0, 0 , - 2776, 645, 2777 ,701, 6425, 6426 ,0, 0, 0 , - 2776, 2777, 2775 ,701, 6426, 702 ,0, 0, 0 , - 2777, 646, 2778 ,6426, 6427, 699 ,0, 0, 0 , - 2777, 2778, 2775 ,6426, 699, 702 ,0, 0, 0 , - 2780, 648, 2781 ,705, 5270, 5274 ,0, 0, 0 , - 2780, 2781, 2779 ,705, 5274, 706 ,0, 0, 0 , - 2781, 649, 2782 ,5274, 5273, 703 ,0, 0, 0 , - 2781, 2782, 2779 ,5274, 703, 706 ,0, 0, 0 , - 2784, 651, 2785 ,709, 3221, 6428 ,0, 0, 0 , - 2784, 2785, 2783 ,709, 6428, 710 ,0, 0, 0 , - 2785, 652, 2786 ,6428, 3225, 6429 ,0, 0, 0 , - 2785, 2786, 2783 ,6428, 6429, 710 ,0, 0, 0 , - 2786, 653, 2787 ,6429, 6430, 707 ,0, 0, 0 , - 2786, 2787, 2783 ,6429, 707, 710 ,0, 0, 0 , - 2789, 655, 2790 ,713, 5264, 6431 ,0, 0, 0 , - 2789, 2790, 2788 ,713, 6431, 714 ,0, 0, 0 , - 2790, 656, 2791 ,6431, 6432, 5267 ,0, 0, 0 , - 2790, 2791, 2788 ,6431, 5267, 714 ,0, 0, 0 , - 2791, 657, 2792 ,5267, 5266, 711 ,0, 0, 0 , - 2791, 2792, 2788 ,5267, 711, 714 ,0, 0, 0 , - 2794, 659, 2795 ,717, 6433, 6434 ,0, 0, 0 , - 2794, 2795, 2793 ,717, 6434, 718 ,0, 0, 0 , - 2795, 660, 2796 ,6434, 6435, 5260 ,0, 0, 0 , - 2795, 2796, 2793 ,6434, 5260, 718 ,0, 0, 0 , - 2796, 661, 2797 ,5260, 5259, 715 ,0, 0, 0 , - 2796, 2797, 2793 ,5260, 715, 718 ,0, 0, 0 , - 2799, 663, 2800 ,721, 6436, 6437 ,0, 0, 0 , - 2799, 2800, 2798 ,721, 6437, 722 ,0, 0, 0 , - 2800, 664, 2801 ,6437, 6438, 5256 ,0, 0, 0 , - 2800, 2801, 2798 ,6437, 5256, 722 ,0, 0, 0 , - 2801, 665, 2802 ,5256, 5255, 719 ,0, 0, 0 , - 2801, 2802, 2798 ,5256, 719, 722 ,0, 0, 0 , - 2804, 667, 2805 ,725, 6439, 6440 ,0, 0, 0 , - 2804, 2805, 2803 ,725, 6440, 726 ,0, 0, 0 , - 2805, 668, 2806 ,6440, 6441, 5252 ,0, 0, 0 , - 2805, 2806, 2803 ,6440, 5252, 726 ,0, 0, 0 , - 2806, 669, 2807 ,5252, 5251, 723 ,0, 0, 0 , - 2806, 2807, 2803 ,5252, 723, 726 ,0, 0, 0 , - 2809, 671, 2810 ,729, 6442, 5248 ,0, 0, 0 , - 2809, 2810, 2808 ,729, 5248, 730 ,0, 0, 0 , - 2810, 672, 2811 ,5248, 5247, 727 ,0, 0, 0 , - 2810, 2811, 2808 ,5248, 727, 730 ,0, 0, 0 , - 2813, 674, 2814 ,733, 6443, 5244 ,0, 0, 0 , - 2813, 2814, 2812 ,733, 5244, 734 ,0, 0, 0 , - 2814, 675, 2815 ,5244, 5243, 731 ,0, 0, 0 , - 2814, 2815, 2812 ,5244, 731, 734 ,0, 0, 0 , - 2817, 677, 2818 ,737, 5225, 4943 ,0, 0, 0 , - 2817, 2818, 2816 ,737, 4943, 738 ,0, 0, 0 , - 2818, 678, 2819 ,4943, 4942, 5229 ,0, 0, 0 , - 2818, 2819, 2816 ,4943, 5229, 738 ,0, 0, 0 , - 2819, 679, 2820 ,5229, 5228, 5233 ,0, 0, 0 , - 2819, 2820, 2816 ,5229, 5233, 738 ,0, 0, 0 , - 2820, 680, 2821 ,5233, 5232, 5235 ,0, 0, 0 , - 2820, 2821, 2816 ,5233, 5235, 738 ,0, 0, 0 , - 2821, 681, 2822 ,5235, 3125, 5239 ,0, 0, 0 , - 2821, 2822, 2816 ,5235, 5239, 738 ,0, 0, 0 , - 2822, 682, 2823 ,5239, 5238, 6444 ,0, 0, 0 , - 2822, 2823, 2816 ,5239, 6444, 738 ,0, 0, 0 , - 2823, 683, 2824 ,6444, 6445, 6446 ,0, 0, 0 , - 2823, 2824, 2816 ,6444, 6446, 738 ,0, 0, 0 , - 2824, 684, 2825 ,6446, 6447, 6448 ,0, 0, 0 , - 2824, 2825, 2816 ,6446, 6448, 738 ,0, 0, 0 , - 2825, 685, 2826 ,6448, 6449, 6450 ,0, 0, 0 , - 2825, 2826, 2816 ,6448, 6450, 738 ,0, 0, 0 , - 2826, 686, 2827 ,6450, 6451, 735 ,0, 0, 0 , - 2826, 2827, 2816 ,6450, 735, 738 ,0, 0, 0 , - 2829, 688, 2830 ,741, 5222, 6452 ,0, 0, 0 , - 2829, 2830, 2828 ,741, 6452, 742 ,0, 0, 0 , - 2830, 689, 2831 ,6452, 1085, 739 ,0, 0, 0 , - 2830, 2831, 2828 ,6452, 739, 742 ,0, 0, 0 , - 2833, 691, 2834 ,745, 5207, 6453 ,0, 0, 0 , - 2833, 2834, 2832 ,745, 6453, 746 ,0, 0, 0 , - 2834, 692, 2835 ,6453, 6454, 5211 ,0, 0, 0 , - 2834, 2835, 2832 ,6453, 5211, 746 ,0, 0, 0 , - 2835, 693, 2836 ,5211, 5210, 743 ,0, 0, 0 , - 2835, 2836, 2832 ,5211, 743, 746 ,0, 0, 0 , - 2838, 695, 2839 ,749, 6455, 6456 ,0, 0, 0 , - 2838, 2839, 2837 ,749, 6456, 750 ,0, 0, 0 , - 2839, 696, 2840 ,6456, 6457, 6458 ,0, 0, 0 , - 2839, 2840, 2837 ,6456, 6458, 750 ,0, 0, 0 , - 2840, 697, 2841 ,6458, 6459, 747 ,0, 0, 0 , - 2840, 2841, 2837 ,6458, 747, 750 ,0, 0, 0 , - 2843, 699, 2844 ,753, 6460, 6461 ,0, 0, 0 , - 2843, 2844, 2842 ,753, 6461, 754 ,0, 0, 0 , - 2844, 700, 2845 ,6461, 6462, 6463 ,0, 0, 0 , - 2844, 2845, 2842 ,6461, 6463, 754 ,0, 0, 0 , - 2845, 701, 2846 ,6463, 6464, 751 ,0, 0, 0 , - 2845, 2846, 2842 ,6463, 751, 754 ,0, 0, 0 , - 2848, 703, 2849 ,757, 6465, 6466 ,0, 0, 0 , - 2848, 2849, 2847 ,757, 6466, 758 ,0, 0, 0 , - 2849, 704, 2850 ,6466, 6467, 6468 ,0, 0, 0 , - 2849, 2850, 2847 ,6466, 6468, 758 ,0, 0, 0 , - 2850, 705, 2851 ,6468, 3236, 755 ,0, 0, 0 , - 2850, 2851, 2847 ,6468, 755, 758 ,0, 0, 0 , - 2853, 707, 2854 ,761, 6469, 6470 ,0, 0, 0 , - 2853, 2854, 2852 ,761, 6470, 762 ,0, 0, 0 , - 2854, 708, 2855 ,6470, 6471, 6472 ,0, 0, 0 , - 2854, 2855, 2852 ,6470, 6472, 762 ,0, 0, 0 , - 2855, 709, 2856 ,6472, 6473, 759 ,0, 0, 0 , - 2855, 2856, 2852 ,6472, 759, 762 ,0, 0, 0 , - 2858, 711, 2859 ,765, 6474, 6475 ,0, 0, 0 , - 2858, 2859, 2857 ,765, 6475, 766 ,0, 0, 0 , - 2859, 712, 2860 ,6475, 6476, 5199 ,0, 0, 0 , - 2859, 2860, 2857 ,6475, 5199, 766 ,0, 0, 0 , - 2860, 713, 2861 ,5199, 5198, 763 ,0, 0, 0 , - 2860, 2861, 2857 ,5199, 763, 766 ,0, 0, 0 , - 2863, 715, 2864 ,769, 3289, 6477 ,0, 0, 0 , - 2863, 2864, 2862 ,769, 6477, 770 ,0, 0, 0 , - 2864, 716, 2865 ,6477, 6478, 6479 ,0, 0, 0 , - 2864, 2865, 2862 ,6477, 6479, 770 ,0, 0, 0 , - 2865, 717, 2866 ,6479, 6480, 767 ,0, 0, 0 , - 2865, 2866, 2862 ,6479, 767, 770 ,0, 0, 0 , - 2868, 719, 2869 ,773, 6481, 6482 ,0, 0, 0 , - 2868, 2869, 2867 ,773, 6482, 774 ,0, 0, 0 , - 2869, 720, 2870 ,6482, 6483, 6484 ,0, 0, 0 , - 2869, 2870, 2867 ,6482, 6484, 774 ,0, 0, 0 , - 2870, 721, 2871 ,6484, 6485, 5195 ,0, 0, 0 , - 2870, 2871, 2867 ,6484, 5195, 774 ,0, 0, 0 , - 2871, 722, 2872 ,5195, 5194, 771 ,0, 0, 0 , - 2871, 2872, 2867 ,5195, 771, 774 ,0, 0, 0 , - 2874, 724, 2875 ,777, 6486, 6487 ,0, 0, 0 , - 2874, 2875, 2873 ,777, 6487, 778 ,0, 0, 0 , - 2875, 725, 2876 ,6487, 6488, 775 ,0, 0, 0 , - 2875, 2876, 2873 ,6487, 775, 778 ,0, 0, 0 , - 2878, 727, 2879 ,781, 6489, 6490 ,0, 0, 0 , - 2878, 2879, 2877 ,781, 6490, 782 ,0, 0, 0 , - 2879, 728, 2880 ,6490, 6491, 779 ,0, 0, 0 , - 2879, 2880, 2877 ,6490, 779, 782 ,0, 0, 0 , - 2882, 730, 2883 ,785, 6492, 6493 ,0, 0, 0 , - 2882, 2883, 2881 ,785, 6493, 786 ,0, 0, 0 , - 2883, 731, 2884 ,6493, 6494, 6495 ,0, 0, 0 , - 2883, 2884, 2881 ,6493, 6495, 786 ,0, 0, 0 , - 2884, 732, 2885 ,6495, 3190, 783 ,0, 0, 0 , - 2884, 2885, 2881 ,6495, 783, 786 ,0, 0, 0 , - 2887, 734, 2888 ,789, 3332, 6496 ,0, 0, 0 , - 2887, 2888, 2886 ,789, 6496, 790 ,0, 0, 0 , - 2888, 735, 2889 ,6496, 6497, 5187 ,0, 0, 0 , - 2888, 2889, 2886 ,6496, 5187, 790 ,0, 0, 0 , - 2889, 736, 2890 ,5187, 5186, 787 ,0, 0, 0 , - 2889, 2890, 2886 ,5187, 787, 790 ,0, 0, 0 , - 2892, 738, 2893 ,793, 6498, 6499 ,0, 0, 0 , - 2892, 2893, 2891 ,793, 6499, 794 ,0, 0, 0 , - 2893, 739, 2894 ,6499, 6500, 5182 ,0, 0, 0 , - 2893, 2894, 2891 ,6499, 5182, 794 ,0, 0, 0 , - 2894, 740, 2895 ,5182, 5181, 791 ,0, 0, 0 , - 2894, 2895, 2891 ,5182, 791, 794 ,0, 0, 0 , - 2897, 742, 2898 ,797, 6501, 5178 ,0, 0, 0 , - 2897, 2898, 2896 ,797, 5178, 798 ,0, 0, 0 , - 2898, 743, 2899 ,5178, 5177, 795 ,0, 0, 0 , - 2898, 2899, 2896 ,5178, 795, 798 ,0, 0, 0 , - 2901, 745, 2902 ,801, 6502, 6503 ,0, 0, 0 , - 2901, 2902, 2900 ,801, 6503, 802 ,0, 0, 0 , - 2902, 746, 2903 ,6503, 6504, 6505 ,0, 0, 0 , - 2902, 2903, 2900 ,6503, 6505, 802 ,0, 0, 0 , - 2903, 747, 2904 ,6505, 6506, 799 ,0, 0, 0 , - 2903, 2904, 2900 ,6505, 799, 802 ,0, 0, 0 , - 2906, 749, 2907 ,805, 6507, 6508 ,0, 0, 0 , - 2906, 2907, 2905 ,805, 6508, 806 ,0, 0, 0 , - 2907, 750, 2908 ,6508, 6509, 5173 ,0, 0, 0 , - 2907, 2908, 2905 ,6508, 5173, 806 ,0, 0, 0 , - 2908, 751, 2909 ,5173, 5172, 803 ,0, 0, 0 , - 2908, 2909, 2905 ,5173, 803, 806 ,0, 0, 0 , - 2911, 753, 2912 ,809, 3098, 6510 ,0, 0, 0 , - 2911, 2912, 2910 ,809, 6510, 810 ,0, 0, 0 , - 2912, 754, 2913 ,6510, 3357, 807 ,0, 0, 0 , - 2912, 2913, 2910 ,6510, 807, 810 ,0, 0, 0 , - 2915, 756, 2916 ,813, 3087, 5168 ,0, 0, 0 , - 2915, 2916, 2914 ,813, 5168, 814 ,0, 0, 0 , - 2916, 757, 2917 ,5168, 5167, 811 ,0, 0, 0 , - 2916, 2917, 2914 ,5168, 811, 814 ,0, 0, 0 , - 2919, 759, 2920 ,817, 3080, 5162 ,0, 0, 0 , - 2919, 2920, 2918 ,817, 5162, 818 ,0, 0, 0 , - 2920, 760, 2921 ,5162, 3091, 6511 ,0, 0, 0 , - 2920, 2921, 2918 ,5162, 6511, 818 ,0, 0, 0 , - 2921, 761, 2922 ,6511, 6512, 815 ,0, 0, 0 , - 2921, 2922, 2918 ,6511, 815, 818 ,0, 0, 0 , - 2924, 763, 2925 ,821, 5156, 6513 ,0, 0, 0 , - 2924, 2925, 2923 ,821, 6513, 822 ,0, 0, 0 , - 2925, 764, 2926 ,6513, 6514, 819 ,0, 0, 0 , - 2925, 2926, 2923 ,6513, 819, 822 ,0, 0, 0 , - 2928, 763, 2924 ,825, 5156, 821 ,0, 0, 0 , - 2928, 2924, 2927 ,825, 821, 826 ,0, 0, 0 , - 2924, 762, 2929 ,821, 820, 823 ,0, 0, 0 , - 2924, 2929, 2927 ,821, 823, 826 ,0, 0, 0 , - 2931, 767, 2932 ,829, 6515, 6516 ,0, 0, 0 , - 2931, 2932, 2930 ,829, 6516, 830 ,0, 0, 0 , - 2932, 768, 2933 ,6516, 6517, 827 ,0, 0, 0 , - 2932, 2933, 2930 ,6516, 827, 830 ,0, 0, 0 , - 2935, 770, 2936 ,833, 6518, 6519 ,0, 0, 0 , - 2935, 2936, 2934 ,833, 6519, 834 ,0, 0, 0 , - 2936, 771, 2937 ,6519, 6520, 6521 ,0, 0, 0 , - 2936, 2937, 2934 ,6519, 6521, 834 ,0, 0, 0 , - 2937, 772, 2938 ,6521, 6522, 831 ,0, 0, 0 , - 2937, 2938, 2934 ,6521, 831, 834 ,0, 0, 0 , - 2940, 774, 2941 ,837, 3076, 5151 ,0, 0, 0 , - 2940, 2941, 2939 ,837, 5151, 838 ,0, 0, 0 , - 2941, 775, 2942 ,5151, 5150, 835 ,0, 0, 0 , - 2941, 2942, 2939 ,5151, 835, 838 ,0, 0, 0 , - 2944, 777, 2945 ,841, 3068, 5145 ,0, 0, 0 , - 2944, 2945, 2943 ,841, 5145, 842 ,0, 0, 0 , - 2945, 778, 2946 ,5145, 5144, 6523 ,0, 0, 0 , - 2945, 2946, 2943 ,5145, 6523, 842 ,0, 0, 0 , - 2946, 779, 2947 ,6523, 6524, 839 ,0, 0, 0 , - 2946, 2947, 2943 ,6523, 839, 842 ,0, 0, 0 , - 2949, 781, 2950 ,845, 3064, 5136 ,0, 0, 0 , - 2949, 2950, 2948 ,845, 5136, 846 ,0, 0, 0 , - 2950, 782, 2951 ,5136, 3060, 5140 ,0, 0, 0 , - 2950, 2951, 2948 ,5136, 5140, 846 ,0, 0, 0 , - 2951, 783, 2952 ,5140, 5139, 843 ,0, 0, 0 , - 2951, 2952, 2948 ,5140, 843, 846 ,0, 0, 0 , - 2954, 785, 2955 ,849, 3056, 5133 ,0, 0, 0 , - 2954, 2955, 2953 ,849, 5133, 850 ,0, 0, 0 , - 2955, 786, 2956 ,5133, 5132, 847 ,0, 0, 0 , - 2955, 2956, 2953 ,5133, 847, 850 ,0, 0, 0 , - 2958, 788, 2959 ,853, 3048, 5127 ,0, 0, 0 , - 2958, 2959, 2957 ,853, 5127, 854 ,0, 0, 0 , - 2959, 789, 2960 ,5127, 5126, 6525 ,0, 0, 0 , - 2959, 2960, 2957 ,5127, 6525, 854 ,0, 0, 0 , - 2960, 790, 2961 ,6525, 3072, 851 ,0, 0, 0 , - 2960, 2961, 2957 ,6525, 851, 854 ,0, 0, 0 , - 2963, 792, 2964 ,857, 6526, 6527 ,0, 0, 0 , - 2963, 2964, 2962 ,857, 6527, 858 ,0, 0, 0 , - 2964, 793, 2965 ,6527, 6528, 5122 ,0, 0, 0 , - 2964, 2965, 2962 ,6527, 5122, 858 ,0, 0, 0 , - 2965, 794, 2966 ,5122, 5121, 855 ,0, 0, 0 , - 2965, 2966, 2962 ,5122, 855, 858 ,0, 0, 0 , - 2968, 796, 2969 ,861, 6529, 5113 ,0, 0, 0 , - 2968, 2969, 2967 ,861, 5113, 862 ,0, 0, 0 , - 2969, 797, 2970 ,5113, 3040, 5117 ,0, 0, 0 , - 2969, 2970, 2967 ,5113, 5117, 862 ,0, 0, 0 , - 2970, 798, 2971 ,5117, 5116, 859 ,0, 0, 0 , - 2970, 2971, 2967 ,5117, 859, 862 ,0, 0, 0 , - 2973, 800, 2974 ,865, 6530, 6531 ,0, 0, 0 , - 2973, 2974, 2972 ,865, 6531, 866 ,0, 0, 0 , - 2974, 801, 2975 ,6531, 6532, 5111 ,0, 0, 0 , - 2974, 2975, 2972 ,6531, 5111, 866 ,0, 0, 0 , - 2975, 802, 2976 ,5111, 5110, 863 ,0, 0, 0 , - 2975, 2976, 2972 ,5111, 863, 866 ,0, 0, 0 , - 2978, 804, 2979 ,869, 6533, 6534 ,0, 0, 0 , - 2978, 2979, 2977 ,869, 6534, 870 ,0, 0, 0 , - 2979, 805, 2980 ,6534, 6535, 6536 ,0, 0, 0 , - 2979, 2980, 2977 ,6534, 6536, 870 ,0, 0, 0 , - 2980, 806, 2981 ,6536, 6537, 867 ,0, 0, 0 , - 2980, 2981, 2977 ,6536, 867, 870 ,0, 0, 0 , - 2983, 808, 2984 ,873, 6538, 6539 ,0, 0, 0 , - 2983, 2984, 2982 ,873, 6539, 874 ,0, 0, 0 , - 2984, 809, 2985 ,6539, 6540, 5104 ,0, 0, 0 , - 2984, 2985, 2982 ,6539, 5104, 874 ,0, 0, 0 , - 2985, 810, 2986 ,5104, 5103, 871 ,0, 0, 0 , - 2985, 2986, 2982 ,5104, 871, 874 ,0, 0, 0 , - 2988, 812, 2989 ,877, 5099, 6541 ,0, 0, 0 , - 2988, 2989, 2987 ,877, 6541, 878 ,0, 0, 0 , - 2989, 813, 2990 ,6541, 6542, 6543 ,0, 0, 0 , - 2989, 2990, 2987 ,6541, 6543, 878 ,0, 0, 0 , - 2990, 814, 2991 ,6543, 6544, 875 ,0, 0, 0 , - 2990, 2991, 2987 ,6543, 875, 878 ,0, 0, 0 , - 2993, 816, 2994 ,881, 6545, 6546 ,0, 0, 0 , - 2993, 2994, 2992 ,881, 6546, 882 ,0, 0, 0 , - 2994, 817, 2995 ,6546, 6547, 5096 ,0, 0, 0 , - 2994, 2995, 2992 ,6546, 5096, 882 ,0, 0, 0 , - 2995, 818, 2996 ,5096, 5095, 879 ,0, 0, 0 , - 2995, 2996, 2992 ,5096, 879, 882 ,0, 0, 0 , - 2998, 820, 2999 ,885, 6548, 6549 ,0, 0, 0 , - 2998, 2999, 2997 ,885, 6549, 886 ,0, 0, 0 , - 2999, 821, 3000 ,6549, 6550, 6551 ,0, 0, 0 , - 2999, 3000, 2997 ,6549, 6551, 886 ,0, 0, 0 , - 3000, 822, 3001 ,6551, 6552, 5092 ,0, 0, 0 , - 3000, 3001, 2997 ,6551, 5092, 886 ,0, 0, 0 , - 3001, 823, 3002 ,5092, 5091, 883 ,0, 0, 0 , - 3001, 3002, 2997 ,5092, 883, 886 ,0, 0, 0 , - 3004, 825, 3005 ,889, 6553, 5084 ,0, 0, 0 , - 3004, 3005, 3003 ,889, 5084, 890 ,0, 0, 0 , - 3005, 826, 3006 ,5084, 3025, 5088 ,0, 0, 0 , - 3005, 3006, 3003 ,5084, 5088, 890 ,0, 0, 0 , - 3006, 827, 3007 ,5088, 5087, 887 ,0, 0, 0 , - 3006, 3007, 3003 ,5088, 887, 890 ,0, 0, 0 , - 3009, 829, 3010 ,893, 5082, 6554 ,0, 0, 0 , - 3009, 3010, 3008 ,893, 6554, 894 ,0, 0, 0 , - 3010, 830, 3011 ,6554, 6555, 6556 ,0, 0, 0 , - 3010, 3011, 3008 ,6554, 6556, 894 ,0, 0, 0 , - 3011, 831, 3012 ,6556, 6557, 891 ,0, 0, 0 , - 3011, 3012, 3008 ,6556, 891, 894 ,0, 0, 0 , - 3014, 833, 3015 ,897, 6558, 5075 ,0, 0, 0 , - 3014, 3015, 3013 ,897, 5075, 898 ,0, 0, 0 , - 3015, 834, 3016 ,5075, 5074, 5078 ,0, 0, 0 , - 3015, 3016, 3013 ,5075, 5078, 898 ,0, 0, 0 , - 3016, 835, 3017 ,5078, 5077, 895 ,0, 0, 0 , - 3016, 3017, 3013 ,5078, 895, 898 ,0, 0, 0 , - 3019, 837, 3020 ,901, 6559, 6560 ,0, 0, 0 , - 3019, 3020, 3018 ,901, 6560, 902 ,0, 0, 0 , - 3020, 838, 3021 ,6560, 6561, 5069 ,0, 0, 0 , - 3020, 3021, 3018 ,6560, 5069, 902 ,0, 0, 0 , - 3021, 839, 3022 ,5069, 5068, 899 ,0, 0, 0 , - 3021, 3022, 3018 ,5069, 899, 902 ,0, 0, 0 , - 3024, 841, 3025 ,905, 5065, 6562 ,0, 0, 0 , - 3024, 3025, 3023 ,905, 6562, 906 ,0, 0, 0 , - 3025, 842, 3026 ,6562, 6563, 6564 ,0, 0, 0 , - 3025, 3026, 3023 ,6562, 6564, 906 ,0, 0, 0 , - 3026, 843, 3027 ,6564, 6565, 903 ,0, 0, 0 , - 3026, 3027, 3023 ,6564, 903, 906 ,0, 0, 0 , - 3029, 845, 3030 ,909, 3015, 5056 ,0, 0, 0 , - 3029, 3030, 3028 ,909, 5056, 910 ,0, 0, 0 , - 3030, 846, 3031 ,5056, 3011, 5060 ,0, 0, 0 , - 3030, 3031, 3028 ,5056, 5060, 910 ,0, 0, 0 , - 3031, 847, 3032 ,5060, 5059, 907 ,0, 0, 0 , - 3031, 3032, 3028 ,5060, 907, 910 ,0, 0, 0 , - 3034, 849, 3035 ,913, 6566, 6567 ,0, 0, 0 , - 3034, 3035, 3033 ,913, 6567, 914 ,0, 0, 0 , - 3035, 850, 3036 ,6567, 6568, 5053 ,0, 0, 0 , - 3035, 3036, 3033 ,6567, 5053, 914 ,0, 0, 0 , - 3036, 851, 3037 ,5053, 5052, 911 ,0, 0, 0 , - 3036, 3037, 3033 ,5053, 911, 914 ,0, 0, 0 , - 3039, 853, 3040 ,917, 6569, 5048 ,0, 0, 0 , - 3039, 3040, 3038 ,917, 5048, 918 ,0, 0, 0 , - 3040, 854, 3041 ,5048, 5047, 915 ,0, 0, 0 , - 3040, 3041, 3038 ,5048, 915, 918 ,0, 0, 0 , - 3043, 856, 3044 ,921, 6570, 5043 ,0, 0, 0 , - 3043, 3044, 3042 ,921, 5043, 922 ,0, 0, 0 , - 3044, 857, 3045 ,5043, 3052, 919 ,0, 0, 0 , - 3044, 3045, 3042 ,5043, 919, 922 ,0, 0, 0 , - 3047, 859, 3048 ,925, 6571, 5041 ,0, 0, 0 , - 3047, 3048, 3046 ,925, 5041, 926 ,0, 0, 0 , - 3048, 860, 3049 ,5041, 5040, 923 ,0, 0, 0 , - 3048, 3049, 3046 ,5041, 923, 926 ,0, 0, 0 , - 3051, 862, 3052 ,929, 6572, 5034 ,0, 0, 0 , - 3051, 3052, 3050 ,929, 5034, 930 ,0, 0, 0 , - 3052, 863, 3053 ,5034, 2996, 5036 ,0, 0, 0 , - 3052, 3053, 3050 ,5034, 5036, 930 ,0, 0, 0 , - 3053, 864, 3054 ,5036, 3044, 927 ,0, 0, 0 , - 3053, 3054, 3050 ,5036, 927, 930 ,0, 0, 0 , - 3056, 866, 3057 ,933, 2989, 5032 ,0, 0, 0 , - 3056, 3057, 3055 ,933, 5032, 934 ,0, 0, 0 , - 3057, 867, 3058 ,5032, 5031, 931 ,0, 0, 0 , - 3057, 3058, 3055 ,5032, 931, 934 ,0, 0, 0 , - 3060, 869, 3061 ,937, 6573, 5022 ,0, 0, 0 , - 3060, 3061, 3059 ,937, 5022, 938 ,0, 0, 0 , - 3061, 870, 3062 ,5022, 2985, 5026 ,0, 0, 0 , - 3061, 3062, 3059 ,5022, 5026, 938 ,0, 0, 0 , - 3062, 871, 3063 ,5026, 5025, 935 ,0, 0, 0 , - 3062, 3063, 3059 ,5026, 935, 938 ,0, 0, 0 , - 3065, 874, 3066 ,941, 6574, 6575 ,0, 0, 0 , - 3065, 3066, 3064 ,941, 6575, 942 ,0, 0, 0 , - 3066, 875, 3067 ,6575, 6576, 939 ,0, 0, 0 , - 3066, 3067, 3064 ,6575, 939, 942 ,0, 0, 0 , - 3069, 877, 3070 ,945, 6577, 6578 ,0, 0, 0 , - 3069, 3070, 3068 ,945, 6578, 946 ,0, 0, 0 , - 3070, 878, 3071 ,6578, 6579, 943 ,0, 0, 0 , - 3070, 3071, 3068 ,6578, 943, 946 ,0, 0, 0 , - 3073, 880, 3074 ,949, 6580, 6581 ,0, 0, 0 , - 3073, 3074, 3072 ,949, 6581, 950 ,0, 0, 0 , - 3074, 881, 3075 ,6581, 6582, 947 ,0, 0, 0 , - 3074, 3075, 3072 ,6581, 947, 950 ,0, 0, 0 , - 3077, 883, 3078 ,953, 3036, 6583 ,0, 0, 0 , - 3077, 3078, 3076 ,953, 6583, 954 ,0, 0, 0 , - 3078, 884, 3079 ,6583, 6584, 6585 ,0, 0, 0 , - 3078, 3079, 3076 ,6583, 6585, 954 ,0, 0, 0 , - 3079, 885, 3080 ,6585, 6586, 6587 ,0, 0, 0 , - 3079, 3080, 3076 ,6585, 6587, 954 ,0, 0, 0 , - 3080, 886, 3081 ,6587, 6588, 951 ,0, 0, 0 , - 3080, 3081, 3076 ,6587, 951, 954 ,0, 0, 0 , - 3083, 888, 3084 ,957, 5002, 6589 ,0, 0, 0 , - 3083, 3084, 3082 ,957, 6589, 958 ,0, 0, 0 , - 3084, 889, 3085 ,6589, 6590, 955 ,0, 0, 0 , - 3084, 3085, 3082 ,6589, 955, 958 ,0, 0, 0 , - 3087, 891, 3088 ,961, 6591, 4999 ,0, 0, 0 , - 3087, 3088, 3086 ,961, 4999, 962 ,0, 0, 0 , - 3088, 892, 3089 ,4999, 3007, 6592 ,0, 0, 0 , - 3088, 3089, 3086 ,4999, 6592, 962 ,0, 0, 0 , - 3089, 893, 3090 ,6592, 3029, 959 ,0, 0, 0 , - 3089, 3090, 3086 ,6592, 959, 962 ,0, 0, 0 , - 3092, 895, 3093 ,965, 6593, 4997 ,0, 0, 0 , - 3092, 3093, 3091 ,965, 4997, 966 ,0, 0, 0 , - 3093, 896, 3094 ,4997, 4996, 6594 ,0, 0, 0 , - 3093, 3094, 3091 ,4997, 6594, 966 ,0, 0, 0 , - 3094, 897, 3095 ,6594, 3000, 963 ,0, 0, 0 , - 3094, 3095, 3091 ,6594, 963, 966 ,0, 0, 0 , - 3097, 899, 3098 ,969, 6595, 6596 ,0, 0, 0 , - 3097, 3098, 3096 ,969, 6596, 970 ,0, 0, 0 , - 3098, 900, 3099 ,6596, 6597, 6598 ,0, 0, 0 , - 3098, 3099, 3096 ,6596, 6598, 970 ,0, 0, 0 , - 3099, 901, 3100 ,6598, 6599, 6600 ,0, 0, 0 , - 3099, 3100, 3096 ,6598, 6600, 970 ,0, 0, 0 , - 3100, 902, 3101 ,6600, 6601, 6602 ,0, 0, 0 , - 3100, 3101, 3096 ,6600, 6602, 970 ,0, 0, 0 , - 3101, 903, 3102 ,6602, 6603, 967 ,0, 0, 0 , - 3101, 3102, 3096 ,6602, 967, 970 ,0, 0, 0 , - 3104, 905, 3105 ,973, 6604, 4991 ,0, 0, 0 , - 3104, 3105, 3103 ,973, 4991, 974 ,0, 0, 0 , - 3105, 906, 3106 ,4991, 4990, 971 ,0, 0, 0 , - 3105, 3106, 3103 ,4991, 971, 974 ,0, 0, 0 , - 3108, 908, 3109 ,977, 6605, 6606 ,0, 0, 0 , - 3108, 3109, 3107 ,977, 6606, 978 ,0, 0, 0 , - 3109, 909, 3110 ,6606, 6607, 6608 ,0, 0, 0 , - 3109, 3110, 3107 ,6606, 6608, 978 ,0, 0, 0 , - 3110, 910, 3111 ,6608, 6609, 6610 ,0, 0, 0 , - 3110, 3111, 3107 ,6608, 6610, 978 ,0, 0, 0 , - 3111, 911, 3112 ,6610, 6611, 6612 ,0, 0, 0 , - 3111, 3112, 3107 ,6610, 6612, 978 ,0, 0, 0 , - 3112, 912, 3113 ,6612, 6613, 975 ,0, 0, 0 , - 3112, 3113, 3107 ,6612, 975, 978 ,0, 0, 0 , - 3115, 914, 3116 ,981, 3867, 6614 ,0, 0, 0 , - 3115, 3116, 3114 ,981, 6614, 982 ,0, 0, 0 , - 3116, 915, 3117 ,6614, 6615, 4982 ,0, 0, 0 , - 3116, 3117, 3114 ,6614, 4982, 982 ,0, 0, 0 , - 3117, 916, 3118 ,4982, 4981, 979 ,0, 0, 0 , - 3117, 3118, 3114 ,4982, 979, 982 ,0, 0, 0 , - 3120, 918, 3121 ,985, 6616, 4978 ,0, 0, 0 , - 3120, 3121, 3119 ,985, 4978, 986 ,0, 0, 0 , - 3121, 919, 3122 ,4978, 4977, 983 ,0, 0, 0 , - 3121, 3122, 3119 ,4978, 983, 986 ,0, 0, 0 , - 3124, 921, 3125 ,989, 6617, 4972 ,0, 0, 0 , - 3124, 3125, 3123 ,989, 4972, 990 ,0, 0, 0 , - 3125, 922, 3126 ,4972, 4971, 6618 ,0, 0, 0 , - 3125, 3126, 3123 ,4972, 6618, 990 ,0, 0, 0 , - 3126, 923, 3127 ,6618, 6619, 987 ,0, 0, 0 , - 3126, 3127, 3123 ,6618, 987, 990 ,0, 0, 0 , - 3129, 925, 3130 ,993, 4966, 6620 ,0, 0, 0 , - 3129, 3130, 3128 ,993, 6620, 994 ,0, 0, 0 , - 3130, 926, 3131 ,6620, 6621, 991 ,0, 0, 0 , - 3130, 3131, 3128 ,6620, 991, 994 ,0, 0, 0 , - 3133, 928, 3134 ,997, 6622, 6623 ,0, 0, 0 , - 3133, 3134, 3132 ,997, 6623, 998 ,0, 0, 0 , - 3134, 929, 3135 ,6623, 6624, 995 ,0, 0, 0 , - 3134, 3135, 3132 ,6623, 995, 998 ,0, 0, 0 , - 3137, 931, 3138 ,1001, 6625, 6626 ,0, 0, 0 , - 3137, 3138, 3136 ,1001, 6626, 1002 ,0, 0, 0 , - 3138, 932, 3139 ,6626, 6627, 6628 ,0, 0, 0 , - 3138, 3139, 3136 ,6626, 6628, 1002 ,0, 0, 0 , - 3139, 933, 3140 ,6628, 6629, 999 ,0, 0, 0 , - 3139, 3140, 3136 ,6628, 999, 1002 ,0, 0, 0 , - 3142, 935, 3143 ,1005, 6630, 6631 ,0, 0, 0 , - 3142, 3143, 3141 ,1005, 6631, 1006 ,0, 0, 0 , - 3143, 936, 3144 ,6631, 6632, 1003 ,0, 0, 0 , - 3143, 3144, 3141 ,6631, 1003, 1006 ,0, 0, 0 , - 3146, 938, 3147 ,1009, 6633, 4957 ,0, 0, 0 , - 3146, 3147, 3145 ,1009, 4957, 1010 ,0, 0, 0 , - 3147, 939, 3148 ,4957, 4956, 1007 ,0, 0, 0 , - 3147, 3148, 3145 ,4957, 1007, 1010 ,0, 0, 0 , - 3150, 941, 3151 ,1013, 6634, 6635 ,0, 0, 0 , - 3150, 3151, 3149 ,1013, 6635, 1014 ,0, 0, 0 , - 3151, 942, 3152 ,6635, 6636, 1011 ,0, 0, 0 , - 3151, 3152, 3149 ,6635, 1011, 1014 ,0, 0, 0 , - 3154, 944, 3155 ,1017, 6637, 6638 ,0, 0, 0 , - 3154, 3155, 3153 ,1017, 6638, 1018 ,0, 0, 0 , - 3155, 945, 3156 ,6638, 6639, 1015 ,0, 0, 0 , - 3155, 3156, 3153 ,6638, 1015, 1018 ,0, 0, 0 , - 3158, 947, 3159 ,1021, 6640, 6641 ,0, 0, 0 , - 3158, 3159, 3157 ,1021, 6641, 1022 ,0, 0, 0 , - 3159, 948, 3160 ,6641, 6642, 6643 ,0, 0, 0 , - 3159, 3160, 3157 ,6641, 6643, 1022 ,0, 0, 0 , - 3160, 949, 3161 ,6643, 6644, 1019 ,0, 0, 0 , - 3160, 3161, 3157 ,6643, 1019, 1022 ,0, 0, 0 , - 3163, 950, 3164 ,1025, 6645, 6646 ,0, 0, 0 , - 3163, 3164, 3162 ,1025, 6646, 1026 ,0, 0, 0 , - 3164, 951, 3165 ,6646, 6647, 1023 ,0, 0, 0 , - 3164, 3165, 3162 ,6646, 1023, 1026 ,0, 0, 0 , - 3167, 952, 3168 ,1029, 6648, 6649 ,0, 0, 0 , - 3167, 3168, 3166 ,1029, 6649, 1030 ,0, 0, 0 , - 3168, 301, 3169 ,6649, 6650, 1027 ,0, 0, 0 , - 3168, 3169, 3166 ,6649, 1027, 1030 ,0, 0, 0 , - 3171, 950, 3172 ,1032, 6645, 6651 ,0, 0, 0 , - 3171, 3172, 3170 ,1032, 6651, 1033 ,0, 0, 0 , - 3172, 953, 3173 ,6651, 6652, 1031 ,0, 0, 0 , - 3172, 3173, 3170 ,6651, 1031, 1033 ,0, 0, 0 , - 3175, 951, 3164 ,1034, 6647, 6646 ,0, 0, 0 , - 3175, 3164, 3174 ,1034, 6646, 1035 ,0, 0, 0 , - 3164, 950, 3171 ,6646, 6645, 1032 ,0, 0, 0 , - 3164, 3171, 3174 ,6646, 1032, 1035 ,0, 0, 0 , - 3169, 301, 3177 ,1027, 6650, 6653 ,0, 0, 0 , - 3169, 3177, 3176 ,1027, 6653, 1037 ,0, 0, 0 , - 3177, 954, 3178 ,6653, 6654, 1036 ,0, 0, 0 , - 3177, 3178, 3176 ,6653, 1036, 1037 ,0, 0, 0 , - 3180, 955, 3181 ,1040, 6655, 5699 ,0, 0, 0 , - 3180, 3181, 3179 ,1040, 5699, 1041 ,0, 0, 0 , - 3181, 956, 3182 ,5699, 5698, 1038 ,0, 0, 0 , - 3181, 3182, 3179 ,5699, 1038, 1041 ,0, 0, 0 , - 3184, 958, 3185 ,1044, 6656, 5703 ,0, 0, 0 , - 3184, 3185, 3183 ,1044, 5703, 1045 ,0, 0, 0 , - 3185, 959, 3186 ,5703, 5702, 1042 ,0, 0, 0 , - 3185, 3186, 3183 ,5703, 1042, 1045 ,0, 0, 0 , - 3182, 956, 3188 ,1038, 5698, 6657 ,0, 0, 0 , - 3182, 3188, 3187 ,1038, 6657, 1047 ,0, 0, 0 , - 3188, 960, 3189 ,6657, 6658, 1046 ,0, 0, 0 , - 3188, 3189, 3187 ,6657, 1046, 1047 ,0, 0, 0 , - 3191, 962, 3192 ,1050, 6659, 6660 ,0, 0, 0 , - 3191, 3192, 3190 ,1050, 6660, 1051 ,0, 0, 0 , - 3192, 961, 3193 ,6660, 6661, 1048 ,0, 0, 0 , - 3192, 3193, 3190 ,6660, 1048, 1051 ,0, 0, 0 , - 3195, 963, 3196 ,1052, 6662, 6663 ,0, 0, 0 , - 3195, 3196, 3194 ,1052, 6663, 1053 ,0, 0, 0 , - 3196, 962, 3191 ,6663, 6659, 1050 ,0, 0, 0 , - 3196, 3191, 3194 ,6663, 1050, 1053 ,0, 0, 0 , - 3198, 307, 3193 ,1056, 1049, 1048 ,0, 0, 0 , - 3198, 3193, 3197 ,1056, 1048, 1057 ,0, 0, 0 , - 3193, 961, 3199 ,1048, 6661, 1054 ,0, 0, 0 , - 3193, 3199, 3197 ,1048, 1054, 1057 ,0, 0, 0 , - 3201, 964, 3202 ,1058, 6664, 6665 ,0, 0, 0 , - 3201, 3202, 3200 ,1058, 6665, 1059 ,0, 0, 0 , - 3202, 307, 3198 ,6665, 1049, 1056 ,0, 0, 0 , - 3202, 3198, 3200 ,6665, 1056, 1059 ,0, 0, 0 , - 3204, 965, 3205 ,1062, 6666, 6667 ,0, 0, 0 , - 3204, 3205, 3203 ,1062, 6667, 1063 ,0, 0, 0 , - 3205, 966, 3206 ,6667, 6668, 1060 ,0, 0, 0 , - 3205, 3206, 3203 ,6667, 1060, 1063 ,0, 0, 0 , - 3208, 968, 3209 ,1066, 6669, 5691 ,0, 0, 0 , - 3208, 3209, 3207 ,1066, 5691, 1067 ,0, 0, 0 , - 3209, 969, 3210 ,5691, 5690, 1064 ,0, 0, 0 , - 3209, 3210, 3207 ,5691, 1064, 1067 ,0, 0, 0 , - 3206, 966, 3212 ,1060, 6668, 6670 ,0, 0, 0 , - 3206, 3212, 3211 ,1060, 6670, 1069 ,0, 0, 0 , - 3212, 967, 3213 ,6670, 1065, 1068 ,0, 0, 0 , - 3212, 3213, 3211 ,6670, 1068, 1069 ,0, 0, 0 , - 3215, 308, 3216 ,1072, 1075, 1074 ,0, 0, 0 , - 3215, 3216, 3214 ,1072, 1074, 1073 ,0, 0, 0 , - 3216, 971, 3217 ,1074, 6671, 6672 ,0, 0, 0 , - 3216, 3217, 3214 ,1074, 6672, 1073 ,0, 0, 0 , - 3217, 972, 3218 ,6672, 6673, 1070 ,0, 0, 0 , - 3217, 3218, 3214 ,6672, 1070, 1073 ,0, 0, 0 , - 3215, 309, 3218 ,1072, 1071, 1070 ,0, 0, 0 , - 3215, 3218, 3219 ,1072, 1070, 1076 ,0, 0, 0 , - 3218, 972, 3217 ,1070, 6673, 6672 ,0, 0, 0 , - 3218, 3217, 3219 ,1070, 6672, 1076 ,0, 0, 0 , - 3217, 971, 3216 ,6672, 6671, 1074 ,0, 0, 0 , - 3217, 3216, 3219 ,6672, 1074, 1076 ,0, 0, 0 , - 3221, 975, 3222 ,1079, 2977, 4939 ,0, 0, 0 , - 3221, 3222, 3220 ,1079, 4939, 1080 ,0, 0, 0 , - 3222, 976, 3223 ,4939, 4938, 1077 ,0, 0, 0 , - 3222, 3223, 3220 ,4939, 1077, 1080 ,0, 0, 0 , - 3223, 976, 3225 ,1077, 4938, 5013 ,0, 0, 0 , - 3223, 3225, 3224 ,1077, 5013, 1082 ,0, 0, 0 , - 3225, 977, 3226 ,5013, 2981, 1081 ,0, 0, 0 , - 3225, 3226, 3224 ,5013, 1081, 1082 ,0, 0, 0 , - 3226, 977, 3228 ,1081, 2981, 5018 ,0, 0, 0 , - 3226, 3228, 3227 ,1081, 5018, 1084 ,0, 0, 0 , - 3228, 978, 3229 ,5018, 5017, 1083 ,0, 0, 0 , - 3228, 3229, 3227 ,5018, 1083, 1084 ,0, 0, 0 , - 3231, 979, 3232 ,1086, 3118, 5219 ,0, 0, 0 , - 3231, 3232, 3230 ,1086, 5219, 1087 ,0, 0, 0 , - 3232, 687, 2831 ,5219, 740, 739 ,0, 0, 0 , - 3232, 2831, 3230 ,5219, 739, 1087 ,0, 0, 0 , - 3234, 980, 3235 ,1088, 4946, 5217 ,0, 0, 0 , - 3234, 3235, 3233 ,1088, 5217, 1089 ,0, 0, 0 , - 3235, 979, 3231 ,5217, 3118, 1086 ,0, 0, 0 , - 3235, 3231, 3233 ,5217, 1086, 1089 ,0, 0, 0 , - 3237, 981, 3238 ,1090, 3114, 4947 ,0, 0, 0 , - 3237, 3238, 3236 ,1090, 4947, 1091 ,0, 0, 0 , - 3238, 980, 3234 ,4947, 4946, 1088 ,0, 0, 0 , - 3238, 3234, 3236 ,4947, 1088, 1091 ,0, 0, 0 , - 3240, 982, 3241 ,1093, 6674, 5215 ,0, 0, 0 , - 3240, 3241, 3239 ,1093, 5215, 1094 ,0, 0, 0 , - 3241, 983, 3242 ,5215, 5214, 1092 ,0, 0, 0 , - 3241, 3242, 3239 ,5215, 1092, 1094 ,0, 0, 0 , - 3244, 986, 3245 ,1097, 5008, 6675 ,0, 0, 0 , - 3244, 3245, 3243 ,1097, 6675, 1098 ,0, 0, 0 , - 3245, 872, 3246 ,6675, 1078, 1095 ,0, 0, 0 , - 3245, 3246, 3243 ,6675, 1095, 1098 ,0, 0, 0 , - 3248, 872, 3245 ,1101, 1078, 6675 ,0, 0, 0 , - 3248, 3245, 3247 ,1101, 6675, 1102 ,0, 0, 0 , - 3245, 986, 3249 ,6675, 5008, 1099 ,0, 0, 0 , - 3245, 3249, 3247 ,6675, 1099, 1102 ,0, 0, 0 , - 3251, 987, 3252 ,1105, 1108, 1107 ,0, 0, 0 , - 3251, 3252, 3250 ,1105, 1107, 1106 ,0, 0, 0 , - 3252, 991, 3253 ,1107, 6676, 1103 ,0, 0, 0 , - 3252, 3253, 3250 ,1107, 1103, 1106 ,0, 0, 0 , - 3255, 990, 3256 ,1109, 6677, 6678 ,0, 0, 0 , - 3255, 3256, 3254 ,1109, 6678, 1110 ,0, 0, 0 , - 3256, 991, 3252 ,6678, 6676, 1107 ,0, 0, 0 , - 3256, 3252, 3254 ,6678, 1107, 1110 ,0, 0, 0 , - 3258, 995, 3259 ,1113, 6679, 6680 ,0, 0, 0 , - 3258, 3259, 3257 ,1113, 6680, 1114 ,0, 0, 0 , - 3259, 994, 3260 ,6680, 2809, 1111 ,0, 0, 0 , - 3259, 3260, 3257 ,6680, 1111, 1114 ,0, 0, 0 , - 3262, 996, 3263 ,1116, 6681, 6682 ,0, 0, 0 , - 3262, 3263, 3261 ,1116, 6682, 1117 ,0, 0, 0 , - 3263, 993, 3264 ,6682, 2826, 1115 ,0, 0, 0 , - 3263, 3264, 3261 ,6682, 1115, 1117 ,0, 0, 0 , - 3266, 997, 3267 ,1118, 2822, 6683 ,0, 0, 0 , - 3266, 3267, 3265 ,1118, 6683, 1119 ,0, 0, 0 , - 3267, 996, 3262 ,6683, 6681, 1116 ,0, 0, 0 , - 3267, 3262, 3265 ,6683, 1116, 1119 ,0, 0, 0 , - 3269, 998, 3270 ,1120, 1464, 6684 ,0, 0, 0 , - 3269, 3270, 3268 ,1120, 6684, 1121 ,0, 0, 0 , - 3270, 997, 3266 ,6684, 2822, 1118 ,0, 0, 0 , - 3270, 3266, 3268 ,6684, 1118, 1121 ,0, 0, 0 , - 3272, 999, 3273 ,1123, 2942, 6685 ,0, 0, 0 , - 3272, 3273, 3271 ,1123, 6685, 1124 ,0, 0, 0 , - 3273, 1000, 3274 ,6685, 2957, 1122 ,0, 0, 0 , - 3273, 3274, 3271 ,6685, 1122, 1124 ,0, 0, 0 , - 3274, 1000, 3276 ,1122, 2957, 6686 ,0, 0, 0 , - 3274, 3276, 3275 ,1122, 6686, 1126 ,0, 0, 0 , - 3276, 1001, 3277 ,6686, 6687, 1125 ,0, 0, 0 , - 3276, 3277, 3275 ,6686, 1125, 1126 ,0, 0, 0 , - 3277, 1001, 3279 ,1125, 6687, 6688 ,0, 0, 0 , - 3277, 3279, 3278 ,1125, 6688, 1128 ,0, 0, 0 , - 3279, 988, 3280 ,6688, 2961, 1127 ,0, 0, 0 , - 3279, 3280, 3278 ,6688, 1127, 1128 ,0, 0, 0 , - 3282, 1005, 3283 ,1131, 1134, 1133 ,0, 0, 0 , - 3282, 3283, 3281 ,1131, 1133, 1132 ,0, 0, 0 , - 3283, 1006, 3284 ,1133, 4240, 4155 ,0, 0, 0 , - 3283, 3284, 3281 ,1133, 4155, 1132 ,0, 0, 0 , - 3284, 1002, 3285 ,4155, 2426, 1129 ,0, 0, 0 , - 3284, 3285, 3281 ,4155, 1129, 1132 ,0, 0, 0 , - 3282, 1004, 3285 ,1131, 1130, 1129 ,0, 0, 0 , - 3282, 3285, 3286 ,1131, 1129, 1135 ,0, 0, 0 , - 3285, 1002, 3284 ,1129, 2426, 4155 ,0, 0, 0 , - 3285, 3284, 3286 ,1129, 4155, 1135 ,0, 0, 0 , - 3284, 1006, 3283 ,4155, 4240, 1133 ,0, 0, 0 , - 3284, 3283, 3286 ,4155, 1133, 1135 ,0, 0, 0 , - 3288, 1011, 3289 ,1138, 1141, 4236 ,0, 0, 0 , - 3288, 3289, 3287 ,1138, 4236, 1139 ,0, 0, 0 , - 3289, 1008, 3290 ,4236, 4235, 1136 ,0, 0, 0 , - 3289, 3290, 3287 ,4236, 1136, 1139 ,0, 0, 0 , - 3292, 1012, 3293 ,1142, 6689, 6690 ,0, 0, 0 , - 3292, 3293, 3291 ,1142, 6690, 1143 ,0, 0, 0 , - 3293, 1013, 3294 ,6690, 2489, 1140 ,0, 0, 0 , - 3293, 3294, 3291 ,6690, 1140, 1143 ,0, 0, 0 , - 3290, 1008, 3296 ,1136, 4235, 4147 ,0, 0, 0 , - 3290, 3296, 3295 ,1136, 4147, 1145 ,0, 0, 0 , - 3296, 1014, 3297 ,4147, 2418, 1144 ,0, 0, 0 , - 3296, 3297, 3295 ,4147, 1144, 1145 ,0, 0, 0 , - 3299, 1017, 3300 ,1148, 1153, 4227 ,0, 0, 0 , - 3299, 3300, 3298 ,1148, 4227, 1149 ,0, 0, 0 , - 3300, 1016, 3301 ,4227, 4226, 1146 ,0, 0, 0 , - 3300, 3301, 3298 ,4227, 1146, 1149 ,0, 0, 0 , - 3303, 1018, 3304 ,1150, 2410, 1156 ,0, 0, 0 , - 3303, 3304, 3302 ,1150, 1156, 1151 ,0, 0, 0 , - 3304, 1017, 3299 ,1156, 1153, 1148 ,0, 0, 0 , - 3304, 3299, 3302 ,1156, 1148, 1151 ,0, 0, 0 , - 3306, 1020, 3307 ,1154, 2403, 4245 ,0, 0, 0 , - 3306, 3307, 3305 ,1154, 4245, 1155 ,0, 0, 0 , - 3307, 1019, 3308 ,4245, 2473, 1152 ,0, 0, 0 , - 3307, 3308, 3305 ,4245, 1152, 1155 ,0, 0, 0 , - 3304, 1018, 3310 ,1156, 2410, 4133 ,0, 0, 0 , - 3304, 3310, 3309 ,1156, 4133, 1157 ,0, 0, 0 , - 3310, 1020, 3306 ,4133, 2403, 1154 ,0, 0, 0 , - 3310, 3306, 3309 ,4133, 1154, 1157 ,0, 0, 0 , - 3312, 1024, 3313 ,1160, 6691, 4126 ,0, 0, 0 , - 3312, 3313, 3311 ,1160, 4126, 1161 ,0, 0, 0 , - 3313, 1021, 3314 ,4126, 2395, 1158 ,0, 0, 0 , - 3313, 3314, 3311 ,4126, 1158, 1161 ,0, 0, 0 , - 3316, 1026, 3317 ,1164, 6692, 6693 ,0, 0, 0 , - 3316, 3317, 3315 ,1164, 6693, 1165 ,0, 0, 0 , - 3317, 1027, 3318 ,6693, 6694, 1162 ,0, 0, 0 , - 3317, 3318, 3315 ,6693, 1162, 1165 ,0, 0, 0 , - 3314, 1021, 3320 ,1158, 2395, 6695 ,0, 0, 0 , - 3314, 3320, 3319 ,1158, 6695, 1167 ,0, 0, 0 , - 3320, 1028, 3321 ,6695, 6696, 1166 ,0, 0, 0 , - 3320, 3321, 3319 ,6695, 1166, 1167 ,0, 0, 0 , - 3323, 1031, 3324 ,1170, 6697, 4199 ,0, 0, 0 , - 3323, 3324, 3322 ,1170, 4199, 1171 ,0, 0, 0 , - 3324, 1022, 3325 ,4199, 2460, 1168 ,0, 0, 0 , - 3324, 3325, 3322 ,4199, 1168, 1171 ,0, 0, 0 , - 3327, 1032, 3328 ,1173, 2387, 6698 ,0, 0, 0 , - 3327, 3328, 3326 ,1173, 6698, 1174 ,0, 0, 0 , - 3328, 1033, 3329 ,6698, 2464, 1172 ,0, 0, 0 , - 3328, 3329, 3326 ,6698, 1172, 1174 ,0, 0, 0 , - 3331, 1034, 3332 ,1175, 6699, 4112 ,0, 0, 0 , - 3331, 3332, 3330 ,1175, 4112, 1176 ,0, 0, 0 , - 3332, 1032, 3327 ,4112, 2387, 1173 ,0, 0, 0 , - 3332, 3327, 3330 ,4112, 1173, 1176 ,0, 0, 0 , - 3325, 1022, 3334 ,1168, 2460, 4118 ,0, 0, 0 , - 3325, 3334, 3333 ,1168, 4118, 1178 ,0, 0, 0 , - 3334, 1029, 3335 ,4118, 2391, 1177 ,0, 0, 0 , - 3334, 3335, 3333 ,4118, 1177, 1178 ,0, 0, 0 , - 3337, 1033, 3328 ,1181, 2464, 6698 ,0, 0, 0 , - 3337, 3328, 3336 ,1181, 6698, 1182 ,0, 0, 0 , - 3328, 1032, 3338 ,6698, 2387, 1179 ,0, 0, 0 , - 3328, 3338, 3336 ,6698, 1179, 1182 ,0, 0, 0 , - 3340, 1037, 3341 ,1185, 2493, 4893 ,0, 0, 0 , - 3340, 3341, 3339 ,1185, 4893, 1186 ,0, 0, 0 , - 3341, 1038, 3342 ,4893, 4892, 4258 ,0, 0, 0 , - 3341, 3342, 3339 ,4893, 4258, 1186 ,0, 0, 0 , - 3342, 1039, 3343 ,4258, 4257, 1183 ,0, 0, 0 , - 3342, 3343, 3339 ,4258, 1183, 1186 ,0, 0, 0 , - 3345, 1041, 3346 ,1189, 4898, 4896 ,0, 0, 0 , - 3345, 3346, 3344 ,1189, 4896, 1190 ,0, 0, 0 , - 3346, 1042, 3347 ,4896, 4895, 1187 ,0, 0, 0 , - 3346, 3347, 3344 ,4896, 1187, 1190 ,0, 0, 0 , - 3349, 1044, 3350 ,1193, 4909, 4901 ,0, 0, 0 , - 3349, 3350, 3348 ,1193, 4901, 1194 ,0, 0, 0 , - 3350, 1045, 3351 ,4901, 4900, 1191 ,0, 0, 0 , - 3350, 3351, 3348 ,4901, 1191, 1194 ,0, 0, 0 , - 3353, 1047, 3354 ,1197, 2533, 6700 ,0, 0, 0 , - 3353, 3354, 3352 ,1197, 6700, 1198 ,0, 0, 0 , - 3354, 1048, 3355 ,6700, 6701, 1195 ,0, 0, 0 , - 3354, 3355, 3352 ,6700, 1195, 1198 ,0, 0, 0 , - 3357, 1050, 3358 ,1201, 4889, 4417 ,0, 0, 0 , - 3357, 3358, 3356 ,1201, 4417, 1202 ,0, 0, 0 , - 3358, 1051, 3359 ,4417, 2630, 1199 ,0, 0, 0 , - 3358, 3359, 3356 ,4417, 1199, 1202 ,0, 0, 0 , - 3361, 1053, 3362 ,1205, 2198, 6702 ,0, 0, 0 , - 3361, 3362, 3360 ,1205, 6702, 1206 ,0, 0, 0 , - 3362, 1054, 3363 ,6702, 6703, 4404 ,0, 0, 0 , - 3362, 3363, 3360 ,6702, 4404, 1206 ,0, 0, 0 , - 3363, 1055, 3364 ,4404, 2570, 1203 ,0, 0, 0 , - 3363, 3364, 3360 ,4404, 1203, 1206 ,0, 0, 0 , - 3366, 1057, 3367 ,1209, 6704, 4905 ,0, 0, 0 , - 3366, 3367, 3365 ,1209, 4905, 1210 ,0, 0, 0 , - 3367, 1058, 3368 ,4905, 4904, 1207 ,0, 0, 0 , - 3367, 3368, 3365 ,4905, 1207, 1210 ,0, 0, 0 , - 3370, 1060, 3371 ,1213, 6705, 4348 ,0, 0, 0 , - 3370, 3371, 3369 ,1213, 4348, 1214 ,0, 0, 0 , - 3371, 1061, 3372 ,4348, 4347, 1211 ,0, 0, 0 , - 3371, 3372, 3369 ,4348, 1211, 1214 ,0, 0, 0 , - 3374, 1063, 3375 ,1217, 2477, 6706 ,0, 0, 0 , - 3374, 3375, 3373 ,1217, 6706, 1218 ,0, 0, 0 , - 3375, 1064, 3376 ,6706, 6707, 4297 ,0, 0, 0 , - 3375, 3376, 3373 ,6706, 4297, 1218 ,0, 0, 0 , - 3376, 1065, 3377 ,4297, 2500, 1215 ,0, 0, 0 , - 3376, 3377, 3373 ,4297, 1215, 1218 ,0, 0, 0 , - 3379, 1067, 3380 ,1221, 6708, 6709 ,0, 0, 0 , - 3379, 3380, 3378 ,1221, 6709, 1222 ,0, 0, 0 , - 3380, 1068, 3381 ,6709, 6710, 1219 ,0, 0, 0 , - 3380, 3381, 3378 ,6709, 1219, 1222 ,0, 0, 0 , - 3383, 1070, 3384 ,1225, 4985, 4436 ,0, 0, 0 , - 3383, 3384, 3382 ,1225, 4436, 1226 ,0, 0, 0 , - 3384, 1071, 3385 ,4436, 2640, 6711 ,0, 0, 0 , - 3384, 3385, 3382 ,4436, 6711, 1226 ,0, 0, 0 , - 3385, 1072, 3386 ,6711, 6712, 1223 ,0, 0, 0 , - 3385, 3386, 3382 ,6711, 1223, 1226 ,0, 0, 0 , - 3388, 1074, 3389 ,1229, 4886, 4858 ,0, 0, 0 , - 3388, 3389, 3387 ,1229, 4858, 1230 ,0, 0, 0 , - 3389, 1075, 3390 ,4858, 4857, 4928 ,0, 0, 0 , - 3389, 3390, 3387 ,4858, 4928, 1230 ,0, 0, 0 , - 3390, 1076, 3391 ,4928, 4927, 4865 ,0, 0, 0 , - 3390, 3391, 3387 ,4928, 4865, 1230 ,0, 0, 0 , - 3391, 1077, 3392 ,4865, 4864, 4872 ,0, 0, 0 , - 3391, 3392, 3387 ,4865, 4872, 1230 ,0, 0, 0 , - 3392, 1078, 3393 ,4872, 4871, 1227 ,0, 0, 0 , - 3392, 3393, 3387 ,4872, 1227, 1230 ,0, 0, 0 , - 3395, 1080, 3396 ,1233, 2930, 6713 ,0, 0, 0 , - 3395, 3396, 3394 ,1233, 6713, 1234 ,0, 0, 0 , - 3396, 1081, 3397 ,6713, 6714, 1231 ,0, 0, 0 , - 3396, 3397, 3394 ,6713, 1231, 1234 ,0, 0, 0 , - 3399, 1083, 3400 ,1237, 4883, 4847 ,0, 0, 0 , - 3399, 3400, 3398 ,1237, 4847, 1238 ,0, 0, 0 , - 3400, 1084, 3401 ,4847, 2950, 4854 ,0, 0, 0 , - 3400, 3401, 3398 ,4847, 4854, 1238 ,0, 0, 0 , - 3401, 1085, 3402 ,4854, 4853, 6715 ,0, 0, 0 , - 3401, 3402, 3398 ,4854, 6715, 1238 ,0, 0, 0 , - 3402, 1086, 3403 ,6715, 6716, 4830 ,0, 0, 0 , - 3402, 3403, 3398 ,6715, 4830, 1238 ,0, 0, 0 , - 3403, 1087, 3404 ,4830, 4829, 1235 ,0, 0, 0 , - 3403, 3404, 3398 ,4830, 1235, 1238 ,0, 0, 0 , - 3406, 1089, 3407 ,1241, 2934, 4835 ,0, 0, 0 , - 3406, 3407, 3405 ,1241, 4835, 1242 ,0, 0, 0 , - 3407, 1090, 3408 ,4835, 2938, 4849 ,0, 0, 0 , - 3407, 3408, 3405 ,4835, 4849, 1242 ,0, 0, 0 , - 3408, 1091, 3409 ,4849, 2946, 1239 ,0, 0, 0 , - 3408, 3409, 3405 ,4849, 1239, 1242 ,0, 0, 0 , - 3411, 1093, 3412 ,1245, 4880, 4799 ,0, 0, 0 , - 3411, 3412, 3410 ,1245, 4799, 1246 ,0, 0, 0 , - 3412, 1094, 3413 ,4799, 2909, 4827 ,0, 0, 0 , - 3412, 3413, 3410 ,4799, 4827, 1246 ,0, 0, 0 , - 3413, 1095, 3414 ,4827, 4826, 1243 ,0, 0, 0 , - 3413, 3414, 3410 ,4827, 1243, 1246 ,0, 0, 0 , - 3416, 1097, 3417 ,1249, 4875, 4878 ,0, 0, 0 , - 3416, 3417, 3415 ,1249, 4878, 1250 ,0, 0, 0 , - 3417, 1098, 3418 ,4878, 2901, 1247 ,0, 0, 0 , - 3417, 3418, 3415 ,4878, 1247, 1250 ,0, 0, 0 , - 3420, 1100, 3421 ,1253, 4783, 6717 ,0, 0, 0 , - 3420, 3421, 3419 ,1253, 6717, 1254 ,0, 0, 0 , - 3421, 1101, 3422 ,6717, 6718, 4924 ,0, 0, 0 , - 3421, 3422, 3419 ,6717, 4924, 1254 ,0, 0, 0 , - 3422, 1102, 3423 ,4924, 4923, 4868 ,0, 0, 0 , - 3422, 3423, 3419 ,4924, 4868, 1254 ,0, 0, 0 , - 3423, 1103, 3424 ,4868, 4867, 1251 ,0, 0, 0 , - 3423, 3424, 3419 ,4868, 1251, 1254 ,0, 0, 0 , - 3426, 1105, 3427 ,1257, 6719, 4861 ,0, 0, 0 , - 3426, 3427, 3425 ,1257, 4861, 1258 ,0, 0, 0 , - 3427, 1106, 3428 ,4861, 4860, 1255 ,0, 0, 0 , - 3427, 3428, 3425 ,4861, 1255, 1258 ,0, 0, 0 , - 3430, 1108, 3431 ,1261, 4818, 4735 ,0, 0, 0 , - 3430, 3431, 3429 ,1261, 4735, 1262 ,0, 0, 0 , - 3431, 1109, 3432 ,4735, 4734, 1259 ,0, 0, 0 , - 3431, 3432, 3429 ,4735, 1259, 1262 ,0, 0, 0 , - 3434, 1111, 3435 ,1265, 4820, 4766 ,0, 0, 0 , - 3434, 3435, 3433 ,1265, 4766, 1266 ,0, 0, 0 , - 3435, 1112, 3436 ,4766, 4765, 1263 ,0, 0, 0 , - 3435, 3436, 3433 ,4766, 1263, 1266 ,0, 0, 0 , - 3438, 1114, 3439 ,1269, 4845, 4842 ,0, 0, 0 , - 3438, 3439, 3437 ,1269, 4842, 1270 ,0, 0, 0 , - 3439, 1115, 3440 ,4842, 4841, 6720 ,0, 0, 0 , - 3439, 3440, 3437 ,4842, 6720, 1270 ,0, 0, 0 , - 3440, 1116, 3441 ,6720, 6721, 1267 ,0, 0, 0 , - 3440, 3441, 3437 ,6720, 1267, 1270 ,0, 0, 0 , - 3443, 1118, 3444 ,1273, 6722, 6723 ,0, 0, 0 , - 3443, 3444, 3442 ,1273, 6723, 1274 ,0, 0, 0 , - 3444, 1119, 3445 ,6723, 6724, 1271 ,0, 0, 0 , - 3444, 3445, 3442 ,6723, 1271, 1274 ,0, 0, 0 , - 3447, 1121, 3448 ,1277, 4837, 4777 ,0, 0, 0 , - 3447, 3448, 3446 ,1277, 4777, 1278 ,0, 0, 0 , - 3448, 1122, 3449 ,4777, 4776, 6725 ,0, 0, 0 , - 3448, 3449, 3446 ,4777, 6725, 1278 ,0, 0, 0 , - 3449, 1123, 3450 ,6725, 6726, 1275 ,0, 0, 0 , - 3449, 3450, 3446 ,6725, 1275, 1278 ,0, 0, 0 , - 3452, 1125, 3453 ,1281, 6727, 6728 ,0, 0, 0 , - 3452, 3453, 3451 ,1281, 6728, 1282 ,0, 0, 0 , - 3453, 1126, 3454 ,6728, 6729, 1279 ,0, 0, 0 , - 3453, 3454, 3451 ,6728, 1279, 1282 ,0, 0, 0 , - 3456, 1128, 3457 ,1285, 4762, 6730 ,0, 0, 0 , - 3456, 3457, 3455 ,1285, 6730, 1286 ,0, 0, 0 , - 3457, 1129, 3458 ,6730, 6731, 1283 ,0, 0, 0 , - 3457, 3458, 3455 ,6730, 1283, 1286 ,0, 0, 0 , - 3460, 1131, 3461 ,1289, 6732, 6733 ,0, 0, 0 , - 3460, 3461, 3459 ,1289, 6733, 1290 ,0, 0, 0 , - 3461, 1132, 3462 ,6733, 6734, 1287 ,0, 0, 0 , - 3461, 3462, 3459 ,6733, 1287, 1290 ,0, 0, 0 , - 3464, 1134, 3465 ,1293, 2923, 6735 ,0, 0, 0 , - 3464, 3465, 3463 ,1293, 6735, 1294 ,0, 0, 0 , - 3465, 1135, 3466 ,6735, 6736, 6737 ,0, 0, 0 , - 3465, 3466, 3463 ,6735, 6737, 1294 ,0, 0, 0 , - 3466, 1136, 3467 ,6737, 6738, 1291 ,0, 0, 0 , - 3466, 3467, 3463 ,6737, 1291, 1294 ,0, 0, 0 , - 3469, 1138, 3470 ,1297, 6739, 4812 ,0, 0, 0 , - 3469, 3470, 3468 ,1297, 4812, 1298 ,0, 0, 0 , - 3470, 1139, 3471 ,4812, 4811, 6740 ,0, 0, 0 , - 3470, 3471, 3468 ,4812, 6740, 1298 ,0, 0, 0 , - 3471, 1140, 3472 ,6740, 6741, 1295 ,0, 0, 0 , - 3471, 3472, 3468 ,6740, 1295, 1298 ,0, 0, 0 , - 3474, 1142, 3475 ,1301, 2866, 6742 ,0, 0, 0 , - 3474, 3475, 3473 ,1301, 6742, 1302 ,0, 0, 0 , - 3475, 1143, 3476 ,6742, 6743, 4816 ,0, 0, 0 , - 3475, 3476, 3473 ,6742, 4816, 1302 ,0, 0, 0 , - 3476, 1144, 3477 ,4816, 4815, 1299 ,0, 0, 0 , - 3476, 3477, 3473 ,4816, 1299, 1302 ,0, 0, 0 , - 3479, 1146, 3480 ,1305, 4803, 4722 ,0, 0, 0 , - 3479, 3480, 3478 ,1305, 4722, 1306 ,0, 0, 0 , - 3480, 1147, 3481 ,4722, 2855, 6744 ,0, 0, 0 , - 3480, 3481, 3478 ,4722, 6744, 1306 ,0, 0, 0 , - 3481, 1148, 3482 ,6744, 6745, 1303 ,0, 0, 0 , - 3481, 3482, 3478 ,6744, 1303, 1306 ,0, 0, 0 , - 3484, 1150, 3485 ,1309, 2913, 6746 ,0, 0, 0 , - 3484, 3485, 3483 ,1309, 6746, 1310 ,0, 0, 0 , - 3485, 1151, 3486 ,6746, 6747, 6748 ,0, 0, 0 , - 3485, 3486, 3483 ,6746, 6748, 1310 ,0, 0, 0 , - 3486, 1152, 3487 ,6748, 6749, 1307 ,0, 0, 0 , - 3486, 3487, 3483 ,6748, 1307, 1310 ,0, 0, 0 , - 3489, 1154, 3490 ,1313, 6750, 6751 ,0, 0, 0 , - 3489, 3490, 3488 ,1313, 6751, 1314 ,0, 0, 0 , - 3490, 1155, 3491 ,6751, 6752, 4801 ,0, 0, 0 , - 3490, 3491, 3488 ,6751, 4801, 1314 ,0, 0, 0 , - 3491, 1156, 3492 ,4801, 2847, 1311 ,0, 0, 0 , - 3491, 3492, 3488 ,4801, 1311, 1314 ,0, 0, 0 , - 3494, 1158, 3495 ,1317, 4797, 4791 ,0, 0, 0 , - 3494, 3495, 3493 ,1317, 4791, 1318 ,0, 0, 0 , - 3495, 1159, 3496 ,4791, 2843, 6753 ,0, 0, 0 , - 3495, 3496, 3493 ,4791, 6753, 1318 ,0, 0, 0 , - 3496, 1160, 3497 ,6753, 6754, 1315 ,0, 0, 0 , - 3496, 3497, 3493 ,6753, 1315, 1318 ,0, 0, 0 , - 3499, 1162, 3500 ,1321, 2878, 4795 ,0, 0, 0 , - 3499, 3500, 3498 ,1321, 4795, 1322 ,0, 0, 0 , - 3500, 1163, 3501 ,4795, 4794, 6755 ,0, 0, 0 , - 3500, 3501, 3498 ,4795, 6755, 1322 ,0, 0, 0 , - 3501, 1164, 3502 ,6755, 6756, 6757 ,0, 0, 0 , - 3501, 3502, 3498 ,6755, 6757, 1322 ,0, 0, 0 , - 3502, 1165, 3503 ,6757, 6758, 1319 ,0, 0, 0 , - 3502, 3503, 3498 ,6757, 1319, 1322 ,0, 0, 0 , - 3505, 1167, 3506 ,1325, 2905, 6759 ,0, 0, 0 , - 3505, 3506, 3504 ,1325, 6759, 1326 ,0, 0, 0 , - 3506, 1168, 3507 ,6759, 6760, 6761 ,0, 0, 0 , - 3506, 3507, 3504 ,6759, 6761, 1326 ,0, 0, 0 , - 3507, 1169, 3508 ,6761, 6762, 1323 ,0, 0, 0 , - 3507, 3508, 3504 ,6761, 1323, 1326 ,0, 0, 0 , - 3510, 1171, 3511 ,1329, 6763, 4789 ,0, 0, 0 , - 3510, 3511, 3509 ,1329, 4789, 1330 ,0, 0, 0 , - 3511, 1172, 3512 ,4789, 4788, 4452 ,0, 0, 0 , - 3511, 3512, 3509 ,4789, 4452, 1330 ,0, 0, 0 , - 3512, 1173, 3513 ,4452, 2622, 1327 ,0, 0, 0 , - 3512, 3513, 3509 ,4452, 1327, 1330 ,0, 0, 0 , - 3515, 1175, 3516 ,1333, 2660, 6764 ,0, 0, 0 , - 3515, 3516, 3514 ,1333, 6764, 1334 ,0, 0, 0 , - 3516, 1176, 3517 ,6764, 6765, 6766 ,0, 0, 0 , - 3516, 3517, 3514 ,6764, 6766, 1334 ,0, 0, 0 , - 3517, 1177, 3518 ,6766, 6767, 1331 ,0, 0, 0 , - 3517, 3518, 3514 ,6766, 1331, 1334 ,0, 0, 0 , - 3520, 1179, 3521 ,1337, 2656, 6768 ,0, 0, 0 , - 3520, 3521, 3519 ,1337, 6768, 1338 ,0, 0, 0 , - 3521, 1180, 3522 ,6768, 6769, 4754 ,0, 0, 0 , - 3521, 3522, 3519 ,6768, 4754, 1338 ,0, 0, 0 , - 3522, 1181, 3523 ,4754, 4753, 1335 ,0, 0, 0 , - 3522, 3523, 3519 ,4754, 1335, 1338 ,0, 0, 0 , - 3525, 1183, 3526 ,1341, 2897, 6770 ,0, 0, 0 , - 3525, 3526, 3524 ,1341, 6770, 1342 ,0, 0, 0 , - 3526, 1184, 3527 ,6770, 6771, 6772 ,0, 0, 0 , - 3526, 3527, 3524 ,6770, 6772, 1342 ,0, 0, 0 , - 3527, 1185, 3528 ,6772, 6773, 1339 ,0, 0, 0 , - 3527, 3528, 3524 ,6772, 1339, 1342 ,0, 0, 0 , - 3530, 1187, 3531 ,1345, 4770, 4759 ,0, 0, 0 , - 3530, 3531, 3529 ,1345, 4759, 1346 ,0, 0, 0 , - 3531, 1188, 3532 ,4759, 4758, 6774 ,0, 0, 0 , - 3531, 3532, 3529 ,4759, 6774, 1346 ,0, 0, 0 , - 3532, 1189, 3533 ,6774, 6775, 1343 ,0, 0, 0 , - 3532, 3533, 3529 ,6774, 1343, 1346 ,0, 0, 0 , - 3535, 1191, 3536 ,1349, 4773, 6776 ,0, 0, 0 , - 3535, 3536, 3534 ,1349, 6776, 1350 ,0, 0, 0 , - 3536, 1192, 3537 ,6776, 6777, 6778 ,0, 0, 0 , - 3536, 3537, 3534 ,6776, 6778, 1350 ,0, 0, 0 , - 3537, 1193, 3538 ,6778, 6779, 1347 ,0, 0, 0 , - 3537, 3538, 3534 ,6778, 1347, 1350 ,0, 0, 0 , - 3540, 1195, 3541 ,1353, 6780, 4742 ,0, 0, 0 , - 3540, 3541, 3539 ,1353, 4742, 1354 ,0, 0, 0 , - 3541, 1196, 3542 ,4742, 2870, 4751 ,0, 0, 0 , - 3541, 3542, 3539 ,4742, 4751, 1354 ,0, 0, 0 , - 3542, 1197, 3543 ,4751, 2874, 1351 ,0, 0, 0 , - 3542, 3543, 3539 ,4751, 1351, 1354 ,0, 0, 0 , - 3545, 1199, 3546 ,1357, 6781, 6782 ,0, 0, 0 , - 3545, 3546, 3544 ,1357, 6782, 1358 ,0, 0, 0 , - 3546, 1200, 3547 ,6782, 6783, 1355 ,0, 0, 0 , - 3546, 3547, 3544 ,6782, 1355, 1358 ,0, 0, 0 , - 3549, 1202, 3550 ,1361, 6784, 4749 ,0, 0, 0 , - 3549, 3550, 3548 ,1361, 4749, 1362 ,0, 0, 0 , - 3550, 1203, 3551 ,4749, 2830, 6785 ,0, 0, 0 , - 3550, 3551, 3548 ,4749, 6785, 1362 ,0, 0, 0 , - 3551, 1204, 3552 ,6785, 6786, 1359 ,0, 0, 0 , - 3551, 3552, 3548 ,6785, 1359, 1362 ,0, 0, 0 , - 3554, 1206, 3555 ,1365, 6787, 4747 ,0, 0, 0 , - 3554, 3555, 3553 ,1365, 4747, 1366 ,0, 0, 0 , - 3555, 1207, 3556 ,4747, 4746, 4697 ,0, 0, 0 , - 3555, 3556, 3553 ,4747, 4697, 1366 ,0, 0, 0 , - 3556, 1208, 3557 ,4697, 4696, 1363 ,0, 0, 0 , - 3556, 3557, 3553 ,4697, 1363, 1366 ,0, 0, 0 , - 3559, 1210, 3560 ,1369, 6788, 6789 ,0, 0, 0 , - 3559, 3560, 3558 ,1369, 6789, 1370 ,0, 0, 0 , - 3560, 1211, 3561 ,6789, 6790, 1367 ,0, 0, 0 , - 3560, 3561, 3558 ,6789, 1367, 1370 ,0, 0, 0 , - 3563, 1213, 3564 ,1373, 4737, 4728 ,0, 0, 0 , - 3563, 3564, 3562 ,1373, 4728, 1374 ,0, 0, 0 , - 3564, 1214, 3565 ,4728, 2851, 4740 ,0, 0, 0 , - 3564, 3565, 3562 ,4728, 4740, 1374 ,0, 0, 0 , - 3565, 1215, 3566 ,4740, 4739, 1371 ,0, 0, 0 , - 3565, 3566, 3562 ,4740, 1371, 1374 ,0, 0, 0 , - 3568, 1217, 3569 ,1377, 6791, 4726 ,0, 0, 0 , - 3568, 3569, 3567 ,1377, 4726, 1378 ,0, 0, 0 , - 3569, 1218, 3570 ,4726, 4725, 1375 ,0, 0, 0 , - 3569, 3570, 3567 ,4726, 1375, 1378 ,0, 0, 0 , - 3572, 1220, 3573 ,1381, 1384, 1383 ,0, 0, 0 , - 3572, 3573, 3571 ,1381, 1383, 1382 ,0, 0, 0 , - 3573, 1221, 3574 ,1383, 2862, 1379 ,0, 0, 0 , - 3573, 3574, 3571 ,1383, 1379, 1382 ,0, 0, 0 , - 3576, 1222, 3577 ,1385, 6792, 4730 ,0, 0, 0 , - 3576, 3577, 3575 ,1385, 4730, 1386 ,0, 0, 0 , - 3577, 1221, 3573 ,4730, 2862, 1383 ,0, 0, 0 , - 3577, 3573, 3575 ,4730, 1383, 1386 ,0, 0, 0 , - 3579, 1224, 3580 ,1389, 6793, 6794 ,0, 0, 0 , - 3579, 3580, 3578 ,1389, 6794, 1390 ,0, 0, 0 , - 3580, 1225, 3581 ,6794, 6795, 4720 ,0, 0, 0 , - 3580, 3581, 3578 ,6794, 4720, 1390 ,0, 0, 0 , - 3581, 1226, 3582 ,4720, 4719, 1387 ,0, 0, 0 , - 3581, 3582, 3578 ,4720, 1387, 1390 ,0, 0, 0 , - 3584, 1228, 3585 ,1393, 6796, 6797 ,0, 0, 0 , - 3584, 3585, 3583 ,1393, 6797, 1394 ,0, 0, 0 , - 3585, 1229, 3586 ,6797, 6798, 1391 ,0, 0, 0 , - 3585, 3586, 3583 ,6797, 1391, 1394 ,0, 0, 0 , - 3588, 1231, 3589 ,1397, 2626, 4713 ,0, 0, 0 , - 3588, 3589, 3587 ,1397, 4713, 1398 ,0, 0, 0 , - 3589, 1232, 3590 ,4713, 4712, 1395 ,0, 0, 0 , - 3589, 3590, 3587 ,4713, 1395, 1398 ,0, 0, 0 , - 3592, 1234, 3593 ,1401, 4705, 6799 ,0, 0, 0 , - 3592, 3593, 3591 ,1401, 6799, 1402 ,0, 0, 0 , - 3593, 1235, 3594 ,6799, 6800, 6801 ,0, 0, 0 , - 3593, 3594, 3591 ,6799, 6801, 1402 ,0, 0, 0 , - 3594, 1236, 3595 ,6801, 6802, 1399 ,0, 0, 0 , - 3594, 3595, 3591 ,6801, 1399, 1402 ,0, 0, 0 , - 3597, 1238, 3598 ,1405, 4700, 6803 ,0, 0, 0 , - 3597, 3598, 3596 ,1405, 6803, 1406 ,0, 0, 0 , - 3598, 1239, 3599 ,6803, 6804, 4708 ,0, 0, 0 , - 3598, 3599, 3596 ,6803, 4708, 1406 ,0, 0, 0 , - 3599, 1240, 3600 ,4708, 4707, 1403 ,0, 0, 0 , - 3599, 3600, 3596 ,4708, 1403, 1406 ,0, 0, 0 , - 3602, 1242, 3603 ,1409, 6805, 6806 ,0, 0, 0 , - 3602, 3603, 3601 ,1409, 6806, 1410 ,0, 0, 0 , - 3603, 1243, 3604 ,6806, 6807, 1407 ,0, 0, 0 , - 3603, 3604, 3601 ,6806, 1407, 1410 ,0, 0, 0 , - 3606, 1245, 3607 ,1413, 4692, 6808 ,0, 0, 0 , - 3606, 3607, 3605 ,1413, 6808, 1414 ,0, 0, 0 , - 3607, 1246, 3608 ,6808, 6809, 6810 ,0, 0, 0 , - 3607, 3608, 3605 ,6808, 6810, 1414 ,0, 0, 0 , - 3608, 1247, 3609 ,6810, 6811, 1411 ,0, 0, 0 , - 3608, 3609, 3605 ,6810, 1411, 1414 ,0, 0, 0 , - 3611, 1249, 3612 ,1417, 6812, 6813 ,0, 0, 0 , - 3611, 3612, 3610 ,1417, 6813, 1418 ,0, 0, 0 , - 3612, 1250, 3613 ,6813, 6814, 6815 ,0, 0, 0 , - 3612, 3613, 3610 ,6813, 6815, 1418 ,0, 0, 0 , - 3613, 1251, 3614 ,6815, 6816, 1415 ,0, 0, 0 , - 3613, 3614, 3610 ,6815, 1415, 1418 ,0, 0, 0 , - 3616, 1253, 3617 ,1421, 4627, 4575 ,0, 0, 0 , - 3616, 3617, 3615 ,1421, 4575, 1422 ,0, 0, 0 , - 3617, 1254, 3618 ,4575, 2749, 4689 ,0, 0, 0 , - 3617, 3618, 3615 ,4575, 4689, 1422 ,0, 0, 0 , - 3618, 1255, 3619 ,4689, 4688, 1419 ,0, 0, 0 , - 3618, 3619, 3615 ,4689, 1419, 1422 ,0, 0, 0 , - 3621, 1257, 3622 ,1425, 6817, 4686 ,0, 0, 0 , - 3621, 3622, 3620 ,1425, 4686, 1426 ,0, 0, 0 , - 3622, 1258, 3623 ,4686, 4685, 1423 ,0, 0, 0 , - 3622, 3623, 3620 ,4686, 1423, 1426 ,0, 0, 0 , - 3625, 1260, 3626 ,1429, 6818, 4682 ,0, 0, 0 , - 3625, 3626, 3624 ,1429, 4682, 1430 ,0, 0, 0 , - 3626, 1261, 3627 ,4682, 4681, 1427 ,0, 0, 0 , - 3626, 3627, 3624 ,4682, 1427, 1430 ,0, 0, 0 , - 3629, 1263, 3630 ,1433, 4678, 4919 ,0, 0, 0 , - 3629, 3630, 3628 ,1433, 4919, 1434 ,0, 0, 0 , - 3630, 1264, 3631 ,4919, 4918, 4664 ,0, 0, 0 , - 3630, 3631, 3628 ,4919, 4664, 1434 ,0, 0, 0 , - 3631, 1265, 3632 ,4664, 4663, 6819 ,0, 0, 0 , - 3631, 3632, 3628 ,4664, 6819, 1434 ,0, 0, 0 , - 3632, 1266, 3633 ,6819, 6820, 1431 ,0, 0, 0 , - 3632, 3633, 3628 ,6819, 1431, 1434 ,0, 0, 0 , - 3635, 1268, 3636 ,1437, 4674, 4624 ,0, 0, 0 , - 3635, 3636, 3634 ,1437, 4624, 1438 ,0, 0, 0 , - 3636, 1269, 3637 ,4624, 4623, 4547 ,0, 0, 0 , - 3636, 3637, 3634 ,4624, 4547, 1438 ,0, 0, 0 , - 3637, 1270, 3638 ,4547, 4546, 1435 ,0, 0, 0 , - 3637, 3638, 3634 ,4547, 1435, 1438 ,0, 0, 0 , - 3640, 1272, 3641 ,1441, 4642, 4668 ,0, 0, 0 , - 3640, 3641, 3639 ,1441, 4668, 1442 ,0, 0, 0 , - 3641, 1273, 3642 ,4668, 4667, 6821 ,0, 0, 0 , - 3641, 3642, 3639 ,4668, 6821, 1442 ,0, 0, 0 , - 3642, 1274, 3643 ,6821, 6822, 1439 ,0, 0, 0 , - 3642, 3643, 3639 ,6821, 1439, 1442 ,0, 0, 0 , - 3645, 1276, 3646 ,1445, 4608, 6823 ,0, 0, 0 , - 3645, 3646, 3644 ,1445, 6823, 1446 ,0, 0, 0 , - 3646, 1277, 3647 ,6823, 6824, 4582 ,0, 0, 0 , - 3646, 3647, 3644 ,6823, 4582, 1446 ,0, 0, 0 , - 3647, 1278, 3648 ,4582, 4581, 1443 ,0, 0, 0 , - 3647, 3648, 3644 ,4582, 1443, 1446 ,0, 0, 0 , - 3650, 1280, 3651 ,1449, 4672, 4524 ,0, 0, 0 , - 3650, 3651, 3649 ,1449, 4524, 1450 ,0, 0, 0 , - 3651, 1281, 3652 ,4524, 4523, 4532 ,0, 0, 0 , - 3651, 3652, 3649 ,4524, 4532, 1450 ,0, 0, 0 , - 3652, 1282, 3653 ,4532, 2714, 1447 ,0, 0, 0 , - 3652, 3653, 3649 ,4532, 1447, 1450 ,0, 0, 0 , - 3655, 1284, 3656 ,1453, 2772, 6825 ,0, 0, 0 , - 3655, 3656, 3654 ,1453, 6825, 1454 ,0, 0, 0 , - 3656, 1285, 3657 ,6825, 6826, 4502 ,0, 0, 0 , - 3656, 3657, 3654 ,6825, 4502, 1454 ,0, 0, 0 , - 3657, 1286, 3658 ,4502, 2671, 1451 ,0, 0, 0 , - 3657, 3658, 3654 ,4502, 1451, 1454 ,0, 0, 0 , - 3660, 1288, 3661 ,1457, 2693, 6827 ,0, 0, 0 , - 3660, 3661, 3659 ,1457, 6827, 1458 ,0, 0, 0 , - 3661, 1289, 3662 ,6827, 6828, 4592 ,0, 0, 0 , - 3661, 3662, 3659 ,6827, 4592, 1458 ,0, 0, 0 , - 3662, 1290, 3663 ,4592, 2759, 1455 ,0, 0, 0 , - 3662, 3663, 3659 ,4592, 1455, 1458 ,0, 0, 0 , - 3665, 1292, 3666 ,1461, 6829, 4470 ,0, 0, 0 , - 3665, 3666, 3664 ,1461, 4470, 1462 ,0, 0, 0 , - 3666, 1293, 3667 ,4470, 2675, 6830 ,0, 0, 0 , - 3666, 3667, 3664 ,4470, 6830, 1462 ,0, 0, 0 , - 3667, 1294, 3668 ,6830, 6831, 1459 ,0, 0, 0 , - 3667, 3668, 3664 ,6830, 1459, 1462 ,0, 0, 0 , - 3269, 992, 3670 ,1120, 1112, 4652 ,0, 0, 0 , - 3269, 3670, 3669 ,1120, 4652, 1465 ,0, 0, 0 , - 3670, 1295, 3671 ,4652, 4651, 1463 ,0, 0, 0 , - 3670, 3671, 3669 ,4652, 1463, 1465 ,0, 0, 0 , - 3673, 1297, 3674 ,1468, 4632, 4629 ,0, 0, 0 , - 3673, 3674, 3672 ,1468, 4629, 1469 ,0, 0, 0 , - 3674, 1298, 3675 ,4629, 2790, 6832 ,0, 0, 0 , - 3674, 3675, 3672 ,4629, 6832, 1469 ,0, 0, 0 , - 3675, 1299, 3676 ,6832, 6833, 6834 ,0, 0, 0 , - 3675, 3676, 3672 ,6832, 6834, 1469 ,0, 0, 0 , - 3676, 1300, 3677 ,6834, 6835, 6836 ,0, 0, 0 , - 3676, 3677, 3672 ,6834, 6836, 1469 ,0, 0, 0 , - 3677, 1301, 3678 ,6836, 6837, 6838 ,0, 0, 0 , - 3677, 3678, 3672 ,6836, 6838, 1469 ,0, 0, 0 , - 3678, 1302, 3679 ,6838, 6839, 6840 ,0, 0, 0 , - 3678, 3679, 3672 ,6838, 6840, 1469 ,0, 0, 0 , - 3679, 1303, 3680 ,6840, 6841, 6842 ,0, 0, 0 , - 3679, 3680, 3672 ,6840, 6842, 1469 ,0, 0, 0 , - 3680, 1304, 3681 ,6842, 6843, 4647 ,0, 0, 0 , - 3680, 3681, 3672 ,6842, 4647, 1469 ,0, 0, 0 , - 3681, 1305, 3682 ,4647, 4646, 4639 ,0, 0, 0 , - 3681, 3682, 3672 ,4647, 4639, 1469 ,0, 0, 0 , - 3682, 1306, 3683 ,4639, 4638, 1466 ,0, 0, 0 , - 3682, 3683, 3672 ,4639, 1466, 1469 ,0, 0, 0 , - 3685, 1308, 3686 ,1472, 6844, 6845 ,0, 0, 0 , - 3685, 3686, 3684 ,1472, 6845, 1473 ,0, 0, 0 , - 3686, 1309, 3687 ,6845, 6846, 1470 ,0, 0, 0 , - 3686, 3687, 3684 ,6845, 1470, 1473 ,0, 0, 0 , - 3689, 1311, 3690 ,1476, 6847, 6848 ,0, 0, 0 , - 3689, 3690, 3688 ,1476, 6848, 1477 ,0, 0, 0 , - 3690, 1312, 3691 ,6848, 6849, 1474 ,0, 0, 0 , - 3690, 3691, 3688 ,6848, 1474, 1477 ,0, 0, 0 , - 3693, 1314, 3694 ,1480, 2802, 6850 ,0, 0, 0 , - 3693, 3694, 3692 ,1480, 6850, 1481 ,0, 0, 0 , - 3694, 1315, 3695 ,6850, 6851, 6852 ,0, 0, 0 , - 3694, 3695, 3692 ,6850, 6852, 1481 ,0, 0, 0 , - 3695, 1316, 3696 ,6852, 6853, 1478 ,0, 0, 0 , - 3695, 3696, 3692 ,6852, 1478, 1481 ,0, 0, 0 , - 3698, 1318, 3699 ,1484, 2798, 6854 ,0, 0, 0 , - 3698, 3699, 3697 ,1484, 6854, 1485 ,0, 0, 0 , - 3699, 1319, 3700 ,6854, 6855, 6856 ,0, 0, 0 , - 3699, 3700, 3697 ,6854, 6856, 1485 ,0, 0, 0 , - 3700, 1320, 3701 ,6856, 6857, 1482 ,0, 0, 0 , - 3700, 3701, 3697 ,6856, 1482, 1485 ,0, 0, 0 , - 3703, 1322, 3704 ,1488, 2794, 6858 ,0, 0, 0 , - 3703, 3704, 3702 ,1488, 6858, 1489 ,0, 0, 0 , - 3704, 1323, 3705 ,6858, 6859, 6860 ,0, 0, 0 , - 3704, 3705, 3702 ,6858, 6860, 1489 ,0, 0, 0 , - 3705, 1324, 3706 ,6860, 6861, 1486 ,0, 0, 0 , - 3705, 3706, 3702 ,6860, 1486, 1489 ,0, 0, 0 , - 3708, 1326, 3709 ,1492, 6862, 6863 ,0, 0, 0 , - 3708, 3709, 3707 ,1492, 6863, 1493 ,0, 0, 0 , - 3709, 1327, 3710 ,6863, 6864, 6865 ,0, 0, 0 , - 3709, 3710, 3707 ,6863, 6865, 1493 ,0, 0, 0 , - 3710, 1328, 3711 ,6865, 6866, 1490 ,0, 0, 0 , - 3710, 3711, 3707 ,6865, 1490, 1493 ,0, 0, 0 , - 3713, 1330, 3714 ,1496, 4621, 4618 ,0, 0, 0 , - 3713, 3714, 3712 ,1496, 4618, 1497 ,0, 0, 0 , - 3714, 1331, 3715 ,4618, 4617, 4537 ,0, 0, 0 , - 3714, 3715, 3712 ,4618, 4537, 1497 ,0, 0, 0 , - 3715, 1332, 3716 ,4537, 4536, 1494 ,0, 0, 0 , - 3715, 3716, 3712 ,4537, 1494, 1497 ,0, 0, 0 , - 3718, 1334, 3719 ,1500, 2786, 6867 ,0, 0, 0 , - 3718, 3719, 3717 ,1500, 6867, 1501 ,0, 0, 0 , - 3719, 1335, 3720 ,6867, 2725, 1498 ,0, 0, 0 , - 3719, 3720, 3717 ,6867, 1498, 1501 ,0, 0, 0 , - 3722, 1337, 3723 ,1504, 6868, 4612 ,0, 0, 0 , - 3722, 3723, 3721 ,1504, 4612, 1505 ,0, 0, 0 , - 3723, 1338, 3724 ,4612, 4611, 1502 ,0, 0, 0 , - 3723, 3724, 3721 ,4612, 1502, 1505 ,0, 0, 0 , - 3726, 1340, 3727 ,1508, 6869, 6870 ,0, 0, 0 , - 3726, 3727, 3725 ,1508, 6870, 1509 ,0, 0, 0 , - 3727, 1341, 3728 ,6870, 2779, 1506 ,0, 0, 0 , - 3727, 3728, 3725 ,6870, 1506, 1509 ,0, 0, 0 , - 3730, 1343, 3731 ,1512, 6871, 4602 ,0, 0, 0 , - 3730, 3731, 3729 ,1512, 4602, 1513 ,0, 0, 0 , - 3731, 1344, 3732 ,4602, 4601, 6872 ,0, 0, 0 , - 3731, 3732, 3729 ,4602, 6872, 1513 ,0, 0, 0 , - 3732, 1345, 3733 ,6872, 6873, 1510 ,0, 0, 0 , - 3732, 3733, 3729 ,6872, 1510, 1513 ,0, 0, 0 , - 3735, 1347, 3736 ,1516, 4596, 6874 ,0, 0, 0 , - 3735, 3736, 3734 ,1516, 6874, 1517 ,0, 0, 0 , - 3736, 1348, 3737 ,6874, 6875, 6876 ,0, 0, 0 , - 3736, 3737, 3734 ,6874, 6876, 1517 ,0, 0, 0 , - 3737, 1349, 3738 ,6876, 6877, 1514 ,0, 0, 0 , - 3737, 3738, 3734 ,6876, 1514, 1517 ,0, 0, 0 , - 3740, 1351, 3741 ,1520, 4590, 6878 ,0, 0, 0 , - 3740, 3741, 3739 ,1520, 6878, 1521 ,0, 0, 0 , - 3741, 1352, 3742 ,6878, 6879, 6880 ,0, 0, 0 , - 3741, 3742, 3739 ,6878, 6880, 1521 ,0, 0, 0 , - 3742, 1353, 3743 ,6880, 6881, 1518 ,0, 0, 0 , - 3742, 3743, 3739 ,6880, 1518, 1521 ,0, 0, 0 , - 3745, 1355, 3746 ,1524, 4585, 6882 ,0, 0, 0 , - 3745, 3746, 3744 ,1524, 6882, 1525 ,0, 0, 0 , - 3746, 1356, 3747 ,6882, 6883, 6884 ,0, 0, 0 , - 3746, 3747, 3744 ,6882, 6884, 1525 ,0, 0, 0 , - 3747, 1357, 3748 ,6884, 6885, 1522 ,0, 0, 0 , - 3747, 3748, 3744 ,6884, 1522, 1525 ,0, 0, 0 , - 3750, 1359, 3751 ,1528, 4578, 6886 ,0, 0, 0 , - 3750, 3751, 3749 ,1528, 6886, 1529 ,0, 0, 0 , - 3751, 1360, 3752 ,6886, 6887, 6888 ,0, 0, 0 , - 3751, 3752, 3749 ,6886, 6888, 1529 ,0, 0, 0 , - 3752, 1361, 3753 ,6888, 6889, 1526 ,0, 0, 0 , - 3752, 3753, 3749 ,6888, 1526, 1529 ,0, 0, 0 , - 3755, 1363, 3756 ,1532, 4530, 6890 ,0, 0, 0 , - 3755, 3756, 3754 ,1532, 6890, 1533 ,0, 0, 0 , - 3756, 1364, 3757 ,6890, 6891, 6892 ,0, 0, 0 , - 3756, 3757, 3754 ,6890, 6892, 1533 ,0, 0, 0 , - 3757, 1365, 3758 ,6892, 6893, 1530 ,0, 0, 0 , - 3757, 3758, 3754 ,6892, 1530, 1533 ,0, 0, 0 , - 3760, 1367, 3761 ,1536, 2732, 4568 ,0, 0, 0 , - 3760, 3761, 3759 ,1536, 4568, 1537 ,0, 0, 0 , - 3761, 1368, 3762 ,4568, 4567, 1534 ,0, 0, 0 , - 3761, 3762, 3759 ,4568, 1534, 1537 ,0, 0, 0 , - 3764, 1369, 3765 ,1540, 4573, 4560 ,0, 0, 0 , - 3764, 3765, 3763 ,1540, 4560, 1541 ,0, 0, 0 , - 3765, 613, 2735 ,4560, 4559, 1538 ,0, 0, 0 , - 3765, 2735, 3763 ,4560, 1538, 1541 ,0, 0, 0 , - 3767, 1371, 3768 ,1544, 4571, 4565 ,0, 0, 0 , - 3767, 3768, 3766 ,1544, 4565, 1545 ,0, 0, 0 , - 3768, 1372, 3769 ,4565, 2736, 6894 ,0, 0, 0 , - 3768, 3769, 3766 ,4565, 6894, 1545 ,0, 0, 0 , - 3769, 1373, 3770 ,6894, 6895, 1542 ,0, 0, 0 , - 3769, 3770, 3766 ,6894, 1542, 1545 ,0, 0, 0 , - 3772, 1374, 3773 ,1546, 2740, 6896 ,0, 0, 0 , - 3772, 3773, 3771 ,1546, 6896, 1547 ,0, 0, 0 , - 3773, 605, 2725 ,6896, 3202, 657 ,0, 0, 0 , - 3773, 2725, 3771 ,6896, 657, 1547 ,0, 0, 0 , - 3775, 1376, 3776 ,1550, 4563, 6897 ,0, 0, 0 , - 3775, 3776, 3774 ,1550, 6897, 1551 ,0, 0, 0 , - 3776, 1377, 3777 ,6897, 2566, 1548 ,0, 0, 0 , - 3776, 3777, 3774 ,6897, 1548, 1551 ,0, 0, 0 , - 3779, 1379, 3780 ,1554, 4557, 6898 ,0, 0, 0 , - 3779, 3780, 3778 ,1554, 6898, 1555 ,0, 0, 0 , - 3780, 1380, 3781 ,6898, 6899, 6900 ,0, 0, 0 , - 3780, 3781, 3778 ,6898, 6900, 1555 ,0, 0, 0 , - 3781, 1381, 3782 ,6900, 6901, 1552 ,0, 0, 0 , - 3781, 3782, 3778 ,6900, 1552, 1555 ,0, 0, 0 , - 3784, 1383, 3785 ,1558, 2682, 6902 ,0, 0, 0 , - 3784, 3785, 3783 ,1558, 6902, 1559 ,0, 0, 0 , - 3785, 1384, 3786 ,6902, 6903, 6904 ,0, 0, 0 , - 3785, 3786, 3783 ,6902, 6904, 1559 ,0, 0, 0 , - 3786, 1385, 3787 ,6904, 6905, 1556 ,0, 0, 0 , - 3786, 3787, 3783 ,6904, 1556, 1559 ,0, 0, 0 , - 3789, 1387, 3790 ,1562, 4551, 6906 ,0, 0, 0 , - 3789, 3790, 3788 ,1562, 6906, 1563 ,0, 0, 0 , - 3790, 1388, 3791 ,6906, 6907, 6908 ,0, 0, 0 , - 3790, 3791, 3788 ,6906, 6908, 1563 ,0, 0, 0 , - 3791, 1389, 3792 ,6908, 6909, 1560 ,0, 0, 0 , - 3791, 3792, 3788 ,6908, 1560, 1563 ,0, 0, 0 , - 3794, 1391, 3795 ,1566, 2689, 6910 ,0, 0, 0 , - 3794, 3795, 3793 ,1566, 6910, 1567 ,0, 0, 0 , - 3795, 1392, 3796 ,6910, 6911, 6912 ,0, 0, 0 , - 3795, 3796, 3793 ,6910, 6912, 1567 ,0, 0, 0 , - 3796, 1393, 3797 ,6912, 6913, 1564 ,0, 0, 0 , - 3796, 3797, 3793 ,6912, 1564, 1567 ,0, 0, 0 , - 3799, 1395, 3800 ,1570, 4485, 6914 ,0, 0, 0 , - 3799, 3800, 3798 ,1570, 6914, 1571 ,0, 0, 0 , - 3800, 1396, 3801 ,6914, 6915, 4327 ,0, 0, 0 , - 3800, 3801, 3798 ,6914, 4327, 1571 ,0, 0, 0 , - 3801, 1397, 3802 ,4327, 2553, 1568 ,0, 0, 0 , - 3801, 3802, 3798 ,4327, 1568, 1571 ,0, 0, 0 , - 3804, 1399, 3805 ,1574, 4385, 4377 ,0, 0, 0 , - 3804, 3805, 3803 ,1574, 4377, 1575 ,0, 0, 0 , - 3805, 1400, 3806 ,4377, 4376, 4390 ,0, 0, 0 , - 3805, 3806, 3803 ,4377, 4390, 1575 ,0, 0, 0 , - 3806, 1401, 3807 ,4390, 2608, 1572 ,0, 0, 0 , - 3806, 3807, 3803 ,4390, 1572, 1575 ,0, 0, 0 , - 3809, 1403, 3810 ,1578, 2703, 4516 ,0, 0, 0 , - 3809, 3810, 3808 ,1578, 4516, 1579 ,0, 0, 0 , - 3810, 1404, 3811 ,4516, 4515, 4316 ,0, 0, 0 , - 3810, 3811, 3808 ,4516, 4316, 1579 ,0, 0, 0 , - 3811, 1405, 3812 ,4316, 2545, 1576 ,0, 0, 0 , - 3811, 3812, 3808 ,4316, 1576, 1579 ,0, 0, 0 , - 3814, 1407, 3815 ,1582, 4544, 4540 ,0, 0, 0 , - 3814, 3815, 3813 ,1582, 4540, 1583 ,0, 0, 0 , - 3815, 1408, 3816 ,4540, 4539, 4527 ,0, 0, 0 , - 3815, 3816, 3813 ,4540, 4527, 1583 ,0, 0, 0 , - 3816, 1409, 3817 ,4527, 4526, 1580 ,0, 0, 0 , - 3816, 3817, 3813 ,4527, 1580, 1583 ,0, 0, 0 , - 3819, 1411, 3820 ,1586, 2664, 6916 ,0, 0, 0 , - 3819, 3820, 3818 ,1586, 6916, 1587 ,0, 0, 0 , - 3820, 1412, 3821 ,6916, 6917, 6918 ,0, 0, 0 , - 3820, 3821, 3818 ,6916, 6918, 1587 ,0, 0, 0 , - 3821, 1413, 3822 ,6918, 2721, 1584 ,0, 0, 0 , - 3821, 3822, 3818 ,6918, 1584, 1587 ,0, 0, 0 , - 3824, 1415, 3825 ,1590, 6919, 6920 ,0, 0, 0 , - 3824, 3825, 3823 ,1590, 6920, 1591 ,0, 0, 0 , - 3825, 1416, 3826 ,6920, 6921, 1588 ,0, 0, 0 , - 3825, 3826, 3823 ,6920, 1588, 1591 ,0, 0, 0 , - 3828, 1418, 3829 ,1594, 6922, 6923 ,0, 0, 0 , - 3828, 3829, 3827 ,1594, 6923, 1595 ,0, 0, 0 , - 3829, 1419, 3830 ,6923, 6924, 1592 ,0, 0, 0 , - 3829, 3830, 3827 ,6923, 1592, 1595 ,0, 0, 0 , - 3832, 1421, 3833 ,1598, 2707, 6925 ,0, 0, 0 , - 3832, 3833, 3831 ,1598, 6925, 1599 ,0, 0, 0 , - 3833, 1422, 3834 ,6925, 6926, 6927 ,0, 0, 0 , - 3833, 3834, 3831 ,6925, 6927, 1599 ,0, 0, 0 , - 3834, 1423, 3835 ,6927, 6928, 1596 ,0, 0, 0 , - 3834, 3835, 3831 ,6927, 1596, 1599 ,0, 0, 0 , - 3837, 1425, 3838 ,1602, 6929, 4499 ,0, 0, 0 , - 3837, 3838, 3836 ,1602, 4499, 1603 ,0, 0, 0 , - 3838, 1426, 3839 ,4499, 4498, 4320 ,0, 0, 0 , - 3838, 3839, 3836 ,4499, 4320, 1603 ,0, 0, 0 , - 3839, 1427, 3840 ,4320, 2549, 1600 ,0, 0, 0 , - 3839, 3840, 3836 ,4320, 1600, 1603 ,0, 0, 0 , - 3842, 1429, 3843 ,1606, 6930, 6931 ,0, 0, 0 , - 3842, 3843, 3841 ,1606, 6931, 1607 ,0, 0, 0 , - 3843, 1430, 3844 ,6931, 6932, 6933 ,0, 0, 0 , - 3843, 3844, 3841 ,6931, 6933, 1607 ,0, 0, 0 , - 3844, 1431, 3845 ,6933, 6934, 1604 ,0, 0, 0 , - 3844, 3845, 3841 ,6933, 1604, 1607 ,0, 0, 0 , - 3847, 1433, 3848 ,1610, 6935, 6936 ,0, 0, 0 , - 3847, 3848, 3846 ,1610, 6936, 1611 ,0, 0, 0 , - 3848, 1434, 3849 ,6936, 6937, 1608 ,0, 0, 0 , - 3848, 3849, 3846 ,6936, 1608, 1611 ,0, 0, 0 , - 3851, 1436, 3852 ,1614, 6938, 6939 ,0, 0, 0 , - 3851, 3852, 3850 ,1614, 6939, 1615 ,0, 0, 0 , - 3852, 1437, 3853 ,6939, 6940, 1612 ,0, 0, 0 , - 3852, 3853, 3850 ,6939, 1612, 1615 ,0, 0, 0 , - 3855, 1439, 3856 ,1618, 4462, 6941 ,0, 0, 0 , - 3855, 3856, 3854 ,1618, 6941, 1619 ,0, 0, 0 , - 3856, 1440, 3857 ,6941, 6942, 6943 ,0, 0, 0 , - 3856, 3857, 3854 ,6941, 6943, 1619 ,0, 0, 0 , - 3857, 1441, 3858 ,6943, 6944, 1616 ,0, 0, 0 , - 3857, 3858, 3854 ,6943, 1616, 1619 ,0, 0, 0 , - 3860, 1443, 3861 ,1622, 4467, 6945 ,0, 0, 0 , - 3860, 3861, 3859 ,1622, 6945, 1623 ,0, 0, 0 , - 3861, 1444, 3862 ,6945, 6946, 4479 ,0, 0, 0 , - 3861, 3862, 3859 ,6945, 4479, 1623 ,0, 0, 0 , - 3862, 1445, 3863 ,4479, 4478, 1620 ,0, 0, 0 , - 3862, 3863, 3859 ,4479, 1620, 1623 ,0, 0, 0 , - 3865, 1447, 3866 ,1626, 6947, 6948 ,0, 0, 0 , - 3865, 3866, 3864 ,1626, 6948, 1627 ,0, 0, 0 , - 3866, 1448, 3867 ,6948, 6949, 1624 ,0, 0, 0 , - 3866, 3867, 3864 ,6948, 1624, 1627 ,0, 0, 0 , - 3869, 1450, 3870 ,1630, 4493, 6950 ,0, 0, 0 , - 3869, 3870, 3868 ,1630, 6950, 1631 ,0, 0, 0 , - 3870, 1451, 3871 ,6950, 6951, 1628 ,0, 0, 0 , - 3870, 3871, 3868 ,6950, 1628, 1631 ,0, 0, 0 , - 3873, 1453, 3874 ,1634, 4488, 6952 ,0, 0, 0 , - 3873, 3874, 3872 ,1634, 6952, 1635 ,0, 0, 0 , - 3874, 1454, 3875 ,6952, 6953, 6954 ,0, 0, 0 , - 3874, 3875, 3872 ,6952, 6954, 1635 ,0, 0, 0 , - 3875, 1455, 3876 ,6954, 6955, 1632 ,0, 0, 0 , - 3875, 3876, 3872 ,6954, 1632, 1635 ,0, 0, 0 , - 3878, 1457, 3879 ,1638, 4482, 6956 ,0, 0, 0 , - 3878, 3879, 3877 ,1638, 6956, 1639 ,0, 0, 0 , - 3879, 1458, 3880 ,6956, 6957, 6958 ,0, 0, 0 , - 3879, 3880, 3877 ,6956, 6958, 1639 ,0, 0, 0 , - 3880, 1459, 3881 ,6958, 6959, 1636 ,0, 0, 0 , - 3880, 3881, 3877 ,6958, 1636, 1639 ,0, 0, 0 , - 3883, 516, 2615 ,1642, 560, 559 ,0, 0, 0 , - 3883, 2615, 3882 ,1642, 559, 1643 ,0, 0, 0 , - 2615, 518, 3884 ,559, 3263, 1640 ,0, 0, 0 , - 2615, 3884, 3882 ,559, 1640, 1643 ,0, 0, 0 , - 3886, 1462, 3887 ,1646, 4473, 6960 ,0, 0, 0 , - 3886, 3887, 3885 ,1646, 6960, 1647 ,0, 0, 0 , - 3887, 1463, 3888 ,6960, 3267, 6961 ,0, 0, 0 , - 3887, 3888, 3885 ,6960, 6961, 1647 ,0, 0, 0 , - 3888, 1464, 3889 ,6961, 6962, 1644 ,0, 0, 0 , - 3888, 3889, 3885 ,6961, 1644, 1647 ,0, 0, 0 , - 3891, 1466, 3892 ,1650, 6963, 6964 ,0, 0, 0 , - 3891, 3892, 3890 ,1650, 6964, 1651 ,0, 0, 0 , - 3892, 1467, 3893 ,6964, 6965, 1648 ,0, 0, 0 , - 3892, 3893, 3890 ,6964, 1648, 1651 ,0, 0, 0 , - 3895, 1469, 3896 ,1654, 6966, 6967 ,0, 0, 0 , - 3895, 3896, 3894 ,1654, 6967, 1655 ,0, 0, 0 , - 3896, 1470, 3897 ,6967, 6968, 1652 ,0, 0, 0 , - 3896, 3897, 3894 ,6967, 1652, 1655 ,0, 0, 0 , - 3899, 1472, 3900 ,1658, 4458, 6969 ,0, 0, 0 , - 3899, 3900, 3898 ,1658, 6969, 1659 ,0, 0, 0 , - 3900, 1473, 3901 ,6969, 6970, 6971 ,0, 0, 0 , - 3900, 3901, 3898 ,6969, 6971, 1659 ,0, 0, 0 , - 3901, 1474, 3902 ,6971, 6972, 1656 ,0, 0, 0 , - 3901, 3902, 3898 ,6971, 1656, 1659 ,0, 0, 0 , - 3904, 1476, 3905 ,1662, 4455, 6973 ,0, 0, 0 , - 3904, 3905, 3903 ,1662, 6973, 1663 ,0, 0, 0 , - 3905, 1477, 3906 ,6973, 6974, 6975 ,0, 0, 0 , - 3905, 3906, 3903 ,6973, 6975, 1663 ,0, 0, 0 , - 3906, 1478, 3907 ,6975, 6976, 1660 ,0, 0, 0 , - 3906, 3907, 3903 ,6975, 1660, 1663 ,0, 0, 0 , - 3909, 1480, 3910 ,1666, 4450, 6977 ,0, 0, 0 , - 3909, 3910, 3908 ,1666, 6977, 1667 ,0, 0, 0 , - 3910, 1481, 3911 ,6977, 6978, 6979 ,0, 0, 0 , - 3910, 3911, 3908 ,6977, 6979, 1667 ,0, 0, 0 , - 3911, 1482, 3912 ,6979, 6980, 1664 ,0, 0, 0 , - 3911, 3912, 3908 ,6979, 1664, 1667 ,0, 0, 0 , - 3914, 1484, 3915 ,1670, 4446, 6981 ,0, 0, 0 , - 3914, 3915, 3913 ,1670, 6981, 1671 ,0, 0, 0 , - 3915, 1485, 3916 ,6981, 6982, 6983 ,0, 0, 0 , - 3915, 3916, 3913 ,6981, 6983, 1671 ,0, 0, 0 , - 3916, 1486, 3917 ,6983, 6984, 1668 ,0, 0, 0 , - 3916, 3917, 3913 ,6983, 1668, 1671 ,0, 0, 0 , - 3919, 1488, 3920 ,1674, 4442, 6985 ,0, 0, 0 , - 3919, 3920, 3918 ,1674, 6985, 1675 ,0, 0, 0 , - 3920, 1489, 3921 ,6985, 6986, 6987 ,0, 0, 0 , - 3920, 3921, 3918 ,6985, 6987, 1675 ,0, 0, 0 , - 3921, 1490, 3922 ,6987, 6988, 1672 ,0, 0, 0 , - 3921, 3922, 3918 ,6987, 1672, 1675 ,0, 0, 0 , - 3924, 1492, 3925 ,1678, 4439, 6989 ,0, 0, 0 , - 3924, 3925, 3923 ,1678, 6989, 1679 ,0, 0, 0 , - 3925, 1493, 3926 ,6989, 6990, 6991 ,0, 0, 0 , - 3925, 3926, 3923 ,6989, 6991, 1679 ,0, 0, 0 , - 3926, 1494, 3927 ,6991, 6992, 1676 ,0, 0, 0 , - 3926, 3927, 3923 ,6991, 1676, 1679 ,0, 0, 0 , - 3929, 1496, 3930 ,1682, 4434, 6993 ,0, 0, 0 , - 3929, 3930, 3928 ,1682, 6993, 1683 ,0, 0, 0 , - 3930, 1497, 3931 ,6993, 6994, 6995 ,0, 0, 0 , - 3930, 3931, 3928 ,6993, 6995, 1683 ,0, 0, 0 , - 3931, 1498, 3932 ,6995, 6996, 1680 ,0, 0, 0 , - 3931, 3932, 3928 ,6995, 1680, 1683 ,0, 0, 0 , - 3934, 1500, 3935 ,1686, 6997, 6998 ,0, 0, 0 , - 3934, 3935, 3933 ,1686, 6998, 1687 ,0, 0, 0 , - 3935, 1501, 3936 ,6998, 6999, 7000 ,0, 0, 0 , - 3935, 3936, 3933 ,6998, 7000, 1687 ,0, 0, 0 , - 3936, 1502, 3937 ,7000, 7001, 1684 ,0, 0, 0 , - 3936, 3937, 3933 ,7000, 1684, 1687 ,0, 0, 0 , - 3939, 1504, 3940 ,1690, 4430, 4357 ,0, 0, 0 , - 3939, 3940, 3938 ,1690, 4357, 1691 ,0, 0, 0 , - 3940, 1505, 3941 ,4357, 4356, 4344 ,0, 0, 0 , - 3940, 3941, 3938 ,4357, 4344, 1691 ,0, 0, 0 , - 3941, 1506, 3942 ,4344, 2574, 1688 ,0, 0, 0 , - 3941, 3942, 3938 ,4344, 1688, 1691 ,0, 0, 0 , - 3944, 1508, 3945 ,1694, 4427, 7002 ,0, 0, 0 , - 3944, 3945, 3943 ,1694, 7002, 1695 ,0, 0, 0 , - 3945, 1509, 3946 ,7002, 7003, 4366 ,0, 0, 0 , - 3945, 3946, 3943 ,7002, 4366, 1695 ,0, 0, 0 , - 3946, 1510, 3947 ,4366, 2581, 1692 ,0, 0, 0 , - 3946, 3947, 3943 ,4366, 1692, 1695 ,0, 0, 0 , - 3949, 1512, 3950 ,1698, 4423, 7004 ,0, 0, 0 , - 3949, 3950, 3948 ,1698, 7004, 1699 ,0, 0, 0 , - 3950, 1513, 3951 ,7004, 7005, 7006 ,0, 0, 0 , - 3950, 3951, 3948 ,7004, 7006, 1699 ,0, 0, 0 , - 3951, 1514, 3952 ,7006, 7007, 1696 ,0, 0, 0 , - 3951, 3952, 3948 ,7006, 1696, 1699 ,0, 0, 0 , - 3954, 1516, 3955 ,1702, 4415, 7008 ,0, 0, 0 , - 3954, 3955, 3953 ,1702, 7008, 1703 ,0, 0, 0 , - 3955, 1517, 3956 ,7008, 7009, 7010 ,0, 0, 0 , - 3955, 3956, 3953 ,7008, 7010, 1703 ,0, 0, 0 , - 3956, 1518, 3957 ,7010, 7011, 1700 ,0, 0, 0 , - 3956, 3957, 3953 ,7010, 1700, 1703 ,0, 0, 0 , - 3959, 1520, 3960 ,1706, 7012, 7013 ,0, 0, 0 , - 3959, 3960, 3958 ,1706, 7013, 1707 ,0, 0, 0 , - 3960, 1521, 3961 ,7013, 7014, 7015 ,0, 0, 0 , - 3960, 3961, 3958 ,7013, 7015, 1707 ,0, 0, 0 , - 3961, 1522, 3962 ,7015, 7016, 1704 ,0, 0, 0 , - 3961, 3962, 3958 ,7015, 1704, 1707 ,0, 0, 0 , - 3964, 1524, 3965 ,1710, 7017, 4408 ,0, 0, 0 , - 3964, 3965, 3963 ,1710, 4408, 1711 ,0, 0, 0 , - 3965, 1525, 3966 ,4408, 4407, 7018 ,0, 0, 0 , - 3965, 3966, 3963 ,4408, 7018, 1711 ,0, 0, 0 , - 3966, 1526, 3967 ,7018, 7019, 1708 ,0, 0, 0 , - 3966, 3967, 3963 ,7018, 1708, 1711 ,0, 0, 0 , - 3969, 1528, 3970 ,1714, 7020, 4342 ,0, 0, 0 , - 3969, 3970, 3968 ,1714, 4342, 1715 ,0, 0, 0 , - 3970, 1529, 3971 ,4342, 4341, 1712 ,0, 0, 0 , - 3970, 3971, 3968 ,4342, 1712, 1715 ,0, 0, 0 , - 3973, 1531, 3974 ,1718, 4394, 4373 ,0, 0, 0 , - 3973, 3974, 3972 ,1718, 4373, 1719 ,0, 0, 0 , - 3974, 1532, 3975 ,4373, 4372, 7021 ,0, 0, 0 , - 3974, 3975, 3972 ,4373, 7021, 1719 ,0, 0, 0 , - 3975, 1533, 3976 ,7021, 7022, 1716 ,0, 0, 0 , - 3975, 3976, 3972 ,7021, 1716, 1719 ,0, 0, 0 , - 3978, 1535, 3979 ,1722, 2612, 7023 ,0, 0, 0 , - 3978, 3979, 3977 ,1722, 7023, 1723 ,0, 0, 0 , - 3979, 1536, 3980 ,7023, 7024, 7025 ,0, 0, 0 , - 3979, 3980, 3977 ,7023, 7025, 1723 ,0, 0, 0 , - 3980, 1537, 3981 ,7025, 7026, 1720 ,0, 0, 0 , - 3980, 3981, 3977 ,7025, 1720, 1723 ,0, 0, 0 , - 3983, 1539, 3984 ,1726, 7027, 7028 ,0, 0, 0 , - 3983, 3984, 3982 ,1726, 7028, 1727 ,0, 0, 0 , - 3984, 1540, 3985 ,7028, 7029, 7030 ,0, 0, 0 , - 3984, 3985, 3982 ,7028, 7030, 1727 ,0, 0, 0 , - 3985, 1541, 3986 ,7030, 7031, 1724 ,0, 0, 0 , - 3985, 3986, 3982 ,7030, 1724, 1727 ,0, 0, 0 , - 3988, 1543, 3989 ,1730, 4392, 4381 ,0, 0, 0 , - 3988, 3989, 3987 ,1730, 4381, 1731 ,0, 0, 0 , - 3989, 1544, 3990 ,4381, 2595, 1728 ,0, 0, 0 , - 3989, 3990, 3987 ,4381, 1728, 1731 ,0, 0, 0 , - 3992, 1546, 3993 ,1734, 7032, 7033 ,0, 0, 0 , - 3992, 3993, 3991 ,1734, 7033, 1735 ,0, 0, 0 , - 3993, 1547, 3994 ,7033, 7034, 1732 ,0, 0, 0 , - 3993, 3994, 3991 ,7033, 1732, 1735 ,0, 0, 0 , - 3996, 1549, 3997 ,1738, 4383, 4305 ,0, 0, 0 , - 3996, 3997, 3995 ,1738, 4305, 1739 ,0, 0, 0 , - 3997, 1550, 3998 ,4305, 2537, 4359 ,0, 0, 0 , - 3997, 3998, 3995 ,4305, 4359, 1739 ,0, 0, 0 , - 3998, 1551, 3999 ,4359, 2585, 1736 ,0, 0, 0 , - 3998, 3999, 3995 ,4359, 1736, 1739 ,0, 0, 0 , - 4001, 1553, 4002 ,1742, 7035, 7036 ,0, 0, 0 , - 4001, 4002, 4000 ,1742, 7036, 1743 ,0, 0, 0 , - 4002, 1554, 4003 ,7036, 7037, 4309 ,0, 0, 0 , - 4002, 4003, 4000 ,7036, 4309, 1743 ,0, 0, 0 , - 4003, 1555, 4004 ,4309, 2541, 1740 ,0, 0, 0 , - 4003, 4004, 4000 ,4309, 1740, 1743 ,0, 0, 0 , - 4006, 1557, 4007 ,1746, 4369, 7038 ,0, 0, 0 , - 4006, 4007, 4005 ,1746, 7038, 1747 ,0, 0, 0 , - 4007, 1558, 4008 ,7038, 7039, 7040 ,0, 0, 0 , - 4007, 4008, 4005 ,7038, 7040, 1747 ,0, 0, 0 , - 4008, 1559, 4009 ,7040, 7041, 1744 ,0, 0, 0 , - 4008, 4009, 4005 ,7040, 1744, 1747 ,0, 0, 0 , - 4011, 1561, 4012 ,1750, 4364, 7042 ,0, 0, 0 , - 4011, 4012, 4010 ,1750, 7042, 1751 ,0, 0, 0 , - 4012, 1562, 4013 ,7042, 7043, 7044 ,0, 0, 0 , - 4012, 4013, 4010 ,7042, 7044, 1751 ,0, 0, 0 , - 4013, 1563, 4014 ,7044, 7045, 1748 ,0, 0, 0 , - 4013, 4014, 4010 ,7044, 1748, 1751 ,0, 0, 0 , - 4016, 1565, 4017 ,1754, 4351, 7046 ,0, 0, 0 , - 4016, 4017, 4015 ,1754, 7046, 1755 ,0, 0, 0 , - 4017, 1566, 4018 ,7046, 7047, 7048 ,0, 0, 0 , - 4017, 4018, 4015 ,7046, 7048, 1755 ,0, 0, 0 , - 4018, 1567, 4019 ,7048, 7049, 1752 ,0, 0, 0 , - 4018, 4019, 4015 ,7048, 1752, 1755 ,0, 0, 0 , - 4021, 1569, 4022 ,1758, 7050, 7051 ,0, 0, 0 , - 4021, 4022, 4020 ,1758, 7051, 1759 ,0, 0, 0 , - 4022, 1570, 4023 ,7051, 7052, 1756 ,0, 0, 0 , - 4022, 4023, 4020 ,7051, 1756, 1759 ,0, 0, 0 , - 4025, 1572, 4026 ,1762, 4300, 7053 ,0, 0, 0 , - 4025, 4026, 4024 ,1762, 7053, 1763 ,0, 0, 0 , - 4026, 1573, 4027 ,7053, 7054, 7055 ,0, 0, 0 , - 4026, 4027, 4024 ,7053, 7055, 1763 ,0, 0, 0 , - 4027, 1574, 4028 ,7055, 7056, 1760 ,0, 0, 0 , - 4027, 4028, 4024 ,7055, 1760, 1763 ,0, 0, 0 , - 4030, 1576, 4031 ,1766, 7057, 7058 ,0, 0, 0 , - 4030, 4031, 4029 ,1766, 7058, 1767 ,0, 0, 0 , - 4031, 1577, 4032 ,7058, 7059, 1764 ,0, 0, 0 , - 4031, 4032, 4029 ,7058, 1764, 1767 ,0, 0, 0 , - 2463, 357, 4034 ,431, 6279, 1816 ,0, 0, 0 , - 2463, 4034, 4033 ,431, 1816, 1769 ,0, 0, 0 , - 4034, 1578, 4035 ,1816, 1815, 1768 ,0, 0, 0 , - 4034, 4035, 4033 ,1816, 1768, 1769 ,0, 0, 0 , - 4037, 1580, 4038 ,1772, 4334, 7060 ,0, 0, 0 , - 4037, 4038, 4036 ,1772, 7060, 1773 ,0, 0, 0 , - 4038, 1581, 4039 ,7060, 7061, 7062 ,0, 0, 0 , - 4038, 4039, 4036 ,7060, 7062, 1773 ,0, 0, 0 , - 4039, 1582, 4040 ,7062, 7063, 1770 ,0, 0, 0 , - 4039, 4040, 4036 ,7062, 1770, 1773 ,0, 0, 0 , - 4042, 1584, 4043 ,1776, 4330, 7064 ,0, 0, 0 , - 4042, 4043, 4041 ,1776, 7064, 1777 ,0, 0, 0 , - 4043, 1585, 4044 ,7064, 7065, 7066 ,0, 0, 0 , - 4043, 4044, 4041 ,7064, 7066, 1777 ,0, 0, 0 , - 4044, 1586, 4045 ,7066, 7067, 1774 ,0, 0, 0 , - 4044, 4045, 4041 ,7066, 1774, 1777 ,0, 0, 0 , - 4047, 1588, 4048 ,1780, 4325, 7068 ,0, 0, 0 , - 4047, 4048, 4046 ,1780, 7068, 1781 ,0, 0, 0 , - 4048, 1589, 4049 ,7068, 7069, 7070 ,0, 0, 0 , - 4048, 4049, 4046 ,7068, 7070, 1781 ,0, 0, 0 , - 4049, 1590, 4050 ,7070, 7071, 1778 ,0, 0, 0 , - 4049, 4050, 4046 ,7070, 1778, 1781 ,0, 0, 0 , - 4052, 1592, 4053 ,1784, 7072, 7073 ,0, 0, 0 , - 4052, 4053, 4051 ,1784, 7073, 1785 ,0, 0, 0 , - 4053, 1593, 4054 ,7073, 7074, 1782 ,0, 0, 0 , - 4053, 4054, 4051 ,7073, 1782, 1785 ,0, 0, 0 , - 4056, 1595, 4057 ,1788, 7075, 4282 ,0, 0, 0 , - 4056, 4057, 4055 ,1788, 4282, 1789 ,0, 0, 0 , - 4057, 1596, 4058 ,4282, 2517, 1786 ,0, 0, 0 , - 4057, 4058, 4055 ,4282, 1786, 1789 ,0, 0, 0 , - 4060, 1598, 4061 ,1792, 7076, 7077 ,0, 0, 0 , - 4060, 4061, 4059 ,1792, 7077, 1793 ,0, 0, 0 , - 4061, 1599, 4062 ,7077, 7078, 1790 ,0, 0, 0 , - 4061, 4062, 4059 ,7077, 1790, 1793 ,0, 0, 0 , - 4064, 1601, 4065 ,1796, 4312, 7079 ,0, 0, 0 , - 4064, 4065, 4063 ,1796, 7079, 1797 ,0, 0, 0 , - 4065, 1602, 4066 ,7079, 7080, 7081 ,0, 0, 0 , - 4065, 4066, 4063 ,7079, 7081, 1797 ,0, 0, 0 , - 4066, 1603, 4067 ,7081, 7082, 1794 ,0, 0, 0 , - 4066, 4067, 4063 ,7081, 1794, 1797 ,0, 0, 0 , - 4069, 1605, 4070 ,1800, 7083, 4273 ,0, 0, 0 , - 4069, 4070, 4068 ,1800, 4273, 1801 ,0, 0, 0 , - 4070, 1606, 4071 ,4273, 2510, 1798 ,0, 0, 0 , - 4070, 4071, 4068 ,4273, 1798, 1801 ,0, 0, 0 , - 4073, 1608, 4074 ,1804, 4303, 7084 ,0, 0, 0 , - 4073, 4074, 4072 ,1804, 7084, 1805 ,0, 0, 0 , - 4074, 1609, 4075 ,7084, 7085, 7086 ,0, 0, 0 , - 4074, 4075, 4072 ,7084, 7086, 1805 ,0, 0, 0 , - 4075, 1610, 4076 ,7086, 7087, 1802 ,0, 0, 0 , - 4075, 4076, 4072 ,7086, 1802, 1805 ,0, 0, 0 , - 4078, 1612, 4079 ,1808, 4295, 7088 ,0, 0, 0 , - 4078, 4079, 4077 ,1808, 7088, 1809 ,0, 0, 0 , - 4079, 1613, 4080 ,7088, 7089, 7090 ,0, 0, 0 , - 4079, 4080, 4077 ,7088, 7090, 1809 ,0, 0, 0 , - 4080, 1614, 4081 ,7090, 7091, 1806 ,0, 0, 0 , - 4080, 4081, 4077 ,7090, 1806, 1809 ,0, 0, 0 , - 4083, 1616, 4084 ,1812, 7092, 7093 ,0, 0, 0 , - 4083, 4084, 4082 ,1812, 7093, 1813 ,0, 0, 0 , - 4084, 1617, 4085 ,7093, 7094, 7095 ,0, 0, 0 , - 4084, 4085, 4082 ,7093, 7095, 1813 ,0, 0, 0 , - 4085, 1618, 4086 ,7095, 7096, 1810 ,0, 0, 0 , - 4085, 4086, 4082 ,7095, 1810, 1813 ,0, 0, 0 , - 4034, 357, 2408 ,1816, 6279, 6278 ,0, 0, 0 , - 4034, 2408, 4087 ,1816, 6278, 1817 ,0, 0, 0 , - 2408, 356, 4088 ,6278, 6277, 1814 ,0, 0, 0 , - 2408, 4088, 4087 ,6278, 1814, 1817 ,0, 0, 0 , - 4090, 1619, 4091 ,1820, 4289, 7097 ,0, 0, 0 , - 4090, 4091, 4089 ,1820, 7097, 1821 ,0, 0, 0 , - 4091, 1620, 4092 ,7097, 7098, 7099 ,0, 0, 0 , - 4091, 4092, 4089 ,7097, 7099, 1821 ,0, 0, 0 , - 4092, 353, 2403 ,7099, 6276, 1818 ,0, 0, 0 , - 4092, 2403, 4089 ,7099, 1818, 1821 ,0, 0, 0 , - 4094, 1621, 4095 ,1824, 4285, 7100 ,0, 0, 0 , - 4094, 4095, 4093 ,1824, 7100, 1825 ,0, 0, 0 , - 4095, 1622, 4096 ,7100, 7101, 7102 ,0, 0, 0 , - 4095, 4096, 4093 ,7100, 7102, 1825 ,0, 0, 0 , - 4096, 349, 2398 ,7102, 6275, 1822 ,0, 0, 0 , - 4096, 2398, 4093 ,7102, 1822, 1825 ,0, 0, 0 , - 4098, 1623, 4099 ,1828, 4280, 7103 ,0, 0, 0 , - 4098, 4099, 4097 ,1828, 7103, 1829 ,0, 0, 0 , - 4099, 1624, 4100 ,7103, 7104, 7105 ,0, 0, 0 , - 4099, 4100, 4097 ,7103, 7105, 1829 ,0, 0, 0 , - 4100, 345, 2393 ,7105, 6274, 1826 ,0, 0, 0 , - 4100, 2393, 4097 ,7105, 1826, 1829 ,0, 0, 0 , - 4102, 1626, 4103 ,1832, 4276, 7106 ,0, 0, 0 , - 4102, 4103, 4101 ,1832, 7106, 1833 ,0, 0, 0 , - 4103, 1627, 4104 ,7106, 7107, 7108 ,0, 0, 0 , - 4103, 4104, 4101 ,7106, 7108, 1833 ,0, 0, 0 , - 4104, 1628, 4105 ,7108, 7109, 1830 ,0, 0, 0 , - 4104, 4105, 4101 ,7108, 1830, 1833 ,0, 0, 0 , - 4107, 1630, 4108 ,1836, 4271, 7110 ,0, 0, 0 , - 4107, 4108, 4106 ,1836, 7110, 1837 ,0, 0, 0 , - 4108, 1631, 4109 ,7110, 7111, 7112 ,0, 0, 0 , - 4108, 4109, 4106 ,7110, 7112, 1837 ,0, 0, 0 , - 4109, 1632, 4110 ,7112, 7113, 1834 ,0, 0, 0 , - 4109, 4110, 4106 ,7112, 1834, 1837 ,0, 0, 0 , - 4112, 1634, 4113 ,1840, 4267, 7114 ,0, 0, 0 , - 4112, 4113, 4111 ,1840, 7114, 1841 ,0, 0, 0 , - 4113, 1635, 4114 ,7114, 7115, 7116 ,0, 0, 0 , - 4113, 4114, 4111 ,7114, 7116, 1841 ,0, 0, 0 , - 4114, 1636, 4115 ,7116, 7117, 1838 ,0, 0, 0 , - 4114, 4115, 4111 ,7116, 1838, 1841 ,0, 0, 0 , - 4117, 1638, 4118 ,1844, 4263, 7118 ,0, 0, 0 , - 4117, 4118, 4116 ,1844, 7118, 1845 ,0, 0, 0 , - 4118, 1639, 4119 ,7118, 7119, 7120 ,0, 0, 0 , - 4118, 4119, 4116 ,7118, 7120, 1845 ,0, 0, 0 , - 4119, 1640, 4120 ,7120, 7121, 1842 ,0, 0, 0 , - 4119, 4120, 4116 ,7120, 1842, 1845 ,0, 0, 0 , - 4122, 1642, 4123 ,1848, 4254, 7122 ,0, 0, 0 , - 4122, 4123, 4121 ,1848, 7122, 1849 ,0, 0, 0 , - 4123, 1643, 4124 ,7122, 7123, 7124 ,0, 0, 0 , - 4123, 4124, 4121 ,7122, 7124, 1849 ,0, 0, 0 , - 4124, 1644, 4125 ,7124, 7125, 1846 ,0, 0, 0 , - 4124, 4125, 4121 ,7124, 1846, 1849 ,0, 0, 0 , - 4127, 1646, 4128 ,1852, 7126, 7127 ,0, 0, 0 , - 4127, 4128, 4126 ,1852, 7127, 1853 ,0, 0, 0 , - 4128, 1647, 4129 ,7127, 7128, 7129 ,0, 0, 0 , - 4128, 4129, 4126 ,7127, 7129, 1853 ,0, 0, 0 , - 4129, 1648, 4130 ,7129, 7130, 1850 ,0, 0, 0 , - 4129, 4130, 4126 ,7129, 1850, 1853 ,0, 0, 0 , - 4132, 1651, 4133 ,1856, 2434, 4181 ,0, 0, 0 , - 4132, 4133, 4131 ,1856, 4181, 1857 ,0, 0, 0 , - 4133, 1652, 4134 ,4181, 2448, 1854 ,0, 0, 0 , - 4133, 4134, 4131 ,4181, 1854, 1857 ,0, 0, 0 , - 4136, 1654, 4137 ,1860, 4192, 4203 ,0, 0, 0 , - 4136, 4137, 4135 ,1860, 4203, 1861 ,0, 0, 0 , - 4137, 1655, 4138 ,4203, 4202, 4243 ,0, 0, 0 , - 4137, 4138, 4135 ,4203, 4243, 1861 ,0, 0, 0 , - 4138, 1656, 4139 ,4243, 4242, 1858 ,0, 0, 0 , - 4138, 4139, 4135 ,4243, 1858, 1861 ,0, 0, 0 , - 4141, 1658, 4142 ,1864, 4248, 4209 ,0, 0, 0 , - 4141, 4142, 4140 ,1864, 4209, 1865 ,0, 0, 0 , - 4142, 1659, 4143 ,4209, 4208, 7131 ,0, 0, 0 , - 4142, 4143, 4140 ,4209, 7131, 1865 ,0, 0, 0 , - 4143, 1660, 4144 ,7131, 7132, 1862 ,0, 0, 0 , - 4143, 4144, 4140 ,7131, 1862, 1865 ,0, 0, 0 , - 4146, 1662, 4147 ,1868, 7133, 7134 ,0, 0, 0 , - 4146, 4147, 4145 ,1868, 7134, 1869 ,0, 0, 0 , - 4147, 1663, 4148 ,7134, 7135, 4232 ,0, 0, 0 , - 4147, 4148, 4145 ,7134, 4232, 1869 ,0, 0, 0 , - 4148, 1664, 4149 ,4232, 4231, 1866 ,0, 0, 0 , - 4148, 4149, 4145 ,4232, 1866, 1869 ,0, 0, 0 , - 4151, 1666, 4152 ,1872, 7136, 7137 ,0, 0, 0 , - 4151, 4152, 4150 ,1872, 7137, 1873 ,0, 0, 0 , - 4152, 1667, 4153 ,7137, 7138, 4223 ,0, 0, 0 , - 4152, 4153, 4150 ,7137, 4223, 1873 ,0, 0, 0 , - 4153, 1668, 4154 ,4223, 4222, 1870 ,0, 0, 0 , - 4153, 4154, 4150 ,4223, 1870, 1873 ,0, 0, 0 , - 4156, 1670, 4157 ,1876, 7139, 7140 ,0, 0, 0 , - 4156, 4157, 4155 ,1876, 7140, 1877 ,0, 0, 0 , - 4157, 1671, 4158 ,7140, 7141, 4217 ,0, 0, 0 , - 4157, 4158, 4155 ,7140, 4217, 1877 ,0, 0, 0 , - 4158, 1672, 4159 ,4217, 4216, 1874 ,0, 0, 0 , - 4158, 4159, 4155 ,4217, 1874, 1877 ,0, 0, 0 , - 4161, 1674, 4162 ,1880, 7142, 7143 ,0, 0, 0 , - 4161, 4162, 4160 ,1880, 7143, 1881 ,0, 0, 0 , - 4162, 1675, 4163 ,7143, 7144, 7145 ,0, 0, 0 , - 4162, 4163, 4160 ,7143, 7145, 1881 ,0, 0, 0 , - 4163, 1676, 4164 ,7145, 7146, 1878 ,0, 0, 0 , - 4163, 4164, 4160 ,7145, 1878, 1881 ,0, 0, 0 , - 4166, 1678, 4167 ,1884, 7147, 7148 ,0, 0, 0 , - 4166, 4167, 4165 ,1884, 7148, 1885 ,0, 0, 0 , - 4167, 1679, 4168 ,7148, 7149, 4197 ,0, 0, 0 , - 4167, 4168, 4165 ,7148, 4197, 1885 ,0, 0, 0 , - 4168, 1680, 4169 ,4197, 4196, 1882 ,0, 0, 0 , - 4168, 4169, 4165 ,4197, 1882, 1885 ,0, 0, 0 , - 4171, 1682, 4172 ,1888, 7150, 7151 ,0, 0, 0 , - 4171, 4172, 4170 ,1888, 7151, 1889 ,0, 0, 0 , - 4172, 1683, 4173 ,7151, 7152, 7153 ,0, 0, 0 , - 4172, 4173, 4170 ,7151, 7153, 1889 ,0, 0, 0 , - 4173, 1684, 4174 ,7153, 7154, 1886 ,0, 0, 0 , - 4173, 4174, 4170 ,7153, 1886, 1889 ,0, 0, 0 , - 4176, 1686, 4177 ,1892, 7155, 4098 ,0, 0, 0 , - 4176, 4177, 4175 ,1892, 4098, 1893 ,0, 0, 0 , - 4177, 1687, 4178 ,4098, 4097, 1890 ,0, 0, 0 , - 4177, 4178, 4175 ,4098, 1890, 1893 ,0, 0, 0 , - 4180, 1689, 4181 ,1896, 2323, 7156 ,0, 0, 0 , - 4180, 4181, 4179 ,1896, 7156, 1897 ,0, 0, 0 , - 4181, 1690, 4182 ,7156, 4188, 1894 ,0, 0, 0 , - 4181, 4182, 4179 ,7156, 1894, 1897 ,0, 0, 0 , - 4184, 1690, 4181 ,1900, 4188, 7156 ,0, 0, 0 , - 4184, 4181, 4183 ,1900, 7156, 1901 ,0, 0, 0 , - 4181, 1689, 4185 ,7156, 2323, 1898 ,0, 0, 0 , - 4181, 4185, 4183 ,7156, 1898, 1901 ,0, 0, 0 , - 4187, 1695, 4188 ,1904, 2444, 7157 ,0, 0, 0 , - 4187, 4188, 4186 ,1904, 7157, 1905 ,0, 0, 0 , - 4188, 1696, 4189 ,7157, 7158, 4186 ,0, 0, 0 , - 4188, 4189, 4186 ,7157, 4186, 1905 ,0, 0, 0 , - 4189, 1697, 4190 ,4186, 4185, 1902 ,0, 0, 0 , - 4189, 4190, 4186 ,4186, 1902, 1905 ,0, 0, 0 , - 4192, 1699, 4193 ,1908, 1911, 1910 ,0, 0, 0 , - 4192, 4193, 4191 ,1908, 1910, 1909 ,0, 0, 0 , - 4193, 1700, 4194 ,1910, 2342, 1906 ,0, 0, 0 , - 4193, 4194, 4191 ,1910, 1906, 1909 ,0, 0, 0 , - 4196, 1701, 4197 ,1912, 4183, 4175 ,0, 0, 0 , - 4196, 4197, 4195 ,1912, 4175, 1913 ,0, 0, 0 , - 4197, 1700, 4193 ,4175, 2342, 1910 ,0, 0, 0 , - 4197, 4193, 4195 ,4175, 1910, 1913 ,0, 0, 0 , - 4199, 1703, 4200 ,1916, 7159, 7160 ,0, 0, 0 , - 4199, 4200, 4198 ,1916, 7160, 1917 ,0, 0, 0 , - 4200, 1704, 4201 ,7160, 7161, 1914 ,0, 0, 0 , - 4200, 4201, 4198 ,7160, 1914, 1917 ,0, 0, 0 , - 4203, 1706, 4204 ,1920, 4169, 7162 ,0, 0, 0 , - 4203, 4204, 4202 ,1920, 7162, 1921 ,0, 0, 0 , - 4204, 1707, 4205 ,7162, 7163, 7164 ,0, 0, 0 , - 4204, 4205, 4202 ,7162, 7164, 1921 ,0, 0, 0 , - 4205, 1708, 4206 ,7164, 7165, 1918 ,0, 0, 0 , - 4205, 4206, 4202 ,7164, 1918, 1921 ,0, 0, 0 , - 4208, 1711, 4209 ,1924, 7166, 4067 ,0, 0, 0 , - 4208, 4209, 4207 ,1924, 4067, 1925 ,0, 0, 0 , - 4209, 1709, 4210 ,4067, 4066, 1922 ,0, 0, 0 , - 4209, 4210, 4207 ,4067, 1922, 1925 ,0, 0, 0 , - 4212, 1713, 4213 ,1928, 4064, 7167 ,0, 0, 0 , - 4212, 4213, 4211 ,1928, 7167, 1929 ,0, 0, 0 , - 4213, 1714, 4214 ,7167, 7168, 4172 ,0, 0, 0 , - 4213, 4214, 4211 ,7167, 4172, 1929 ,0, 0, 0 , - 4214, 1715, 4215 ,4172, 4171, 1926 ,0, 0, 0 , - 4214, 4215, 4211 ,4172, 1926, 1929 ,0, 0, 0 , - 4217, 1717, 4218 ,1932, 7169, 7170 ,0, 0, 0 , - 4217, 4218, 4216 ,1932, 7170, 1933 ,0, 0, 0 , - 4218, 1718, 4219 ,7170, 7171, 7172 ,0, 0, 0 , - 4218, 4219, 4216 ,7170, 7172, 1933 ,0, 0, 0 , - 4219, 1719, 4220 ,7172, 7173, 1930 ,0, 0, 0 , - 4219, 4220, 4216 ,7172, 1930, 1933 ,0, 0, 0 , - 4182, 1690, 4222 ,1894, 4188, 4083 ,0, 0, 0 , - 4182, 4222, 4221 ,1894, 4083, 1935 ,0, 0, 0 , - 4222, 1720, 4223 ,4083, 4082, 1934 ,0, 0, 0 , - 4222, 4223, 4221 ,4083, 1934, 1935 ,0, 0, 0 , - 4225, 1722, 4226 ,1938, 4079, 4076 ,0, 0, 0 , - 4225, 4226, 4224 ,1938, 4076, 1939 ,0, 0, 0 , - 4226, 1723, 4227 ,4076, 4075, 4161 ,0, 0, 0 , - 4226, 4227, 4224 ,4076, 4161, 1939 ,0, 0, 0 , - 4227, 1724, 4228 ,4161, 4160, 1936 ,0, 0, 0 , - 4227, 4228, 4224 ,4161, 1936, 1939 ,0, 0, 0 , - 4230, 1726, 4231 ,1942, 4166, 4086 ,0, 0, 0 , - 4230, 4231, 4229 ,1942, 4086, 1943 ,0, 0, 0 , - 4231, 1727, 4232 ,4086, 2310, 4095 ,0, 0, 0 , - 4231, 4232, 4229 ,4086, 4095, 1943 ,0, 0, 0 , - 4232, 1728, 4233 ,4095, 2375, 4124 ,0, 0, 0 , - 4232, 4233, 4229 ,4095, 4124, 1943 ,0, 0, 0 , - 4233, 1729, 4234 ,4124, 2399, 1940 ,0, 0, 0 , - 4233, 4234, 4229 ,4124, 1940, 1943 ,0, 0, 0 , - 4236, 1731, 4237 ,1946, 2414, 4145 ,0, 0, 0 , - 4236, 4237, 4235 ,1946, 4145, 1947 ,0, 0, 0 , - 4237, 1732, 4238 ,4145, 2422, 4164 ,0, 0, 0 , - 4237, 4238, 4235 ,4145, 4164, 1947 ,0, 0, 0 , - 4238, 1733, 4239 ,4164, 4163, 4072 ,0, 0, 0 , - 4238, 4239, 4235 ,4164, 4072, 1947 ,0, 0, 0 , - 4239, 1734, 4240 ,4072, 2356, 1944 ,0, 0, 0 , - 4239, 4240, 4235 ,4072, 1944, 1947 ,0, 0, 0 , - 4242, 1736, 4243 ,1950, 7174, 7175 ,0, 0, 0 , - 4242, 4243, 4241 ,1950, 7175, 1951 ,0, 0, 0 , - 4243, 1737, 4244 ,7175, 2360, 7176 ,0, 0, 0 , - 4243, 4244, 4241 ,7175, 7176, 1951 ,0, 0, 0 , - 4244, 1738, 4245 ,7176, 7177, 4153 ,0, 0, 0 , - 4244, 4245, 4241 ,7176, 4153, 1951 ,0, 0, 0 , - 4245, 1739, 4246 ,4153, 2430, 1948 ,0, 0, 0 , - 4245, 4246, 4241 ,4153, 1948, 1951 ,0, 0, 0 , - 4248, 1741, 4249 ,1954, 7178, 7179 ,0, 0, 0 , - 4248, 4249, 4247 ,1954, 7179, 1955 ,0, 0, 0 , - 4249, 1742, 4250 ,7179, 7180, 4151 ,0, 0, 0 , - 4249, 4250, 4247 ,7179, 4151, 1955 ,0, 0, 0 , - 4250, 1743, 4251 ,4151, 4150, 1952 ,0, 0, 0 , - 4250, 4251, 4247 ,4151, 1952, 1955 ,0, 0, 0 , - 4253, 1745, 4254 ,1958, 7181, 7182 ,0, 0, 0 , - 4253, 4254, 4252 ,1958, 7182, 1959 ,0, 0, 0 , - 4254, 1746, 4255 ,7182, 7183, 4143 ,0, 0, 0 , - 4254, 4255, 4252 ,7182, 4143, 1959 ,0, 0, 0 , - 4255, 1747, 4256 ,4143, 4142, 1956 ,0, 0, 0 , - 4255, 4256, 4252 ,4143, 1956, 1959 ,0, 0, 0 , - 4258, 1749, 4259 ,1962, 7184, 7185 ,0, 0, 0 , - 4258, 4259, 4257 ,1962, 7185, 1963 ,0, 0, 0 , - 4259, 1750, 4260 ,7185, 7186, 4137 ,0, 0, 0 , - 4259, 4260, 4257 ,7185, 4137, 1963 ,0, 0, 0 , - 4260, 1751, 4261 ,4137, 4136, 1960 ,0, 0, 0 , - 4260, 4261, 4257 ,4137, 1960, 1963 ,0, 0, 0 , - 4263, 1753, 4264 ,1966, 7187, 7188 ,0, 0, 0 , - 4263, 4264, 4262 ,1966, 7188, 1967 ,0, 0, 0 , - 4264, 1754, 4265 ,7188, 7189, 4130 ,0, 0, 0 , - 4264, 4265, 4262 ,7188, 4130, 1967 ,0, 0, 0 , - 4265, 1755, 4266 ,4130, 4129, 1964 ,0, 0, 0 , - 4265, 4266, 4262 ,4130, 1964, 1967 ,0, 0, 0 , - 4268, 1757, 4269 ,1970, 7190, 7191 ,0, 0, 0 , - 4268, 4269, 4267 ,1970, 7191, 1971 ,0, 0, 0 , - 4269, 1758, 4270 ,7191, 7192, 4122 ,0, 0, 0 , - 4269, 4270, 4267 ,7191, 4122, 1971 ,0, 0, 0 , - 4270, 1759, 4271 ,4122, 4121, 1968 ,0, 0, 0 , - 4270, 4271, 4267 ,4122, 1968, 1971 ,0, 0, 0 , - 4273, 1761, 4274 ,1974, 7193, 7194 ,0, 0, 0 , - 4273, 4274, 4272 ,1974, 7194, 1975 ,0, 0, 0 , - 4274, 1762, 4275 ,7194, 7195, 4116 ,0, 0, 0 , - 4274, 4275, 4272 ,7194, 4116, 1975 ,0, 0, 0 , - 4275, 1763, 4276 ,4116, 4115, 1972 ,0, 0, 0 , - 4275, 4276, 4272 ,4116, 1972, 1975 ,0, 0, 0 , - 4278, 1765, 4279 ,1978, 2371, 4110 ,0, 0, 0 , - 4278, 4279, 4277 ,1978, 4110, 1979 ,0, 0, 0 , - 4279, 1766, 4280 ,4110, 4109, 7196 ,0, 0, 0 , - 4279, 4280, 4277 ,4110, 7196, 1979 ,0, 0, 0 , - 4280, 1767, 4281 ,7196, 7197, 1976 ,0, 0, 0 , - 4280, 4281, 4277 ,7196, 1976, 1979 ,0, 0, 0 , - 4283, 1769, 4284 ,1982, 7198, 7199 ,0, 0, 0 , - 4283, 4284, 4282 ,1982, 7199, 1983 ,0, 0, 0 , - 4284, 1770, 4285 ,7199, 7200, 4092 ,0, 0, 0 , - 4284, 4285, 4282 ,7199, 4092, 1983 ,0, 0, 0 , - 4285, 1771, 4286 ,4092, 2367, 1980 ,0, 0, 0 , - 4285, 4286, 4282 ,4092, 1980, 1983 ,0, 0, 0 , - 4288, 1773, 4289 ,1986, 7201, 4102 ,0, 0, 0 , - 4288, 4289, 4287 ,1986, 4102, 1987 ,0, 0, 0 , - 4289, 1774, 4290 ,4102, 4101, 1984 ,0, 0, 0 , - 4289, 4290, 4287 ,4102, 1984, 1987 ,0, 0, 0 , - 4292, 1776, 4293 ,1990, 7202, 4090 ,0, 0, 0 , - 4292, 4293, 4291 ,1990, 4090, 1991 ,0, 0, 0 , - 4293, 1777, 4294 ,4090, 4089, 4052 ,0, 0, 0 , - 4293, 4294, 4291 ,4090, 4052, 1991 ,0, 0, 0 , - 4294, 1778, 4295 ,4052, 2335, 1988 ,0, 0, 0 , - 4294, 4295, 4291 ,4052, 1988, 1991 ,0, 0, 0 , - 4297, 1780, 4298 ,1994, 7203, 7204 ,0, 0, 0 , - 4297, 4298, 4296 ,1994, 7204, 1995 ,0, 0, 0 , - 4298, 1781, 4299 ,7204, 7205, 7206 ,0, 0, 0 , - 4298, 4299, 4296 ,7204, 7206, 1995 ,0, 0, 0 , - 4299, 1782, 4300 ,7206, 7207, 4008 ,0, 0, 0 , - 4299, 4300, 4296 ,7206, 4008, 1995 ,0, 0, 0 , - 4300, 1783, 4301 ,4008, 2306, 1992 ,0, 0, 0 , - 4300, 4301, 4296 ,4008, 1992, 1995 ,0, 0, 0 , - 4303, 1785, 4304 ,1998, 2346, 7208 ,0, 0, 0 , - 4303, 4304, 4302 ,1998, 7208, 1999 ,0, 0, 0 , - 4304, 1786, 4305 ,7208, 7209, 4017 ,0, 0, 0 , - 4304, 4305, 4302 ,7208, 4017, 1999 ,0, 0, 0 , - 4305, 1787, 4306 ,4017, 4016, 1996 ,0, 0, 0 , - 4305, 4306, 4302 ,4017, 1996, 1999 ,0, 0, 0 , - 4308, 1793, 4309 ,2002, 7210, 7211 ,0, 0, 0 , - 4308, 4309, 4307 ,2002, 7211, 2003 ,0, 0, 0 , - 4309, 1794, 4310 ,7211, 7212, 7213 ,0, 0, 0 , - 4309, 4310, 4307 ,7211, 7213, 2003 ,0, 0, 0 , - 4310, 1795, 4311 ,7213, 7214, 2000 ,0, 0, 0 , - 4310, 4311, 4307 ,7213, 2000, 2003 ,0, 0, 0 , - 4313, 1797, 4314 ,2006, 7215, 7216 ,0, 0, 0 , - 4313, 4314, 4312 ,2006, 7216, 2007 ,0, 0, 0 , - 4314, 1798, 4315 ,7216, 7217, 7218 ,0, 0, 0 , - 4314, 4315, 4312 ,7216, 7218, 2007 ,0, 0, 0 , - 4315, 1799, 4316 ,7218, 7219, 2004 ,0, 0, 0 , - 4315, 4316, 4312 ,7218, 2004, 2007 ,0, 0, 0 , - 4318, 1800, 4319 ,2010, 7220, 7221 ,0, 0, 0 , - 4318, 4319, 4317 ,2010, 7221, 2011 ,0, 0, 0 , - 4319, 1801, 4320 ,7221, 7222, 7223 ,0, 0, 0 , - 4319, 4320, 4317 ,7221, 7223, 2011 ,0, 0, 0 , - 4320, 1693, 4321 ,7223, 7224, 2008 ,0, 0, 0 , - 4320, 4321, 4317 ,7223, 2008, 2011 ,0, 0, 0 , - 4323, 1803, 4324 ,2014, 4058, 3928 ,0, 0, 0 , - 4323, 4324, 4322 ,2014, 3928, 2015 ,0, 0, 0 , - 4324, 1804, 4325 ,3928, 3927, 2012 ,0, 0, 0 , - 4324, 4325, 4322 ,3928, 2012, 2015 ,0, 0, 0 , - 4327, 1806, 4328 ,2018, 3932, 3924 ,0, 0, 0 , - 4327, 4328, 4326 ,2018, 3924, 2019 ,0, 0, 0 , - 4328, 1807, 4329 ,3924, 3923, 4056 ,0, 0, 0 , - 4328, 4329, 4326 ,3924, 4056, 2019 ,0, 0, 0 , - 4329, 1808, 4330 ,4056, 4055, 2016 ,0, 0, 0 , - 4329, 4330, 4326 ,4056, 2016, 2019 ,0, 0, 0 , - 4332, 1810, 4333 ,2022, 7225, 7226 ,0, 0, 0 , - 4332, 4333, 4331 ,2022, 7226, 2023 ,0, 0, 0 , - 4333, 1811, 4334 ,7226, 2243, 2020 ,0, 0, 0 , - 4333, 4334, 4331 ,7226, 2020, 2023 ,0, 0, 0 , - 4336, 1813, 4337 ,2026, 7227, 7228 ,0, 0, 0 , - 4336, 4337, 4335 ,2026, 7228, 2027 ,0, 0, 0 , - 4337, 1814, 4338 ,7228, 7229, 4002 ,0, 0, 0 , - 4337, 4338, 4335 ,7228, 4002, 2027 ,0, 0, 0 , - 4338, 1815, 4339 ,4002, 4001, 2024 ,0, 0, 0 , - 4338, 4339, 4335 ,4002, 2024, 2027 ,0, 0, 0 , - 4341, 1817, 4342 ,2030, 2033, 4022 ,0, 0, 0 , - 4341, 4342, 4340 ,2030, 4022, 2031 ,0, 0, 0 , - 4342, 1818, 4343 ,4022, 4021, 2028 ,0, 0, 0 , - 4342, 4343, 4340 ,4022, 2028, 2031 ,0, 0, 0 , - 4341, 1816, 4345 ,2030, 2029, 4049 ,0, 0, 0 , - 4341, 4345, 4344 ,2030, 4049, 2034 ,0, 0, 0 , - 4345, 1819, 4346 ,4049, 4048, 2032 ,0, 0, 0 , - 4345, 4346, 4344 ,4049, 2032, 2034 ,0, 0, 0 , - 4348, 1789, 4349 ,2037, 2331, 4043 ,0, 0, 0 , - 4348, 4349, 4347 ,2037, 4043, 2038 ,0, 0, 0 , - 4349, 1788, 4350 ,4043, 4042, 4046 ,0, 0, 0 , - 4349, 4350, 4347 ,4043, 4046, 2038 ,0, 0, 0 , - 4350, 1821, 4351 ,4046, 4045, 2035 ,0, 0, 0 , - 4350, 4351, 4347 ,4046, 2035, 2038 ,0, 0, 0 , - 4353, 1823, 4354 ,2041, 7230, 2045 ,0, 0, 0 , - 4353, 4354, 4352 ,2041, 2045, 2042 ,0, 0, 0 , - 4354, 1824, 4355 ,2045, 2044, 2039 ,0, 0, 0 , - 4354, 4355, 4352 ,2045, 2039, 2042 ,0, 0, 0 , - 4354, 1823, 4357 ,2045, 7230, 7231 ,0, 0, 0 , - 4354, 4357, 4356 ,2045, 7231, 2046 ,0, 0, 0 , - 4357, 1825, 4358 ,7231, 7232, 2043 ,0, 0, 0 , - 4357, 4358, 4356 ,7231, 2043, 2046 ,0, 0, 0 , - 4360, 1828, 4361 ,2049, 7233, 7234 ,0, 0, 0 , - 4360, 4361, 4359 ,2049, 7234, 2050 ,0, 0, 0 , - 4361, 1829, 4362 ,7234, 7235, 4036 ,0, 0, 0 , - 4361, 4362, 4359 ,7234, 4036, 2050 ,0, 0, 0 , - 4362, 1830, 4363 ,4036, 4035, 2047 ,0, 0, 0 , - 4362, 4363, 4359 ,4036, 2047, 2050 ,0, 0, 0 , - 4365, 1832, 4366 ,2053, 3991, 4033 ,0, 0, 0 , - 4365, 4366, 4364 ,2053, 4033, 2054 ,0, 0, 0 , - 4366, 1833, 4367 ,4033, 2327, 2051 ,0, 0, 0 , - 4366, 4367, 4364 ,4033, 2051, 2054 ,0, 0, 0 , - 4358, 1825, 4369 ,2043, 7232, 4029 ,0, 0, 0 , - 4358, 4369, 4368 ,2043, 4029, 2056 ,0, 0, 0 , - 4369, 1834, 4370 ,4029, 4028, 2055 ,0, 0, 0 , - 4369, 4370, 4368 ,4029, 2055, 2056 ,0, 0, 0 , - 4372, 1836, 4373 ,2059, 7236, 7237 ,0, 0, 0 , - 4372, 4373, 4371 ,2059, 7237, 2060 ,0, 0, 0 , - 4373, 1837, 4374 ,7237, 7238, 7239 ,0, 0, 0 , - 4373, 4374, 4371 ,7237, 7239, 2060 ,0, 0, 0 , - 4374, 1838, 4375 ,7239, 7240, 2057 ,0, 0, 0 , - 4374, 4375, 4371 ,7239, 2057, 2060 ,0, 0, 0 , - 4377, 1840, 4378 ,2063, 7241, 7242 ,0, 0, 0 , - 4377, 4378, 4376 ,2063, 7242, 2064 ,0, 0, 0 , - 4378, 1841, 4379 ,7242, 7243, 4012 ,0, 0, 0 , - 4378, 4379, 4376 ,7242, 4012, 2064 ,0, 0, 0 , - 4379, 1842, 4380 ,4012, 4011, 2061 ,0, 0, 0 , - 4379, 4380, 4376 ,4012, 2061, 2064 ,0, 0, 0 , - 4382, 1844, 4383 ,2067, 7244, 4006 ,0, 0, 0 , - 4382, 4383, 4381 ,2067, 4006, 2068 ,0, 0, 0 , - 4383, 1845, 4384 ,4006, 4005, 7245 ,0, 0, 0 , - 4383, 4384, 4381 ,4006, 7245, 2068 ,0, 0, 0 , - 4384, 1846, 4385 ,7245, 7246, 2065 ,0, 0, 0 , - 4384, 4385, 4381 ,7245, 2065, 2068 ,0, 0, 0 , - 4387, 1848, 4388 ,2071, 7247, 3998 ,0, 0, 0 , - 4387, 4388, 4386 ,2071, 3998, 2072 ,0, 0, 0 , - 4388, 1849, 4389 ,3998, 2254, 2069 ,0, 0, 0 , - 4388, 4389, 4386 ,3998, 2069, 2072 ,0, 0, 0 , - 4391, 1851, 4392 ,2075, 7248, 7249 ,0, 0, 0 , - 4391, 4392, 4390 ,2075, 7249, 2076 ,0, 0, 0 , - 4392, 1852, 4393 ,7249, 7250, 3996 ,0, 0, 0 , - 4392, 4393, 4390 ,7249, 3996, 2076 ,0, 0, 0 , - 4393, 1853, 4394 ,3996, 3995, 2073 ,0, 0, 0 , - 4393, 4394, 4390 ,3996, 2073, 2076 ,0, 0, 0 , - 4355, 1824, 4396 ,2039, 2044, 3946 ,0, 0, 0 , - 4355, 4396, 4395 ,2039, 3946, 2078 ,0, 0, 0 , - 4396, 1854, 4397 ,3946, 2258, 2077 ,0, 0, 0 , - 4396, 4397, 4395 ,3946, 2077, 2078 ,0, 0, 0 , - 4399, 1856, 4400 ,2081, 3973, 3950 ,0, 0, 0 , - 4399, 4400, 4398 ,2081, 3950, 2082 ,0, 0, 0 , - 4400, 1857, 4401 ,3950, 3949, 3988 ,0, 0, 0 , - 4400, 4401, 4398 ,3950, 3988, 2082 ,0, 0, 0 , - 4401, 1858, 4402 ,3988, 2296, 2079 ,0, 0, 0 , - 4401, 4402, 4398 ,3988, 2079, 2082 ,0, 0, 0 , - 4404, 1860, 4405 ,2085, 7251, 7252 ,0, 0, 0 , - 4404, 4405, 4403 ,2085, 7252, 2086 ,0, 0, 0 , - 4405, 1861, 4406 ,7252, 7253, 3986 ,0, 0, 0 , - 4405, 4406, 4403 ,7252, 3986, 2086 ,0, 0, 0 , - 4406, 1862, 4407 ,3986, 3985, 2083 ,0, 0, 0 , - 4406, 4407, 4403 ,3986, 2083, 2086 ,0, 0, 0 , - 4409, 1866, 4410 ,2089, 2096, 2093 ,0, 0, 0 , - 4409, 4410, 4408 ,2089, 2093, 2090 ,0, 0, 0 , - 4410, 1867, 4411 ,2093, 2092, 2087 ,0, 0, 0 , - 4410, 4411, 4408 ,2093, 2087, 2090 ,0, 0, 0 , - 4410, 1866, 4413 ,2093, 2096, 2095 ,0, 0, 0 , - 4410, 4413, 4412 ,2093, 2095, 2094 ,0, 0, 0 , - 4413, 1868, 4414 ,2095, 2288, 2091 ,0, 0, 0 , - 4413, 4414, 4412 ,2095, 2091, 2094 ,0, 0, 0 , - 4416, 1869, 4417 ,2097, 7254, 3978 ,0, 0, 0 , - 4416, 4417, 4415 ,2097, 3978, 2098 ,0, 0, 0 , - 4417, 1868, 4413 ,3978, 2288, 2095 ,0, 0, 0 , - 4417, 4413, 4415 ,3978, 2095, 2098 ,0, 0, 0 , - 4419, 1871, 4420 ,2101, 7255, 3971 ,0, 0, 0 , - 4419, 4420, 4418 ,2101, 3971, 2102 ,0, 0, 0 , - 4420, 1872, 4421 ,3971, 2284, 2099 ,0, 0, 0 , - 4420, 4421, 4418 ,3971, 2099, 2102 ,0, 0, 0 , - 4423, 1874, 4424 ,2105, 3899, 3880 ,0, 0, 0 , - 4423, 4424, 4422 ,2105, 3880, 2106 ,0, 0, 0 , - 4424, 1875, 4425 ,3880, 3879, 2103 ,0, 0, 0 , - 4424, 4425, 4422 ,3880, 2103, 2106 ,0, 0, 0 , - 4427, 66, 2065 ,2109, 69, 6134 ,0, 0, 0 , - 4427, 2065, 4426 ,2109, 6134, 2110 ,0, 0, 0 , - 2065, 82, 4428 ,6134, 89, 2107 ,0, 0, 0 , - 2065, 4428, 4426 ,6134, 2107, 2110 ,0, 0, 0 , - 4428, 82, 4430 ,2107, 89, 5978 ,0, 0, 0 , - 4428, 4430, 4429 ,2107, 5978, 2112 ,0, 0, 0 , - 4430, 1877, 4431 ,5978, 7256, 2111 ,0, 0, 0 , - 4430, 4431, 4429 ,5978, 2111, 2112 ,0, 0, 0 , - 4433, 1885, 4434 ,2115, 2250, 3958 ,0, 0, 0 , - 4433, 4434, 4432 ,2115, 3958, 2116 ,0, 0, 0 , - 4434, 1886, 4435 ,3958, 3957, 2113 ,0, 0, 0 , - 4434, 4435, 4432 ,3958, 2113, 2116 ,0, 0, 0 , - 4437, 1878, 4438 ,2119, 2280, 7257 ,0, 0, 0 , - 4437, 4438, 4436 ,2119, 7257, 2120 ,0, 0, 0 , - 4438, 1887, 4439 ,7257, 7258, 3892 ,0, 0, 0 , - 4438, 4439, 4436 ,7257, 3892, 2120 ,0, 0, 0 , - 4439, 1888, 4440 ,3892, 2210, 2117 ,0, 0, 0 , - 4439, 4440, 4436 ,3892, 2117, 2120 ,0, 0, 0 , - 4442, 1890, 4443 ,2123, 7259, 7260 ,0, 0, 0 , - 4442, 4443, 4441 ,2123, 7260, 2124 ,0, 0, 0 , - 4443, 1891, 4444 ,7260, 7261, 7262 ,0, 0, 0 , - 4443, 4444, 4441 ,7260, 7262, 2124 ,0, 0, 0 , - 4444, 1892, 4445 ,7262, 7263, 3967 ,0, 0, 0 , - 4444, 4445, 4441 ,7262, 3967, 2124 ,0, 0, 0 , - 4445, 1893, 4446 ,3967, 3966, 2121 ,0, 0, 0 , - 4445, 4446, 4441 ,3967, 2121, 2124 ,0, 0, 0 , - 4448, 66, 4449 ,2127, 69, 2129 ,0, 0, 0 , - 4448, 4449, 4447 ,2127, 2129, 2128 ,0, 0, 0 , - 4449, 1895, 4450 ,2129, 2276, 2125 ,0, 0, 0 , - 4449, 4450, 4447 ,2129, 2125, 2128 ,0, 0, 0 , - 4427, 1876, 4452 ,2109, 2108, 3963 ,0, 0, 0 , - 4427, 4452, 4451 ,2109, 3963, 2130 ,0, 0, 0 , - 4452, 1895, 4449 ,3963, 2276, 2129 ,0, 0, 0 , - 4452, 4449, 4451 ,3963, 2129, 2130 ,0, 0, 0 , - 4454, 1897, 4455 ,2133, 7264, 7265 ,0, 0, 0 , - 4454, 4455, 4453 ,2133, 7265, 2134 ,0, 0, 0 , - 4455, 1898, 4456 ,7265, 7266, 7267 ,0, 0, 0 , - 4455, 4456, 4453 ,7265, 7267, 2134 ,0, 0, 0 , - 4456, 1899, 4457 ,7267, 7268, 2131 ,0, 0, 0 , - 4456, 4457, 4453 ,7267, 2131, 2134 ,0, 0, 0 , - 4459, 1880, 4460 ,2137, 2269, 3897 ,0, 0, 0 , - 4459, 4460, 4458 ,2137, 3897, 2138 ,0, 0, 0 , - 4460, 1881, 4461 ,3897, 2217, 2135 ,0, 0, 0 , - 4460, 4461, 4458 ,3897, 2135, 2138 ,0, 0, 0 , - 4463, 1882, 4464 ,2141, 2225, 7269 ,0, 0, 0 , - 4463, 4464, 4462 ,2141, 7269, 2142 ,0, 0, 0 , - 4464, 1900, 4465 ,7269, 7270, 2139 ,0, 0, 0 , - 4464, 4465, 4462 ,7269, 2139, 2142 ,0, 0, 0 , - 4467, 1902, 4468 ,2145, 7271, 7272 ,0, 0, 0 , - 4467, 4468, 4466 ,2145, 7272, 2146 ,0, 0, 0 , - 4468, 1903, 4469 ,7272, 7273, 7274 ,0, 0, 0 , - 4468, 4469, 4466 ,7272, 7274, 2146 ,0, 0, 0 , - 4469, 1904, 4470 ,7274, 7275, 7276 ,0, 0, 0 , - 4469, 4470, 4466 ,7274, 7276, 2146 ,0, 0, 0 , - 4470, 1905, 4471 ,7276, 7277, 3944 ,0, 0, 0 , - 4470, 4471, 4466 ,7276, 3944, 2146 ,0, 0, 0 , - 4471, 1906, 4472 ,3944, 3943, 2143 ,0, 0, 0 , - 4471, 4472, 4466 ,3944, 2143, 2146 ,0, 0, 0 , - 4474, 1908, 4475 ,2149, 7278, 7279 ,0, 0, 0 , - 4474, 4475, 4473 ,2149, 7279, 2150 ,0, 0, 0 , - 4475, 1909, 4476 ,7279, 7280, 3936 ,0, 0, 0 , - 4475, 4476, 4473 ,7279, 3936, 2150 ,0, 0, 0 , - 4476, 1910, 4477 ,3936, 3935, 2147 ,0, 0, 0 , - 4476, 4477, 4473 ,3936, 2147, 2150 ,0, 0, 0 , - 4479, 1912, 4480 ,2153, 7281, 7282 ,0, 0, 0 , - 4479, 4480, 4478 ,2153, 7282, 2154 ,0, 0, 0 , - 4480, 1913, 4481 ,7282, 7283, 3910 ,0, 0, 0 , - 4480, 4481, 4478 ,7282, 3910, 2154 ,0, 0, 0 , - 4481, 1914, 4482 ,3910, 2233, 2151 ,0, 0, 0 , - 4481, 4482, 4478 ,3910, 2151, 2154 ,0, 0, 0 , - 4484, 1916, 4485 ,2157, 3930, 3915 ,0, 0, 0 , - 4484, 4485, 4483 ,2157, 3915, 2158 ,0, 0, 0 , - 4485, 1917, 4486 ,3915, 3914, 2155 ,0, 0, 0 , - 4485, 4486, 4483 ,3915, 2155, 2158 ,0, 0, 0 , - 4488, 1919, 4489 ,2161, 7284, 7285 ,0, 0, 0 , - 4488, 4489, 4487 ,2161, 7285, 2162 ,0, 0, 0 , - 4489, 1920, 4490 ,7285, 7286, 2159 ,0, 0, 0 , - 4489, 4490, 4487 ,7285, 2159, 2162 ,0, 0, 0 , - 4492, 1922, 4493 ,2165, 7287, 3908 ,0, 0, 0 , - 4492, 4493, 4491 ,2165, 3908, 2166 ,0, 0, 0 , - 4493, 1923, 4494 ,3908, 2229, 3919 ,0, 0, 0 , - 4493, 4494, 4491 ,3908, 3919, 2166 ,0, 0, 0 , - 4494, 1924, 4495 ,3919, 3918, 2163 ,0, 0, 0 , - 4494, 4495, 4491 ,3919, 2163, 2166 ,0, 0, 0 , - 4497, 1926, 4498 ,2169, 7288, 3906 ,0, 0, 0 , - 4497, 4498, 4496 ,2169, 3906, 2170 ,0, 0, 0 , - 4498, 1927, 4499 ,3906, 2221, 7289 ,0, 0, 0 , - 4498, 4499, 4496 ,3906, 7289, 2170 ,0, 0, 0 , - 4499, 1928, 4500 ,7289, 2202, 2167 ,0, 0, 0 , - 4499, 4500, 4496 ,7289, 2167, 2170 ,0, 0, 0 , - 4502, 1930, 4503 ,2173, 7290, 7291 ,0, 0, 0 , - 4502, 4503, 4501 ,2173, 7291, 2174 ,0, 0, 0 , - 4503, 1931, 4504 ,7291, 7292, 7293 ,0, 0, 0 , - 4503, 4504, 4501 ,7291, 7293, 2174 ,0, 0, 0 , - 4504, 1932, 4505 ,7293, 7294, 3903 ,0, 0, 0 , - 4504, 4505, 4501 ,7293, 3903, 2174 ,0, 0, 0 , - 4505, 1933, 4506 ,3903, 3902, 2171 ,0, 0, 0 , - 4505, 4506, 4501 ,3903, 2171, 2174 ,0, 0, 0 , - 4508, 1935, 4509 ,2177, 7295, 7296 ,0, 0, 0 , - 4508, 4509, 4507 ,2177, 7296, 2178 ,0, 0, 0 , - 4509, 1936, 4510 ,7296, 7297, 3895 ,0, 0, 0 , - 4509, 4510, 4507 ,7296, 3895, 2178 ,0, 0, 0 , - 4510, 1937, 4511 ,3895, 2206, 2175 ,0, 0, 0 , - 4510, 4511, 4507 ,3895, 2175, 2178 ,0, 0, 0 , - 4513, 1939, 4514 ,2181, 7298, 7299 ,0, 0, 0 , - 4513, 4514, 4512 ,2181, 7299, 2182 ,0, 0, 0 , - 4514, 1940, 4515 ,7299, 7300, 7301 ,0, 0, 0 , - 4514, 4515, 4512 ,7299, 7301, 2182 ,0, 0, 0 , - 4515, 1941, 4516 ,7301, 7302, 2179 ,0, 0, 0 , - 4515, 4516, 4512 ,7301, 2179, 2182 ,0, 0, 0 , - 1973, 14, 4518 ,12, 6094, 3890 ,0, 0, 0 , - 1973, 4518, 4517 ,12, 3890, 2184 ,0, 0, 0 , - 4518, 1942, 4519 ,3890, 3889, 2183 ,0, 0, 0 , - 4518, 4519, 4517 ,3890, 2183, 2184 ,0, 0, 0 , - 4521, 1944, 4522 ,2187, 7303, 7304 ,0, 0, 0 , - 4521, 4522, 4520 ,2187, 7304, 2188 ,0, 0, 0 , - 4522, 1945, 4523 ,7304, 7305, 3884 ,0, 0, 0 , - 4522, 4523, 4520 ,7304, 3884, 2188 ,0, 0, 0 , - 4523, 1946, 4524 ,3884, 3883, 2185 ,0, 0, 0 , - 4523, 4524, 4520 ,3884, 2185, 2188 ,0, 0, 0 , - 4526, 1948, 4527 ,2191, 7306, 7307 ,0, 0, 0 , - 4526, 4527, 4525 ,2191, 7307, 2192 ,0, 0, 0 , - 4527, 1949, 4528 ,7307, 7308, 3876 ,0, 0, 0 , - 4527, 4528, 4525 ,7307, 3876, 2192 ,0, 0, 0 , - 4528, 1950, 4529 ,3876, 3875, 2189 ,0, 0, 0 , - 4528, 4529, 4525 ,3876, 2189, 2192 ,0, 0, 0 , - 4531, 1952, 4532 ,2195, 7309, 7310 ,0, 0, 0 , - 4531, 4532, 4530 ,2195, 7310, 2196 ,0, 0, 0 , - 4532, 1953, 4533 ,7310, 7311, 7312 ,0, 0, 0 , - 4532, 4533, 4530 ,7310, 7312, 2196 ,0, 0, 0 , - 4533, 1954, 4534 ,7312, 7313, 2193 ,0, 0, 0 , - 4533, 4534, 4530 ,7312, 2193, 2196 ,0, 0, 0 , - 4536, 1804, 4537 ,2199, 3927, 3926 ,0, 0, 0 , - 4536, 4537, 4535 ,2199, 3926, 2200 ,0, 0, 0 , - 4537, 1919, 4538 ,3926, 7284, 7314 ,0, 0, 0 , - 4537, 4538, 4535 ,3926, 7314, 2200 ,0, 0, 0 , - 4538, 1915, 4539 ,7314, 2156, 3872 ,0, 0, 0 , - 4538, 4539, 4535 ,7314, 3872, 2200 ,0, 0, 0 , - 4539, 1954, 4540 ,3872, 7313, 7315 ,0, 0, 0 , - 4539, 4540, 4535 ,3872, 7315, 2200 ,0, 0, 0 , - 4540, 1072, 4541 ,7315, 6712, 7316 ,0, 0, 0 , - 4540, 4541, 4535 ,7315, 7316, 2200 ,0, 0, 0 , - 4541, 1049, 4542 ,7316, 1200, 2197 ,0, 0, 0 , - 4541, 4542, 4535 ,7316, 2197, 2200 ,0, 0, 0 , - 4544, 1875, 4545 ,2203, 3879, 3878 ,0, 0, 0 , - 4544, 4545, 4543 ,2203, 3878, 2204 ,0, 0, 0 , - 4545, 1950, 4546 ,3878, 3875, 3874 ,0, 0, 0 , - 4545, 4546, 4543 ,3878, 3874, 2204 ,0, 0, 0 , - 4546, 1951, 4547 ,3874, 2194, 7317 ,0, 0, 0 , - 4546, 4547, 4543 ,3874, 7317, 2204 ,0, 0, 0 , - 4547, 1917, 4548 ,7317, 3914, 2201 ,0, 0, 0 , - 4547, 4548, 4543 ,7317, 2201, 2204 ,0, 0, 0 , - 4550, 1938, 4551 ,2207, 2180, 3886 ,0, 0, 0 , - 4550, 4551, 4549 ,2207, 3886, 2208 ,0, 0, 0 , - 4551, 1946, 4552 ,3886, 3883, 3882 ,0, 0, 0 , - 4551, 4552, 4549 ,3886, 3882, 2208 ,0, 0, 0 , - 4552, 1947, 4553 ,3882, 2190, 7318 ,0, 0, 0 , - 4552, 4553, 4549 ,3882, 7318, 2208 ,0, 0, 0 , - 4553, 1874, 4554 ,7318, 3899, 2205 ,0, 0, 0 , - 4553, 4554, 4549 ,7318, 2205, 2208 ,0, 0, 0 , - 4556, 1942, 4557 ,2211, 3889, 3888 ,0, 0, 0 , - 4556, 4557, 4555 ,2211, 3888, 2212 ,0, 0, 0 , - 4557, 1943, 4558 ,3888, 2186, 7319 ,0, 0, 0 , - 4557, 4558, 4555 ,3888, 7319, 2212 ,0, 0, 0 , - 4558, 1941, 4559 ,7319, 7302, 2209 ,0, 0, 0 , - 4558, 4559, 4555 ,7319, 2209, 2212 ,0, 0, 0 , - 4561, 1940, 4562 ,2214, 7300, 7320 ,0, 0, 0 , - 4561, 4562, 4560 ,2214, 7320, 2215 ,0, 0, 0 , - 4562, 1880, 4563 ,7320, 2269, 2213 ,0, 0, 0 , - 4562, 4563, 4560 ,7320, 2213, 2215 ,0, 0, 0 , - 4565, 1939, 4566 ,2218, 7298, 7321 ,0, 0, 0 , - 4565, 4566, 4564 ,2218, 7321, 2219 ,0, 0, 0 , - 4566, 1936, 4567 ,7321, 7297, 7322 ,0, 0, 0 , - 4566, 4567, 4564 ,7321, 7322, 2219 ,0, 0, 0 , - 4567, 1883, 4568 ,7322, 2140, 2216 ,0, 0, 0 , - 4567, 4568, 4564 ,7322, 2216, 2219 ,0, 0, 0 , - 4570, 1933, 4571 ,2222, 3902, 3901 ,0, 0, 0 , - 4570, 4571, 4569 ,2222, 3901, 2223 ,0, 0, 0 , - 4571, 1934, 4572 ,3901, 2176, 7323 ,0, 0, 0 , - 4571, 4572, 4569 ,3901, 7323, 2223 ,0, 0, 0 , - 4572, 1873, 4573 ,7323, 2104, 2220 ,0, 0, 0 , - 4572, 4573, 4569 ,7323, 2220, 2223 ,0, 0, 0 , - 4575, 1935, 4576 ,2226, 7295, 7324 ,0, 0, 0 , - 4575, 4576, 4574 ,2226, 7324, 2227 ,0, 0, 0 , - 4576, 1932, 4577 ,7324, 7294, 7325 ,0, 0, 0 , - 4576, 4577, 4574 ,7324, 7325, 2227 ,0, 0, 0 , - 4577, 1886, 4578 ,7325, 3957, 2224 ,0, 0, 0 , - 4577, 4578, 4574 ,7325, 2224, 2227 ,0, 0, 0 , - 4580, 1929, 4581 ,2230, 2172, 7326 ,0, 0, 0 , - 4580, 4581, 4579 ,2230, 7326, 2231 ,0, 0, 0 , - 4581, 1926, 4582 ,7326, 7288, 2228 ,0, 0, 0 , - 4581, 4582, 4579 ,7326, 2228, 2231 ,0, 0, 0 , - 4584, 1930, 4585 ,2234, 7290, 7327 ,0, 0, 0 , - 4584, 4585, 4583 ,2234, 7327, 2235 ,0, 0, 0 , - 4585, 1922, 4586 ,7327, 7287, 7328 ,0, 0, 0 , - 4585, 4586, 4583 ,7327, 7328, 2235 ,0, 0, 0 , - 4586, 1806, 4587 ,7328, 3932, 2232 ,0, 0, 0 , - 4586, 4587, 4583 ,7328, 2232, 2235 ,0, 0, 0 , - 4589, 1931, 4590 ,2237, 7292, 7329 ,0, 0, 0 , - 4589, 4590, 4588 ,2237, 7329, 2238 ,0, 0, 0 , - 4590, 1913, 4591 ,7329, 7283, 2236 ,0, 0, 0 , - 4590, 4591, 4588 ,7329, 2236, 2238 ,0, 0, 0 , - 4593, 1924, 4594 ,2240, 3918, 3917 ,0, 0, 0 , - 4593, 4594, 4592 ,2240, 3917, 2241 ,0, 0, 0 , - 4594, 1925, 4595 ,3917, 2168, 7330 ,0, 0, 0 , - 4594, 4595, 4592 ,3917, 7330, 2241 ,0, 0, 0 , - 4595, 1916, 4596 ,7330, 3930, 2239 ,0, 0, 0 , - 4595, 4596, 4592 ,7330, 2239, 2241 ,0, 0, 0 , - 4598, 1807, 4599 ,2244, 3923, 3922 ,0, 0, 0 , - 4598, 4599, 4597 ,2244, 3922, 2245 ,0, 0, 0 , - 4599, 1921, 4600 ,3922, 2164, 7331 ,0, 0, 0 , - 4599, 4600, 4597 ,3922, 7331, 2245 ,0, 0, 0 , - 4600, 1920, 4601 ,7331, 7286, 7332 ,0, 0, 0 , - 4600, 4601, 4597 ,7331, 7332, 2245 ,0, 0, 0 , - 4601, 1803, 4602 ,7332, 4058, 2242 ,0, 0, 0 , - 4601, 4602, 4597 ,7332, 2242, 2245 ,0, 0, 0 , - 4604, 1910, 4605 ,2247, 3935, 3934 ,0, 0, 0 , - 4604, 4605, 4603 ,2247, 3934, 2248 ,0, 0, 0 , - 4605, 1911, 4606 ,3934, 2152, 7333 ,0, 0, 0 , - 4605, 4606, 4603 ,3934, 7333, 2248 ,0, 0, 0 , - 4606, 1805, 4607 ,7333, 2017, 2246 ,0, 0, 0 , - 4606, 4607, 4603 ,7333, 2246, 2248 ,0, 0, 0 , - 4609, 1912, 4610 ,2251, 7281, 7334 ,0, 0, 0 , - 4609, 4610, 4608 ,2251, 7334, 2252 ,0, 0, 0 , - 4610, 1909, 4611 ,7334, 7280, 7335 ,0, 0, 0 , - 4610, 4611, 4608 ,7334, 7335, 2252 ,0, 0, 0 , - 4611, 1905, 4612 ,7335, 7277, 7336 ,0, 0, 0 , - 4611, 4612, 4608 ,7335, 7336, 2252 ,0, 0, 0 , - 4612, 1900, 4613 ,7336, 7270, 2249 ,0, 0, 0 , - 4612, 4613, 4608 ,7336, 2249, 2252 ,0, 0, 0 , - 4615, 1850, 4616 ,2255, 2074, 3940 ,0, 0, 0 , - 4615, 4616, 4614 ,2255, 3940, 2256 ,0, 0, 0 , - 4616, 1907, 4617 ,3940, 2148, 7337 ,0, 0, 0 , - 4616, 4617, 4614 ,3940, 7337, 2256 ,0, 0, 0 , - 4617, 1815, 4618 ,7337, 4001, 2253 ,0, 0, 0 , - 4617, 4618, 4614 ,7337, 2253, 2256 ,0, 0, 0 , - 4620, 1906, 4621 ,2259, 3943, 3942 ,0, 0, 0 , - 4620, 4621, 4619 ,2259, 3942, 2260 ,0, 0, 0 , - 4621, 1908, 4622 ,3942, 7278, 7338 ,0, 0, 0 , - 4621, 4622, 4619 ,3942, 7338, 2260 ,0, 0, 0 , - 4622, 1853, 4623 ,7338, 3995, 2257 ,0, 0, 0 , - 4622, 4623, 4619 ,7338, 2257, 2260 ,0, 0, 0 , - 4625, 1832, 4626 ,2262, 3991, 3990 ,0, 0, 0 , - 4625, 4626, 4624 ,2262, 3990, 2263 ,0, 0, 0 , - 4626, 1859, 4627 ,3990, 2084, 7339 ,0, 0, 0 , - 4626, 4627, 4624 ,3990, 7339, 2263 ,0, 0, 0 , - 4627, 1857, 4628 ,7339, 3949, 3948 ,0, 0, 0 , - 4627, 4628, 4624 ,7339, 3948, 2263 ,0, 0, 0 , - 4628, 1901, 4629 ,3948, 2144, 2261 ,0, 0, 0 , - 4628, 4629, 4624 ,3948, 2261, 2263 ,0, 0, 0 , - 4631, 1902, 4632 ,2265, 7271, 7340 ,0, 0, 0 , - 4631, 4632, 4630 ,2265, 7340, 2266 ,0, 0, 0 , - 4632, 1856, 4633 ,7340, 3973, 2264 ,0, 0, 0 , - 4632, 4633, 4630 ,7340, 2264, 2266 ,0, 0, 0 , - 4568, 1883, 4635 ,2216, 2140, 3955 ,0, 0, 0 , - 4568, 4635, 4634 ,2216, 3955, 2268 ,0, 0, 0 , - 4635, 1904, 4636 ,3955, 7275, 2267 ,0, 0, 0 , - 4635, 4636, 4634 ,3955, 2267, 2268 ,0, 0, 0 , - 4638, 1899, 4639 ,2270, 7268, 7341 ,0, 0, 0 , - 4638, 4639, 4637 ,2270, 7341, 2271 ,0, 0, 0 , - 4639, 1879, 4563 ,7341, 2118, 2213 ,0, 0, 0 , - 4639, 4563, 4637 ,7341, 2213, 2271 ,0, 0, 0 , - 4641, 1889, 4642 ,2273, 2122, 3961 ,0, 0, 0 , - 4641, 4642, 4640 ,2273, 3961, 2274 ,0, 0, 0 , - 4642, 1896, 4643 ,3961, 2132, 2272 ,0, 0, 0 , - 4642, 4643, 4640 ,3961, 2272, 2274 ,0, 0, 0 , - 4645, 1897, 4646 ,2277, 7264, 7342 ,0, 0, 0 , - 4645, 4646, 4644 ,2277, 7342, 2278 ,0, 0, 0 , - 4646, 1893, 4647 ,7342, 3966, 2275 ,0, 0, 0 , - 4646, 4647, 4644 ,7342, 2275, 2278 ,0, 0, 0 , - 4649, 1898, 4650 ,2281, 7266, 7343 ,0, 0, 0 , - 4649, 4650, 4648 ,2281, 7343, 2282 ,0, 0, 0 , - 4650, 1876, 4651 ,7343, 2108, 2279 ,0, 0, 0 , - 4650, 4651, 4648 ,7343, 2279, 2282 ,0, 0, 0 , - 4653, 1890, 4654 ,2285, 7259, 3969 ,0, 0, 0 , - 4653, 4654, 4652 ,2285, 3969, 2286 ,0, 0, 0 , - 4654, 1790, 4655 ,3969, 2136, 2283 ,0, 0, 0 , - 4654, 4655, 4652 ,3969, 2283, 2286 ,0, 0, 0 , - 4657, 1870, 4658 ,2289, 2100, 7344 ,0, 0, 0 , - 4657, 4658, 4656 ,2289, 7344, 2290 ,0, 0, 0 , - 4658, 1791, 4659 ,7344, 3980, 2287 ,0, 0, 0 , - 4658, 4659, 4656 ,7344, 2287, 2290 ,0, 0, 0 , - 4661, 1867, 4662 ,2293, 2092, 7345 ,0, 0, 0 , - 4661, 4662, 4660 ,2293, 7345, 2294 ,0, 0, 0 , - 4662, 1790, 4663 ,7345, 2136, 2291 ,0, 0, 0 , - 4662, 4663, 4660 ,7345, 2291, 2294 ,0, 0, 0 , - 4665, 1862, 4666 ,2297, 3985, 3984 ,0, 0, 0 , - 4665, 4666, 4664 ,2297, 3984, 2298 ,0, 0, 0 , - 4666, 1863, 4663 ,3984, 2292, 2291 ,0, 0, 0 , - 4666, 4663, 4664 ,3984, 2291, 2298 ,0, 0, 0 , - 4663, 1790, 4667 ,2291, 2136, 2295 ,0, 0, 0 , - 4663, 4667, 4664 ,2291, 2295, 2298 ,0, 0, 0 , - 4669, 1852, 4670 ,2300, 7250, 7346 ,0, 0, 0 , - 4669, 4670, 4668 ,2300, 7346, 2301 ,0, 0, 0 , - 4670, 1821, 4671 ,7346, 4045, 2299 ,0, 0, 0 , - 4670, 4671, 4668 ,7346, 2299, 2301 ,0, 0, 0 , - 4673, 1851, 4674 ,2303, 7248, 7347 ,0, 0, 0 , - 4673, 4674, 4672 ,2303, 7347, 2304 ,0, 0, 0 , - 4674, 1848, 4675 ,7347, 7247, 7348 ,0, 0, 0 , - 4674, 4675, 4672 ,7347, 7348, 2304 ,0, 0, 0 , - 4675, 1844, 4676 ,7348, 7244, 7349 ,0, 0, 0 , - 4675, 4676, 4672 ,7348, 7349, 2304 ,0, 0, 0 , - 4676, 1819, 4677 ,7349, 4048, 2302 ,0, 0, 0 , - 4676, 4677, 4672 ,7349, 2302, 2304 ,0, 0, 0 , - 4679, 1845, 4680 ,2307, 4005, 4004 ,0, 0, 0 , - 4679, 4680, 4678 ,2307, 4004, 2308 ,0, 0, 0 , - 4680, 1847, 4681 ,4004, 2070, 7350 ,0, 0, 0 , - 4680, 4681, 4678 ,4004, 7350, 2308 ,0, 0, 0 , - 4681, 1814, 4682 ,7350, 7229, 7351 ,0, 0, 0 , - 4681, 4682, 4678 ,7350, 7351, 2308 ,0, 0, 0 , - 4682, 1777, 4683 ,7351, 4089, 2305 ,0, 0, 0 , - 4682, 4683, 4678 ,7351, 2305, 2308 ,0, 0, 0 , - 4685, 1787, 4686 ,2311, 4016, 4015 ,0, 0, 0 , - 4685, 4686, 4684 ,2311, 4015, 2312 ,0, 0, 0 , - 4686, 1842, 4687 ,4015, 4011, 4010 ,0, 0, 0 , - 4686, 4687, 4684 ,4015, 4010, 2312 ,0, 0, 0 , - 4687, 1846, 4688 ,4010, 7246, 7352 ,0, 0, 0 , - 4687, 4688, 4684 ,4010, 7352, 2312 ,0, 0, 0 , - 4688, 1782, 4689 ,7352, 7207, 2309 ,0, 0, 0 , - 4688, 4689, 4684 ,7352, 2309, 2312 ,0, 0, 0 , - 4691, 1843, 4692 ,2314, 2066, 7353 ,0, 0, 0 , - 4691, 4692, 4690 ,2314, 7353, 2315 ,0, 0, 0 , - 4692, 1841, 4693 ,7353, 7243, 2313 ,0, 0, 0 , - 4692, 4693, 4690 ,7353, 2313, 2315 ,0, 0, 0 , - 4695, 1839, 4696 ,2317, 2062, 7354 ,0, 0, 0 , - 4695, 4696, 4694 ,2317, 7354, 2318 ,0, 0, 0 , - 4696, 1786, 4697 ,7354, 7209, 7355 ,0, 0, 0 , - 4696, 4697, 4694 ,7354, 7355, 2318 ,0, 0, 0 , - 4697, 1715, 4698 ,7355, 4171, 2316 ,0, 0, 0 , - 4697, 4698, 4694 ,7355, 2316, 2318 ,0, 0, 0 , - 4700, 1837, 4701 ,2320, 7238, 7356 ,0, 0, 0 , - 4700, 4701, 4699 ,2320, 7356, 2321 ,0, 0, 0 , - 4701, 1826, 4702 ,7356, 7357, 7358 ,0, 0, 0 , - 4701, 4702, 4699 ,7356, 7358, 2321 ,0, 0, 0 , - 4702, 1818, 4703 ,7358, 4021, 4020 ,0, 0, 0 , - 4702, 4703, 4699 ,7358, 4020, 2321 ,0, 0, 0 , - 4703, 1840, 4704 ,4020, 7241, 7359 ,0, 0, 0 , - 4703, 4704, 4699 ,4020, 7359, 2321 ,0, 0, 0 , - 4704, 1719, 4705 ,7359, 7173, 2319 ,0, 0, 0 , - 4704, 4705, 4699 ,7359, 2319, 2321 ,0, 0, 0 , - 4707, 1827, 4708 ,2324, 2048, 4025 ,0, 0, 0 , - 4707, 4708, 4706 ,2324, 4025, 2325 ,0, 0, 0 , - 4708, 1838, 4709 ,4025, 7240, 7360 ,0, 0, 0 , - 4708, 4709, 4706 ,4025, 7360, 2325 ,0, 0, 0 , - 4709, 1708, 4710 ,7360, 7165, 2322 ,0, 0, 0 , - 4709, 4710, 4706 ,7360, 2322, 2325 ,0, 0, 0 , - 4712, 1834, 4713 ,2328, 4028, 4027 ,0, 0, 0 , - 4712, 4713, 4711 ,2328, 4027, 2329 ,0, 0, 0 , - 4713, 1835, 4714 ,4027, 2058, 7361 ,0, 0, 0 , - 4713, 4714, 4711 ,4027, 7361, 2329 ,0, 0, 0 , - 4714, 1830, 4715 ,7361, 4035, 2326 ,0, 0, 0 , - 4714, 4715, 4711 ,7361, 2326, 2329 ,0, 0, 0 , - 4717, 1836, 4718 ,2332, 7236, 7362 ,0, 0, 0 , - 4717, 4718, 4716 ,2332, 7362, 2333 ,0, 0, 0 , - 4718, 1825, 4719 ,7362, 7232, 2330 ,0, 0, 0 , - 4718, 4719, 4716 ,7362, 2330, 2333 ,0, 0, 0 , - 4721, 1813, 4722 ,2336, 7227, 7363 ,0, 0, 0 , - 4721, 4722, 4720 ,2336, 7363, 2337 ,0, 0, 0 , - 4722, 1808, 4723 ,7363, 4055, 4054 ,0, 0, 0 , - 4722, 4723, 4720 ,7363, 4054, 2337 ,0, 0, 0 , - 4723, 1810, 4724 ,4054, 7225, 7364 ,0, 0, 0 , - 4723, 4724, 4720 ,4054, 7364, 2337 ,0, 0, 0 , - 4724, 1687, 4725 ,7364, 4097, 2334 ,0, 0, 0 , - 4724, 4725, 4720 ,7364, 2334, 2337 ,0, 0, 0 , - 4727, 1683, 4728 ,2339, 7152, 7365 ,0, 0, 0 , - 4727, 4728, 4726 ,2339, 7365, 2340 ,0, 0, 0 , - 4728, 1654, 4729 ,7365, 4192, 4191 ,0, 0, 0 , - 4728, 4729, 4726 ,7365, 4191, 2340 ,0, 0, 0 , - 4729, 1685, 4730 ,4191, 1891, 4060 ,0, 0, 0 , - 4729, 4730, 4726 ,4191, 4060, 2340 ,0, 0, 0 , - 4730, 1809, 4731 ,4060, 2021, 7366 ,0, 0, 0 , - 4730, 4731, 4726 ,4060, 7366, 2340 ,0, 0, 0 , - 4731, 1802, 4732 ,7366, 2013, 7367 ,0, 0, 0 , - 4731, 4732, 4726 ,7366, 7367, 2340 ,0, 0, 0 , - 4732, 1052, 4733 ,7367, 1204, 2338 ,0, 0, 0 , - 4732, 4733, 4726 ,7367, 2338, 2340 ,0, 0, 0 , - 4735, 1713, 4736 ,2343, 4064, 4063 ,0, 0, 0 , - 4735, 4736, 4734 ,2343, 4063, 2344 ,0, 0, 0 , - 4736, 1801, 4737 ,4063, 7222, 2341 ,0, 0, 0 , - 4736, 4737, 4734 ,4063, 2341, 2344 ,0, 0, 0 , - 4739, 1799, 4740 ,2347, 7219, 7368 ,0, 0, 0 , - 4739, 4740, 4738 ,2347, 7368, 2348 ,0, 0, 0 , - 4740, 1693, 4741 ,7368, 7224, 7369 ,0, 0, 0 , - 4740, 4741, 4738 ,7368, 7369, 2348 ,0, 0, 0 , - 4741, 1712, 4742 ,7369, 1927, 2345 ,0, 0, 0 , - 4741, 4742, 4738 ,7369, 2345, 2348 ,0, 0, 0 , - 4744, 1800, 4745 ,2350, 7220, 7370 ,0, 0, 0 , - 4744, 4745, 4743 ,2350, 7370, 2351 ,0, 0, 0 , - 4745, 1711, 4746 ,7370, 7166, 7371 ,0, 0, 0 , - 4745, 4746, 4743 ,7370, 7371, 2351 ,0, 0, 0 , - 4746, 1697, 4747 ,7371, 4185, 2349 ,0, 0, 0 , - 4746, 4747, 4743 ,7371, 2349, 2351 ,0, 0, 0 , - 4749, 1798, 4750 ,2353, 7217, 7372 ,0, 0, 0 , - 4749, 4750, 4748 ,2353, 7372, 2354 ,0, 0, 0 , - 4750, 1722, 4751 ,7372, 4079, 4078 ,0, 0, 0 , - 4750, 4751, 4748 ,7372, 4078, 2354 ,0, 0, 0 , - 4751, 1794, 4752 ,4078, 7212, 7373 ,0, 0, 0 , - 4751, 4752, 4748 ,4078, 7373, 2354 ,0, 0, 0 , - 4752, 1709, 4753 ,7373, 4066, 2352 ,0, 0, 0 , - 4752, 4753, 4748 ,7373, 2352, 2354 ,0, 0, 0 , - 4755, 1796, 4756 ,2357, 2005, 7374 ,0, 0, 0 , - 4755, 4756, 4754 ,2357, 7374, 2358 ,0, 0, 0 , - 4756, 1784, 4757 ,7374, 1997, 7375 ,0, 0, 0 , - 4756, 4757, 4754 ,7374, 7375, 2358 ,0, 0, 0 , - 4757, 1726, 4758 ,7375, 4166, 2355 ,0, 0, 0 , - 4757, 4758, 4754 ,7375, 2355, 2358 ,0, 0, 0 , - 4760, 1723, 4761 ,2361, 4075, 4074 ,0, 0, 0 , - 4760, 4761, 4759 ,2361, 4074, 2362 ,0, 0, 0 , - 4761, 1797, 4762 ,4074, 7215, 7376 ,0, 0, 0 , - 4761, 4762, 4759 ,4074, 7376, 2362 ,0, 0, 0 , - 4762, 1733, 4763 ,7376, 4163, 2359 ,0, 0, 0 , - 4762, 4763, 4759 ,7376, 2359, 2362 ,0, 0, 0 , - 4765, 1793, 4766 ,2364, 7210, 7377 ,0, 0, 0 , - 4765, 4766, 4764 ,2364, 7377, 2365 ,0, 0, 0 , - 4766, 1690, 4767 ,7377, 4188, 2363 ,0, 0, 0 , - 4766, 4767, 4764 ,7377, 2363, 2365 ,0, 0, 0 , - 4769, 1779, 4770 ,2368, 1993, 7378 ,0, 0, 0 , - 4769, 4770, 4768 ,2368, 7378, 2369 ,0, 0, 0 , - 4770, 1776, 4771 ,7378, 7202, 7379 ,0, 0, 0 , - 4770, 4771, 4768 ,7378, 7379, 2369 ,0, 0, 0 , - 4771, 1773, 4772 ,7379, 7201, 2366 ,0, 0, 0 , - 4771, 4772, 4768 ,7379, 2366, 2369 ,0, 0, 0 , - 4774, 1780, 4775 ,2372, 7203, 7380 ,0, 0, 0 , - 4774, 4775, 4773 ,2372, 7380, 2373 ,0, 0, 0 , - 4775, 1770, 4776 ,7380, 7200, 2370 ,0, 0, 0 , - 4775, 4776, 4773 ,7380, 2370, 2373 ,0, 0, 0 , - 4778, 1781, 4779 ,2376, 7205, 7381 ,0, 0, 0 , - 4778, 4779, 4777 ,2376, 7381, 2377 ,0, 0, 0 , - 4779, 1764, 4780 ,7381, 1977, 7382 ,0, 0, 0 , - 4779, 4780, 4777 ,7381, 7382, 2377 ,0, 0, 0 , - 4780, 1762, 4781 ,7382, 7195, 2374 ,0, 0, 0 , - 4780, 4781, 4777 ,7382, 2374, 2377 ,0, 0, 0 , - 4783, 1774, 4784 ,2379, 4101, 4100 ,0, 0, 0 , - 4783, 4784, 4782 ,2379, 4100, 2380 ,0, 0, 0 , - 4784, 1775, 4785 ,4100, 1989, 7383 ,0, 0, 0 , - 4784, 4785, 4782 ,4100, 7383, 2380 ,0, 0, 0 , - 4785, 1686, 4786 ,7383, 7155, 2378 ,0, 0, 0 , - 4785, 4786, 4782 ,7383, 2378, 2380 ,0, 0, 0 , - 4788, 1772, 4789 ,2382, 1985, 7384 ,0, 0, 0 , - 4788, 4789, 4787 ,2382, 7384, 2383 ,0, 0, 0 , - 4789, 1656, 4790 ,7384, 4242, 2381 ,0, 0, 0 , - 4789, 4790, 4787 ,7384, 2381, 2383 ,0, 0, 0 , - 4792, 1768, 4793 ,2384, 1981, 4105 ,0, 0, 0 , - 4792, 4793, 4791 ,2384, 4105, 2385 ,0, 0, 0 , - 4793, 1772, 4788 ,4105, 1985, 2382 ,0, 0, 0 , - 4793, 4788, 4791 ,4105, 2382, 2385 ,0, 0, 0 , - 4795, 1766, 4796 ,2388, 4109, 4108 ,0, 0, 0 , - 4795, 4796, 4794 ,2388, 4108, 2389 ,0, 0, 0 , - 4796, 1769, 4797 ,4108, 7198, 2386 ,0, 0, 0 , - 4796, 4797, 4794 ,4108, 2386, 2389 ,0, 0, 0 , - 4799, 1763, 4800 ,2392, 4115, 4114 ,0, 0, 0 , - 4799, 4800, 4798 ,2392, 4114, 2393 ,0, 0, 0 , - 4800, 1767, 4801 ,4114, 7197, 7385 ,0, 0, 0 , - 4800, 4801, 4798 ,4114, 7385, 2393 ,0, 0, 0 , - 4801, 1034, 4802 ,7385, 6699, 2390 ,0, 0, 0 , - 4801, 4802, 4798 ,7385, 2390, 2393 ,0, 0, 0 , - 4804, 1759, 4805 ,2396, 4121, 4120 ,0, 0, 0 , - 4804, 4805, 4803 ,2396, 4120, 2397 ,0, 0, 0 , - 4805, 1760, 4806 ,4120, 1973, 7386 ,0, 0, 0 , - 4805, 4806, 4803 ,4120, 7386, 2397 ,0, 0, 0 , - 4806, 1022, 4807 ,7386, 2460, 2394 ,0, 0, 0 , - 4806, 4807, 4803 ,7386, 2394, 2397 ,0, 0, 0 , - 4809, 1761, 4810 ,2400, 7193, 7387 ,0, 0, 0 , - 4809, 4810, 4808 ,2400, 7387, 2401 ,0, 0, 0 , - 4810, 1758, 4811 ,7387, 7192, 2398 ,0, 0, 0 , - 4810, 4811, 4808 ,7387, 2398, 2401 ,0, 0, 0 , - 4813, 1755, 4814 ,2404, 4129, 4128 ,0, 0, 0 , - 4813, 4814, 4812 ,2404, 4128, 2405 ,0, 0, 0 , - 4814, 1756, 4815 ,4128, 1969, 7388 ,0, 0, 0 , - 4814, 4815, 4812 ,4128, 7388, 2405 ,0, 0, 0 , - 4815, 1024, 4816 ,7388, 6691, 7389 ,0, 0, 0 , - 4815, 4816, 4812 ,7388, 7389, 2405 ,0, 0, 0 , - 4816, 1027, 4817 ,7389, 6694, 2402 ,0, 0, 0 , - 4816, 4817, 4812 ,7389, 2402, 2405 ,0, 0, 0 , - 4819, 1757, 4820 ,2407, 7190, 7390 ,0, 0, 0 , - 4819, 4820, 4818 ,2407, 7390, 2408 ,0, 0, 0 , - 4820, 1754, 4821 ,7390, 7189, 7391 ,0, 0, 0 , - 4820, 4821, 4818 ,7390, 7391, 2408 ,0, 0, 0 , - 4821, 1730, 4822 ,7391, 1945, 2406 ,0, 0, 0 , - 4821, 4822, 4818 ,7391, 2406, 2408 ,0, 0, 0 , - 4824, 1751, 4825 ,2411, 4136, 4135 ,0, 0, 0 , - 4824, 4825, 4823 ,2411, 4135, 2412 ,0, 0, 0 , - 4825, 1752, 4826 ,4135, 1965, 2409 ,0, 0, 0 , - 4825, 4826, 4823 ,4135, 2409, 2412 ,0, 0, 0 , - 4828, 1753, 4829 ,2415, 7187, 7392 ,0, 0, 0 , - 4828, 4829, 4827 ,2415, 7392, 2416 ,0, 0, 0 , - 4829, 1750, 4830 ,7392, 7186, 2413 ,0, 0, 0 , - 4829, 4830, 4827 ,7392, 2413, 2416 ,0, 0, 0 , - 4832, 1747, 4833 ,2419, 4142, 4141 ,0, 0, 0 , - 4832, 4833, 4831 ,2419, 4141, 2420 ,0, 0, 0 , - 4833, 1748, 4834 ,4141, 1961, 7393 ,0, 0, 0 , - 4833, 4834, 4831 ,4141, 7393, 2420 ,0, 0, 0 , - 4834, 1015, 4835 ,7393, 1147, 4251 ,0, 0, 0 , - 4834, 4835, 4831 ,7393, 4251, 2420 ,0, 0, 0 , - 4835, 1012, 4836 ,4251, 6689, 2417 ,0, 0, 0 , - 4835, 4836, 4831 ,4251, 2417, 2420 ,0, 0, 0 , - 4838, 1749, 4839 ,2423, 7184, 7394 ,0, 0, 0 , - 4838, 4839, 4837 ,2423, 7394, 2424 ,0, 0, 0 , - 4839, 1746, 4840 ,7394, 7183, 7395 ,0, 0, 0 , - 4839, 4840, 4837 ,7394, 7395, 2424 ,0, 0, 0 , - 4840, 1738, 4841 ,7395, 7177, 2421 ,0, 0, 0 , - 4840, 4841, 4837 ,7395, 2421, 2424 ,0, 0, 0 , - 4843, 1743, 4844 ,2427, 4150, 4149 ,0, 0, 0 , - 4843, 4844, 4842 ,2427, 4149, 2428 ,0, 0, 0 , - 4844, 1744, 4845 ,4149, 1957, 7396 ,0, 0, 0 , - 4844, 4845, 4842 ,4149, 7396, 2428 ,0, 0, 0 , - 4845, 1008, 4846 ,7396, 4235, 7397 ,0, 0, 0 , - 4845, 4846, 4842 ,7396, 7397, 2428 ,0, 0, 0 , - 4846, 1009, 4847 ,7397, 7398, 2497 ,0, 0, 0 , - 4846, 4847, 4842 ,7397, 2497, 2428 ,0, 0, 0 , - 4847, 1003, 4848 ,2497, 2496, 2425 ,0, 0, 0 , - 4847, 4848, 4842 ,2497, 2425, 2428 ,0, 0, 0 , - 4850, 1745, 4851 ,2431, 7181, 7399 ,0, 0, 0 , - 4850, 4851, 4849 ,2431, 7399, 2432 ,0, 0, 0 , - 4851, 1742, 4852 ,7399, 7180, 2429 ,0, 0, 0 , - 4851, 4852, 4849 ,7399, 2429, 2432 ,0, 0, 0 , - 4854, 1706, 4855 ,2435, 4169, 4168 ,0, 0, 0 , - 4854, 4855, 4853 ,2435, 4168, 2436 ,0, 0, 0 , - 4855, 1718, 4856 ,4168, 7171, 7400 ,0, 0, 0 , - 4855, 4856, 4853 ,4168, 7400, 2436 ,0, 0, 0 , - 4856, 1704, 4857 ,7400, 7161, 2433 ,0, 0, 0 , - 4856, 4857, 4853 ,7400, 2433, 2436 ,0, 0, 0 , - 4859, 1717, 4860 ,2438, 7169, 7401 ,0, 0, 0 , - 4859, 4860, 4858 ,2438, 7401, 2439 ,0, 0, 0 , - 4860, 1714, 4861 ,7401, 7168, 7402 ,0, 0, 0 , - 4860, 4861, 4858 ,7401, 7402, 2439 ,0, 0, 0 , - 4861, 1701, 4862 ,7402, 4183, 2437 ,0, 0, 0 , - 4861, 4862, 4858 ,7402, 2437, 2439 ,0, 0, 0 , - 4864, 1710, 4767 ,2441, 1923, 2363 ,0, 0, 0 , - 4864, 4767, 4863 ,2441, 2363, 2442 ,0, 0, 0 , - 4767, 1690, 4865 ,2363, 4188, 2440 ,0, 0, 0 , - 4767, 4865, 4863 ,2363, 2440, 2442 ,0, 0, 0 , - 4867, 1691, 4868 ,2445, 1899, 4178 ,0, 0, 0 , - 4867, 4868, 4866 ,2445, 4178, 2446 ,0, 0, 0 , - 4868, 1707, 4869 ,4178, 7163, 7403 ,0, 0, 0 , - 4868, 4869, 4866 ,4178, 7403, 2446 ,0, 0, 0 , - 4869, 1650, 4870 ,7403, 1855, 2443 ,0, 0, 0 , - 4869, 4870, 4866 ,7403, 2443, 2446 ,0, 0, 0 , - 4872, 1703, 4873 ,2449, 7159, 7404 ,0, 0, 0 , - 4872, 4873, 4871 ,2449, 7404, 2450 ,0, 0, 0 , - 4873, 1699, 4874 ,7404, 1911, 2453 ,0, 0, 0 , - 4873, 4874, 4871 ,7404, 2453, 2450 ,0, 0, 0 , - 4874, 1649, 4875 ,2453, 2452, 2447 ,0, 0, 0 , - 4874, 4875, 4871 ,2453, 2447, 2450 ,0, 0, 0 , - 4874, 1699, 4877 ,2453, 1911, 7405 ,0, 0, 0 , - 4874, 4877, 4876 ,2453, 7405, 2454 ,0, 0, 0 , - 4877, 1696, 4878 ,7405, 7158, 2451 ,0, 0, 0 , - 4877, 4878, 4876 ,7405, 2451, 2454 ,0, 0, 0 , - 4878, 1696, 4880 ,2451, 7158, 7406 ,0, 0, 0 , - 4878, 4880, 4879 ,2451, 7406, 2455 ,0, 0, 0 , - 4880, 1652, 4875 ,7406, 2448, 2447 ,0, 0, 0 , - 4880, 4875, 4879 ,7406, 2447, 2455 ,0, 0, 0 , - 4882, 1046, 4883 ,2457, 1196, 4205 ,0, 0, 0 , - 4882, 4883, 4881 ,2457, 4205, 2458 ,0, 0, 0 , - 4883, 1680, 4884 ,4205, 4196, 4195 ,0, 0, 0 , - 4883, 4884, 4881 ,4205, 4195, 2458 ,0, 0, 0 , - 4884, 1684, 4885 ,4195, 7154, 7407 ,0, 0, 0 , - 4884, 4885, 4881 ,4195, 7407, 2458 ,0, 0, 0 , - 4885, 1058, 4886 ,7407, 4904, 2456 ,0, 0, 0 , - 4885, 4886, 4881 ,7407, 2456, 2458 ,0, 0, 0 , - 4888, 1681, 4889 ,2461, 1887, 7408 ,0, 0, 0 , - 4888, 4889, 4887 ,2461, 7408, 2462 ,0, 0, 0 , - 4889, 1679, 4890 ,7408, 7149, 2459 ,0, 0, 0 , - 4889, 4890, 4887 ,7408, 2459, 2462 ,0, 0, 0 , - 4892, 1655, 4893 ,2465, 4202, 4201 ,0, 0, 0 , - 4892, 4893, 4891 ,2465, 4201, 2466 ,0, 0, 0 , - 4893, 1682, 4894 ,4201, 7150, 7409 ,0, 0, 0 , - 4893, 4894, 4891 ,4201, 7409, 2466 ,0, 0, 0 , - 4894, 1031, 4895 ,7409, 6697, 2463 ,0, 0, 0 , - 4894, 4895, 4891 ,7409, 2463, 2466 ,0, 0, 0 , - 4897, 1659, 4898 ,2468, 4208, 4207 ,0, 0, 0 , - 4897, 4898, 4896 ,2468, 4207, 2469 ,0, 0, 0 , - 4898, 1677, 4899 ,4207, 1883, 7410 ,0, 0, 0 , - 4898, 4899, 4896 ,4207, 7410, 2469 ,0, 0, 0 , - 4899, 1048, 4900 ,7410, 6701, 2467 ,0, 0, 0 , - 4899, 4900, 4896 ,7410, 2467, 2469 ,0, 0, 0 , - 4902, 1678, 4903 ,2470, 7147, 7411 ,0, 0, 0 , - 4902, 4903, 4901 ,2470, 7411, 2471 ,0, 0, 0 , - 4903, 1658, 4904 ,7411, 4248, 4247 ,0, 0, 0 , - 4903, 4904, 4901 ,7411, 4247, 2471 ,0, 0, 0 , - 4904, 1021, 4807 ,4247, 2395, 2394 ,0, 0, 0 , - 4904, 4807, 4901 ,4247, 2394, 2471 ,0, 0, 0 , - 4906, 1026, 4907 ,2474, 6692, 7412 ,0, 0, 0 , - 4906, 4907, 4905 ,2474, 7412, 2475 ,0, 0, 0 , - 4907, 1028, 4908 ,7412, 6696, 7413 ,0, 0, 0 , - 4907, 4908, 4905 ,7412, 7413, 2475 ,0, 0, 0 , - 4908, 1657, 4909 ,7413, 1863, 4212 ,0, 0, 0 , - 4908, 4909, 4905 ,7413, 4212, 2475 ,0, 0, 0 , - 4909, 1675, 4910 ,4212, 7144, 2472 ,0, 0, 0 , - 4909, 4910, 4905 ,4212, 2472, 2475 ,0, 0, 0 , - 4912, 1676, 4913 ,2478, 7146, 7414 ,0, 0, 0 , - 4912, 4913, 4911 ,2478, 7414, 2479 ,0, 0, 0 , - 4913, 1660, 4914 ,7414, 7132, 7415 ,0, 0, 0 , - 4913, 4914, 4911 ,7414, 7415, 2479 ,0, 0, 0 , - 4914, 1045, 4915 ,7415, 4900, 2476 ,0, 0, 0 , - 4914, 4915, 4911 ,7415, 2476, 2479 ,0, 0, 0 , - 4917, 1672, 4918 ,2481, 4216, 4215 ,0, 0, 0 , - 4917, 4918, 4916 ,2481, 4215, 2482 ,0, 0, 0 , - 4918, 1673, 4919 ,4215, 1879, 7416 ,0, 0, 0 , - 4918, 4919, 4916 ,4215, 7416, 2482 ,0, 0, 0 , - 4919, 1062, 4920 ,7416, 1216, 2480 ,0, 0, 0 , - 4919, 4920, 4916 ,7416, 2480, 2482 ,0, 0, 0 , - 4922, 1674, 4923 ,2484, 7142, 7417 ,0, 0, 0 , - 4922, 4923, 4921 ,2484, 7417, 2485 ,0, 0, 0 , - 4923, 1671, 4924 ,7417, 7141, 2483 ,0, 0, 0 , - 4923, 4924, 4921 ,7417, 2483, 2485 ,0, 0, 0 , - 4926, 1668, 4927 ,2487, 4222, 4221 ,0, 0, 0 , - 4926, 4927, 4925 ,2487, 4221, 2488 ,0, 0, 0 , - 4927, 1669, 4928 ,4221, 1875, 7418 ,0, 0, 0 , - 4927, 4928, 4925 ,4221, 7418, 2488 ,0, 0, 0 , - 4928, 1042, 4929 ,7418, 4895, 2486 ,0, 0, 0 , - 4928, 4929, 4925 ,7418, 2486, 2488 ,0, 0, 0 , - 4931, 1016, 4932 ,2490, 4226, 4225 ,0, 0, 0 , - 4931, 4932, 4930 ,2490, 4225, 2491 ,0, 0, 0 , - 4932, 1670, 4933 ,4225, 7139, 7419 ,0, 0, 0 , - 4932, 4933, 4930 ,4225, 7419, 2491 ,0, 0, 0 , - 4933, 1667, 4934 ,7419, 7138, 7420 ,0, 0, 0 , - 4933, 4934, 4930 ,7419, 7420, 2491 ,0, 0, 0 , - 4934, 1011, 3294 ,7420, 1141, 1140 ,0, 0, 0 , - 4934, 3294, 4930 ,7420, 1140, 2491 ,0, 0, 0 , - 4936, 1664, 4937 ,2494, 4231, 4230 ,0, 0, 0 , - 4936, 4937, 4935 ,2494, 4230, 2495 ,0, 0, 0 , - 4937, 1665, 4938 ,4230, 1871, 7421 ,0, 0, 0 , - 4937, 4938, 4935 ,4230, 7421, 2495 ,0, 0, 0 , - 4938, 1068, 4939 ,7421, 6710, 2492 ,0, 0, 0 , - 4938, 4939, 4935 ,7421, 2492, 2495 ,0, 0, 0 , - 4847, 1009, 4846 ,2497, 7398, 7397 ,0, 0, 0 , - 4847, 4846, 4940 ,2497, 7397, 2498 ,0, 0, 0 , - 4846, 1008, 4941 ,7397, 4235, 4234 ,0, 0, 0 , - 4846, 4941, 4940 ,7397, 4234, 2498 ,0, 0, 0 , - 4941, 1666, 4942 ,4234, 7136, 7422 ,0, 0, 0 , - 4941, 4942, 4940 ,4234, 7422, 2498 ,0, 0, 0 , - 4942, 1663, 4943 ,7422, 7135, 7423 ,0, 0, 0 , - 4942, 4943, 4940 ,7422, 7423, 2498 ,0, 0, 0 , - 4943, 1002, 4848 ,7423, 2426, 2425 ,0, 0, 0 , - 4943, 4848, 4940 ,7423, 2425, 2498 ,0, 0, 0 , - 4945, 1615, 4946 ,2501, 1811, 4260 ,0, 0, 0 , - 4945, 4946, 4944 ,2501, 4260, 2502 ,0, 0, 0 , - 4946, 1646, 4947 ,4260, 7126, 7424 ,0, 0, 0 , - 4946, 4947, 4944 ,4260, 7424, 2502 ,0, 0, 0 , - 4947, 1038, 4948 ,7424, 4892, 4891 ,0, 0, 0 , - 4947, 4948, 4944 ,7424, 4891, 2502 ,0, 0, 0 , - 4948, 1067, 4949 ,4891, 6708, 7425 ,0, 0, 0 , - 4948, 4949, 4944 ,4891, 7425, 2502 ,0, 0, 0 , - 4949, 1041, 4950 ,7425, 4898, 2499 ,0, 0, 0 , - 4949, 4950, 4944 ,7425, 2499, 2502 ,0, 0, 0 , - 4952, 1642, 4953 ,2504, 4254, 4253 ,0, 0, 0 , - 4952, 4953, 4951 ,2504, 4253, 2505 ,0, 0, 0 , - 4953, 1647, 4954 ,4253, 7128, 7426 ,0, 0, 0 , - 4953, 4954, 4951 ,4253, 7426, 2505 ,0, 0, 0 , - 4954, 1618, 4955 ,7426, 7096, 2503 ,0, 0, 0 , - 4954, 4955, 4951 ,7426, 2503, 2505 ,0, 0, 0 , - 4957, 1638, 4958 ,2507, 4263, 4262 ,0, 0, 0 , - 4957, 4958, 4956 ,2507, 4262, 2508 ,0, 0, 0 , - 4958, 1643, 4959 ,4262, 7123, 7427 ,0, 0, 0 , - 4958, 4959, 4956 ,4262, 7427, 2508 ,0, 0, 0 , - 4959, 1614, 4960 ,7427, 7091, 2506 ,0, 0, 0 , - 4959, 4960, 4956 ,7427, 2506, 2508 ,0, 0, 0 , - 4962, 1634, 4963 ,2511, 4267, 4266 ,0, 0, 0 , - 4962, 4963, 4961 ,2511, 4266, 2512 ,0, 0, 0 , - 4963, 1639, 4964 ,4266, 7119, 7428 ,0, 0, 0 , - 4963, 4964, 4961 ,4266, 7428, 2512 ,0, 0, 0 , - 4964, 1610, 4965 ,7428, 7087, 2509 ,0, 0, 0 , - 4964, 4965, 4961 ,7428, 2509, 2512 ,0, 0, 0 , - 4967, 1630, 4968 ,2514, 4271, 4270 ,0, 0, 0 , - 4967, 4968, 4966 ,2514, 4270, 2515 ,0, 0, 0 , - 4968, 1635, 4969 ,4270, 7115, 7429 ,0, 0, 0 , - 4968, 4969, 4966 ,4270, 7429, 2515 ,0, 0, 0 , - 4969, 1605, 4970 ,7429, 7083, 2513 ,0, 0, 0 , - 4969, 4970, 4966 ,7429, 2513, 2515 ,0, 0, 0 , - 4972, 1626, 4973 ,2518, 4276, 4275 ,0, 0, 0 , - 4972, 4973, 4971 ,2518, 4275, 2519 ,0, 0, 0 , - 4973, 1631, 4974 ,4275, 7111, 7430 ,0, 0, 0 , - 4973, 4974, 4971 ,4275, 7430, 2519 ,0, 0, 0 , - 4974, 1603, 4975 ,7430, 7082, 7431 ,0, 0, 0 , - 4974, 4975, 4971 ,7430, 7431, 2519 ,0, 0, 0 , - 4975, 1599, 4976 ,7431, 7078, 2516 ,0, 0, 0 , - 4975, 4976, 4971 ,7431, 2516, 2519 ,0, 0, 0 , - 4978, 1623, 4979 ,2521, 4280, 4279 ,0, 0, 0 , - 4978, 4979, 4977 ,2521, 4279, 2522 ,0, 0, 0 , - 4979, 1627, 4980 ,4279, 7107, 7432 ,0, 0, 0 , - 4979, 4980, 4977 ,4279, 7432, 2522 ,0, 0, 0 , - 4980, 1595, 4981 ,7432, 7075, 7433 ,0, 0, 0 , - 4980, 4981, 4977 ,7432, 7433, 2522 ,0, 0, 0 , - 4981, 1593, 4982 ,7433, 7074, 2520 ,0, 0, 0 , - 4981, 4982, 4977 ,7433, 2520, 2522 ,0, 0, 0 , - 4984, 1621, 4985 ,2524, 4285, 4284 ,0, 0, 0 , - 4984, 4985, 4983 ,2524, 4284, 2525 ,0, 0, 0 , - 4985, 1624, 4986 ,4284, 7104, 7434 ,0, 0, 0 , - 4985, 4986, 4983 ,4284, 7434, 2525 ,0, 0, 0 , - 4986, 1590, 4987 ,7434, 7071, 2523 ,0, 0, 0 , - 4986, 4987, 4983 ,7434, 2523, 2525 ,0, 0, 0 , - 4989, 1619, 4990 ,2527, 4289, 4288 ,0, 0, 0 , - 4989, 4990, 4988 ,2527, 4288, 2528 ,0, 0, 0 , - 4990, 1622, 4991 ,4288, 7101, 7435 ,0, 0, 0 , - 4990, 4991, 4988 ,4288, 7435, 2528 ,0, 0, 0 , - 4991, 1586, 4992 ,7435, 7067, 2526 ,0, 0, 0 , - 4991, 4992, 4988 ,7435, 2526, 2528 ,0, 0, 0 , - 4994, 1620, 4995 ,2530, 7098, 7436 ,0, 0, 0 , - 4994, 4995, 4993 ,2530, 7436, 2531 ,0, 0, 0 , - 4995, 1582, 4996 ,7436, 7063, 2529 ,0, 0, 0 , - 4995, 4996, 4993 ,7436, 2529, 2531 ,0, 0, 0 , - 4998, 1061, 4999 ,2534, 4347, 4346 ,0, 0, 0 , - 4998, 4999, 4997 ,2534, 4346, 2535 ,0, 0, 0 , - 4999, 1575, 5000 ,4346, 1765, 7437 ,0, 0, 0 , - 4999, 5000, 4997 ,4346, 7437, 2535 ,0, 0, 0 , - 5000, 1505, 5001 ,7437, 4356, 4355 ,0, 0, 0 , - 5000, 5001, 4997 ,7437, 4355, 2535 ,0, 0, 0 , - 5001, 1572, 5002 ,4355, 4300, 4299 ,0, 0, 0 , - 5001, 5002, 4997 ,4355, 4299, 2535 ,0, 0, 0 , - 5002, 1616, 5003 ,4299, 7092, 7438 ,0, 0, 0 , - 5002, 5003, 4997 ,4299, 7438, 2535 ,0, 0, 0 , - 5003, 1064, 5004 ,7438, 6707, 7439 ,0, 0, 0 , - 5003, 5004, 4997 ,7438, 7439, 2535 ,0, 0, 0 , - 5004, 1044, 5005 ,7439, 4909, 2532 ,0, 0, 0 , - 5004, 5005, 4997 ,7439, 2532, 2535 ,0, 0, 0 , - 5007, 1612, 5008 ,2538, 4295, 4294 ,0, 0, 0 , - 5007, 5008, 5006 ,2538, 4294, 2539 ,0, 0, 0 , - 5008, 1617, 5009 ,4294, 7094, 7440 ,0, 0, 0 , - 5008, 5009, 5006 ,4294, 7440, 2539 ,0, 0, 0 , - 5009, 1571, 5010 ,7440, 1761, 7441 ,0, 0, 0 , - 5009, 5010, 5006 ,7440, 7441, 2539 ,0, 0, 0 , - 5010, 1570, 5011 ,7441, 7052, 2536 ,0, 0, 0 , - 5010, 5011, 5006 ,7441, 2536, 2539 ,0, 0, 0 , - 5013, 1608, 5014 ,2542, 4303, 4302 ,0, 0, 0 , - 5013, 5014, 5012 ,2542, 4302, 2543 ,0, 0, 0 , - 5014, 1613, 5015 ,4302, 7089, 7442 ,0, 0, 0 , - 5014, 5015, 5012 ,4302, 7442, 2543 ,0, 0, 0 , - 5015, 1549, 5016 ,7442, 4383, 2540 ,0, 0, 0 , - 5015, 5016, 5012 ,7442, 2540, 2543 ,0, 0, 0 , - 5018, 1601, 5019 ,2546, 4312, 4311 ,0, 0, 0 , - 5018, 5019, 5017 ,2546, 4311, 2547 ,0, 0, 0 , - 5019, 1604, 5020 ,4311, 1799, 4307 ,0, 0, 0 , - 5019, 5020, 5017 ,4311, 4307, 2547 ,0, 0, 0 , - 5020, 1609, 5021 ,4307, 7085, 7443 ,0, 0, 0 , - 5020, 5021, 5017 ,4307, 7443, 2547 ,0, 0, 0 , - 5021, 1554, 5022 ,7443, 7037, 2544 ,0, 0, 0 , - 5021, 5022, 5017 ,7443, 2544, 2547 ,0, 0, 0 , - 5024, 1597, 5025 ,2550, 1791, 4314 ,0, 0, 0 , - 5024, 5025, 5023 ,2550, 4314, 2551 ,0, 0, 0 , - 5025, 1602, 5026 ,4314, 7080, 7444 ,0, 0, 0 , - 5025, 5026, 5023 ,4314, 7444, 2551 ,0, 0, 0 , - 5026, 1404, 5027 ,7444, 4515, 4514 ,0, 0, 0 , - 5026, 5027, 5023 ,7444, 4514, 2551 ,0, 0, 0 , - 5027, 1430, 5028 ,4514, 6932, 2548 ,0, 0, 0 , - 5027, 5028, 5023 ,4514, 2548, 2551 ,0, 0, 0 , - 5030, 1591, 5031 ,2554, 1783, 4322 ,0, 0, 0 , - 5030, 5031, 5029 ,2554, 4322, 2555 ,0, 0, 0 , - 5031, 1594, 5032 ,4322, 1787, 4318 ,0, 0, 0 , - 5031, 5032, 5029 ,4322, 4318, 2555 ,0, 0, 0 , - 5032, 1598, 5033 ,4318, 7076, 7445 ,0, 0, 0 , - 5032, 5033, 5029 ,4318, 7445, 2555 ,0, 0, 0 , - 5033, 1426, 5034 ,7445, 4498, 4497 ,0, 0, 0 , - 5033, 5034, 5029 ,7445, 4497, 2555 ,0, 0, 0 , - 5034, 1447, 5035 ,4497, 6947, 2552 ,0, 0, 0 , - 5034, 5035, 5029 ,4497, 2552, 2555 ,0, 0, 0 , - 5037, 1588, 5038 ,2557, 4325, 4324 ,0, 0, 0 , - 5037, 5038, 5036 ,2557, 4324, 2558 ,0, 0, 0 , - 5038, 1592, 5039 ,4324, 7072, 7446 ,0, 0, 0 , - 5038, 5039, 5036 ,4324, 7446, 2558 ,0, 0, 0 , - 5039, 1396, 5040 ,7446, 6915, 2556 ,0, 0, 0 , - 5039, 5040, 5036 ,7446, 2556, 2558 ,0, 0, 0 , - 5042, 1584, 5043 ,2560, 4330, 4329 ,0, 0, 0 , - 5042, 5043, 5041 ,2560, 4329, 2561 ,0, 0, 0 , - 5043, 1589, 5044 ,4329, 7069, 7447 ,0, 0, 0 , - 5043, 5044, 5041 ,4329, 7447, 2561 ,0, 0, 0 , - 5044, 1393, 5045 ,7447, 6913, 2559 ,0, 0, 0 , - 5044, 5045, 5041 ,7447, 2559, 2561 ,0, 0, 0 , - 5047, 1580, 5048 ,2563, 4334, 4333 ,0, 0, 0 , - 5047, 5048, 5046 ,2563, 4333, 2564 ,0, 0, 0 , - 5048, 1585, 5049 ,4333, 7065, 7448 ,0, 0, 0 , - 5048, 5049, 5046 ,4333, 7448, 2564 ,0, 0, 0 , - 5049, 1389, 5050 ,7448, 6909, 2562 ,0, 0, 0 , - 5049, 5050, 5046 ,7448, 2562, 2564 ,0, 0, 0 , - 5052, 398, 5053 ,2567, 432, 4337 ,0, 0, 0 , - 5052, 5053, 5051 ,2567, 4337, 2568 ,0, 0, 0 , - 5053, 1581, 5054 ,4337, 7061, 7449 ,0, 0, 0 , - 5053, 5054, 5051 ,4337, 7449, 2568 ,0, 0, 0 , - 5054, 1368, 5055 ,7449, 4567, 2565 ,0, 0, 0 , - 5054, 5055, 5051 ,7449, 2565, 2568 ,0, 0, 0 , - 5057, 1529, 5058 ,2571, 4341, 4340 ,0, 0, 0 , - 5057, 5058, 5056 ,2571, 4340, 2572 ,0, 0, 0 , - 5058, 1576, 5059 ,4340, 7057, 7450 ,0, 0, 0 , - 5058, 5059, 5056 ,4340, 7450, 2572 ,0, 0, 0 , - 5059, 1060, 5060 ,7450, 6705, 7451 ,0, 0, 0 , - 5059, 5060, 5056 ,7450, 7451, 2572 ,0, 0, 0 , - 5060, 1057, 5061 ,7451, 6704, 2569 ,0, 0, 0 , - 5060, 5061, 5056 ,7451, 2569, 2572 ,0, 0, 0 , - 5063, 1577, 5064 ,2575, 7059, 7452 ,0, 0, 0 , - 5063, 5064, 5062 ,2575, 7452, 2576 ,0, 0, 0 , - 5064, 1528, 5065 ,7452, 7020, 7453 ,0, 0, 0 , - 5064, 5065, 5062 ,7452, 7453, 2576 ,0, 0, 0 , - 5065, 1524, 5066 ,7453, 7017, 2573 ,0, 0, 0 , - 5065, 5066, 5062 ,7453, 2573, 2576 ,0, 0, 0 , - 5068, 1568, 5069 ,2578, 1757, 4353 ,0, 0, 0 , - 5068, 5069, 5067 ,2578, 4353, 2579 ,0, 0, 0 , - 5069, 1574, 5070 ,4353, 7056, 7454 ,0, 0, 0 , - 5069, 5070, 5067 ,4353, 7454, 2579 ,0, 0, 0 , - 5070, 1564, 5071 ,7454, 1753, 2577 ,0, 0, 0 , - 5070, 5071, 5067 ,7454, 2577, 2579 ,0, 0, 0 , - 5073, 1565, 5074 ,2582, 4351, 4350 ,0, 0, 0 , - 5073, 5074, 5072 ,2582, 4350, 2583 ,0, 0, 0 , - 5074, 1573, 5075 ,4350, 7054, 7455 ,0, 0, 0 , - 5074, 5075, 5072 ,4350, 7455, 2583 ,0, 0, 0 , - 5075, 1504, 5076 ,7455, 4430, 2580 ,0, 0, 0 , - 5075, 5076, 5072 ,7455, 2580, 2583 ,0, 0, 0 , - 5078, 1569, 5079 ,2586, 7050, 7456 ,0, 0, 0 , - 5078, 5079, 5077 ,2586, 7456, 2587 ,0, 0, 0 , - 5079, 1563, 5080 ,7456, 7045, 7457 ,0, 0, 0 , - 5079, 5080, 5077 ,7456, 7457, 2587 ,0, 0, 0 , - 5080, 1556, 5081 ,7457, 1745, 2584 ,0, 0, 0 , - 5080, 5081, 5077 ,7457, 2584, 2587 ,0, 0, 0 , - 5083, 1532, 5084 ,2589, 4372, 4371 ,0, 0, 0 , - 5083, 5084, 5082 ,2589, 4371, 2590 ,0, 0, 0 , - 5084, 1561, 5085 ,4371, 4364, 4363 ,0, 0, 0 , - 5084, 5085, 5082 ,4371, 4363, 2590 ,0, 0, 0 , - 5085, 1567, 5086 ,4363, 7049, 7458 ,0, 0, 0 , - 5085, 5086, 5082 ,4363, 7458, 2590 ,0, 0, 0 , - 5086, 1243, 5087 ,7458, 6807, 2588 ,0, 0, 0 , - 5086, 5087, 5082 ,7458, 2588, 2590 ,0, 0, 0 , - 5089, 1566, 5090 ,2592, 7047, 7459 ,0, 0, 0 , - 5089, 5090, 5088 ,2592, 7459, 2593 ,0, 0, 0 , - 5090, 1509, 5091 ,7459, 7003, 7460 ,0, 0, 0 , - 5090, 5091, 5088 ,7459, 7460, 2593 ,0, 0, 0 , - 5091, 1240, 5092 ,7460, 4707, 2591 ,0, 0, 0 , - 5091, 5092, 5088 ,7460, 2591, 2593 ,0, 0, 0 , - 5094, 1557, 5095 ,2596, 4369, 4368 ,0, 0, 0 , - 5094, 5095, 5093 ,2596, 4368, 2597 ,0, 0, 0 , - 5095, 1562, 5096 ,4368, 7043, 7461 ,0, 0, 0 , - 5095, 5096, 5093 ,4368, 7461, 2597 ,0, 0, 0 , - 5096, 1531, 5097 ,7461, 4394, 2594 ,0, 0, 0 , - 5096, 5097, 5093 ,7461, 2594, 2597 ,0, 0, 0 , - 5099, 1548, 5100 ,2599, 1737, 4379 ,0, 0, 0 , - 5099, 5100, 5098 ,2599, 4379, 2600 ,0, 0, 0 , - 5100, 1559, 5101 ,4379, 7041, 7462 ,0, 0, 0 , - 5100, 5101, 5098 ,4379, 7462, 2600 ,0, 0, 0 , - 5101, 1399, 5102 ,7462, 4385, 2598 ,0, 0, 0 , - 5101, 5102, 5098 ,7462, 2598, 2600 ,0, 0, 0 , - 5104, 1400, 5105 ,2602, 4376, 4375 ,0, 0, 0 , - 5104, 5105, 5103 ,2602, 4375, 2603 ,0, 0, 0 , - 5105, 1558, 5106 ,4375, 7039, 7463 ,0, 0, 0 , - 5105, 5106, 5103 ,4375, 7463, 2603 ,0, 0, 0 , - 5106, 1543, 5107 ,7463, 4392, 2601 ,0, 0, 0 , - 5106, 5107, 5103 ,7463, 2601, 2603 ,0, 0, 0 , - 5109, 1553, 5110 ,2605, 7035, 7464 ,0, 0, 0 , - 5109, 5110, 5108 ,2605, 7464, 2606 ,0, 0, 0 , - 5110, 1398, 5111 ,7464, 1573, 4511 ,0, 0, 0 , - 5110, 5111, 5108 ,7464, 4511, 2606 ,0, 0, 0 , - 5111, 1433, 5112 ,4511, 6935, 2604 ,0, 0, 0 , - 5111, 5112, 5108 ,4511, 2604, 2606 ,0, 0, 0 , - 5114, 1547, 5115 ,2609, 7034, 7465 ,0, 0, 0 , - 5114, 5115, 5113 ,2609, 7465, 2610 ,0, 0, 0 , - 5115, 1541, 5116 ,7465, 7031, 7466 ,0, 0, 0 , - 5115, 5116, 5113 ,7465, 7466, 2610 ,0, 0, 0 , - 5116, 1441, 5117 ,7466, 6944, 7467 ,0, 0, 0 , - 5116, 5117, 5113 ,7466, 7467, 2610 ,0, 0, 0 , - 5117, 1437, 5118 ,7467, 6940, 7468 ,0, 0, 0 , - 5117, 5118, 5113 ,7467, 7468, 2610 ,0, 0, 0 , - 5118, 1434, 5119 ,7468, 6937, 2607 ,0, 0, 0 , - 5118, 5119, 5113 ,7468, 2607, 2610 ,0, 0, 0 , - 5121, 1538, 5122 ,2613, 1725, 4388 ,0, 0, 0 , - 5121, 5122, 5120 ,2613, 4388, 2614 ,0, 0, 0 , - 5122, 1546, 5123 ,4388, 7032, 7469 ,0, 0, 0 , - 5122, 5123, 5120 ,4388, 7469, 2614 ,0, 0, 0 , - 5123, 1542, 5124 ,7469, 1729, 7470 ,0, 0, 0 , - 5123, 5124, 5120 ,7469, 7470, 2614 ,0, 0, 0 , - 5124, 1530, 5125 ,7470, 1717, 2611 ,0, 0, 0 , - 5124, 5125, 5120 ,7470, 2611, 2614 ,0, 0, 0 , - 5127, 1539, 5128 ,2616, 7027, 7471 ,0, 0, 0 , - 5127, 5128, 5126 ,2616, 7471, 2617 ,0, 0, 0 , - 5128, 1534, 5129 ,7471, 1721, 7472 ,0, 0, 0 , - 5128, 5129, 5126 ,7471, 7472, 2617 ,0, 0, 0 , - 5129, 1482, 5130 ,7472, 6980, 2615 ,0, 0, 0 , - 5129, 5130, 5126 ,7472, 2615, 2617 ,0, 0, 0 , - 5132, 1540, 5133 ,2619, 7029, 7473 ,0, 0, 0 , - 5132, 5133, 5131 ,2619, 7473, 2620 ,0, 0, 0 , - 5133, 1478, 5134 ,7473, 6976, 7474 ,0, 0, 0 , - 5133, 5134, 5131 ,7473, 7474, 2620 ,0, 0, 0 , - 5134, 1471, 5135 ,7474, 1657, 2618 ,0, 0, 0 , - 5134, 5135, 5131 ,7474, 2618, 2620 ,0, 0, 0 , - 5137, 1486, 5138 ,2623, 6984, 7475 ,0, 0, 0 , - 5137, 5138, 5136 ,2623, 7475, 2624 ,0, 0, 0 , - 5138, 1479, 5139 ,7475, 1665, 4400 ,0, 0, 0 , - 5138, 5139, 5136 ,7475, 4400, 2624 ,0, 0, 0 , - 5139, 1537, 5140 ,4400, 7026, 7476 ,0, 0, 0 , - 5139, 5140, 5136 ,4400, 7476, 2624 ,0, 0, 0 , - 5140, 1230, 5141 ,7476, 1396, 2621 ,0, 0, 0 , - 5140, 5141, 5136 ,7476, 2621, 2624 ,0, 0, 0 , - 5143, 1536, 5144 ,2627, 7024, 7477 ,0, 0, 0 , - 5143, 5144, 5142 ,2627, 7477, 2628 ,0, 0, 0 , - 5144, 1533, 5145 ,7477, 7022, 7478 ,0, 0, 0 , - 5144, 5145, 5142 ,7477, 7478, 2628 ,0, 0, 0 , - 5145, 1236, 5146 ,7478, 6802, 2625 ,0, 0, 0 , - 5145, 5146, 5142 ,7478, 2625, 2628 ,0, 0, 0 , - 5148, 1519, 5149 ,2631, 1705, 4410 ,0, 0, 0 , - 5148, 5149, 5147 ,2631, 4410, 2632 ,0, 0, 0 , - 5149, 1525, 5150 ,4410, 4407, 4406 ,0, 0, 0 , - 5149, 5150, 5147 ,4410, 4406, 2632 ,0, 0, 0 , - 5150, 1527, 5151 ,4406, 1713, 7479 ,0, 0, 0 , - 5150, 5151, 5147 ,4406, 7479, 2632 ,0, 0, 0 , - 5151, 1054, 5152 ,7479, 6703, 2629 ,0, 0, 0 , - 5151, 5152, 5147 ,7479, 2629, 2632 ,0, 0, 0 , - 5154, 1523, 5155 ,2634, 1709, 7480 ,0, 0, 0 , - 5154, 5155, 5153 ,2634, 7480, 2635 ,0, 0, 0 , - 5155, 1514, 5156 ,7480, 7007, 7481 ,0, 0, 0 , - 5155, 5156, 5153 ,7480, 7481, 2635 ,0, 0, 0 , - 5156, 1507, 5157 ,7481, 1693, 2633 ,0, 0, 0 , - 5156, 5157, 5153 ,7481, 2633, 2635 ,0, 0, 0 , - 5159, 1526, 5160 ,2637, 7019, 7482 ,0, 0, 0 , - 5159, 5160, 5158 ,2637, 7482, 2638 ,0, 0, 0 , - 5160, 1522, 5161 ,7482, 7016, 7483 ,0, 0, 0 , - 5160, 5161, 5158 ,7482, 7483, 2638 ,0, 0, 0 , - 5161, 1515, 5162 ,7483, 1701, 2636 ,0, 0, 0 , - 5161, 5162, 5158 ,7483, 2636, 2638 ,0, 0, 0 , - 5164, 1499, 5165 ,2641, 1685, 4419 ,0, 0, 0 , - 5164, 5165, 5163 ,2641, 4419, 2642 ,0, 0, 0 , - 5165, 1520, 5166 ,4419, 7012, 7484 ,0, 0, 0 , - 5165, 5166, 5163 ,4419, 7484, 2642 ,0, 0, 0 , - 5166, 1050, 5167 ,7484, 4889, 2639 ,0, 0, 0 , - 5166, 5167, 5163 ,7484, 2639, 2642 ,0, 0, 0 , - 5169, 1516, 5170 ,2644, 4415, 4414 ,0, 0, 0 , - 5169, 5170, 5168 ,2644, 4414, 2645 ,0, 0, 0 , - 5170, 1521, 5171 ,4414, 7014, 7485 ,0, 0, 0 , - 5170, 5171, 5168 ,4414, 7485, 2645 ,0, 0, 0 , - 5171, 1502, 5172 ,7485, 7001, 2643 ,0, 0, 0 , - 5171, 5172, 5168 ,7485, 2643, 2645 ,0, 0, 0 , - 5174, 1512, 5175 ,2647, 4423, 4422 ,0, 0, 0 , - 5174, 5175, 5173 ,2647, 4422, 2648 ,0, 0, 0 , - 5175, 1518, 5176 ,4422, 7011, 7486 ,0, 0, 0 , - 5175, 5176, 5173 ,4422, 7486, 2648 ,0, 0, 0 , - 5176, 1251, 5177 ,7486, 6816, 2646 ,0, 0, 0 , - 5176, 5177, 5173 ,7486, 2646, 2648 ,0, 0, 0 , - 5179, 1517, 5180 ,2650, 7009, 7487 ,0, 0, 0 , - 5179, 5180, 5178 ,2650, 7487, 2651 ,0, 0, 0 , - 5180, 1498, 5181 ,7487, 6996, 7488 ,0, 0, 0 , - 5180, 5181, 5178 ,7487, 7488, 2651 ,0, 0, 0 , - 5181, 1491, 5182 ,7488, 1677, 7489 ,0, 0, 0 , - 5181, 5182, 5178 ,7488, 7489, 2651 ,0, 0, 0 , - 5182, 1178, 5183 ,7489, 1336, 2649 ,0, 0, 0 , - 5182, 5183, 5178 ,7489, 2649, 2651 ,0, 0, 0 , - 5185, 1508, 5186 ,2653, 4427, 4426 ,0, 0, 0 , - 5185, 5186, 5184 ,2653, 4426, 2654 ,0, 0, 0 , - 5186, 1513, 5187 ,4426, 7005, 7490 ,0, 0, 0 , - 5186, 5187, 5184 ,4426, 7490, 2654 ,0, 0, 0 , - 5187, 1247, 5188 ,7490, 6811, 2652 ,0, 0, 0 , - 5187, 5188, 5184 ,7490, 2652, 2654 ,0, 0, 0 , - 5190, 1494, 5191 ,2657, 6992, 7491 ,0, 0, 0 , - 5190, 5191, 5189 ,2657, 7491, 2658 ,0, 0, 0 , - 5191, 1487, 5192 ,7491, 1673, 7492 ,0, 0, 0 , - 5191, 5192, 5189 ,7491, 7492, 2658 ,0, 0, 0 , - 5192, 1174, 5193 ,7492, 1332, 2655 ,0, 0, 0 , - 5192, 5193, 5189 ,7492, 2655, 2658 ,0, 0, 0 , - 5195, 1490, 5196 ,2661, 6988, 7493 ,0, 0, 0 , - 5195, 5196, 5194 ,2661, 7493, 2662 ,0, 0, 0 , - 5196, 1483, 5197 ,7493, 1669, 7494 ,0, 0, 0 , - 5196, 5197, 5194 ,7493, 7494, 2662 ,0, 0, 0 , - 5197, 1172, 5198 ,7494, 4788, 2659 ,0, 0, 0 , - 5197, 5198, 5194 ,7494, 2659, 2662 ,0, 0, 0 , - 5200, 1439, 5201 ,2665, 4462, 4461 ,0, 0, 0 , - 5200, 5201, 5199 ,2665, 4461, 2666 ,0, 0, 0 , - 5201, 1474, 5202 ,4461, 6972, 7495 ,0, 0, 0 , - 5201, 5202, 5199 ,4461, 7495, 2666 ,0, 0, 0 , - 5202, 1270, 5203 ,7495, 4546, 2663 ,0, 0, 0 , - 5202, 5203, 5199 ,7495, 2663, 2666 ,0, 0, 0 , - 5205, 1473, 5206 ,2668, 6970, 7496 ,0, 0, 0 , - 5205, 5206, 5204 ,2668, 7496, 2669 ,0, 0, 0 , - 5206, 1470, 5207 ,7496, 6968, 7497 ,0, 0, 0 , - 5206, 5207, 5204 ,7496, 7497, 2669 ,0, 0, 0 , - 5207, 1442, 5208 ,7497, 1621, 7498 ,0, 0, 0 , - 5207, 5208, 5204 ,7497, 7498, 2669 ,0, 0, 0 , - 5208, 1285, 5209 ,7498, 6826, 2667 ,0, 0, 0 , - 5208, 5209, 5204 ,7498, 2667, 2669 ,0, 0, 0 , - 5211, 1445, 5212 ,2672, 4478, 4477 ,0, 0, 0 , - 5211, 5212, 5210 ,2672, 4477, 2673 ,0, 0, 0 , - 5212, 1462, 5213 ,4477, 4473, 4472 ,0, 0, 0 , - 5212, 5213, 5210 ,4477, 4472, 2673 ,0, 0, 0 , - 5213, 1465, 5214 ,4472, 1649, 7499 ,0, 0, 0 , - 5213, 5214, 5210 ,4472, 7499, 2673 ,0, 0, 0 , - 5214, 1292, 5215 ,7499, 6829, 2670 ,0, 0, 0 , - 5214, 5215, 5210 ,7499, 2670, 2673 ,0, 0, 0 , - 5217, 1467, 5218 ,2676, 6965, 7500 ,0, 0, 0 , - 5217, 5218, 5216 ,2676, 7500, 2677 ,0, 0, 0 , - 5218, 1455, 5219 ,7500, 6955, 7501 ,0, 0, 0 , - 5218, 5219, 5216 ,7500, 7501, 2677 ,0, 0, 0 , - 5219, 1287, 5220 ,7501, 1456, 2674 ,0, 0, 0 , - 5219, 5220, 5216 ,7501, 2674, 2677 ,0, 0, 0 , - 5222, 1466, 5223 ,2679, 6963, 7502 ,0, 0, 0 , - 5222, 5223, 5221 ,2679, 7502, 2680 ,0, 0, 0 , - 5223, 1461, 5224 ,7502, 1645, 7503 ,0, 0, 0 , - 5223, 5224, 5221 ,7502, 7503, 2680 ,0, 0, 0 , - 5224, 1460, 5225 ,7503, 1641, 7504 ,0, 0, 0 , - 5224, 5225, 5221 ,7503, 7504, 2680 ,0, 0, 0 , - 5225, 1456, 5226 ,7504, 1637, 2678 ,0, 0, 0 , - 5225, 5226, 5221 ,7504, 2678, 2680 ,0, 0, 0 , - 5228, 1457, 5229 ,2683, 4482, 4481 ,0, 0, 0 , - 5228, 5229, 5227 ,2683, 4481, 2684 ,0, 0, 0 , - 5229, 518, 5230 ,4481, 3263, 3262 ,0, 0, 0 , - 5229, 5230, 5227 ,4481, 3262, 2684 ,0, 0, 0 , - 5230, 613, 5231 ,3262, 4559, 2681 ,0, 0, 0 , - 5230, 5231, 5227 ,3262, 2681, 2684 ,0, 0, 0 , - 5233, 1450, 5234 ,2686, 4493, 4492 ,0, 0, 0 , - 5233, 5234, 5232 ,2686, 4492, 2687 ,0, 0, 0 , - 5234, 1453, 5235 ,4492, 4488, 4487 ,0, 0, 0 , - 5234, 5235, 5232 ,4492, 4487, 2687 ,0, 0, 0 , - 5235, 1459, 5236 ,4487, 6959, 7505 ,0, 0, 0 , - 5235, 5236, 5232 ,4487, 7505, 2687 ,0, 0, 0 , - 5236, 1394, 5237 ,7505, 1569, 2685 ,0, 0, 0 , - 5236, 5237, 5232 ,7505, 2685, 2687 ,0, 0, 0 , - 5239, 1395, 5240 ,2690, 4485, 4484 ,0, 0, 0 , - 5239, 5240, 5238 ,2690, 4484, 2691 ,0, 0, 0 , - 5240, 1458, 5241 ,4484, 6957, 7506 ,0, 0, 0 , - 5240, 5241, 5238 ,4484, 7506, 2691 ,0, 0, 0 , - 5241, 1382, 5242 ,7506, 1557, 2688 ,0, 0, 0 , - 5241, 5242, 5238 ,7506, 2688, 2691 ,0, 0, 0 , - 5244, 1454, 5245 ,2694, 6953, 7507 ,0, 0, 0 , - 5244, 5245, 5243 ,2694, 7507, 2695 ,0, 0, 0 , - 5245, 1449, 5246 ,7507, 1629, 7508 ,0, 0, 0 , - 5245, 5246, 5243 ,7507, 7508, 2695 ,0, 0, 0 , - 5246, 1423, 5247 ,7508, 6928, 7509 ,0, 0, 0 , - 5246, 5247, 5243 ,7508, 7509, 2695 ,0, 0, 0 , - 5247, 1280, 5248 ,7509, 4672, 2692 ,0, 0, 0 , - 5247, 5248, 5243 ,7509, 2692, 2695 ,0, 0, 0 , - 5250, 1451, 5251 ,2697, 6951, 7510 ,0, 0, 0 , - 5250, 5251, 5249 ,2697, 7510, 2698 ,0, 0, 0 , - 5251, 1448, 5252 ,7510, 6949, 7511 ,0, 0, 0 , - 5251, 5252, 5249 ,7510, 7511, 2698 ,0, 0, 0 , - 5252, 1425, 5253 ,7511, 6929, 2696 ,0, 0, 0 , - 5252, 5253, 5249 ,7511, 2696, 2698 ,0, 0, 0 , - 5255, 1428, 5256 ,2700, 1605, 4509 ,0, 0, 0 , - 5255, 5256, 5254 ,2700, 4509, 2701 ,0, 0, 0 , - 5256, 1435, 5257 ,4509, 1613, 4504 ,0, 0, 0 , - 5256, 5257, 5254 ,4509, 4504, 2701 ,0, 0, 0 , - 5257, 1440, 5258 ,4504, 6942, 7512 ,0, 0, 0 , - 5257, 5258, 5254 ,4504, 7512, 2701 ,0, 0, 0 , - 5258, 1410, 5259 ,7512, 1585, 2699 ,0, 0, 0 , - 5258, 5259, 5254 ,7512, 2699, 2701 ,0, 0, 0 , - 5261, 1432, 5262 ,2704, 1609, 4507 ,0, 0, 0 , - 5261, 5262, 5260 ,2704, 4507, 2705 ,0, 0, 0 , - 5262, 1436, 5263 ,4507, 6938, 7513 ,0, 0, 0 , - 5262, 5263, 5260 ,4507, 7513, 2705 ,0, 0, 0 , - 5263, 1431, 5264 ,7513, 6934, 2702 ,0, 0, 0 , - 5263, 5264, 5260 ,7513, 2702, 2705 ,0, 0, 0 , - 5266, 1424, 5267 ,2708, 1601, 4519 ,0, 0, 0 , - 5266, 5267, 5265 ,2708, 4519, 2709 ,0, 0, 0 , - 5267, 1429, 5268 ,4519, 6930, 7514 ,0, 0, 0 , - 5267, 5268, 5265 ,4519, 7514, 2709 ,0, 0, 0 , - 5268, 1409, 5269 ,7514, 4526, 2706 ,0, 0, 0 , - 5268, 5269, 5265 ,7514, 2706, 2709 ,0, 0, 0 , - 5271, 1417, 5272 ,2711, 1593, 7515 ,0, 0, 0 , - 5271, 5272, 5270 ,2711, 7515, 2712 ,0, 0, 0 , - 5272, 1281, 5273 ,7515, 4523, 4522 ,0, 0, 0 , - 5272, 5273, 5270 ,7515, 4522, 2712 ,0, 0, 0 , - 5273, 1422, 5274 ,4522, 6926, 7516 ,0, 0, 0 , - 5273, 5274, 5270 ,4522, 7516, 2712 ,0, 0, 0 , - 5274, 1408, 5275 ,7516, 4539, 2710 ,0, 0, 0 , - 5274, 5275, 5270 ,7516, 2710, 2712 ,0, 0, 0 , - 5277, 1419, 5278 ,2715, 6924, 7517 ,0, 0, 0 , - 5277, 5278, 5276 ,2715, 7517, 2716 ,0, 0, 0 , - 5278, 1362, 5279 ,7517, 1531, 7518 ,0, 0, 0 , - 5278, 5279, 5276 ,7517, 7518, 2716 ,0, 0, 0 , - 5279, 1358, 5280 ,7518, 1527, 2713 ,0, 0, 0 , - 5279, 5280, 5276 ,7518, 2713, 2716 ,0, 0, 0 , - 5282, 1278, 5283 ,2718, 4581, 4580 ,0, 0, 0 , - 5282, 5283, 5281 ,2718, 4580, 2719 ,0, 0, 0 , - 5283, 1363, 5284 ,4580, 4530, 4529 ,0, 0, 0 , - 5283, 5284, 5281 ,4580, 4529, 2719 ,0, 0, 0 , - 5284, 1418, 5285 ,4529, 6922, 7519 ,0, 0, 0 , - 5284, 5285, 5281 ,4529, 7519, 2719 ,0, 0, 0 , - 5285, 1416, 5286 ,7519, 6921, 7520 ,0, 0, 0 , - 5285, 5286, 5281 ,7519, 7520, 2719 ,0, 0, 0 , - 5286, 1331, 5287 ,7520, 4617, 2717 ,0, 0, 0 , - 5286, 5287, 5281 ,7520, 2717, 2719 ,0, 0, 0 , - 5289, 1332, 5290 ,2722, 4536, 4535 ,0, 0, 0 , - 5289, 5290, 5288 ,2722, 4535, 2723 ,0, 0, 0 , - 5290, 1415, 5291 ,4535, 6919, 7521 ,0, 0, 0 , - 5290, 5291, 5288 ,4535, 7521, 2723 ,0, 0, 0 , - 5291, 1407, 5292 ,7521, 4544, 2720 ,0, 0, 0 , - 5291, 5292, 5288 ,7521, 2720, 2723 ,0, 0, 0 , - 5294, 1329, 5295 ,2726, 1495, 4542 ,0, 0, 0 , - 5294, 5295, 5293 ,2726, 4542, 2727 ,0, 0, 0 , - 5295, 1412, 5296 ,4542, 6917, 7522 ,0, 0, 0 , - 5295, 5296, 5293 ,4542, 7522, 2727 ,0, 0, 0 , - 5296, 1269, 5297 ,7522, 4623, 2724 ,0, 0, 0 , - 5296, 5297, 5293 ,7522, 2724, 2727 ,0, 0, 0 , - 5299, 1387, 5300 ,2729, 4551, 4550 ,0, 0, 0 , - 5299, 5300, 5298 ,2729, 4550, 2730 ,0, 0, 0 , - 5300, 1392, 5301 ,4550, 6911, 7523 ,0, 0, 0 , - 5300, 5301, 5298 ,4550, 7523, 2730 ,0, 0, 0 , - 5301, 1385, 5302 ,7523, 6905, 2728 ,0, 0, 0 , - 5301, 5302, 5298 ,7523, 2728, 2730 ,0, 0, 0 , - 5304, 1388, 5305 ,2733, 6907, 7524 ,0, 0, 0 , - 5304, 5305, 5303 ,2733, 7524, 2734 ,0, 0, 0 , - 5305, 1381, 5306 ,7524, 6901, 7525 ,0, 0, 0 , - 5305, 5306, 5303 ,7524, 7525, 2734 ,0, 0, 0 , - 5306, 1375, 5307 ,7525, 1549, 2731 ,0, 0, 0 , - 5306, 5307, 5303 ,7525, 2731, 2734 ,0, 0, 0 , - 5309, 1379, 5310 ,2737, 4557, 4556 ,0, 0, 0 , - 5309, 5310, 5308 ,2737, 4556, 2738 ,0, 0, 0 , - 5310, 1384, 5311 ,4556, 6903, 7526 ,0, 0, 0 , - 5310, 5311, 5308 ,4556, 7526, 2738 ,0, 0, 0 , - 5311, 1369, 5312 ,7526, 4573, 2735 ,0, 0, 0 , - 5311, 5312, 5308 ,7526, 2735, 2738 ,0, 0, 0 , - 5314, 1376, 5315 ,2741, 4563, 4562 ,0, 0, 0 , - 5314, 5315, 5313 ,2741, 4562, 2742 ,0, 0, 0 , - 5315, 1380, 5316 ,4562, 6899, 7527 ,0, 0, 0 , - 5315, 5316, 5313 ,4562, 7527, 2742 ,0, 0, 0 , - 5316, 1371, 5317 ,7527, 4571, 2739 ,0, 0, 0 , - 5316, 5317, 5313 ,7527, 2739, 2742 ,0, 0, 0 , - 5052, 1377, 5319 ,2567, 2566, 7528 ,0, 0, 0 , - 5052, 5319, 5318 ,2567, 7528, 2744 ,0, 0, 0 , - 5319, 604, 5320 ,7528, 656, 2743 ,0, 0, 0 , - 5319, 5320, 5318 ,7528, 2743, 2744 ,0, 0, 0 , - 5322, 1359, 5323 ,2746, 4578, 4577 ,0, 0, 0 , - 5322, 5323, 5321 ,2746, 4577, 2747 ,0, 0, 0 , - 5323, 1365, 5324 ,4577, 6893, 7529 ,0, 0, 0 , - 5323, 5324, 5321 ,4577, 7529, 2747 ,0, 0, 0 , - 5324, 1253, 5325 ,7529, 4627, 2745 ,0, 0, 0 , - 5324, 5325, 5321 ,7529, 2745, 2747 ,0, 0, 0 , - 5327, 1364, 5328 ,2750, 6891, 7530 ,0, 0, 0 , - 5327, 5328, 5326 ,2750, 7530, 2751 ,0, 0, 0 , - 5328, 1277, 5329 ,7530, 6824, 7531 ,0, 0, 0 , - 5328, 5329, 5326 ,7530, 7531, 2751 ,0, 0, 0 , - 5329, 1266, 5330 ,7531, 6820, 7532 ,0, 0, 0 , - 5329, 5330, 5326 ,7531, 7532, 2751 ,0, 0, 0 , - 5330, 1260, 5331 ,7532, 6818, 7533 ,0, 0, 0 , - 5330, 5331, 5326 ,7532, 7533, 2751 ,0, 0, 0 , - 5331, 1257, 5332 ,7533, 6817, 2748 ,0, 0, 0 , - 5331, 5332, 5326 ,7533, 2748, 2751 ,0, 0, 0 , - 5334, 1361, 5335 ,2753, 6889, 7534 ,0, 0, 0 , - 5334, 5335, 5333 ,2753, 7534, 2754 ,0, 0, 0 , - 5335, 1354, 5336 ,7534, 1523, 7535 ,0, 0, 0 , - 5335, 5336, 5333 ,7534, 7535, 2754 ,0, 0, 0 , - 5336, 1289, 5337 ,7535, 6828, 2752 ,0, 0, 0 , - 5336, 5337, 5333 ,7535, 2752, 2754 ,0, 0, 0 , - 5339, 1355, 5340 ,2756, 4585, 4584 ,0, 0, 0 , - 5339, 5340, 5338 ,2756, 4584, 2757 ,0, 0, 0 , - 5340, 1360, 5341 ,4584, 6887, 7536 ,0, 0, 0 , - 5340, 5341, 5338 ,4584, 7536, 2757 ,0, 0, 0 , - 5341, 1328, 5342 ,7536, 6866, 2755 ,0, 0, 0 , - 5341, 5342, 5338 ,7536, 2755, 2757 ,0, 0, 0 , - 5344, 1357, 5345 ,2760, 6885, 7537 ,0, 0, 0 , - 5344, 5345, 5343 ,2760, 7537, 2761 ,0, 0, 0 , - 5345, 1350, 5346 ,7537, 1519, 7538 ,0, 0, 0 , - 5345, 5346, 5343 ,7537, 7538, 2761 ,0, 0, 0 , - 5346, 1294, 5347 ,7538, 6831, 2758 ,0, 0, 0 , - 5346, 5347, 5343 ,7538, 2758, 2761 ,0, 0, 0 , - 5349, 1351, 5350 ,2763, 4590, 4589 ,0, 0, 0 , - 5349, 5350, 5348 ,2763, 4589, 2764 ,0, 0, 0 , - 5350, 1356, 5351 ,4589, 6883, 7539 ,0, 0, 0 , - 5350, 5351, 5348 ,4589, 7539, 2764 ,0, 0, 0 , - 5351, 1324, 5352 ,7539, 6861, 2762 ,0, 0, 0 , - 5351, 5352, 5348 ,7539, 2762, 2764 ,0, 0, 0 , - 5354, 1353, 5355 ,2766, 6881, 7540 ,0, 0, 0 , - 5354, 5355, 5353 ,2766, 7540, 2767 ,0, 0, 0 , - 5355, 1346, 5356 ,7540, 1515, 7541 ,0, 0, 0 , - 5355, 5356, 5353 ,7540, 7541, 2767 ,0, 0, 0 , - 5356, 1283, 5357 ,7541, 1452, 2765 ,0, 0, 0 , - 5356, 5357, 5353 ,7541, 2765, 2767 ,0, 0, 0 , - 5359, 1347, 5360 ,2769, 4596, 4595 ,0, 0, 0 , - 5359, 5360, 5358 ,2769, 4595, 2770 ,0, 0, 0 , - 5360, 1352, 5361 ,4595, 6879, 7542 ,0, 0, 0 , - 5360, 5361, 5358 ,4595, 7542, 2770 ,0, 0, 0 , - 5361, 1320, 5362 ,7542, 6857, 2768 ,0, 0, 0 , - 5361, 5362, 5358 ,7542, 2768, 2770 ,0, 0, 0 , - 5364, 1349, 5365 ,2773, 6877, 7543 ,0, 0, 0 , - 5364, 5365, 5363 ,2773, 7543, 2774 ,0, 0, 0 , - 5365, 1343, 5366 ,7543, 6871, 7544 ,0, 0, 0 , - 5365, 5366, 5363 ,7543, 7544, 2774 ,0, 0, 0 , - 5366, 1337, 5367 ,7544, 6868, 7545 ,0, 0, 0 , - 5366, 5367, 5363 ,7544, 7545, 2774 ,0, 0, 0 , - 5367, 1333, 5368 ,7545, 1499, 7546 ,0, 0, 0 , - 5367, 5368, 5363 ,7545, 7546, 2774 ,0, 0, 0 , - 5368, 1268, 5369 ,7546, 4674, 2771 ,0, 0, 0 , - 5368, 5369, 5363 ,7546, 2771, 2774 ,0, 0, 0 , - 5371, 1344, 5372 ,2776, 4601, 4600 ,0, 0, 0 , - 5371, 5372, 5370 ,2776, 4600, 2777 ,0, 0, 0 , - 5372, 1348, 5373 ,4600, 6875, 7547 ,0, 0, 0 , - 5372, 5373, 5370 ,4600, 7547, 2777 ,0, 0, 0 , - 5373, 1316, 5374 ,7547, 6853, 7548 ,0, 0, 0 , - 5373, 5374, 5370 ,7547, 7548, 2777 ,0, 0, 0 , - 5374, 1312, 5375 ,7548, 6849, 2775 ,0, 0, 0 , - 5374, 5375, 5370 ,7548, 2775, 2777 ,0, 0, 0 , - 5377, 1338, 5378 ,2780, 4611, 4610 ,0, 0, 0 , - 5377, 5378, 5376 ,2780, 4610, 2781 ,0, 0, 0 , - 5378, 1342, 5379 ,4610, 1511, 7549 ,0, 0, 0 , - 5378, 5379, 5376 ,4610, 7549, 2781 ,0, 0, 0 , - 5379, 1275, 5380 ,7549, 1444, 2778 ,0, 0, 0 , - 5379, 5380, 5376 ,7549, 2778, 2781 ,0, 0, 0 , - 5382, 1276, 5383 ,2783, 4608, 4607 ,0, 0, 0 , - 5382, 5383, 5381 ,2783, 4607, 2784 ,0, 0, 0 , - 5383, 1345, 5384 ,4607, 6873, 7550 ,0, 0, 0 , - 5383, 5384, 5381 ,4607, 7550, 2784 ,0, 0, 0 , - 5384, 1274, 5385 ,7550, 6822, 2782 ,0, 0, 0 , - 5384, 5385, 5381 ,7550, 2782, 2784 ,0, 0, 0 , - 5387, 1336, 5388 ,2787, 1503, 4614 ,0, 0, 0 , - 5387, 5388, 5386 ,2787, 4614, 2788 ,0, 0, 0 , - 5388, 1340, 5389 ,4614, 6869, 7551 ,0, 0, 0 , - 5388, 5389, 5386 ,4614, 7551, 2788 ,0, 0, 0 , - 5389, 1330, 5390 ,7551, 4621, 2785 ,0, 0, 0 , - 5389, 5390, 5386 ,7551, 2785, 2788 ,0, 0, 0 , - 5392, 1326, 5393 ,2791, 6862, 7552 ,0, 0, 0 , - 5392, 5393, 5391 ,2791, 7552, 2792 ,0, 0, 0 , - 5393, 1252, 5394 ,7552, 1420, 2789 ,0, 0, 0 , - 5393, 5394, 5391 ,7552, 2789, 2792 ,0, 0, 0 , - 5396, 1327, 5397 ,2795, 6864, 7553 ,0, 0, 0 , - 5396, 5397, 5395 ,2795, 7553, 2796 ,0, 0, 0 , - 5397, 1297, 5398 ,7553, 4632, 2793 ,0, 0, 0 , - 5397, 5398, 5395 ,7553, 2793, 2796 ,0, 0, 0 , - 5400, 1323, 5401 ,2799, 6859, 7554 ,0, 0, 0 , - 5400, 5401, 5399 ,2799, 7554, 2800 ,0, 0, 0 , - 5401, 1296, 5402 ,7554, 1467, 2797 ,0, 0, 0 , - 5401, 5402, 5399 ,7554, 2797, 2800 ,0, 0, 0 , - 5404, 1319, 5405 ,2803, 6855, 7555 ,0, 0, 0 , - 5404, 5405, 5403 ,2803, 7555, 2804 ,0, 0, 0 , - 5405, 1306, 5406 ,7555, 4638, 2801 ,0, 0, 0 , - 5405, 5406, 5403 ,7555, 2801, 2804 ,0, 0, 0 , - 5408, 1310, 5409 ,2806, 1475, 4636 ,0, 0, 0 , - 5408, 5409, 5407 ,2806, 4636, 2807 ,0, 0, 0 , - 5409, 1315, 5410 ,4636, 6851, 7556 ,0, 0, 0 , - 5409, 5410, 5407 ,4636, 7556, 2807 ,0, 0, 0 , - 5410, 1305, 5411 ,7556, 4646, 2805 ,0, 0, 0 , - 5410, 5411, 5407 ,7556, 2805, 2807 ,0, 0, 0 , - 5413, 1272, 5414 ,2810, 4642, 4641 ,0, 0, 0 , - 5413, 5414, 5412 ,2810, 4641, 2811 ,0, 0, 0 , - 5414, 1311, 5415 ,4641, 6847, 7557 ,0, 0, 0 , - 5414, 5415, 5412 ,4641, 7557, 2811 ,0, 0, 0 , - 5415, 1309, 5416 ,7557, 6846, 2808 ,0, 0, 0 , - 5415, 5416, 5412 ,7557, 2808, 2811 ,0, 0, 0 , - 5418, 1308, 5419 ,2813, 6844, 7558 ,0, 0, 0 , - 5418, 5419, 5417 ,2813, 7558, 2814 ,0, 0, 0 , - 5419, 1304, 5420 ,7558, 6843, 2812 ,0, 0, 0 , - 5419, 5420, 5417 ,7558, 2812, 2814 ,0, 0, 0 , - 5422, 1295, 5423 ,2816, 4651, 4650 ,0, 0, 0 , - 5422, 5423, 5421 ,2816, 4650, 2817 ,0, 0, 0 , - 5423, 1299, 5424 ,4650, 6833, 7559 ,0, 0, 0 , - 5423, 5424, 5421 ,4650, 7559, 2817 ,0, 0, 0 , - 5424, 1255, 5425 ,7559, 4688, 2815 ,0, 0, 0 , - 5424, 5425, 5421 ,7559, 2815, 2817 ,0, 0, 0 , - 5427, 1258, 5428 ,2819, 4685, 4684 ,0, 0, 0 , - 5427, 5428, 5426 ,2819, 4684, 2820 ,0, 0, 0 , - 5428, 1259, 5429 ,4684, 1428, 2818 ,0, 0, 0 , - 5428, 5429, 5426 ,4684, 2818, 2820 ,0, 0, 0 , - 5431, 1261, 5432 ,2823, 4681, 4680 ,0, 0, 0 , - 5431, 5432, 5430 ,2823, 4680, 2824 ,0, 0, 0 , - 5432, 1265, 5433 ,4680, 4663, 2821 ,0, 0, 0 , - 5432, 5433, 5430 ,4680, 2821, 2824 ,0, 0, 0 , - 5435, 1263, 5436 ,2827, 4678, 4677 ,0, 0, 0 , - 5435, 5436, 5434 ,2827, 4677, 2828 ,0, 0, 0 , - 5436, 1273, 5437 ,4677, 4667, 4666 ,0, 0, 0 , - 5436, 5437, 5434 ,4677, 4666, 2828 ,0, 0, 0 , - 5437, 995, 5438 ,4666, 6679, 2825 ,0, 0, 0 , - 5437, 5438, 5434 ,4666, 2825, 2828 ,0, 0, 0 , - 5440, 1208, 5441 ,2831, 4696, 4695 ,0, 0, 0 , - 5440, 5441, 5439 ,2831, 4695, 2832 ,0, 0, 0 , - 5441, 1249, 5442 ,4695, 6812, 7560 ,0, 0, 0 , - 5441, 5442, 5439 ,4695, 7560, 2832 ,0, 0, 0 , - 5442, 1181, 5443 ,7560, 4753, 2829 ,0, 0, 0 , - 5442, 5443, 5439 ,7560, 2829, 2832 ,0, 0, 0 , - 5445, 1109, 5446 ,2834, 4734, 4733 ,0, 0, 0 , - 5445, 5446, 5444 ,2834, 4733, 2835 ,0, 0, 0 , - 5446, 1220, 5447 ,4733, 1384, 4702 ,0, 0, 0 , - 5446, 5447, 5444 ,4733, 4702, 2835 ,0, 0, 0 , - 5447, 1245, 5448 ,4702, 4692, 4691 ,0, 0, 0 , - 5447, 5448, 5444 ,4702, 4691, 2835 ,0, 0, 0 , - 5448, 1250, 5449 ,4691, 6814, 7561 ,0, 0, 0 , - 5448, 5449, 5444 ,4691, 7561, 2835 ,0, 0, 0 , - 5449, 1207, 5450 ,7561, 4746, 2833 ,0, 0, 0 , - 5449, 5450, 5444 ,7561, 2833, 2835 ,0, 0, 0 , - 5452, 1238, 5453 ,2837, 4700, 4699 ,0, 0, 0 , - 5452, 5453, 5451 ,2837, 4699, 2838 ,0, 0, 0 , - 5453, 1246, 5454 ,4699, 6809, 7562 ,0, 0, 0 , - 5453, 5454, 5451 ,4699, 7562, 2838 ,0, 0, 0 , - 5454, 1219, 5455 ,7562, 1380, 2836 ,0, 0, 0 , - 5454, 5455, 5451 ,7562, 2836, 2838 ,0, 0, 0 , - 5457, 1234, 5458 ,2840, 4705, 4704 ,0, 0, 0 , - 5457, 5458, 5456 ,2840, 4704, 2841 ,0, 0, 0 , - 5458, 1242, 5459 ,4704, 6805, 7563 ,0, 0, 0 , - 5458, 5459, 5456 ,4704, 7563, 2841 ,0, 0, 0 , - 5459, 1239, 5460 ,7563, 6804, 7564 ,0, 0, 0 , - 5459, 5460, 5456 ,7563, 7564, 2841 ,0, 0, 0 , - 5460, 1215, 5461 ,7564, 4739, 2839 ,0, 0, 0 , - 5460, 5461, 5456 ,7564, 2839, 2841 ,0, 0, 0 , - 5463, 1170, 5464 ,2844, 1328, 4716 ,0, 0, 0 , - 5463, 5464, 5462 ,2844, 4716, 2845 ,0, 0, 0 , - 5464, 1232, 5465 ,4716, 4712, 4711 ,0, 0, 0 , - 5464, 5465, 5462 ,4716, 4711, 2845 ,0, 0, 0 , - 5465, 1235, 5466 ,4711, 6800, 7565 ,0, 0, 0 , - 5465, 5466, 5462 ,4711, 7565, 2845 ,0, 0, 0 , - 5466, 1218, 5467 ,7565, 4725, 4724 ,0, 0, 0 , - 5466, 5467, 5462 ,7565, 4724, 2845 ,0, 0, 0 , - 5467, 1227, 5468 ,4724, 1392, 7566 ,0, 0, 0 , - 5467, 5468, 5462 ,4724, 7566, 2845 ,0, 0, 0 , - 5468, 1146, 5469 ,7566, 4803, 2842 ,0, 0, 0 , - 5468, 5469, 5462 ,7566, 2842, 2845 ,0, 0, 0 , - 5471, 1163, 5472 ,2848, 4794, 4793 ,0, 0, 0 , - 5471, 5472, 5470 ,2848, 4793, 2849 ,0, 0, 0 , - 5472, 1168, 5473 ,4793, 6760, 7567 ,0, 0, 0 , - 5472, 5473, 5470 ,4793, 7567, 2849 ,0, 0, 0 , - 5473, 1157, 5474 ,7567, 1316, 2846 ,0, 0, 0 , - 5473, 5474, 5470 ,7567, 2846, 2849 ,0, 0, 0 , - 5476, 1226, 5477 ,2852, 4719, 4718 ,0, 0, 0 , - 5476, 5477, 5475 ,2852, 4718, 2853 ,0, 0, 0 , - 5477, 1228, 5478 ,4718, 6796, 7568 ,0, 0, 0 , - 5477, 5478, 5475 ,4718, 7568, 2853 ,0, 0, 0 , - 5478, 1217, 5479 ,7568, 6791, 2850 ,0, 0, 0 , - 5478, 5479, 5475 ,7568, 2850, 2853 ,0, 0, 0 , - 5481, 1229, 5482 ,2856, 6798, 7569 ,0, 0, 0 , - 5481, 5482, 5480 ,2856, 7569, 2857 ,0, 0, 0 , - 5482, 1225, 5483 ,7569, 6795, 7570 ,0, 0, 0 , - 5482, 5483, 5480 ,7569, 7570, 2857 ,0, 0, 0 , - 5483, 1144, 5484 ,7570, 4815, 2854 ,0, 0, 0 , - 5483, 5484, 5480 ,7570, 2854, 2857 ,0, 0, 0 , - 5486, 1224, 5487 ,2859, 6793, 7571 ,0, 0, 0 , - 5486, 5487, 5485 ,2859, 7571, 2860 ,0, 0, 0 , - 5487, 1222, 5488 ,7571, 6792, 7572 ,0, 0, 0 , - 5487, 5488, 5485 ,7571, 7572, 2860 ,0, 0, 0 , - 5488, 1108, 5489 ,7572, 4818, 2858 ,0, 0, 0 , - 5488, 5489, 5485 ,7572, 2858, 2860 ,0, 0, 0 , - 5491, 1223, 5492 ,2863, 1388, 7573 ,0, 0, 0 , - 5491, 5492, 5490 ,2863, 7573, 2864 ,0, 0, 0 , - 5492, 1213, 5493 ,7573, 4737, 2861 ,0, 0, 0 , - 5492, 5493, 5490 ,7573, 2861, 2864 ,0, 0, 0 , - 5495, 1107, 5496 ,2867, 1260, 4744 ,0, 0, 0 , - 5495, 5496, 5494 ,2867, 4744, 2868 ,0, 0, 0 , - 5496, 1211, 5497 ,4744, 6790, 7574 ,0, 0, 0 , - 5496, 5497, 5494 ,4744, 7574, 2868 ,0, 0, 0 , - 5497, 1195, 5498 ,7574, 6780, 7575 ,0, 0, 0 , - 5497, 5498, 5494 ,7574, 7575, 2868 ,0, 0, 0 , - 5498, 1190, 5499 ,7575, 1348, 4768 ,0, 0, 0 , - 5498, 5499, 5494 ,7575, 4768, 2868 ,0, 0, 0 , - 5499, 1198, 5500 ,4768, 1356, 7576 ,0, 0, 0 , - 5499, 5500, 5494 ,4768, 7576, 2868 ,0, 0, 0 , - 5500, 1111, 5501 ,7576, 4820, 2865 ,0, 0, 0 , - 5500, 5501, 5494 ,7576, 2865, 2868 ,0, 0, 0 , - 5503, 1210, 5504 ,2871, 6788, 7577 ,0, 0, 0 , - 5503, 5504, 5502 ,2871, 7577, 2872 ,0, 0, 0 , - 5504, 1206, 5505 ,7577, 6787, 2869 ,0, 0, 0 , - 5504, 5505, 5502 ,7577, 2869, 2872 ,0, 0, 0 , - 5507, 1205, 5508 ,2875, 1364, 7578 ,0, 0, 0 , - 5507, 5508, 5506 ,2875, 7578, 2876 ,0, 0, 0 , - 5508, 1202, 5509 ,7578, 6784, 7579 ,0, 0, 0 , - 5508, 5509, 5506 ,7578, 7579, 2876 ,0, 0, 0 , - 5509, 1187, 5510 ,7579, 4770, 2873 ,0, 0, 0 , - 5509, 5510, 5506 ,7579, 2873, 2876 ,0, 0, 0 , - 5512, 1188, 5513 ,2879, 4758, 4757 ,0, 0, 0 , - 5512, 5513, 5511 ,2879, 4757, 2880 ,0, 0, 0 , - 5513, 1201, 5514 ,4757, 1360, 7580 ,0, 0, 0 , - 5513, 5514, 5511 ,4757, 7580, 2880 ,0, 0, 0 , - 5514, 1169, 5515 ,7580, 6762, 2877 ,0, 0, 0 , - 5514, 5515, 5511 ,7580, 2877, 2880 ,0, 0, 0 , - 5517, 1204, 5518 ,2882, 6786, 7581 ,0, 0, 0 , - 5517, 5518, 5516 ,2882, 7581, 2883 ,0, 0, 0 , - 5518, 1180, 5519 ,7581, 6769, 7582 ,0, 0, 0 , - 5518, 5519, 5516 ,7581, 7582, 2883 ,0, 0, 0 , - 5519, 1177, 5520 ,7582, 6767, 2881 ,0, 0, 0 , - 5519, 5520, 5516 ,7582, 2881, 2883 ,0, 0, 0 , - 5522, 1139, 5523 ,2885, 4811, 4810 ,0, 0, 0 , - 5522, 5523, 5521 ,2885, 4810, 2886 ,0, 0, 0 , - 5523, 1152, 5524 ,4810, 6749, 7583 ,0, 0, 0 , - 5523, 5524, 5521 ,4810, 7583, 2886 ,0, 0, 0 , - 5524, 1112, 5525 ,7583, 4765, 4764 ,0, 0, 0 , - 5524, 5525, 5521 ,7583, 4764, 2886 ,0, 0, 0 , - 5525, 1200, 5526 ,4764, 6783, 7584 ,0, 0, 0 , - 5525, 5526, 5521 ,4764, 7584, 2886 ,0, 0, 0 , - 5526, 1127, 5527 ,7584, 1284, 2884 ,0, 0, 0 , - 5526, 5527, 5521 ,7584, 2884, 2886 ,0, 0, 0 , - 5529, 1128, 5530 ,2888, 4762, 4761 ,0, 0, 0 , - 5529, 5530, 5528 ,2888, 4761, 2889 ,0, 0, 0 , - 5530, 1199, 5531 ,4761, 6781, 7585 ,0, 0, 0 , - 5530, 5531, 5528 ,4761, 7585, 2889 ,0, 0, 0 , - 5531, 1193, 5532 ,7585, 6779, 7586 ,0, 0, 0 , - 5531, 5532, 5528 ,7585, 7586, 2889 ,0, 0, 0 , - 5532, 1121, 5533 ,7586, 4837, 2887 ,0, 0, 0 , - 5532, 5533, 5528 ,7586, 2887, 2889 ,0, 0, 0 , - 5535, 1191, 5536 ,2891, 4773, 4772 ,0, 0, 0 , - 5535, 5536, 5534 ,2891, 4772, 2892 ,0, 0, 0 , - 5536, 1194, 5537 ,4772, 1352, 7587 ,0, 0, 0 , - 5536, 5537, 5534 ,4772, 7587, 2892 ,0, 0, 0 , - 5537, 1186, 5538 ,7587, 1344, 2890 ,0, 0, 0 , - 5537, 5538, 5534 ,7587, 2890, 2892 ,0, 0, 0 , - 5540, 1122, 5541 ,2894, 4776, 4775 ,0, 0, 0 , - 5540, 5541, 5539 ,2894, 4775, 2895 ,0, 0, 0 , - 5541, 1192, 5542 ,4775, 6777, 7588 ,0, 0, 0 , - 5541, 5542, 5539 ,4775, 7588, 2895 ,0, 0, 0 , - 5542, 1185, 5543 ,7588, 6773, 7589 ,0, 0, 0 , - 5542, 5543, 5539 ,7588, 7589, 2895 ,0, 0, 0 , - 5543, 1099, 5544 ,7589, 1252, 2893 ,0, 0, 0 , - 5543, 5544, 5539 ,7589, 2893, 2895 ,0, 0, 0 , - 5546, 1189, 5547 ,2898, 6775, 7590 ,0, 0, 0 , - 5546, 5547, 5545 ,2898, 7590, 2899 ,0, 0, 0 , - 5547, 1161, 5548 ,7590, 1320, 2896 ,0, 0, 0 , - 5547, 5548, 5545 ,7590, 2896, 2899 ,0, 0, 0 , - 5550, 1100, 5551 ,2902, 4783, 4782 ,0, 0, 0 , - 5550, 5551, 5549 ,2902, 4782, 2903 ,0, 0, 0 , - 5551, 1184, 5552 ,4782, 6771, 7591 ,0, 0, 0 , - 5551, 5552, 5549 ,4782, 7591, 2903 ,0, 0, 0 , - 5552, 1165, 5553 ,7591, 6758, 7592 ,0, 0, 0 , - 5552, 5553, 5549 ,7591, 7592, 2903 ,0, 0, 0 , - 5553, 1093, 5554 ,7592, 4880, 2900 ,0, 0, 0 , - 5553, 5554, 5549 ,7592, 2900, 2903 ,0, 0, 0 , - 5556, 1176, 5557 ,2906, 6765, 7593 ,0, 0, 0 , - 5556, 5557, 5555 ,2906, 7593, 2907 ,0, 0, 0 , - 5557, 1171, 5558 ,7593, 6763, 7594 ,0, 0, 0 , - 5557, 5558, 5555 ,7593, 7594, 2907 ,0, 0, 0 , - 5558, 1158, 5559 ,7594, 4797, 2904 ,0, 0, 0 , - 5558, 5559, 5555 ,7594, 2904, 2907 ,0, 0, 0 , - 5561, 1164, 5562 ,2910, 6756, 7595 ,0, 0, 0 , - 5561, 5562, 5560 ,2910, 7595, 2911 ,0, 0, 0 , - 5562, 1155, 5563 ,7595, 6752, 7596 ,0, 0, 0 , - 5562, 5563, 5560 ,7595, 7596, 2911 ,0, 0, 0 , - 5563, 1136, 5564 ,7596, 6738, 2908 ,0, 0, 0 , - 5563, 5564, 5560 ,7596, 2908, 2911 ,0, 0, 0 , - 5566, 1153, 5567 ,2914, 1312, 4805 ,0, 0, 0 , - 5566, 5567, 5565 ,2914, 4805, 2915 ,0, 0, 0 , - 5567, 1160, 5568 ,4805, 6754, 7597 ,0, 0, 0 , - 5567, 5568, 5565 ,4805, 7597, 2915 ,0, 0, 0 , - 5568, 1145, 5569 ,7597, 1304, 2912 ,0, 0, 0 , - 5568, 5569, 5565 ,7597, 2912, 2915 ,0, 0, 0 , - 5571, 1154, 5572 ,2917, 6750, 7598 ,0, 0, 0 , - 5571, 5572, 5570 ,2917, 7598, 2918 ,0, 0, 0 , - 5572, 1149, 5573 ,7598, 1308, 7599 ,0, 0, 0 , - 5572, 5573, 5570 ,7598, 7599, 2918 ,0, 0, 0 , - 5573, 1138, 5574 ,7599, 6739, 2916 ,0, 0, 0 , - 5573, 5574, 5570 ,7599, 2916, 2918 ,0, 0, 0 , - 5576, 1151, 5577 ,2920, 6747, 7600 ,0, 0, 0 , - 5576, 5577, 5575 ,2920, 7600, 2921 ,0, 0, 0 , - 5577, 1148, 5578 ,7600, 6745, 7601 ,0, 0, 0 , - 5577, 5578, 5575 ,7600, 7601, 2921 ,0, 0, 0 , - 5578, 1143, 5579 ,7601, 6743, 2919 ,0, 0, 0 , - 5578, 5579, 5575 ,7601, 2919, 2921 ,0, 0, 0 , - 5581, 1137, 5582 ,2924, 1296, 7602 ,0, 0, 0 , - 5581, 5582, 5580 ,2924, 7602, 2925 ,0, 0, 0 , - 5582, 1087, 5583 ,7602, 4829, 2922 ,0, 0, 0 , - 5582, 5583, 5580 ,7602, 2922, 2925 ,0, 0, 0 , - 5585, 1140, 5586 ,2927, 6741, 7603 ,0, 0, 0 , - 5585, 5586, 5584 ,2927, 7603, 2928 ,0, 0, 0 , - 5586, 1132, 5587 ,7603, 6734, 7604 ,0, 0, 0 , - 5586, 5587, 5584 ,7603, 7604, 2928 ,0, 0, 0 , - 5587, 1088, 5588 ,7604, 1240, 2926 ,0, 0, 0 , - 5587, 5588, 5584 ,7604, 2926, 2928 ,0, 0, 0 , - 5590, 1095, 5591 ,2931, 4826, 4825 ,0, 0, 0 , - 5590, 5591, 5589 ,2931, 4825, 2932 ,0, 0, 0 , - 5591, 1135, 5592 ,4825, 6736, 7605 ,0, 0, 0 , - 5591, 5592, 5589 ,4825, 7605, 2932 ,0, 0, 0 , - 5592, 1086, 5593 ,7605, 6716, 7606 ,0, 0, 0 , - 5592, 5593, 5589 ,7605, 7606, 2932 ,0, 0, 0 , - 5593, 1073, 5594 ,7606, 1228, 2929 ,0, 0, 0 , - 5593, 5594, 5589 ,7606, 2929, 2932 ,0, 0, 0 , - 5596, 1131, 5597 ,2935, 6732, 7607 ,0, 0, 0 , - 5596, 5597, 5595 ,2935, 7607, 2936 ,0, 0, 0 , - 5597, 1129, 5598 ,7607, 6731, 7608 ,0, 0, 0 , - 5597, 5598, 5595 ,7607, 7608, 2936 ,0, 0, 0 , - 5598, 1126, 5599 ,7608, 6729, 2933 ,0, 0, 0 , - 5598, 5599, 5595 ,7608, 2933, 2936 ,0, 0, 0 , - 5601, 1125, 5602 ,2939, 6727, 7609 ,0, 0, 0 , - 5601, 5602, 5600 ,2939, 7609, 2940 ,0, 0, 0 , - 5602, 1120, 5603 ,7609, 1276, 7610 ,0, 0, 0 , - 5602, 5603, 5600 ,7609, 7610, 2940 ,0, 0, 0 , - 5603, 1114, 5604 ,7610, 4845, 4844 ,0, 0, 0 , - 5603, 5604, 5600 ,7610, 4844, 2940 ,0, 0, 0 , - 5604, 1118, 5605 ,4844, 6722, 2937 ,0, 0, 0 , - 5604, 5605, 5600 ,4844, 2937, 2940 ,0, 0, 0 , - 5607, 1115, 5608 ,2943, 4841, 4840 ,0, 0, 0 , - 5607, 5608, 5606 ,2943, 4840, 2944 ,0, 0, 0 , - 5608, 1123, 5609 ,4840, 6726, 7611 ,0, 0, 0 , - 5608, 5609, 5606 ,4840, 7611, 2944 ,0, 0, 0 , - 5609, 1106, 5610 ,7611, 4860, 2941 ,0, 0, 0 , - 5609, 5610, 5606 ,7611, 2941, 2944 ,0, 0, 0 , - 5612, 1117, 5613 ,2947, 1272, 7612 ,0, 0, 0 , - 5612, 5613, 5611 ,2947, 7612, 2948 ,0, 0, 0 , - 5613, 1083, 5614 ,7612, 4883, 2945 ,0, 0, 0 , - 5613, 5614, 5611 ,7612, 2945, 2948 ,0, 0, 0 , - 5616, 1119, 5617 ,2951, 6724, 7613 ,0, 0, 0 , - 5616, 5617, 5615 ,2951, 7613, 2952 ,0, 0, 0 , - 5617, 1113, 5618 ,7613, 1268, 2949 ,0, 0, 0 , - 5617, 5618, 5615 ,7613, 2949, 2952 ,0, 0, 0 , - 5620, 1074, 5621 ,2954, 4886, 4885 ,0, 0, 0 , - 5620, 5621, 5619 ,2954, 4885, 2955 ,0, 0, 0 , - 5621, 1085, 5622 ,4885, 4853, 4852 ,0, 0, 0 , - 5621, 5622, 5619 ,4885, 4852, 2955 ,0, 0, 0 , - 5622, 1116, 5623 ,4852, 6721, 2953 ,0, 0, 0 , - 5622, 5623, 5619 ,4852, 2953, 2955 ,0, 0, 0 , - 5625, 1105, 5626 ,2958, 6719, 7614 ,0, 0, 0 , - 5625, 5626, 5624 ,2958, 7614, 2959 ,0, 0, 0 , - 5626, 1103, 5627 ,7614, 4867, 2956 ,0, 0, 0 , - 5626, 5627, 5624 ,7614, 2956, 2959 ,0, 0, 0 , - 5629, 1101, 5630 ,2962, 6718, 7615 ,0, 0, 0 , - 5629, 5630, 5628 ,2962, 7615, 2963 ,0, 0, 0 , - 5630, 1097, 5631 ,7615, 4875, 4874 ,0, 0, 0 , - 5630, 5631, 5628 ,7615, 4874, 2963 ,0, 0, 0 , - 5631, 991, 5632 ,4874, 6676, 2960 ,0, 0, 0 , - 5631, 5632, 5628 ,4874, 2960, 2963 ,0, 0, 0 , - 5634, 1081, 5635 ,2965, 6714, 7616 ,0, 0, 0 , - 5634, 5635, 5633 ,2965, 7616, 2966 ,0, 0, 0 , - 5635, 1078, 5636 ,7616, 4871, 2964 ,0, 0, 0 , - 5635, 5636, 5633 ,7616, 2964, 2966 ,0, 0, 0 , - 5638, 1096, 5639 ,2968, 1248, 7617 ,0, 0, 0 , - 5638, 5639, 5637 ,2968, 7617, 2969 ,0, 0, 0 , - 5639, 1092, 5640 ,7617, 1244, 7618 ,0, 0, 0 , - 5639, 5640, 5637 ,7617, 7618, 2969 ,0, 0, 0 , - 5640, 1079, 5641 ,7618, 1232, 2967 ,0, 0, 0 , - 5640, 5641, 5637 ,7618, 2967, 2969 ,0, 0, 0 , - 5643, 891, 5644 ,2971, 6591, 7619 ,0, 0, 0 , - 5643, 5644, 5642 ,2971, 7619, 2972 ,0, 0, 0 , - 5644, 887, 5645 ,7619, 956, 7620 ,0, 0, 0 , - 5644, 5645, 5642 ,7619, 7620, 2972 ,0, 0, 0 , - 5645, 985, 5646 ,7620, 1096, 2970 ,0, 0, 0 , - 5645, 5646, 5642 ,7620, 2970, 2972 ,0, 0, 0 , - 5648, 911, 5649 ,2974, 6611, 7621 ,0, 0, 0 , - 5648, 5649, 5647 ,2974, 7621, 2975 ,0, 0, 0 , - 5649, 905, 5650 ,7621, 6604, 2973 ,0, 0, 0 , - 5649, 5650, 5647 ,7621, 2973, 2975 ,0, 0, 0 , - 5652, 986, 5653 ,2978, 5008, 5007 ,0, 0, 0 , - 5652, 5653, 5651 ,2978, 5007, 2979 ,0, 0, 0 , - 5653, 889, 5654 ,5007, 6590, 7622 ,0, 0, 0 , - 5653, 5654, 5651 ,5007, 7622, 2979 ,0, 0, 0 , - 5654, 882, 5655 ,7622, 952, 2976 ,0, 0, 0 , - 5654, 5655, 5651 ,7622, 2976, 2979 ,0, 0, 0 , - 5657, 885, 5658 ,2982, 6586, 7623 ,0, 0, 0 , - 5657, 5658, 5656 ,2982, 7623, 2983 ,0, 0, 0 , - 5658, 881, 5659 ,7623, 6582, 2980 ,0, 0, 0 , - 5658, 5659, 5656 ,7623, 2980, 2983 ,0, 0, 0 , - 5661, 898, 5662 ,2986, 968, 4993 ,0, 0, 0 , - 5661, 5662, 5660 ,2986, 4993, 2987 ,0, 0, 0 , - 5662, 909, 5663 ,4993, 6607, 5020 ,0, 0, 0 , - 5662, 5663, 5660 ,4993, 5020, 2987 ,0, 0, 0 , - 5663, 872, 5664 ,5020, 1078, 2984 ,0, 0, 0 , - 5663, 5664, 5660 ,5020, 2984, 2987 ,0, 0, 0 , - 5666, 899, 5667 ,2990, 6595, 7624 ,0, 0, 0 , - 5666, 5667, 5665 ,2990, 7624, 2991 ,0, 0, 0 , - 5667, 869, 5668 ,7624, 6573, 2988 ,0, 0, 0 , - 5667, 5668, 5665 ,7624, 2988, 2991 ,0, 0, 0 , - 5670, 896, 5671 ,2993, 4996, 4995 ,0, 0, 0 , - 5670, 5671, 5669 ,2993, 4995, 2994 ,0, 0, 0 , - 5671, 900, 5672 ,4995, 6597, 2992 ,0, 0, 0 , - 5671, 5672, 5669 ,4995, 2992, 2994 ,0, 0, 0 , - 5674, 871, 5675 ,2997, 5025, 5024 ,0, 0, 0 , - 5674, 5675, 5673 ,2997, 5024, 2998 ,0, 0, 0 , - 5675, 978, 5676 ,5024, 5017, 5016 ,0, 0, 0 , - 5675, 5676, 5673 ,5024, 5016, 2998 ,0, 0, 0 , - 5676, 880, 5677 ,5016, 6580, 2995 ,0, 0, 0 , - 5676, 5677, 5673 ,5016, 2995, 2998 ,0, 0, 0 , - 5679, 867, 5680 ,3001, 5031, 5030 ,0, 0, 0 , - 5679, 5680, 5678 ,3001, 5030, 3002 ,0, 0, 0 , - 5680, 868, 5681 ,5030, 936, 7625 ,0, 0, 0 , - 5680, 5681, 5678 ,5030, 7625, 3002 ,0, 0, 0 , - 5681, 862, 5682 ,7625, 6572, 7626 ,0, 0, 0 , - 5681, 5682, 5678 ,7625, 7626, 3002 ,0, 0, 0 , - 5682, 860, 5683 ,7626, 5040, 2999 ,0, 0, 0 , - 5682, 5683, 5678 ,7626, 2999, 3002 ,0, 0, 0 , - 5685, 859, 5686 ,3004, 6571, 7627 ,0, 0, 0 , - 5685, 5686, 5684 ,3004, 7627, 3005 ,0, 0, 0 , - 5686, 856, 5687 ,7627, 6570, 7628 ,0, 0, 0 , - 5686, 5687, 5684 ,7627, 7628, 3005 ,0, 0, 0 , - 5687, 854, 5688 ,7628, 5047, 3003 ,0, 0, 0 , - 5687, 5688, 5684 ,7628, 3003, 3005 ,0, 0, 0 , - 5690, 906, 5691 ,3008, 4990, 4989 ,0, 0, 0 , - 5690, 5691, 5689 ,3008, 4989, 3009 ,0, 0, 0 , - 5691, 910, 5692 ,4989, 6609, 7629 ,0, 0, 0 , - 5691, 5692, 5689 ,4989, 7629, 3009 ,0, 0, 0 , - 5692, 903, 5693 ,7629, 6603, 7630 ,0, 0, 0 , - 5692, 5693, 5689 ,7629, 7630, 3009 ,0, 0, 0 , - 5693, 851, 5694 ,7630, 5052, 3006 ,0, 0, 0 , - 5693, 5694, 5689 ,7630, 3006, 3009 ,0, 0, 0 , - 5696, 901, 5697 ,3012, 6599, 7631 ,0, 0, 0 , - 5696, 5697, 5695 ,3012, 7631, 3013 ,0, 0, 0 , - 5697, 895, 5698 ,7631, 6593, 7632 ,0, 0, 0 , - 5697, 5698, 5695 ,7631, 7632, 3013 ,0, 0, 0 , - 5698, 853, 5699 ,7632, 6569, 3010 ,0, 0, 0 , - 5698, 5699, 5695 ,7632, 3010, 3013 ,0, 0, 0 , - 5701, 848, 5702 ,3016, 912, 5050 ,0, 0, 0 , - 5701, 5702, 5700 ,3016, 5050, 3017 ,0, 0, 0 , - 5702, 902, 5703 ,5050, 6601, 3014 ,0, 0, 0 , - 5702, 5703, 5700 ,5050, 3014, 3017 ,0, 0, 0 , - 5705, 843, 5706 ,3019, 6565, 7633 ,0, 0, 0 , - 5705, 5706, 5704 ,3019, 7633, 3020 ,0, 0, 0 , - 5706, 838, 5707 ,7633, 6561, 7634 ,0, 0, 0 , - 5706, 5707, 5704 ,7633, 7634, 3020 ,0, 0, 0 , - 5707, 835, 5708 ,7634, 5077, 3018 ,0, 0, 0 , - 5707, 5708, 5704 ,7634, 3018, 3020 ,0, 0, 0 , - 5710, 849, 5711 ,3022, 6566, 7635 ,0, 0, 0 , - 5710, 5711, 5709 ,3022, 7635, 3023 ,0, 0, 0 , - 5711, 844, 5712 ,7635, 908, 7636 ,0, 0, 0 , - 5711, 5712, 5709 ,7635, 7636, 3023 ,0, 0, 0 , - 5712, 833, 5713 ,7636, 6558, 3021 ,0, 0, 0 , - 5712, 5713, 5709 ,7636, 3021, 3023 ,0, 0, 0 , - 5715, 829, 5716 ,3026, 5082, 5081 ,0, 0, 0 , - 5715, 5716, 5714 ,3026, 5081, 3027 ,0, 0, 0 , - 5716, 832, 5717 ,5081, 896, 5071 ,0, 0, 0 , - 5716, 5717, 5714 ,5081, 5071, 3027 ,0, 0, 0 , - 5717, 837, 5718 ,5071, 6559, 3024 ,0, 0, 0 , - 5717, 5718, 5714 ,5071, 3024, 3027 ,0, 0, 0 , - 5720, 850, 5721 ,3030, 6568, 7637 ,0, 0, 0 , - 5720, 5721, 5719 ,3030, 7637, 3031 ,0, 0, 0 , - 5721, 831, 5722 ,7637, 6557, 7638 ,0, 0, 0 , - 5721, 5722, 5719 ,7637, 7638, 3031 ,0, 0, 0 , - 5722, 823, 5723 ,7638, 5091, 3028 ,0, 0, 0 , - 5722, 5723, 5719 ,7638, 3028, 3031 ,0, 0, 0 , - 5725, 824, 5726 ,3033, 888, 7639 ,0, 0, 0 , - 5725, 5726, 5724 ,3033, 7639, 3034 ,0, 0, 0 , - 5726, 811, 5727 ,7639, 876, 7640 ,0, 0, 0 , - 5726, 5727, 5724 ,7639, 7640, 3034 ,0, 0, 0 , - 5727, 810, 5728 ,7640, 5103, 3032 ,0, 0, 0 , - 5727, 5728, 5724 ,7640, 3032, 3034 ,0, 0, 0 , - 5730, 888, 5731 ,3037, 5002, 5001 ,0, 0, 0 , - 5730, 5731, 5729 ,3037, 5001, 3038 ,0, 0, 0 , - 5731, 890, 5732 ,5001, 960, 7641 ,0, 0, 0 , - 5731, 5732, 5729 ,5001, 7641, 3038 ,0, 0, 0 , - 5732, 822, 5733 ,7641, 6552, 7642 ,0, 0, 0 , - 5732, 5733, 5729 ,7641, 7642, 3038 ,0, 0, 0 , - 5733, 802, 5734 ,7642, 5110, 3035 ,0, 0, 0 , - 5733, 5734, 5729 ,7642, 3035, 3038 ,0, 0, 0 , - 5736, 799, 5737 ,3041, 864, 5108 ,0, 0, 0 , - 5736, 5737, 5735 ,3041, 5108, 3042 ,0, 0, 0 , - 5737, 821, 5738 ,5108, 6550, 3039 ,0, 0, 0 , - 5737, 5738, 5735 ,5108, 3039, 3042 ,0, 0, 0 , - 5740, 879, 5741 ,3045, 948, 5005 ,0, 0, 0 , - 5740, 5741, 5739 ,3045, 5005, 3046 ,0, 0, 0 , - 5741, 884, 5742 ,5005, 6584, 7643 ,0, 0, 0 , - 5741, 5742, 5739 ,5005, 7643, 3046 ,0, 0, 0 , - 5742, 801, 5743 ,7643, 6532, 7644 ,0, 0, 0 , - 5742, 5743, 5739 ,7643, 7644, 3046 ,0, 0, 0 , - 5743, 794, 5744 ,7644, 5121, 3043 ,0, 0, 0 , - 5743, 5744, 5739 ,7644, 3043, 3046 ,0, 0, 0 , - 5746, 791, 5747 ,3049, 856, 5119 ,0, 0, 0 , - 5746, 5747, 5745 ,3049, 5119, 3050 ,0, 0, 0 , - 5747, 800, 5748 ,5119, 6530, 7645 ,0, 0, 0 , - 5747, 5748, 5745 ,5119, 7645, 3050 ,0, 0, 0 , - 5748, 796, 5749 ,7645, 6529, 3047 ,0, 0, 0 , - 5748, 5749, 5745 ,7645, 3047, 3050 ,0, 0, 0 , - 5751, 858, 5752 ,3053, 924, 5038 ,0, 0, 0 , - 5751, 5752, 5750 ,3053, 5038, 3054 ,0, 0, 0 , - 5752, 861, 5753 ,5038, 928, 7646 ,0, 0, 0 , - 5752, 5753, 5750 ,5038, 7646, 3054 ,0, 0, 0 , - 5753, 793, 5754 ,7646, 6528, 7647 ,0, 0, 0 , - 5753, 5754, 5750 ,7646, 7647, 3054 ,0, 0, 0 , - 5754, 786, 5755 ,7647, 5132, 3051 ,0, 0, 0 , - 5754, 5755, 5750 ,7647, 3051, 3054 ,0, 0, 0 , - 5757, 874, 5758 ,3057, 6574, 7648 ,0, 0, 0 , - 5757, 5758, 5756 ,3057, 7648, 3058 ,0, 0, 0 , - 5758, 834, 5759 ,7648, 5074, 5073 ,0, 0, 0 , - 5758, 5759, 5756 ,7648, 5073, 3058 ,0, 0, 0 , - 5759, 847, 5760 ,5073, 5059, 5058 ,0, 0, 0 , - 5759, 5760, 5756 ,5073, 5058, 3058 ,0, 0, 0 , - 5760, 852, 5761 ,5058, 916, 5045 ,0, 0, 0 , - 5760, 5761, 5756 ,5058, 5045, 3058 ,0, 0, 0 , - 5761, 855, 5762 ,5045, 920, 3055 ,0, 0, 0 , - 5761, 5762, 5756 ,5045, 3055, 3058 ,0, 0, 0 , - 5764, 816, 5765 ,3061, 6545, 7649 ,0, 0, 0 , - 5764, 5765, 5763 ,3061, 7649, 3062 ,0, 0, 0 , - 5765, 809, 5766 ,7649, 6540, 7650 ,0, 0, 0 , - 5765, 5766, 5763 ,7649, 7650, 3062 ,0, 0, 0 , - 5766, 806, 5767 ,7650, 6537, 3059 ,0, 0, 0 , - 5766, 5767, 5763 ,7650, 3059, 3062 ,0, 0, 0 , - 5769, 798, 5770 ,3065, 5116, 5115 ,0, 0, 0 , - 5769, 5770, 5768 ,3065, 5115, 3066 ,0, 0, 0 , - 5770, 820, 5771 ,5115, 6548, 7651 ,0, 0, 0 , - 5770, 5771, 5768 ,5115, 7651, 3066 ,0, 0, 0 , - 5771, 817, 5772 ,7651, 6547, 3063 ,0, 0, 0 , - 5771, 5772, 5768 ,7651, 3063, 3066 ,0, 0, 0 , - 5774, 789, 5775 ,3069, 5126, 5125 ,0, 0, 0 , - 5774, 5775, 5773 ,3069, 5125, 3070 ,0, 0, 0 , - 5775, 795, 5776 ,5125, 860, 7652 ,0, 0, 0 , - 5775, 5776, 5773 ,5125, 7652, 3070 ,0, 0, 0 , - 5776, 780, 5777 ,7652, 844, 3067 ,0, 0, 0 , - 5776, 5777, 5773 ,7652, 3067, 3070 ,0, 0, 0 , - 5779, 776, 5780 ,3073, 840, 7653 ,0, 0, 0 , - 5779, 5780, 5778 ,3073, 7653, 3074 ,0, 0, 0 , - 5780, 775, 5781 ,7653, 5150, 3071 ,0, 0, 0 , - 5780, 5781, 5778 ,7653, 3071, 3074 ,0, 0, 0 , - 5783, 876, 5784 ,3077, 944, 7654 ,0, 0, 0 , - 5783, 5784, 5782 ,3077, 7654, 3078 ,0, 0, 0 , - 5784, 840, 5785 ,7654, 904, 5062 ,0, 0, 0 , - 5784, 5785, 5782 ,7654, 5062, 3078 ,0, 0, 0 , - 5785, 875, 5786 ,5062, 6576, 7655 ,0, 0, 0 , - 5785, 5786, 5782 ,5062, 7655, 3078 ,0, 0, 0 , - 5786, 784, 5787 ,7655, 848, 5129 ,0, 0, 0 , - 5786, 5787, 5782 ,7655, 5129, 3078 ,0, 0, 0 , - 5787, 792, 5788 ,5129, 6526, 7656 ,0, 0, 0 , - 5787, 5788, 5782 ,5129, 7656, 3078 ,0, 0, 0 , - 5788, 787, 5789 ,7656, 852, 3075 ,0, 0, 0 , - 5788, 5789, 5782 ,7656, 3075, 3078 ,0, 0, 0 , - 5791, 763, 5792 ,3081, 5156, 5155 ,0, 0, 0 , - 5791, 5792, 5790 ,3081, 5155, 3082 ,0, 0, 0 , - 5792, 769, 5793 ,5155, 832, 3079 ,0, 0, 0 , - 5792, 5793, 5790 ,5155, 3079, 3082 ,0, 0, 0 , - 5795, 841, 5796 ,3084, 5065, 5064 ,0, 0, 0 , - 5795, 5796, 5794 ,3084, 5064, 3085 ,0, 0, 0 , - 5796, 878, 5797 ,5064, 6579, 7657 ,0, 0, 0 , - 5796, 5797, 5794 ,5064, 7657, 3085 ,0, 0, 0 , - 5797, 764, 5798 ,7657, 6514, 3083 ,0, 0, 0 , - 5797, 5798, 5794 ,7657, 3083, 3085 ,0, 0, 0 , - 5800, 839, 5801 ,3088, 5068, 5067 ,0, 0, 0 , - 5800, 5801, 5799 ,3088, 5067, 3089 ,0, 0, 0 , - 5801, 842, 5802 ,5067, 6563, 7658 ,0, 0, 0 , - 5801, 5802, 5799 ,5067, 7658, 3089 ,0, 0, 0 , - 5802, 761, 5803 ,7658, 6512, 3086 ,0, 0, 0 , - 5802, 5803, 5799 ,7658, 3086, 3089 ,0, 0, 0 , - 5805, 772, 5806 ,3092, 6522, 7659 ,0, 0, 0 , - 5805, 5806, 5804 ,3092, 7659, 3093 ,0, 0, 0 , - 5806, 768, 5807 ,7659, 6517, 7660 ,0, 0, 0 , - 5806, 5807, 5804 ,7659, 7660, 3093 ,0, 0, 0 , - 5807, 757, 5808 ,7660, 5167, 3090 ,0, 0, 0 , - 5807, 5808, 5804 ,7660, 3090, 3093 ,0, 0, 0 , - 5810, 830, 5811 ,3095, 6555, 7661 ,0, 0, 0 , - 5810, 5811, 5809 ,3095, 7661, 3096 ,0, 0, 0 , - 5811, 825, 5812 ,7661, 6553, 7662 ,0, 0, 0 , - 5811, 5812, 5809 ,7661, 7662, 3096 ,0, 0, 0 , - 5812, 818, 5813 ,7662, 5095, 3094 ,0, 0, 0 , - 5812, 5813, 5809 ,7662, 3094, 3096 ,0, 0, 0 , - 5815, 812, 5816 ,3099, 5099, 5098 ,0, 0, 0 , - 5815, 5816, 5814 ,3099, 5098, 3100 ,0, 0, 0 , - 5816, 827, 5817 ,5098, 5087, 5086 ,0, 0, 0 , - 5816, 5817, 5814 ,5098, 5086, 3100 ,0, 0, 0 , - 5817, 836, 5818 ,5086, 900, 7663 ,0, 0, 0 , - 5817, 5818, 5814 ,5086, 7663, 3100 ,0, 0, 0 , - 5818, 755, 5819 ,7663, 812, 5164 ,0, 0, 0 , - 5818, 5819, 5814 ,7663, 5164, 3100 ,0, 0, 0 , - 5819, 767, 5820 ,5164, 6515, 7664 ,0, 0, 0 , - 5819, 5820, 5814 ,5164, 7664, 3100 ,0, 0, 0 , - 5820, 751, 5821 ,7664, 5172, 3097 ,0, 0, 0 , - 5820, 5821, 5814 ,7664, 3097, 3100 ,0, 0, 0 , - 5823, 766, 5824 ,3102, 828, 5153 ,0, 0, 0 , - 5823, 5824, 5822 ,3102, 5153, 3103 ,0, 0, 0 , - 5824, 771, 5825 ,5153, 6520, 7665 ,0, 0, 0 , - 5824, 5825, 5822 ,5153, 7665, 3103 ,0, 0, 0 , - 5825, 747, 5826 ,7665, 6506, 7666 ,0, 0, 0 , - 5825, 5826, 5822 ,7665, 7666, 3103 ,0, 0, 0 , - 5826, 743, 5827 ,7666, 5177, 3101 ,0, 0, 0 , - 5826, 5827, 5822 ,7666, 3101, 3103 ,0, 0, 0 , - 5829, 770, 5830 ,3105, 6518, 7667 ,0, 0, 0 , - 5829, 5830, 5828 ,3105, 7667, 3106 ,0, 0, 0 , - 5830, 765, 5831 ,7667, 824, 7668 ,0, 0, 0 , - 5830, 5831, 5828 ,7667, 7668, 3106 ,0, 0, 0 , - 5831, 740, 5832 ,7668, 5181, 3104 ,0, 0, 0 , - 5831, 5832, 5828 ,7668, 3104, 3106 ,0, 0, 0 , - 5834, 762, 5835 ,3108, 820, 5158 ,0, 0, 0 , - 5834, 5835, 5833 ,3108, 5158, 3109 ,0, 0, 0 , - 5835, 877, 5836 ,5158, 6577, 7669 ,0, 0, 0 , - 5835, 5836, 5833 ,5158, 7669, 3109 ,0, 0, 0 , - 5836, 773, 5837 ,7669, 836, 5147 ,0, 0, 0 , - 5836, 5837, 5833 ,7669, 5147, 3109 ,0, 0, 0 , - 5837, 779, 5838 ,5147, 6524, 7670 ,0, 0, 0 , - 5837, 5838, 5833 ,5147, 7670, 3109 ,0, 0, 0 , - 5838, 736, 5839 ,7670, 5186, 3107 ,0, 0, 0 , - 5838, 5839, 5833 ,7670, 3107, 3109 ,0, 0, 0 , - 5841, 778, 5842 ,3111, 5144, 5143 ,0, 0, 0 , - 5841, 5842, 5840 ,3111, 5143, 3112 ,0, 0, 0 , - 5842, 783, 5843 ,5143, 5139, 5138 ,0, 0, 0 , - 5842, 5843, 5840 ,5143, 5138, 3112 ,0, 0, 0 , - 5843, 805, 5844 ,5138, 6535, 3110 ,0, 0, 0 , - 5843, 5844, 5840 ,5138, 3110, 3112 ,0, 0, 0 , - 5846, 983, 5847 ,3115, 5214, 5213 ,0, 0, 0 , - 5846, 5847, 5845 ,3115, 5213, 3116 ,0, 0, 0 , - 5847, 713, 5848 ,5213, 5198, 5197 ,0, 0, 0 , - 5847, 5848, 5845 ,5213, 5197, 3116 ,0, 0, 0 , - 5848, 719, 5849 ,5197, 6481, 3113 ,0, 0, 0 , - 5848, 5849, 5845 ,5197, 3113, 3116 ,0, 0, 0 , - 5851, 722, 5852 ,3119, 5194, 5193 ,0, 0, 0 , - 5851, 5852, 5850 ,3119, 5193, 3120 ,0, 0, 0 , - 5852, 724, 5853 ,5193, 6486, 3117 ,0, 0, 0 , - 5852, 5853, 5850 ,5193, 3117, 3120 ,0, 0, 0 , - 5855, 723, 5856 ,3122, 776, 5191 ,0, 0, 0 , - 5855, 5856, 5854 ,3122, 5191, 3123 ,0, 0, 0 , - 5856, 727, 5857 ,5191, 6489, 3121 ,0, 0, 0 , - 5856, 5857, 5854 ,5191, 3121, 3123 ,0, 0, 0 , - 5859, 688, 5860 ,3126, 5222, 5221 ,0, 0, 0 , - 5859, 5860, 5858 ,3126, 5221, 3127 ,0, 0, 0 , - 5860, 726, 5861 ,5221, 780, 5189 ,0, 0, 0 , - 5860, 5861, 5858 ,5221, 5189, 3127 ,0, 0, 0 , - 5861, 731, 5862 ,5189, 6494, 3124 ,0, 0, 0 , - 5861, 5862, 5858 ,5189, 3124, 3127 ,0, 0, 0 , - 5864, 676, 5865 ,3129, 736, 7671 ,0, 0, 0 , - 5864, 5865, 5863 ,3129, 7671, 3130 ,0, 0, 0 , - 5865, 675, 5866 ,7671, 5243, 3128 ,0, 0, 0 , - 5865, 5866, 5863 ,7671, 3128, 3130 ,0, 0, 0 , - 5868, 982, 5869 ,3132, 6674, 7672 ,0, 0, 0 , - 5868, 5869, 5867 ,3132, 7672, 3133 ,0, 0, 0 , - 5869, 674, 5870 ,7672, 6443, 7673 ,0, 0, 0 , - 5869, 5870, 5867 ,7672, 7673, 3133 ,0, 0, 0 , - 5870, 672, 5871 ,7673, 5247, 3131 ,0, 0, 0 , - 5870, 5871, 5867 ,7673, 3131, 3133 ,0, 0, 0 , - 5873, 673, 5874 ,3135, 732, 5241 ,0, 0, 0 , - 5873, 5874, 5872 ,3135, 5241, 3136 ,0, 0, 0 , - 5874, 686, 5875 ,5241, 6451, 7674 ,0, 0, 0 , - 5874, 5875, 5872 ,5241, 7674, 3136 ,0, 0, 0 , - 5875, 669, 5876 ,7674, 5251, 3134 ,0, 0, 0 , - 5875, 5876, 5872 ,7674, 3134, 3136 ,0, 0, 0 , - 5878, 685, 5879 ,3138, 6449, 7675 ,0, 0, 0 , - 5878, 5879, 5877 ,3138, 7675, 3139 ,0, 0, 0 , - 5879, 665, 5880 ,7675, 5255, 3137 ,0, 0, 0 , - 5879, 5880, 5877 ,7675, 3137, 3139 ,0, 0, 0 , - 5882, 684, 5883 ,3141, 6447, 7676 ,0, 0, 0 , - 5882, 5883, 5881 ,3141, 7676, 3142 ,0, 0, 0 , - 5883, 661, 5884 ,7676, 5259, 3140 ,0, 0, 0 , - 5883, 5884, 5881 ,7676, 3140, 3142 ,0, 0, 0 , - 5886, 683, 5887 ,3144, 6445, 7677 ,0, 0, 0 , - 5886, 5887, 5885 ,3144, 7677, 3145 ,0, 0, 0 , - 5887, 657, 5888 ,7677, 5266, 3143 ,0, 0, 0 , - 5887, 5888, 5885 ,7677, 3143, 3145 ,0, 0, 0 , - 5890, 682, 5891 ,3147, 5238, 5237 ,0, 0, 0 , - 5890, 5891, 5889 ,3147, 5237, 3148 ,0, 0, 0 , - 5891, 730, 5892 ,5237, 6492, 3146 ,0, 0, 0 , - 5891, 5892, 5889 ,5237, 3146, 3148 ,0, 0, 0 , - 5894, 649, 5895 ,3150, 5273, 5272 ,0, 0, 0 , - 5894, 5895, 5893 ,3150, 5272, 3151 ,0, 0, 0 , - 5895, 650, 5896 ,5272, 708, 7678 ,0, 0, 0 , - 5895, 5896, 5893 ,5272, 7678, 3151 ,0, 0, 0 , - 5896, 643, 5897 ,7678, 5282, 3149 ,0, 0, 0 , - 5896, 5897, 5893 ,7678, 3149, 3151 ,0, 0, 0 , - 5899, 706, 5900 ,3154, 760, 5201 ,0, 0, 0 , - 5899, 5900, 5898 ,3154, 5201, 3155 ,0, 0, 0 , - 5900, 720, 5901 ,5201, 6483, 7679 ,0, 0, 0 , - 5900, 5901, 5898 ,5201, 7679, 3155 ,0, 0, 0 , - 5901, 712, 5902 ,7679, 6476, 3152 ,0, 0, 0 , - 5901, 5902, 5898 ,7679, 3152, 3155 ,0, 0, 0 , - 5904, 645, 5905 ,3158, 6425, 7680 ,0, 0, 0 , - 5904, 5905, 5903 ,3158, 7680, 3159 ,0, 0, 0 , - 5905, 642, 5906 ,7680, 5280, 5279 ,0, 0, 0 , - 5905, 5906, 5903 ,7680, 5279, 3159 ,0, 0, 0 , - 5906, 707, 5907 ,5279, 6469, 3156 ,0, 0, 0 , - 5906, 5907, 5903 ,5279, 3156, 3159 ,0, 0, 0 , - 5909, 711, 5910 ,3162, 6474, 7681 ,0, 0, 0 , - 5909, 5910, 5908 ,3162, 7681, 3163 ,0, 0, 0 , - 5910, 671, 5911 ,7681, 6442, 7682 ,0, 0, 0 , - 5910, 5911, 5908 ,7681, 7682, 3163 ,0, 0, 0 , - 5911, 668, 5912 ,7682, 6441, 7683 ,0, 0, 0 , - 5911, 5912, 5908 ,7682, 7683, 3163 ,0, 0, 0 , - 5912, 636, 5913 ,7683, 5293, 3160 ,0, 0, 0 , - 5912, 5913, 5908 ,7683, 3160, 3163 ,0, 0, 0 , - 5915, 698, 5916 ,3166, 752, 5203 ,0, 0, 0 , - 5915, 5916, 5914 ,3166, 5203, 3167 ,0, 0, 0 , - 5916, 714, 5917 ,5203, 768, 7684 ,0, 0, 0 , - 5916, 5917, 5914 ,5203, 7684, 3167 ,0, 0, 0 , - 5917, 647, 5918 ,7684, 704, 7685 ,0, 0, 0 , - 5917, 5918, 5914 ,7684, 7685, 3167 ,0, 0, 0 , - 5918, 646, 5919 ,7685, 6427, 7686 ,0, 0, 0 , - 5918, 5919, 5914 ,7685, 7686, 3167 ,0, 0, 0 , - 5919, 637, 5920 ,7686, 692, 3164 ,0, 0, 0 , - 5919, 5920, 5914 ,7686, 3164, 3167 ,0, 0, 0 , - 5922, 667, 5923 ,3169, 6439, 7687 ,0, 0, 0 , - 5922, 5923, 5921 ,3169, 7687, 3170 ,0, 0, 0 , - 5923, 664, 5924 ,7687, 6438, 7688 ,0, 0, 0 , - 5923, 5924, 5921 ,7687, 7688, 3170 ,0, 0, 0 , - 5924, 632, 5925 ,7688, 5299, 3168 ,0, 0, 0 , - 5924, 5925, 5921 ,7688, 3168, 3170 ,0, 0, 0 , - 5927, 691, 5928 ,3173, 5207, 5206 ,0, 0, 0 , - 5927, 5928, 5926 ,3173, 5206, 3174 ,0, 0, 0 , - 5928, 699, 5929 ,5206, 6460, 7689 ,0, 0, 0 , - 5928, 5929, 5926 ,5206, 7689, 3174 ,0, 0, 0 , - 5929, 634, 5930 ,7689, 6424, 3171 ,0, 0, 0 , - 5929, 5930, 5926 ,7689, 3171, 3174 ,0, 0, 0 , - 5932, 663, 5933 ,3176, 6436, 7690 ,0, 0, 0 , - 5932, 5933, 5931 ,3176, 7690, 3177 ,0, 0, 0 , - 5933, 660, 5934 ,7690, 6435, 7691 ,0, 0, 0 , - 5933, 5934, 5931 ,7690, 7691, 3177 ,0, 0, 0 , - 5934, 628, 5935 ,7691, 5305, 3175 ,0, 0, 0 , - 5934, 5935, 5931 ,7691, 3175, 3177 ,0, 0, 0 , - 5937, 696, 5938 ,3180, 6457, 7692 ,0, 0, 0 , - 5937, 5938, 5936 ,3180, 7692, 3181 ,0, 0, 0 , - 5938, 692, 5939 ,7692, 6454, 7693 ,0, 0, 0 , - 5938, 5939, 5936 ,7692, 7693, 3181 ,0, 0, 0 , - 5939, 630, 5940 ,7693, 6423, 3178 ,0, 0, 0 , - 5939, 5940, 5936 ,7693, 3178, 3181 ,0, 0, 0 , - 5942, 659, 5943 ,3183, 6433, 7694 ,0, 0, 0 , - 5942, 5943, 5941 ,3183, 7694, 3184 ,0, 0, 0 , - 5943, 656, 5944 ,7694, 6432, 7695 ,0, 0, 0 , - 5943, 5944, 5941 ,7694, 7695, 3184 ,0, 0, 0 , - 5944, 624, 5945 ,7695, 5312, 3182 ,0, 0, 0 , - 5944, 5945, 5941 ,7695, 3182, 3184 ,0, 0, 0 , - 5947, 703, 5948 ,3187, 6465, 7696 ,0, 0, 0 , - 5947, 5948, 5946 ,3187, 7696, 3188 ,0, 0, 0 , - 5948, 697, 5949 ,7696, 6459, 7697 ,0, 0, 0 , - 5948, 5949, 5946 ,7696, 7697, 3188 ,0, 0, 0 , - 5949, 626, 5950 ,7697, 6422, 3185 ,0, 0, 0 , - 5949, 5950, 5946 ,7697, 3185, 3188 ,0, 0, 0 , - 5952, 728, 5953 ,3191, 6491, 7698 ,0, 0, 0 , - 5952, 5953, 5951 ,3191, 7698, 3192 ,0, 0, 0 , - 5953, 725, 5954 ,7698, 6488, 7699 ,0, 0, 0 , - 5953, 5954, 5951 ,7698, 7699, 3192 ,0, 0, 0 , - 5954, 721, 5955 ,7699, 6485, 7700 ,0, 0, 0 , - 5954, 5955, 5951 ,7699, 7700, 3192 ,0, 0, 0 , - 5955, 709, 5956 ,7700, 6473, 7701 ,0, 0, 0 , - 5955, 5956, 5951 ,7700, 7701, 3192 ,0, 0, 0 , - 5956, 620, 5957 ,7701, 5318, 3189 ,0, 0, 0 , - 5956, 5957, 5951 ,7701, 3189, 3192 ,0, 0, 0 , - 5959, 621, 5960 ,3195, 676, 5308 ,0, 0, 0 , - 5959, 5960, 5958 ,3195, 5308, 3196 ,0, 0, 0 , - 5960, 655, 5961 ,5308, 5264, 5263 ,0, 0, 0 , - 5960, 5961, 5958 ,5308, 5263, 3196 ,0, 0, 0 , - 5961, 729, 5962 ,5263, 784, 3193 ,0, 0, 0 , - 5961, 5962, 5958 ,5263, 3193, 3196 ,0, 0, 0 , - 5964, 1373, 5965 ,3199, 6895, 7702 ,0, 0, 0 , - 5964, 5965, 5963 ,3199, 7702, 3200 ,0, 0, 0 , - 5965, 612, 5966 ,7702, 1539, 3197 ,0, 0, 0 , - 5965, 5966, 5963 ,7702, 3197, 3200 ,0, 0, 0 , - 5968, 1370, 5969 ,3203, 1543, 7703 ,0, 0, 0 , - 5968, 5969, 5967 ,3203, 7703, 3204 ,0, 0, 0 , - 5969, 608, 5970 ,7703, 6417, 3201 ,0, 0, 0 , - 5969, 5970, 5967 ,7703, 3201, 3204 ,0, 0, 0 , - 5320, 604, 5972 ,2743, 656, 7704 ,0, 0, 0 , - 5320, 5972, 5971 ,2743, 7704, 3206 ,0, 0, 0 , - 5972, 603, 5973 ,7704, 5333, 3205 ,0, 0, 0 , - 5972, 5973, 5971 ,7704, 3205, 3206 ,0, 0, 0 , - 5975, 606, 5976 ,3208, 5328, 5327 ,0, 0, 0 , - 5975, 5976, 5974 ,3208, 5327, 3209 ,0, 0, 0 , - 5976, 607, 5977 ,5327, 660, 7705 ,0, 0, 0 , - 5976, 5977, 5974 ,5327, 7705, 3209 ,0, 0, 0 , - 5977, 600, 5978 ,7705, 5337, 3207 ,0, 0, 0 , - 5977, 5978, 5974 ,7705, 3207, 3209 ,0, 0, 0 , - 5980, 610, 5981 ,3211, 5324, 5323 ,0, 0, 0 , - 5980, 5981, 5979 ,3211, 5323, 3212 ,0, 0, 0 , - 5981, 611, 5982 ,5323, 664, 7706 ,0, 0, 0 , - 5981, 5982, 5979 ,5323, 7706, 3212 ,0, 0, 0 , - 5982, 596, 5983 ,7706, 5342, 3210 ,0, 0, 0 , - 5982, 5983, 5979 ,7706, 3210, 3212 ,0, 0, 0 , - 5985, 602, 5986 ,3215, 6416, 7707 ,0, 0, 0 , - 5985, 5986, 5984 ,3215, 7707, 3216 ,0, 0, 0 , - 5986, 599, 5987 ,7707, 6415, 7708 ,0, 0, 0 , - 5986, 5987, 5984 ,7707, 7708, 3216 ,0, 0, 0 , - 5987, 592, 5988 ,7708, 5346, 3213 ,0, 0, 0 , - 5987, 5988, 5984 ,7708, 3213, 3216 ,0, 0, 0 , - 5990, 598, 5991 ,3218, 6413, 7709 ,0, 0, 0 , - 5990, 5991, 5989 ,3218, 7709, 3219 ,0, 0, 0 , - 5991, 595, 5992 ,7709, 6412, 7710 ,0, 0, 0 , - 5991, 5992, 5989 ,7709, 7710, 3219 ,0, 0, 0 , - 5992, 588, 5993 ,7710, 5351, 3217 ,0, 0, 0 , - 5992, 5993, 5989 ,7710, 3217, 3219 ,0, 0, 0 , - 5995, 648, 5996 ,3222, 5270, 5269 ,0, 0, 0 , - 5995, 5996, 5994 ,3222, 5269, 3223 ,0, 0, 0 , - 5996, 717, 5997 ,5269, 6480, 7711 ,0, 0, 0 , - 5996, 5997, 5994 ,5269, 7711, 3223 ,0, 0, 0 , - 5997, 568, 5998 ,7711, 5361, 3220 ,0, 0, 0 , - 5997, 5998, 5994 ,7711, 3220, 3223 ,0, 0, 0 , - 6000, 567, 6001 ,3226, 5358, 5357 ,0, 0, 0 , - 6000, 6001, 5999 ,3226, 5357, 3227 ,0, 0, 0 , - 6001, 569, 6002 ,5357, 620, 7712 ,0, 0, 0 , - 6001, 6002, 5999 ,5357, 7712, 3227 ,0, 0, 0 , - 6002, 564, 6003 ,7712, 5366, 3224 ,0, 0, 0 , - 6002, 6003, 5999 ,7712, 3224, 3227 ,0, 0, 0 , - 6005, 708, 6006 ,3229, 6471, 7713 ,0, 0, 0 , - 6005, 6006, 6004 ,3229, 7713, 3230 ,0, 0, 0 , - 6006, 641, 6007 ,7713, 696, 5277 ,0, 0, 0 , - 6006, 6007, 6004 ,7713, 5277, 3230 ,0, 0, 0 , - 6007, 653, 6008 ,5277, 6430, 7714 ,0, 0, 0 , - 6007, 6008, 6004 ,5277, 7714, 3230 ,0, 0, 0 , - 6008, 563, 6009 ,7714, 6383, 7715 ,0, 0, 0 , - 6008, 6009, 6004 ,7714, 7715, 3230 ,0, 0, 0 , - 6009, 561, 6010 ,7715, 5372, 3228 ,0, 0, 0 , - 6009, 6010, 6004 ,7715, 3228, 3230 ,0, 0, 0 , - 6012, 704, 6013 ,3233, 6467, 7716 ,0, 0, 0 , - 6012, 6013, 6011 ,3233, 7716, 3234 ,0, 0, 0 , - 6013, 622, 6014 ,7716, 6421, 7717 ,0, 0, 0 , - 6013, 6014, 6011 ,7716, 7717, 3234 ,0, 0, 0 , - 6014, 618, 6015 ,7717, 6420, 3231 ,0, 0, 0 , - 6014, 6015, 6011 ,7717, 3231, 3234 ,0, 0, 0 , - 6017, 559, 6018 ,3237, 608, 5369 ,0, 0, 0 , - 6017, 6018, 6016 ,3237, 5369, 3238 ,0, 0, 0 , - 6018, 562, 6019 ,5369, 612, 5364 ,0, 0, 0 , - 6018, 6019, 6016 ,5369, 5364, 3238 ,0, 0, 0 , - 6019, 572, 6020 ,5364, 6389, 7718 ,0, 0, 0 , - 6019, 6020, 6016 ,5364, 7718, 3238 ,0, 0, 0 , - 6020, 558, 6021 ,7718, 5377, 3235 ,0, 0, 0 , - 6020, 6021, 6016 ,7718, 3235, 3238 ,0, 0, 0 , - 6023, 552, 6024 ,3240, 5381, 5380 ,0, 0, 0 , - 6023, 6024, 6022 ,3240, 5380, 3241 ,0, 0, 0 , - 6024, 555, 6025 ,5380, 604, 5375 ,0, 0, 0 , - 6024, 6025, 6022 ,5380, 5375, 3241 ,0, 0, 0 , - 6025, 571, 6026 ,5375, 6387, 3239 ,0, 0, 0 , - 6025, 6026, 6022 ,5375, 3239, 3241 ,0, 0, 0 , - 6028, 573, 6029 ,3243, 624, 7719 ,0, 0, 0 , - 6028, 6029, 6027 ,3243, 7719, 3244 ,0, 0, 0 , - 6029, 549, 6030 ,7719, 6375, 7720 ,0, 0, 0 , - 6029, 6030, 6027 ,7719, 7720, 3244 ,0, 0, 0 , - 6030, 543, 6031 ,7720, 5397, 3242 ,0, 0, 0 , - 6030, 6031, 6027 ,7720, 3242, 3244 ,0, 0, 0 , - 6033, 548, 6034 ,3246, 5385, 5384 ,0, 0, 0 , - 6033, 6034, 6032 ,3246, 5384, 3247 ,0, 0, 0 , - 6034, 570, 6035 ,5384, 6385, 7721 ,0, 0, 0 , - 6034, 6035, 6032 ,5384, 7721, 3247 ,0, 0, 0 , - 6035, 566, 6036 ,7721, 6384, 7722 ,0, 0, 0 , - 6035, 6036, 6032 ,7721, 7722, 3247 ,0, 0, 0 , - 6036, 540, 6037 ,7722, 5402, 3245 ,0, 0, 0 , - 6036, 6037, 6032 ,7722, 3245, 3247 ,0, 0, 0 , - 6039, 556, 6040 ,3250, 6380, 7723 ,0, 0, 0 , - 6039, 6040, 6038 ,3250, 7723, 3251 ,0, 0, 0 , - 6040, 551, 6041 ,7723, 600, 7724 ,0, 0, 0 , - 6040, 6041, 6038 ,7723, 7724, 3251 ,0, 0, 0 , - 6041, 531, 6042 ,7724, 6366, 3248 ,0, 0, 0 , - 6041, 6042, 6038 ,7724, 3248, 3251 ,0, 0, 0 , - 6044, 702, 6045 ,3253, 756, 7725 ,0, 0, 0 , - 6044, 6045, 6043 ,3253, 7725, 3254 ,0, 0, 0 , - 6045, 557, 6046 ,7725, 6382, 7726 ,0, 0, 0 , - 6045, 6046, 6043 ,7725, 7726, 3254 ,0, 0, 0 , - 6046, 527, 6047 ,7726, 572, 7727 ,0, 0, 0 , - 6046, 6047, 6043 ,7726, 7727, 3254 ,0, 0, 0 , - 6047, 526, 6048 ,7727, 5423, 3252 ,0, 0, 0 , - 6047, 6048, 6043 ,7727, 3252, 3254 ,0, 0, 0 , - 6050, 585, 6051 ,3256, 636, 5349 ,0, 0, 0 , - 6050, 6051, 6049 ,3256, 5349, 3257 ,0, 0, 0 , - 6051, 594, 6052 ,5349, 6410, 7728 ,0, 0, 0 , - 6051, 6052, 6049 ,5349, 7728, 3257 ,0, 0, 0 , - 6052, 522, 6053 ,7728, 5430, 3255 ,0, 0, 0 , - 6052, 6053, 6049 ,7728, 3255, 3257 ,0, 0, 0 , - 6055, 523, 6056 ,3260, 568, 5421 ,0, 0, 0 , - 6055, 6056, 6054 ,3260, 5421, 3261 ,0, 0, 0 , - 6056, 529, 6057 ,5421, 5418, 5417 ,0, 0, 0 , - 6056, 6057, 6054 ,5421, 5417, 3261 ,0, 0, 0 , - 6057, 530, 6058 ,5417, 576, 5410 ,0, 0, 0 , - 6057, 6058, 6054 ,5417, 5410, 3261 ,0, 0, 0 , - 6058, 582, 6059 ,5410, 6399, 3258 ,0, 0, 0 , - 6058, 6059, 6054 ,5410, 3258, 3261 ,0, 0, 0 , - 6061, 519, 6062 ,3264, 564, 5426 ,0, 0, 0 , - 6061, 6062, 6060 ,3264, 5426, 3265 ,0, 0, 0 , - 6062, 593, 6063 ,5426, 644, 5340 ,0, 0, 0 , - 6062, 6063, 6060 ,5426, 5340, 3265 ,0, 0, 0 , - 6063, 613, 5230 ,5340, 4559, 3262 ,0, 0, 0 , - 6063, 5230, 6060 ,5340, 3262, 3265 ,0, 0, 0 , - 6065, 1444, 6066 ,3268, 6946, 7729 ,0, 0, 0 , - 6065, 6066, 6064 ,3268, 7729, 3269 ,0, 0, 0 , - 6066, 536, 6067 ,7729, 6369, 7730 ,0, 0, 0 , - 6066, 6067, 6064 ,7729, 7730, 3269 ,0, 0, 0 , - 6067, 515, 6068 ,7730, 5439, 3266 ,0, 0, 0 , - 6067, 6068, 6064 ,7730, 3266, 3269 ,0, 0, 0 , - 6070, 516, 6071 ,3272, 560, 4475 ,0, 0, 0 , - 6070, 6071, 6069 ,3272, 4475, 3273 ,0, 0, 0 , - 6071, 1464, 6072 ,4475, 6962, 3270 ,0, 0, 0 , - 6071, 6072, 6069 ,4475, 3270, 3273 ,0, 0, 0 , - 6074, 520, 6075 ,3276, 6363, 7731 ,0, 0, 0 , - 6074, 6075, 6073 ,3276, 7731, 3277 ,0, 0, 0 , - 6075, 517, 6076 ,7731, 6362, 7732 ,0, 0, 0 , - 6075, 6076, 6073 ,7731, 7732, 3277 ,0, 0, 0 , - 6076, 513, 6077 ,7732, 6361, 7733 ,0, 0, 0 , - 6076, 6077, 6073 ,7732, 7733, 3277 ,0, 0, 0 , - 6077, 511, 6078 ,7733, 5444, 3274 ,0, 0, 0 , - 6077, 6078, 6073 ,7733, 3274, 3277 ,0, 0, 0 , - 6080, 693, 6081 ,3280, 5210, 5209 ,0, 0, 0 , - 6080, 6081, 6079 ,3280, 5209, 3281 ,0, 0, 0 , - 6081, 695, 6082 ,5209, 6455, 7734 ,0, 0, 0 , - 6081, 6082, 6079 ,5209, 7734, 3281 ,0, 0, 0 , - 6082, 525, 6083 ,7734, 6365, 3278 ,0, 0, 0 , - 6082, 6083, 6079 ,7734, 3278, 3281 ,0, 0, 0 , - 6085, 512, 6086 ,3283, 556, 5435 ,0, 0, 0 , - 6085, 6086, 6084 ,3283, 5435, 3284 ,0, 0, 0 , - 6086, 535, 6087 ,5435, 5407, 5406 ,0, 0, 0 , - 6086, 6087, 6084 ,5435, 5406, 3284 ,0, 0, 0 , - 6087, 700, 6088 ,5406, 6462, 7735 ,0, 0, 0 , - 6087, 6088, 6084 ,5406, 7735, 3284 ,0, 0, 0 , - 6088, 690, 6089 ,7735, 744, 3282 ,0, 0, 0 , - 6088, 6089, 6084 ,7735, 3282, 3284 ,0, 0, 0 , - 6091, 1443, 6092 ,3286, 4467, 4466 ,0, 0, 0 , - 6091, 6092, 6090 ,3286, 4466, 3287 ,0, 0, 0 , - 6092, 1469, 6093 ,4466, 6966, 7736 ,0, 0, 0 , - 6092, 6093, 6090 ,4466, 7736, 3287 ,0, 0, 0 , - 6093, 508, 6094 ,7736, 5449, 3285 ,0, 0, 0 , - 6093, 6094, 6090 ,7736, 3285, 3287 ,0, 0, 0 , - 6096, 701, 6097 ,3290, 6464, 7737 ,0, 0, 0 , - 6096, 6097, 6095 ,3290, 7737, 3291 ,0, 0, 0 , - 6097, 534, 6098 ,7737, 6367, 7738 ,0, 0, 0 , - 6097, 6098, 6095 ,7737, 7738, 3291 ,0, 0, 0 , - 6098, 507, 6099 ,7738, 6360, 7739 ,0, 0, 0 , - 6098, 6099, 6095 ,7738, 7739, 3291 ,0, 0, 0 , - 6099, 505, 6100 ,7739, 5455, 3288 ,0, 0, 0 , - 6099, 6100, 6095 ,7739, 3288, 3291 ,0, 0, 0 , - 6102, 537, 6103 ,3294, 584, 5400 ,0, 0, 0 , - 6102, 6103, 6101 ,3294, 5400, 3295 ,0, 0, 0 , - 6103, 565, 6104 ,5400, 616, 5355 ,0, 0, 0 , - 6103, 6104, 6101 ,5400, 5355, 3295 ,0, 0, 0 , - 6104, 716, 6105 ,5355, 6478, 3292 ,0, 0, 0 , - 6104, 6105, 6101 ,5355, 3292, 3295 ,0, 0, 0 , - 6107, 506, 6108 ,3297, 548, 5447 ,0, 0, 0 , - 6107, 6108, 6106 ,3297, 5447, 3298 ,0, 0, 0 , - 6108, 1468, 6109 ,5447, 1653, 4464 ,0, 0, 0 , - 6108, 6109, 6106 ,5447, 4464, 3298 ,0, 0, 0 , - 6109, 1472, 6110 ,4464, 4458, 4457 ,0, 0, 0 , - 6109, 6110, 6106 ,4464, 4457, 3298 ,0, 0, 0 , - 6110, 1477, 6111 ,4457, 6974, 7740 ,0, 0, 0 , - 6110, 6111, 6106 ,4457, 7740, 3298 ,0, 0, 0 , - 6111, 501, 6112 ,7740, 5459, 3296 ,0, 0, 0 , - 6111, 6112, 6106 ,7740, 3296, 3298 ,0, 0, 0 , - 6114, 1476, 6115 ,3300, 4455, 4454 ,0, 0, 0 , - 6114, 6115, 6113 ,3300, 4454, 3301 ,0, 0, 0 , - 6115, 1481, 6116 ,4454, 6978, 7741 ,0, 0, 0 , - 6115, 6116, 6113 ,4454, 7741, 3301 ,0, 0, 0 , - 6116, 497, 6117 ,7741, 5463, 3299 ,0, 0, 0 , - 6116, 6117, 6113 ,7741, 3299, 3301 ,0, 0, 0 , - 6119, 1480, 6120 ,3303, 4450, 4449 ,0, 0, 0 , - 6119, 6120, 6118 ,3303, 4449, 3304 ,0, 0, 0 , - 6120, 1485, 6121 ,4449, 6982, 7742 ,0, 0, 0 , - 6120, 6121, 6118 ,4449, 7742, 3304 ,0, 0, 0 , - 6121, 493, 6122 ,7742, 5471, 3302 ,0, 0, 0 , - 6121, 6122, 6118 ,7742, 3302, 3304 ,0, 0, 0 , - 6124, 1484, 6125 ,3306, 4446, 4445 ,0, 0, 0 , - 6124, 6125, 6123 ,3306, 4445, 3307 ,0, 0, 0 , - 6125, 1489, 6126 ,4445, 6986, 7743 ,0, 0, 0 , - 6125, 6126, 6123 ,4445, 7743, 3307 ,0, 0, 0 , - 6126, 489, 6127 ,7743, 5477, 3305 ,0, 0, 0 , - 6126, 6127, 6123 ,7743, 3305, 3307 ,0, 0, 0 , - 6129, 807, 6130 ,3310, 872, 5101 ,0, 0, 0 , - 6129, 6130, 6128 ,3310, 5101, 3311 ,0, 0, 0 , - 6130, 814, 6131 ,5101, 6544, 7744 ,0, 0, 0 , - 6130, 6131, 6128 ,5101, 7744, 3311 ,0, 0, 0 , - 6131, 491, 6132 ,7744, 6352, 3308 ,0, 0, 0 , - 6131, 6132, 6128 ,7744, 3308, 3311 ,0, 0, 0 , - 6134, 1488, 6135 ,3313, 4442, 4441 ,0, 0, 0 , - 6134, 6135, 6133 ,3313, 4441, 3314 ,0, 0, 0 , - 6135, 1493, 6136 ,4441, 6990, 7745 ,0, 0, 0 , - 6135, 6136, 6133 ,4441, 7745, 3314 ,0, 0, 0 , - 6136, 485, 6137 ,7745, 5483, 3312 ,0, 0, 0 , - 6136, 6137, 6133 ,7745, 3312, 3314 ,0, 0, 0 , - 6139, 803, 6140 ,3317, 868, 5106 ,0, 0, 0 , - 6139, 6140, 6138 ,3317, 5106, 3318 ,0, 0, 0 , - 6140, 808, 6141 ,5106, 6538, 7746 ,0, 0, 0 , - 6140, 6141, 6138 ,5106, 7746, 3318 ,0, 0, 0 , - 6141, 487, 6142 ,7746, 6351, 3315 ,0, 0, 0 , - 6141, 6142, 6138 ,7746, 3315, 3318 ,0, 0, 0 , - 6144, 1492, 6145 ,3320, 4439, 4438 ,0, 0, 0 , - 6144, 6145, 6143 ,3320, 4438, 3321 ,0, 0, 0 , - 6145, 1497, 6146 ,4438, 6994, 7747 ,0, 0, 0 , - 6145, 6146, 6143 ,4438, 7747, 3321 ,0, 0, 0 , - 6146, 481, 6147 ,7747, 5487, 3319 ,0, 0, 0 , - 6146, 6147, 6143 ,7747, 3319, 3321 ,0, 0, 0 , - 6149, 1496, 6150 ,3323, 4434, 4433 ,0, 0, 0 , - 6149, 6150, 6148 ,3323, 4433, 3324 ,0, 0, 0 , - 6150, 1501, 6151 ,4433, 6999, 7748 ,0, 0, 0 , - 6150, 6151, 6148 ,4433, 7748, 3324 ,0, 0, 0 , - 6151, 477, 6152 ,7748, 5494, 3322 ,0, 0, 0 , - 6151, 6152, 6148 ,7748, 3322, 3324 ,0, 0, 0 , - 6154, 1500, 6155 ,3326, 6997, 7749 ,0, 0, 0 , - 6154, 6155, 6153 ,3326, 7749, 3327 ,0, 0, 0 , - 6155, 1070, 6156 ,7749, 4985, 4984 ,0, 0, 0 , - 6155, 6156, 6153 ,7749, 4984, 3327 ,0, 0, 0 , - 6156, 913, 6157 ,4984, 980, 3325 ,0, 0, 0 , - 6156, 6157, 6153 ,4984, 3325, 3327 ,0, 0, 0 , - 6159, 745, 6160 ,3329, 6502, 7750 ,0, 0, 0 , - 6159, 6160, 6158 ,3329, 7750, 3330 ,0, 0, 0 , - 6160, 739, 6161 ,7750, 6500, 7751 ,0, 0, 0 , - 6160, 6161, 6158 ,7750, 7751, 3330 ,0, 0, 0 , - 6161, 465, 6162 ,7751, 5504, 3328 ,0, 0, 0 , - 6161, 6162, 6158 ,7751, 3328, 3330 ,0, 0, 0 , - 6164, 804, 6165 ,3333, 6533, 7752 ,0, 0, 0 , - 6164, 6165, 6163 ,3333, 7752, 3334 ,0, 0, 0 , - 6165, 483, 6166 ,7752, 6350, 7753 ,0, 0, 0 , - 6165, 6166, 6163 ,7752, 7753, 3334 ,0, 0, 0 , - 6166, 480, 6167 ,7753, 6349, 7754 ,0, 0, 0 , - 6166, 6167, 6163 ,7753, 7754, 3334 ,0, 0, 0 , - 6167, 461, 6168 ,7754, 5510, 3331 ,0, 0, 0 , - 6167, 6168, 6163 ,7754, 3331, 3334 ,0, 0, 0 , - 6170, 462, 6171 ,3337, 504, 5502 ,0, 0, 0 , - 6170, 6171, 6169 ,3337, 5502, 3338 ,0, 0, 0 , - 6171, 738, 6172 ,5502, 6498, 7755 ,0, 0, 0 , - 6171, 6172, 6169 ,5502, 7755, 3338 ,0, 0, 0 , - 6172, 735, 6173 ,7755, 6497, 3335 ,0, 0, 0 , - 6172, 6173, 6169 ,7755, 3335, 3338 ,0, 0, 0 , - 6175, 479, 6176 ,3340, 6347, 7756 ,0, 0, 0 , - 6175, 6176, 6174 ,3340, 7756, 3341 ,0, 0, 0 , - 6176, 476, 6177 ,7756, 6346, 7757 ,0, 0, 0 , - 6176, 6177, 6174 ,7756, 7757, 3341 ,0, 0, 0 , - 6177, 457, 6178 ,7757, 5517, 3339 ,0, 0, 0 , - 6177, 6178, 6174 ,7757, 3339, 3341 ,0, 0, 0 , - 6180, 475, 6181 ,3343, 5492, 5491 ,0, 0, 0 , - 6180, 6181, 6179 ,3343, 5491, 3344 ,0, 0, 0 , - 6181, 916, 6182 ,5491, 4981, 4980 ,0, 0, 0 , - 6181, 6182, 6179 ,5491, 4980, 3344 ,0, 0, 0 , - 6182, 936, 6183 ,4980, 6632, 3342 ,0, 0, 0 , - 6182, 6183, 6179 ,4980, 3342, 3344 ,0, 0, 0 , - 6185, 463, 6186 ,3347, 6334, 7758 ,0, 0, 0 , - 6185, 6186, 6184 ,3347, 7758, 3348 ,0, 0, 0 , - 6186, 459, 6187 ,7758, 6333, 7759 ,0, 0, 0 , - 6186, 6187, 6184 ,7758, 7759, 3348 ,0, 0, 0 , - 6187, 456, 6188 ,7759, 6332, 3345 ,0, 0, 0 , - 6187, 6188, 6184 ,7759, 3345, 3348 ,0, 0, 0 , - 6190, 471, 6191 ,3351, 6340, 7760 ,0, 0, 0 , - 6190, 6191, 6189 ,3351, 7760, 3352 ,0, 0, 0 , - 6191, 467, 6192 ,7760, 6337, 7761 ,0, 0, 0 , - 6191, 6192, 6189 ,7760, 7761, 3352 ,0, 0, 0 , - 6192, 464, 6193 ,7761, 6336, 3349 ,0, 0, 0 , - 6192, 6193, 6189 ,7761, 3349, 3352 ,0, 0, 0 , - 6195, 453, 6196 ,3354, 5524, 5523 ,0, 0, 0 , - 6195, 6196, 6194 ,3354, 5523, 3355 ,0, 0, 0 , - 6196, 455, 6197 ,5523, 5515, 5514 ,0, 0, 0 , - 6196, 6197, 6194 ,5523, 5514, 3355 ,0, 0, 0 , - 6197, 935, 6198 ,5514, 6630, 7762 ,0, 0, 0 , - 6197, 6198, 6194 ,5514, 7762, 3355 ,0, 0, 0 , - 6198, 933, 6199 ,7762, 6629, 3353 ,0, 0, 0 , - 6198, 6199, 6194 ,7762, 3353, 3355 ,0, 0, 0 , - 6201, 750, 6202 ,3358, 6509, 7763 ,0, 0, 0 , - 6201, 6202, 6200 ,3358, 7763, 3359 ,0, 0, 0 , - 6202, 445, 6203 ,7763, 6328, 7764 ,0, 0, 0 , - 6202, 6203, 6200 ,7763, 7764, 3359 ,0, 0, 0 , - 6203, 442, 6204 ,7764, 5537, 3356 ,0, 0, 0 , - 6203, 6204, 6200 ,7764, 3356, 3359 ,0, 0, 0 , - 6206, 495, 6207 ,3362, 6353, 7765 ,0, 0, 0 , - 6206, 6207, 6205 ,3362, 7765, 3363 ,0, 0, 0 , - 6207, 492, 6208 ,7765, 5468, 5467 ,0, 0, 0 , - 6207, 6208, 6205 ,7765, 5467, 3363 ,0, 0, 0 , - 6208, 813, 6209 ,5467, 6542, 7766 ,0, 0, 0 , - 6208, 6209, 6205 ,5467, 7766, 3363 ,0, 0, 0 , - 6209, 752, 6210 ,7766, 808, 3360 ,0, 0, 0 , - 6209, 6210, 6205 ,7766, 3360, 3363 ,0, 0, 0 , - 6212, 503, 6213 ,3366, 6359, 7767 ,0, 0, 0 , - 6212, 6213, 6211 ,3366, 7767, 3367 ,0, 0, 0 , - 6213, 500, 6214 ,7767, 6358, 7768 ,0, 0, 0 , - 6213, 6214, 6211 ,7767, 7768, 3367 ,0, 0, 0 , - 6214, 438, 6215 ,7768, 5542, 3364 ,0, 0, 0 , - 6214, 6215, 6211 ,7768, 3364, 3367 ,0, 0, 0 , - 6217, 499, 6218 ,3369, 6356, 7769 ,0, 0, 0 , - 6217, 6218, 6216 ,3369, 7769, 3370 ,0, 0, 0 , - 6218, 496, 6219 ,7769, 6355, 7770 ,0, 0, 0 , - 6218, 6219, 6216 ,7769, 7770, 3370 ,0, 0, 0 , - 6219, 440, 6220 ,7770, 6325, 3368 ,0, 0, 0 , - 6219, 6220, 6216 ,7770, 3368, 3370 ,0, 0, 0 , - 6222, 439, 6223 ,3373, 480, 5533 ,0, 0, 0 , - 6222, 6223, 6221 ,3373, 5533, 3374 ,0, 0, 0 , - 6223, 444, 6224 ,5533, 6326, 7771 ,0, 0, 0 , - 6223, 6224, 6221 ,5533, 7771, 3374 ,0, 0, 0 , - 6224, 432, 6225 ,7771, 472, 7772 ,0, 0, 0 , - 6224, 6225, 6221 ,7771, 7772, 3374 ,0, 0, 0 , - 6225, 431, 6226 ,7772, 5551, 3371 ,0, 0, 0 , - 6225, 6226, 6221 ,7772, 3371, 3374 ,0, 0, 0 , - 6228, 579, 6229 ,3377, 6397, 7773 ,0, 0, 0 , - 6228, 6229, 6227 ,3377, 7773, 3378 ,0, 0, 0 , - 6229, 545, 6230 ,7773, 6373, 7774 ,0, 0, 0 , - 6229, 6230, 6227 ,7773, 7774, 3378 ,0, 0, 0 , - 6230, 542, 6231 ,7774, 6372, 7775 ,0, 0, 0 , - 6230, 6231, 6227 ,7774, 7775, 3378 ,0, 0, 0 , - 6231, 539, 6232 ,7775, 6371, 7776 ,0, 0, 0 , - 6231, 6232, 6227 ,7775, 7776, 3378 ,0, 0, 0 , - 6232, 437, 6233 ,7776, 6324, 3375 ,0, 0, 0 , - 6232, 6233, 6227 ,7776, 3375, 3378 ,0, 0, 0 , - 6235, 574, 6236 ,3380, 6390, 7777 ,0, 0, 0 , - 6235, 6236, 6234 ,3380, 7777, 3381 ,0, 0, 0 , - 6236, 546, 6237 ,7777, 5393, 5392 ,0, 0, 0 , - 6236, 6237, 6234 ,7777, 5392, 3381 ,0, 0, 0 , - 6237, 578, 6238 ,5392, 6395, 3379 ,0, 0, 0 , - 6237, 6238, 6234 ,5392, 3379, 3381 ,0, 0, 0 , - 6240, 429, 6241 ,3384, 468, 5548 ,0, 0, 0 , - 6240, 6241, 6239 ,3384, 5548, 3385 ,0, 0, 0 , - 6241, 434, 6242 ,5548, 6322, 7778 ,0, 0, 0 , - 6241, 6242, 6239 ,5548, 7778, 3385 ,0, 0, 0 , - 6242, 420, 6243 ,7778, 5565, 3382 ,0, 0, 0 , - 6242, 6243, 6239 ,7778, 3382, 3385 ,0, 0, 0 , - 6245, 426, 6246 ,3388, 6317, 7779 ,0, 0, 0 , - 6245, 6246, 6244 ,3388, 7779, 3389 ,0, 0, 0 , - 6246, 422, 6247 ,7779, 5556, 5555 ,0, 0, 0 , - 6246, 6247, 6244 ,7779, 5555, 3389 ,0, 0, 0 , - 6247, 577, 6248 ,5555, 628, 3386 ,0, 0, 0 , - 6247, 6248, 6244 ,5555, 3386, 3389 ,0, 0, 0 , - 6250, 433, 6251 ,3391, 5546, 5545 ,0, 0, 0 , - 6250, 6251, 6249 ,3391, 5545, 3392 ,0, 0, 0 , - 6251, 443, 6252 ,5545, 484, 7780 ,0, 0, 0 , - 6251, 6252, 6249 ,5545, 7780, 3392 ,0, 0, 0 , - 6252, 416, 6253 ,7780, 5570, 3390 ,0, 0, 0 , - 6252, 6253, 6249 ,7780, 3390, 3392 ,0, 0, 0 , - 6255, 746, 6256 ,3394, 6504, 7781 ,0, 0, 0 , - 6255, 6256, 6254 ,3394, 7781, 3395 ,0, 0, 0 , - 6256, 469, 6257 ,7781, 6339, 7782 ,0, 0, 0 , - 6256, 6257, 6254 ,7781, 7782, 3395 ,0, 0, 0 , - 6257, 412, 6258 ,7782, 5576, 3393 ,0, 0, 0 , - 6257, 6258, 6254 ,7782, 3393, 3395 ,0, 0, 0 , - 6260, 413, 6261 ,3398, 452, 5568 ,0, 0, 0 , - 6260, 6261, 6259 ,3398, 5568, 3399 ,0, 0, 0 , - 6261, 446, 6262 ,5568, 5530, 5529 ,0, 0, 0 , - 6261, 6262, 6259 ,5568, 5529, 3399 ,0, 0, 0 , - 6262, 749, 6263 ,5529, 6507, 7783 ,0, 0, 0 , - 6262, 6263, 6259 ,5529, 7783, 3399 ,0, 0, 0 , - 6263, 742, 6264 ,7783, 6501, 3396 ,0, 0, 0 , - 6263, 6264, 6259 ,7783, 3396, 3399 ,0, 0, 0 , - 6266, 418, 6267 ,3402, 6314, 7784 ,0, 0, 0 , - 6266, 6267, 6265 ,3402, 7784, 3403 ,0, 0, 0 , - 6267, 415, 6268 ,7784, 6313, 7785 ,0, 0, 0 , - 6267, 6268, 6265 ,7784, 7785, 3403 ,0, 0, 0 , - 6268, 408, 6269 ,7785, 5581, 3400 ,0, 0, 0 , - 6268, 6269, 6265 ,7785, 3400, 3403 ,0, 0, 0 , - 6271, 468, 6272 ,3405, 5499, 5498 ,0, 0, 0 , - 6271, 6272, 6270 ,3405, 5498, 3406 ,0, 0, 0 , - 6272, 470, 6273 ,5498, 512, 7786 ,0, 0, 0 , - 6272, 6273, 6270 ,5498, 7786, 3406 ,0, 0, 0 , - 6273, 405, 6274 ,7786, 5588, 3404 ,0, 0, 0 , - 6273, 6274, 6270 ,7786, 3404, 3406 ,0, 0, 0 , - 6276, 406, 6277 ,3409, 444, 5579 ,0, 0, 0 , - 6276, 6277, 6275 ,3409, 5579, 3410 ,0, 0, 0 , - 6277, 414, 6278 ,5579, 6311, 7787 ,0, 0, 0 , - 6277, 6278, 6275 ,5579, 7787, 3410 ,0, 0, 0 , - 6278, 410, 6279 ,7787, 6310, 3407 ,0, 0, 0 , - 6278, 6279, 6275 ,7787, 3407, 3410 ,0, 0, 0 , - 6281, 472, 6282 ,3413, 6342, 7788 ,0, 0, 0 , - 6281, 6282, 6280 ,3413, 7788, 3414 ,0, 0, 0 , - 6282, 450, 6283 ,7788, 492, 7789 ,0, 0, 0 , - 6282, 6283, 6280 ,7788, 7789, 3414 ,0, 0, 0 , - 6283, 449, 6284 ,7789, 6330, 3411 ,0, 0, 0 , - 6283, 6284, 6280 ,7789, 3411, 3414 ,0, 0, 0 , - 6286, 932, 6287 ,3417, 6627, 7790 ,0, 0, 0 , - 6286, 6287, 6285 ,3417, 7790, 3418 ,0, 0, 0 , - 6287, 929, 6288 ,7790, 6624, 7791 ,0, 0, 0 , - 6287, 6288, 6285 ,7790, 7791, 3418 ,0, 0, 0 , - 6288, 926, 6289 ,7791, 6621, 7792 ,0, 0, 0 , - 6288, 6289, 6285 ,7791, 7792, 3418 ,0, 0, 0 , - 6289, 401, 6290 ,7792, 5594, 3415 ,0, 0, 0 , - 6289, 6290, 6285 ,7792, 3415, 3418 ,0, 0, 0 , - 5973, 603, 6292 ,3205, 5333, 5332 ,0, 0, 0 , - 5973, 6292, 6291 ,3205, 5332, 3420 ,0, 0, 0 , - 6292, 615, 6293 ,5332, 6418, 7793 ,0, 0, 0 , - 6292, 6293, 6291 ,5332, 7793, 3420 ,0, 0, 0 , - 6293, 397, 6294 ,7793, 5598, 3419 ,0, 0, 0 , - 6293, 6294, 6291 ,7793, 3419, 3420 ,0, 0, 0 , - 6296, 614, 6297 ,3422, 668, 7794 ,0, 0, 0 , - 6296, 6297, 6295 ,3422, 7794, 3423 ,0, 0, 0 , - 6297, 591, 6298 ,7794, 6409, 7795 ,0, 0, 0 , - 6297, 6298, 6295 ,7794, 7795, 3423 ,0, 0, 0 , - 6298, 393, 6299 ,7795, 5602, 3421 ,0, 0, 0 , - 6298, 6299, 6295 ,7795, 3421, 3423 ,0, 0, 0 , - 6301, 590, 6302 ,3425, 6407, 7796 ,0, 0, 0 , - 6301, 6302, 6300 ,3425, 7796, 3426 ,0, 0, 0 , - 6302, 587, 6303 ,7796, 6406, 7797 ,0, 0, 0 , - 6302, 6303, 6300 ,7796, 7797, 3426 ,0, 0, 0 , - 6303, 389, 6304 ,7797, 5606, 3424 ,0, 0, 0 , - 6303, 6304, 6300 ,7797, 3424, 3426 ,0, 0, 0 , - 6306, 586, 6307 ,3428, 6404, 7798 ,0, 0, 0 , - 6306, 6307, 6305 ,3428, 7798, 3429 ,0, 0, 0 , - 6307, 584, 6308 ,7798, 6403, 7799 ,0, 0, 0 , - 6307, 6308, 6305 ,7798, 7799, 3429 ,0, 0, 0 , - 6308, 385, 6309 ,7799, 5611, 3427 ,0, 0, 0 , - 6308, 6309, 6305 ,7799, 3427, 3429 ,0, 0, 0 , - 6311, 383, 6312 ,3431, 416, 5609 ,0, 0, 0 , - 6311, 6312, 6310 ,3431, 5609, 3432 ,0, 0, 0 , - 6312, 583, 6313 ,5609, 6401, 7800 ,0, 0, 0 , - 6312, 6313, 6310 ,5609, 7800, 3432 ,0, 0, 0 , - 6313, 532, 6314 ,7800, 5413, 5412 ,0, 0, 0 , - 6313, 6314, 6310 ,7800, 5412, 3432 ,0, 0, 0 , - 6314, 554, 6315 ,5412, 6379, 7801 ,0, 0, 0 , - 6314, 6315, 6310 ,5412, 7801, 3432 ,0, 0, 0 , - 6315, 379, 6316 ,7801, 5616, 3430 ,0, 0, 0 , - 6315, 6316, 6310 ,7801, 3430, 3432 ,0, 0, 0 , - 6318, 553, 6319 ,3434, 6377, 7802 ,0, 0, 0 , - 6318, 6319, 6317 ,3434, 7802, 3435 ,0, 0, 0 , - 6319, 550, 6320 ,7802, 5388, 5387 ,0, 0, 0 , - 6319, 6320, 6317 ,7802, 5387, 3435 ,0, 0, 0 , - 6320, 576, 6321 ,5387, 6394, 7803 ,0, 0, 0 , - 6320, 6321, 6317 ,5387, 7803, 3435 ,0, 0, 0 , - 6321, 376, 6322 ,7803, 5621, 3433 ,0, 0, 0 , - 6321, 6322, 6317 ,7803, 3433, 3435 ,0, 0, 0 , - 6324, 373, 6325 ,3437, 404, 5619 ,0, 0, 0 , - 6324, 6325, 6323 ,3437, 5619, 3438 ,0, 0, 0 , - 6325, 575, 6326 ,5619, 6392, 7804 ,0, 0, 0 , - 6325, 6326, 6323 ,5619, 7804, 3438 ,0, 0, 0 , - 6326, 424, 6327 ,7804, 6316, 7805 ,0, 0, 0 , - 6326, 6327, 6323 ,7804, 7805, 3438 ,0, 0, 0 , - 6327, 369, 6328 ,7805, 5626, 3436 ,0, 0, 0 , - 6327, 6328, 6323 ,7805, 3436, 3438 ,0, 0, 0 , - 6330, 423, 6331 ,3440, 5559, 5558 ,0, 0, 0 , - 6330, 6331, 6329 ,3440, 5558, 3441 ,0, 0, 0 , - 6331, 425, 6332 ,5558, 464, 7806 ,0, 0, 0 , - 6331, 6332, 6329 ,5558, 7806, 3441 ,0, 0, 0 , - 6332, 365, 6333 ,7806, 5630, 3439 ,0, 0, 0 , - 6332, 6333, 6329 ,7806, 3439, 3441 ,0, 0, 0 , - 6335, 428, 6336 ,3443, 6320, 7807 ,0, 0, 0 , - 6335, 6336, 6334 ,3443, 7807, 3444 ,0, 0, 0 , - 6336, 407, 6337 ,7807, 6309, 7808 ,0, 0, 0 , - 6336, 6337, 6334 ,7807, 7808, 3444 ,0, 0, 0 , - 6337, 403, 6338 ,7808, 6308, 7809 ,0, 0, 0 , - 6337, 6338, 6334 ,7808, 7809, 3444 ,0, 0, 0 , - 6338, 361, 6339 ,7809, 5637, 3442 ,0, 0, 0 , - 6338, 6339, 6334 ,7809, 3442, 3444 ,0, 0, 0 , - 6341, 402, 6342 ,3446, 440, 5584 ,0, 0, 0 , - 6341, 6342, 6340 ,3446, 5584, 3447 ,0, 0, 0 , - 6342, 473, 6343 ,5584, 6344, 7810 ,0, 0, 0 , - 6342, 6343, 6340 ,5584, 7810, 3447 ,0, 0, 0 , - 6343, 399, 6344 ,7810, 436, 5591 ,0, 0, 0 , - 6343, 6344, 6340 ,7810, 5591, 3447 ,0, 0, 0 , - 6344, 925, 6345 ,5591, 4966, 4965 ,0, 0, 0 , - 6344, 6345, 6340 ,5591, 4965, 3447 ,0, 0, 0 , - 6345, 939, 6346 ,4965, 4956, 4955 ,0, 0, 0 , - 6345, 6346, 6340 ,4965, 4955, 3447 ,0, 0, 0 , - 6346, 942, 6347 ,4955, 6636, 7811 ,0, 0, 0 , - 6346, 6347, 6340 ,4955, 7811, 3447 ,0, 0, 0 , - 6347, 923, 6348 ,7811, 6619, 3445 ,0, 0, 0 , - 6347, 6348, 6340 ,7811, 3445, 3447 ,0, 0, 0 , - 6350, 396, 6351 ,3449, 6307, 7812 ,0, 0, 0 , - 6350, 6351, 6349 ,3449, 7812, 3450 ,0, 0, 0 , - 6351, 354, 6352 ,7812, 5641, 3448 ,0, 0, 0 , - 6351, 6352, 6349 ,7812, 3448, 3450 ,0, 0, 0 , - 6354, 395, 6355 ,3452, 6305, 7813 ,0, 0, 0 , - 6354, 6355, 6353 ,3452, 7813, 3453 ,0, 0, 0 , - 6355, 392, 6356 ,7813, 6304, 7814 ,0, 0, 0 , - 6355, 6356, 6353 ,7813, 7814, 3453 ,0, 0, 0 , - 6356, 350, 6357 ,7814, 5645, 3451 ,0, 0, 0 , - 6356, 6357, 6353 ,7814, 3451, 3453 ,0, 0, 0 , - 6359, 391, 6360 ,3455, 6302, 7815 ,0, 0, 0 , - 6359, 6360, 6358 ,3455, 7815, 3456 ,0, 0, 0 , - 6360, 388, 6361 ,7815, 6301, 7816 ,0, 0, 0 , - 6360, 6361, 6358 ,7815, 7816, 3456 ,0, 0, 0 , - 6361, 346, 6362 ,7816, 5649, 3454 ,0, 0, 0 , - 6361, 6362, 6358 ,7816, 3454, 3456 ,0, 0, 0 , - 6364, 387, 6365 ,3458, 6299, 7817 ,0, 0, 0 , - 6364, 6365, 6363 ,3458, 7817, 3459 ,0, 0, 0 , - 6365, 384, 6366 ,7817, 6298, 7818 ,0, 0, 0 , - 6365, 6366, 6363 ,7817, 7818, 3459 ,0, 0, 0 , - 6366, 382, 6367 ,7818, 6297, 7819 ,0, 0, 0 , - 6366, 6367, 6363 ,7818, 7819, 3459 ,0, 0, 0 , - 6367, 342, 6368 ,7819, 5655, 3457 ,0, 0, 0 , - 6367, 6368, 6363 ,7819, 3457, 3459 ,0, 0, 0 , - 6370, 1628, 6371 ,3462, 7109, 7820 ,0, 0, 0 , - 6370, 6371, 6369 ,3462, 7820, 3463 ,0, 0, 0 , - 6371, 344, 6372 ,7820, 1827, 3460 ,0, 0, 0 , - 6371, 6372, 6369 ,7820, 3460, 3463 ,0, 0, 0 , - 6374, 381, 6375 ,3465, 6295, 7821 ,0, 0, 0 , - 6374, 6375, 6373 ,3465, 7821, 3466 ,0, 0, 0 , - 6375, 378, 6376 ,7821, 6294, 7822 ,0, 0, 0 , - 6375, 6376, 6373 ,7821, 7822, 3466 ,0, 0, 0 , - 6376, 375, 6377 ,7822, 6293, 7823 ,0, 0, 0 , - 6376, 6377, 6373 ,7822, 7823, 3466 ,0, 0, 0 , - 6377, 338, 6378 ,7823, 5661, 3464 ,0, 0, 0 , - 6377, 6378, 6373 ,7823, 3464, 3466 ,0, 0, 0 , - 6380, 1632, 6381 ,3469, 7113, 7824 ,0, 0, 0 , - 6380, 6381, 6379 ,3469, 7824, 3470 ,0, 0, 0 , - 6381, 1625, 6382 ,7824, 1831, 7825 ,0, 0, 0 , - 6381, 6382, 6379 ,7824, 7825, 3470 ,0, 0, 0 , - 6382, 340, 6383 ,7825, 6273, 3467 ,0, 0, 0 , - 6382, 6383, 6379 ,7825, 3467, 3470 ,0, 0, 0 , - 6385, 374, 6386 ,3472, 6291, 7826 ,0, 0, 0 , - 6385, 6386, 6384 ,3472, 7826, 3473 ,0, 0, 0 , - 6386, 372, 6387 ,7826, 6290, 7827 ,0, 0, 0 , - 6386, 6387, 6384 ,7826, 7827, 3473 ,0, 0, 0 , - 6387, 334, 6388 ,7827, 5667, 3471 ,0, 0, 0 , - 6387, 6388, 6384 ,7827, 3471, 3473 ,0, 0, 0 , - 6390, 1636, 6391 ,3476, 7117, 7828 ,0, 0, 0 , - 6390, 6391, 6389 ,3476, 7828, 3477 ,0, 0, 0 , - 6391, 1629, 6392 ,7828, 1835, 7829 ,0, 0, 0 , - 6391, 6392, 6389 ,7828, 7829, 3477 ,0, 0, 0 , - 6392, 336, 6393 ,7829, 6272, 3474 ,0, 0, 0 , - 6392, 6393, 6389 ,7829, 3474, 3477 ,0, 0, 0 , - 6395, 371, 6396 ,3479, 6288, 7830 ,0, 0, 0 , - 6395, 6396, 6394 ,3479, 7830, 3480 ,0, 0, 0 , - 6396, 368, 6397 ,7830, 6287, 7831 ,0, 0, 0 , - 6396, 6397, 6394 ,7830, 7831, 3480 ,0, 0, 0 , - 6397, 330, 6398 ,7831, 5673, 3478 ,0, 0, 0 , - 6397, 6398, 6394 ,7831, 3478, 3480 ,0, 0, 0 , - 6400, 1640, 6401 ,3483, 7121, 7832 ,0, 0, 0 , - 6400, 6401, 6399 ,3483, 7832, 3484 ,0, 0, 0 , - 6401, 1633, 6402 ,7832, 1839, 7833 ,0, 0, 0 , - 6401, 6402, 6399 ,7832, 7833, 3484 ,0, 0, 0 , - 6402, 332, 6403 ,7833, 6271, 3481 ,0, 0, 0 , - 6402, 6403, 6399 ,7833, 3481, 3484 ,0, 0, 0 , - 6405, 367, 6406 ,3486, 6285, 7834 ,0, 0, 0 , - 6405, 6406, 6404 ,3486, 7834, 3487 ,0, 0, 0 , - 6406, 364, 6407 ,7834, 6284, 7835 ,0, 0, 0 , - 6406, 6407, 6404 ,7834, 7835, 3487 ,0, 0, 0 , - 6407, 326, 6408 ,7835, 5679, 3485 ,0, 0, 0 , - 6407, 6408, 6404 ,7835, 3485, 3487 ,0, 0, 0 , - 6410, 1644, 6411 ,3490, 7125, 7836 ,0, 0, 0 , - 6410, 6411, 6409 ,3490, 7836, 3491 ,0, 0, 0 , - 6411, 1637, 6412 ,7836, 1843, 7837 ,0, 0, 0 , - 6411, 6412, 6409 ,7836, 7837, 3491 ,0, 0, 0 , - 6412, 328, 6413 ,7837, 6270, 3488 ,0, 0, 0 , - 6412, 6413, 6409 ,7837, 3488, 3491 ,0, 0, 0 , - 6415, 363, 6416 ,3493, 6282, 7838 ,0, 0, 0 , - 6415, 6416, 6414 ,3493, 7838, 3494 ,0, 0, 0 , - 6416, 360, 6417 ,7838, 6281, 7839 ,0, 0, 0 , - 6416, 6417, 6414 ,7838, 7839, 3494 ,0, 0, 0 , - 6417, 322, 6418 ,7839, 5686, 3492 ,0, 0, 0 , - 6417, 6418, 6414 ,7839, 3492, 3494 ,0, 0, 0 , - 6420, 1648, 6421 ,3497, 7130, 7840 ,0, 0, 0 , - 6420, 6421, 6419 ,3497, 7840, 3498 ,0, 0, 0 , - 6421, 1641, 6422 ,7840, 1847, 7841 ,0, 0, 0 , - 6421, 6422, 6419 ,7840, 7841, 3498 ,0, 0, 0 , - 6422, 324, 6423 ,7841, 6269, 3495 ,0, 0, 0 , - 6422, 6423, 6419 ,7841, 3495, 3498 ,0, 0, 0 , - 6425, 359, 6426 ,3500, 5635, 5634 ,0, 0, 0 , - 6425, 6426, 6424 ,3500, 5634, 3501 ,0, 0, 0 , - 6426, 922, 6427 ,5634, 4971, 4970 ,0, 0, 0 , - 6426, 6427, 6424 ,5634, 4970, 3501 ,0, 0, 0 , - 6427, 945, 6428 ,4970, 6639, 7842 ,0, 0, 0 , - 6427, 6428, 6424 ,4970, 7842, 3501 ,0, 0, 0 , - 6428, 919, 6429 ,7842, 4977, 4976 ,0, 0, 0 , - 6428, 6429, 6424 ,7842, 4976, 3501 ,0, 0, 0 , - 6429, 949, 6430 ,4976, 6644, 3499 ,0, 0, 0 , - 6429, 6430, 6424 ,4976, 3499, 3501 ,0, 0, 0 , - 6432, 948, 6433 ,3504, 6642, 7843 ,0, 0, 0 , - 6432, 6433, 6431 ,3504, 7843, 3505 ,0, 0, 0 , - 6433, 1039, 6434 ,7843, 4257, 4256 ,0, 0, 0 , - 6433, 6434, 6431 ,7843, 4256, 3505 ,0, 0, 0 , - 6434, 1645, 6435 ,4256, 1851, 3502 ,0, 0, 0 , - 6434, 6435, 6431 ,4256, 3502, 3505 ,0, 0, 0 , - 6437, 971, 6438 ,3507, 6671, 7844 ,0, 0, 0 , - 6437, 6438, 6436 ,3507, 7844, 3508 ,0, 0, 0 , - 6438, 973, 6439 ,7844, 7845, 7846 ,0, 0, 0 , - 6438, 6439, 6436 ,7844, 7846, 3508 ,0, 0, 0 , - 6439, 1007, 6440 ,7846, 7847, 7848 ,0, 0, 0 , - 6439, 6440, 6436 ,7846, 7848, 3508 ,0, 0, 0 , - 6440, 1006, 6441 ,7848, 4240, 4239 ,0, 0, 0 , - 6440, 6441, 6436 ,7848, 4239, 3508 ,0, 0, 0 , - 6441, 1662, 6442 ,4239, 7133, 3506 ,0, 0, 0 , - 6441, 6442, 6436 ,4239, 3506, 3508 ,0, 0, 0 , - 6444, 1661, 6445 ,3511, 1867, 7849 ,0, 0, 0 , - 6444, 6445, 6443 ,3511, 7849, 3512 ,0, 0, 0 , - 6445, 1036, 6446 ,7849, 1184, 4987 ,0, 0, 0 , - 6445, 6446, 6443 ,7849, 4987, 3512 ,0, 0, 0 , - 6446, 947, 6447 ,4987, 6640, 3509 ,0, 0, 0 , - 6446, 6447, 6443 ,4987, 3509, 3512 ,0, 0, 0 , - 6449, 966, 6450 ,3514, 6668, 7850 ,0, 0, 0 , - 6449, 6450, 6448 ,3514, 7850, 3515 ,0, 0, 0 , - 6450, 970, 6451 ,7850, 7851, 7852 ,0, 0, 0 , - 6450, 6451, 6448 ,7850, 7852, 3515 ,0, 0, 0 , - 6451, 974, 6452 ,7852, 7853, 7854 ,0, 0, 0 , - 6451, 6452, 6448 ,7852, 7854, 3515 ,0, 0, 0 , - 6452, 972, 6453 ,7854, 6673, 7855 ,0, 0, 0 , - 6452, 6453, 6448 ,7854, 7855, 3515 ,0, 0, 0 , - 6453, 298, 6454 ,7855, 6259, 3513 ,0, 0, 0 , - 6453, 6454, 6448 ,7855, 3513, 3515 ,0, 0, 0 , - 6456, 297, 6457 ,3518, 5710, 5709 ,0, 0, 0 , - 6456, 6457, 6455 ,3518, 5709, 3519 ,0, 0, 0 , - 6457, 946, 6458 ,5709, 1020, 7856 ,0, 0, 0 , - 6457, 6458, 6455 ,5709, 7856, 3519 ,0, 0, 0 , - 6458, 918, 6459 ,7856, 6616, 3516 ,0, 0, 0 , - 6458, 6459, 6455 ,7856, 3516, 3519 ,0, 0, 0 , - 6461, 964, 6462 ,3521, 6664, 7857 ,0, 0, 0 , - 6461, 6462, 6460 ,3521, 7857, 3522 ,0, 0, 0 , - 6462, 968, 3208 ,7857, 6669, 1066 ,0, 0, 0 , - 6462, 3208, 6460 ,7857, 1066, 3522 ,0, 0, 0 , - 3208, 967, 6463 ,1066, 1065, 7858 ,0, 0, 0 , - 3208, 6463, 6460 ,1066, 7858, 3522 ,0, 0, 0 , - 6463, 294, 6464 ,7858, 6257, 3520 ,0, 0, 0 , - 6463, 6464, 6460 ,7858, 3520, 3522 ,0, 0, 0 , - 6466, 293, 6467 ,3525, 5716, 5715 ,0, 0, 0 , - 6466, 6467, 6465 ,3525, 5715, 3526 ,0, 0, 0 , - 6467, 917, 6468 ,5715, 984, 4974 ,0, 0, 0 , - 6467, 6468, 6465 ,5715, 4974, 3526 ,0, 0, 0 , - 6468, 944, 6469 ,4974, 6637, 3523 ,0, 0, 0 , - 6468, 6469, 6465 ,4974, 3523, 3526 ,0, 0, 0 , - 6471, 307, 6472 ,3528, 1049, 7859 ,0, 0, 0 , - 6471, 6472, 6470 ,3528, 7859, 3529 ,0, 0, 0 , - 6472, 290, 6473 ,7859, 6255, 3527 ,0, 0, 0 , - 6472, 6473, 6470 ,7859, 3527, 3529 ,0, 0, 0 , - 6475, 289, 6476 ,3532, 5722, 5721 ,0, 0, 0 , - 6475, 6476, 6474 ,3532, 5721, 3533 ,0, 0, 0 , - 6476, 943, 6477 ,5721, 1016, 7860 ,0, 0, 0 , - 6476, 6477, 6474 ,5721, 7860, 3533 ,0, 0, 0 , - 6477, 921, 6478 ,7860, 6617, 3530 ,0, 0, 0 , - 6477, 6478, 6474 ,7860, 3530, 3533 ,0, 0, 0 , - 6480, 920, 6481 ,3536, 988, 4968 ,0, 0, 0 , - 6480, 6481, 6479 ,3536, 4968, 3537 ,0, 0, 0 , - 6481, 941, 6482 ,4968, 6634, 7861 ,0, 0, 0 , - 6481, 6482, 6479 ,4968, 7861, 3537 ,0, 0, 0 , - 6482, 305, 6483 ,7861, 6261, 3534 ,0, 0, 0 , - 6482, 6483, 6479 ,7861, 3534, 3537 ,0, 0, 0 , - 6485, 955, 6486 ,3540, 6655, 7862 ,0, 0, 0 , - 6485, 6486, 6484 ,3540, 7862, 3541 ,0, 0, 0 , - 6486, 959, 6487 ,7862, 5702, 5701 ,0, 0, 0 , - 6486, 6487, 6484 ,7862, 5701, 3541 ,0, 0, 0 , - 6487, 963, 6488 ,5701, 6662, 7863 ,0, 0, 0 , - 6487, 6488, 6484 ,5701, 7863, 3541 ,0, 0, 0 , - 6488, 286, 6489 ,7863, 5729, 3538 ,0, 0, 0 , - 6488, 6489, 6484 ,7863, 3538, 3541 ,0, 0, 0 , - 6491, 301, 6492 ,3543, 6650, 7864 ,0, 0, 0 , - 6491, 6492, 6490 ,3543, 7864, 3544 ,0, 0, 0 , - 6492, 956, 6493 ,7864, 5698, 5697 ,0, 0, 0 , - 6492, 6493, 6490 ,7864, 5697, 3544 ,0, 0, 0 , - 6493, 303, 6494 ,5697, 336, 3542 ,0, 0, 0 , - 6493, 6494, 6490 ,5697, 3542, 3544 ,0, 0, 0 , - 6496, 306, 6497 ,3547, 5694, 5693 ,0, 0, 0 , - 6496, 6497, 6495 ,3547, 5693, 3548 ,0, 0, 0 , - 6497, 940, 6498 ,5693, 1012, 7865 ,0, 0, 0 , - 6497, 6498, 6495 ,5693, 7865, 3548 ,0, 0, 0 , - 6498, 938, 6499 ,7865, 6633, 3545 ,0, 0, 0 , - 6498, 6499, 6495 ,7865, 3545, 3548 ,0, 0, 0 , - 6501, 315, 6502 ,3550, 6266, 7866 ,0, 0, 0 , - 6501, 6502, 6500 ,3550, 7866, 3551 ,0, 0, 0 , - 6502, 951, 6503 ,7866, 6647, 7867 ,0, 0, 0 , - 6502, 6503, 6500 ,7866, 7867, 3551 ,0, 0, 0 , - 6503, 954, 6504 ,7867, 6654, 3549 ,0, 0, 0 , - 6503, 6504, 6500 ,7867, 3549, 3551 ,0, 0, 0 , - 6506, 301, 6507 ,3554, 6650, 7868 ,0, 0, 0 , - 6506, 6507, 6505 ,3554, 7868, 3555 ,0, 0, 0 , - 6507, 282, 6508 ,7868, 6253, 3552 ,0, 0, 0 , - 6507, 6508, 6505 ,7868, 3552, 3555 ,0, 0, 0 , - 6510, 281, 6511 ,3558, 5735, 5734 ,0, 0, 0 , - 6510, 6511, 6509 ,3558, 5734, 3559 ,0, 0, 0 , - 6511, 937, 6512 ,5734, 1008, 7869 ,0, 0, 0 , - 6511, 6512, 6509 ,5734, 7869, 3559 ,0, 0, 0 , - 6512, 924, 6513 ,7869, 992, 4963 ,0, 0, 0 , - 6512, 6513, 6509 ,7869, 4963, 3559 ,0, 0, 0 , - 6513, 928, 6514 ,4963, 6622, 3556 ,0, 0, 0 , - 6513, 6514, 6509 ,4963, 3556, 3559 ,0, 0, 0 , - 6516, 269, 6517 ,3561, 7870, 3568 ,0, 0, 0 , - 6516, 6517, 6515 ,3561, 3568, 3562 ,0, 0, 0 , - 6517, 318, 6518 ,3568, 3567, 3560 ,0, 0, 0 , - 6517, 6518, 6515 ,3568, 3560, 3562 ,0, 0, 0 , - 6520, 269, 6516 ,3564, 7870, 3561 ,0, 0, 0 , - 6520, 6516, 6519 ,3564, 3561, 3565 ,0, 0, 0 , - 6516, 265, 6521 ,3561, 298, 3563 ,0, 0, 0 , - 6516, 6521, 6519 ,3561, 3563, 3565 ,0, 0, 0 , - 6517, 269, 6520 ,3568, 7870, 3564 ,0, 0, 0 , - 6517, 6520, 6522 ,3568, 3564, 3569 ,0, 0, 0 , - 6520, 261, 6523 ,3564, 292, 7871 ,0, 0, 0 , - 6520, 6523, 6522 ,3564, 7871, 3569 ,0, 0, 0 , - 6523, 260, 6524 ,7871, 5760, 3566 ,0, 0, 0 , - 6523, 6524, 6522 ,7871, 3566, 3569 ,0, 0, 0 , - 6526, 266, 6527 ,3572, 5749, 5748 ,0, 0, 0 , - 6526, 6527, 6525 ,3572, 5748, 3573 ,0, 0, 0 , - 6527, 317, 6528 ,5748, 6267, 7872 ,0, 0, 0 , - 6527, 6528, 6525 ,5748, 7872, 3573 ,0, 0, 0 , - 6528, 257, 6529 ,7872, 5764, 3570 ,0, 0, 0 , - 6528, 6529, 6525 ,7872, 3570, 3573 ,0, 0, 0 , - 6531, 267, 6532 ,3575, 5752, 5751 ,0, 0, 0 , - 6531, 6532, 6530 ,3575, 5751, 3576 ,0, 0, 0 , - 6532, 240, 6533 ,5751, 268, 3574 ,0, 0, 0 , - 6532, 6533, 6530 ,5751, 3574, 3576 ,0, 0, 0 , - 6535, 258, 6536 ,3578, 288, 5758 ,0, 0, 0 , - 6535, 6536, 6534 ,3578, 5758, 3579 ,0, 0, 0 , - 6536, 263, 6537 ,5758, 6244, 7873 ,0, 0, 0 , - 6536, 6537, 6534 ,5758, 7873, 3579 ,0, 0, 0 , - 6537, 250, 6538 ,7873, 6234, 3577 ,0, 0, 0 , - 6537, 6538, 6534 ,7873, 3577, 3579 ,0, 0, 0 , - 6540, 316, 6541 ,3581, 344, 7874 ,0, 0, 0 , - 6540, 6541, 6539 ,3581, 7874, 3582 ,0, 0, 0 , - 6541, 259, 6542 ,7874, 6241, 7875 ,0, 0, 0 , - 6541, 6542, 6539 ,7874, 7875, 3582 ,0, 0, 0 , - 6542, 246, 6543 ,7875, 5773, 3580 ,0, 0, 0 , - 6542, 6543, 6539 ,7875, 3580, 3582 ,0, 0, 0 , - 6545, 238, 6546 ,3585, 5781, 5780 ,0, 0, 0 , - 6545, 6546, 6544 ,3585, 5780, 3586 ,0, 0, 0 , - 6546, 1724, 6547 ,5780, 4160, 4159 ,0, 0, 0 , - 6546, 6547, 6544 ,5780, 4159, 3586 ,0, 0, 0 , - 6547, 1736, 6548 ,4159, 7174, 3583 ,0, 0, 0 , - 6547, 6548, 6544 ,4159, 3583, 3586 ,0, 0, 0 , - 6550, 223, 6551 ,3588, 5792, 5791 ,0, 0, 0 , - 6550, 6551, 6549 ,3588, 5791, 3589 ,0, 0, 0 , - 6551, 1735, 6552 ,5791, 1949, 4157 ,0, 0, 0 , - 6551, 6552, 6549 ,5791, 4157, 3589 ,0, 0, 0 , - 6552, 1741, 6553 ,4157, 7178, 3587 ,0, 0, 0 , - 6552, 6553, 6549 ,4157, 3587, 3589 ,0, 0, 0 , - 6555, 1740, 6556 ,3592, 1953, 7876 ,0, 0, 0 , - 6555, 6556, 6554 ,3592, 7876, 3593 ,0, 0, 0 , - 6556, 1006, 6440 ,7876, 4240, 7848 ,0, 0, 0 , - 6556, 6440, 6554 ,7876, 7848, 3593 ,0, 0, 0 , - 6440, 1007, 6439 ,7848, 7847, 7846 ,0, 0, 0 , - 6440, 6439, 6554 ,7848, 7846, 3593 ,0, 0, 0 , - 6439, 973, 6438 ,7846, 7845, 7844 ,0, 0, 0 , - 6439, 6438, 6554 ,7846, 7844, 3593 ,0, 0, 0 , - 6438, 971, 6557 ,7844, 6671, 3590 ,0, 0, 0 , - 6438, 6557, 6554 ,7844, 3590, 3593 ,0, 0, 0 , - 6559, 224, 6560 ,3595, 6209, 7877 ,0, 0, 0 , - 6559, 6560, 6558 ,3595, 7877, 3596 ,0, 0, 0 , - 6560, 220, 6561 ,7877, 6207, 3594 ,0, 0, 0 , - 6560, 6561, 6558 ,7877, 3594, 3596 ,0, 0, 0 , - 6563, 219, 6564 ,3599, 5798, 5797 ,0, 0, 0 , - 6563, 6564, 6562 ,3599, 5797, 3600 ,0, 0, 0 , - 6564, 972, 6452 ,5797, 6673, 7854 ,0, 0, 0 , - 6564, 6452, 6562 ,5797, 7854, 3600 ,0, 0, 0 , - 6452, 974, 6451 ,7854, 7853, 7852 ,0, 0, 0 , - 6452, 6451, 6562 ,7854, 7852, 3600 ,0, 0, 0 , - 6451, 970, 6450 ,7852, 7851, 7850 ,0, 0, 0 , - 6451, 6450, 6562 ,7852, 7850, 3600 ,0, 0, 0 , - 6450, 966, 6565 ,7850, 6668, 3597 ,0, 0, 0 , - 6450, 6565, 6562 ,7850, 3597, 3600 ,0, 0, 0 , - 6567, 226, 6568 ,3602, 256, 7878 ,0, 0, 0 , - 6567, 6568, 6566 ,3602, 7878, 3603 ,0, 0, 0 , - 6568, 225, 6569 ,7878, 6211, 7879 ,0, 0, 0 , - 6568, 6569, 6566 ,7878, 7879, 3603 ,0, 0, 0 , - 6569, 216, 6570 ,7879, 6205, 3601 ,0, 0, 0 , - 6569, 6570, 6566 ,7879, 3601, 3603 ,0, 0, 0 , - 6572, 215, 6573 ,3606, 5804, 5803 ,0, 0, 0 , - 6572, 6573, 6571 ,3606, 5803, 3607 ,0, 0, 0 , - 6573, 965, 6574 ,5803, 6666, 7880 ,0, 0, 0 , - 6573, 6574, 6571 ,5803, 7880, 3607 ,0, 0, 0 , - 6574, 969, 6575 ,7880, 5690, 5689 ,0, 0, 0 , - 6574, 6575, 6571 ,7880, 5689, 3607 ,0, 0, 0 , - 6575, 311, 6576 ,5689, 1055, 3604 ,0, 0, 0 , - 6575, 6576, 6571 ,5689, 3604, 3607 ,0, 0, 0 , - 6578, 227, 6579 ,3609, 6212, 7881 ,0, 0, 0 , - 6578, 6579, 6577 ,3609, 7881, 3610 ,0, 0, 0 , - 6579, 212, 6580 ,7881, 6203, 3608 ,0, 0, 0 , - 6579, 6580, 6577 ,7881, 3608, 3610 ,0, 0, 0 , - 6582, 211, 6583 ,3613, 5810, 5809 ,0, 0, 0 , - 6582, 6583, 6581 ,3613, 5809, 3614 ,0, 0, 0 , - 6583, 961, 6584 ,5809, 6661, 3611 ,0, 0, 0 , - 6583, 6584, 6581 ,5809, 3611, 3614 ,0, 0, 0 , - 6586, 233, 6587 ,3616, 6219, 7882 ,0, 0, 0 , - 6586, 6587, 6585 ,3616, 7882, 3617 ,0, 0, 0 , - 6587, 228, 6588 ,7882, 6214, 7883 ,0, 0, 0 , - 6587, 6588, 6585 ,7882, 7883, 3617 ,0, 0, 0 , - 6588, 208, 6589 ,7883, 6201, 3615 ,0, 0, 0 , - 6588, 6589, 6585 ,7883, 3615, 3617 ,0, 0, 0 , - 6591, 207, 6592 ,3620, 5816, 5815 ,0, 0, 0 , - 6591, 6592, 6590 ,3620, 5815, 3621 ,0, 0, 0 , - 6592, 962, 6593 ,5815, 6659, 7884 ,0, 0, 0 , - 6592, 6593, 6590 ,5815, 7884, 3621 ,0, 0, 0 , - 6593, 958, 6594 ,7884, 6656, 7885 ,0, 0, 0 , - 6593, 6594, 6590 ,7884, 7885, 3621 ,0, 0, 0 , - 6594, 960, 6595 ,7885, 6658, 3618 ,0, 0, 0 , - 6594, 6595, 6590 ,7885, 3618, 3621 ,0, 0, 0 , - 6597, 234, 6598 ,3623, 6221, 7886 ,0, 0, 0 , - 6597, 6598, 6596 ,3623, 7886, 3624 ,0, 0, 0 , - 6598, 204, 6599 ,7886, 6199, 3622 ,0, 0, 0 , - 6598, 6599, 6596 ,7886, 3622, 3624 ,0, 0, 0 , - 6601, 203, 6602 ,3627, 5822, 5821 ,0, 0, 0 , - 6601, 6602, 6600 ,3627, 5821, 3628 ,0, 0, 0 , - 6602, 956, 6492 ,5821, 5698, 7864 ,0, 0, 0 , - 6602, 6492, 6600 ,5821, 7864, 3628 ,0, 0, 0 , - 6492, 301, 6603 ,7864, 6650, 3625 ,0, 0, 0 , - 6492, 6603, 6600 ,7864, 3625, 3628 ,0, 0, 0 , - 6605, 199, 6606 ,3631, 5828, 5827 ,0, 0, 0 , - 6605, 6606, 6604 ,3631, 5827, 3632 ,0, 0, 0 , - 6606, 952, 6607 ,5827, 6648, 7887 ,0, 0, 0 , - 6606, 6607, 6604 ,5827, 7887, 3632 ,0, 0, 0 , - 6607, 953, 6608 ,7887, 6652, 3629 ,0, 0, 0 , - 6607, 6608, 6604 ,7887, 3629, 3632 ,0, 0, 0 , - 6610, 196, 6611 ,3634, 5834, 5833 ,0, 0, 0 , - 6610, 6611, 6609 ,3634, 5833, 3635 ,0, 0, 0 , - 6611, 950, 6612 ,5833, 6645, 3633 ,0, 0, 0 , - 6611, 6612, 6609 ,5833, 3633, 3635 ,0, 0, 0 , - 6614, 190, 6615 ,3637, 5839, 5838 ,0, 0, 0 , - 6614, 6615, 6613 ,3637, 5838, 3638 ,0, 0, 0 , - 6615, 299, 6616 ,5838, 1024, 3636 ,0, 0, 0 , - 6615, 6616, 6613 ,5838, 3636, 3638 ,0, 0, 0 , - 6616, 299, 6618 ,3636, 1024, 5705 ,0, 0, 0 , - 6616, 6618, 6617 ,3636, 5705, 3640 ,0, 0, 0 , - 6618, 314, 6619 ,5705, 6264, 3639 ,0, 0, 0 , - 6618, 6619, 6617 ,5705, 3639, 3640 ,0, 0, 0 , - 6621, 187, 6622 ,3643, 5843, 5842 ,0, 0, 0 , - 6621, 6622, 6620 ,3643, 5842, 3644 ,0, 0, 0 , - 6622, 313, 6623 ,5842, 6262, 7888 ,0, 0, 0 , - 6622, 6623, 6620 ,5842, 7888, 3644 ,0, 0, 0 , - 6623, 274, 6624 ,7888, 6251, 3641 ,0, 0, 0 , - 6623, 6624, 6620 ,7888, 3641, 3644 ,0, 0, 0 , - 6626, 235, 6627 ,3646, 6223, 7889 ,0, 0, 0 , - 6626, 6627, 6625 ,3646, 7889, 3647 ,0, 0, 0 , - 6627, 200, 6628 ,7889, 6197, 7890 ,0, 0, 0 , - 6627, 6628, 6625 ,7889, 7890, 3647 ,0, 0, 0 , - 6628, 194, 6629 ,7890, 6195, 3645 ,0, 0, 0 , - 6628, 6629, 6625 ,7890, 3645, 3647 ,0, 0, 0 , - 6631, 193, 6632 ,3650, 224, 7891 ,0, 0, 0 , - 6631, 6632, 6630 ,3650, 7891, 3651 ,0, 0, 0 , - 6632, 192, 6633 ,7891, 6194, 3648 ,0, 0, 0 , - 6632, 6633, 6630 ,7891, 3648, 3651 ,0, 0, 0 , - 6635, 191, 6636 ,3654, 6192, 7892 ,0, 0, 0 , - 6635, 6636, 6634 ,3654, 7892, 3655 ,0, 0, 0 , - 6636, 188, 6637 ,7892, 6190, 7893 ,0, 0, 0 , - 6636, 6637, 6634 ,7892, 7893, 3655 ,0, 0, 0 , - 6637, 182, 6638 ,7893, 212, 3652 ,0, 0, 0 , - 6637, 6638, 6634 ,7893, 3652, 3655 ,0, 0, 0 , - 6640, 251, 6533 ,3657, 280, 3574 ,0, 0, 0 , - 6640, 6533, 6639 ,3657, 3574, 3658 ,0, 0, 0 , - 6533, 240, 6641 ,3574, 268, 3656 ,0, 0, 0 , - 6533, 6641, 6639 ,3574, 3656, 3658 ,0, 0, 0 , - 6643, 242, 6644 ,3661, 5777, 5776 ,0, 0, 0 , - 6643, 6644, 6642 ,3661, 5776, 3662 ,0, 0, 0 , - 6644, 1720, 6645 ,5776, 4082, 4081 ,0, 0, 0 , - 6644, 6645, 6642 ,5776, 4081, 3662 ,0, 0, 0 , - 6645, 1792, 6646 ,4081, 2001, 3659 ,0, 0, 0 , - 6645, 6646, 6642 ,4081, 3659, 3662 ,0, 0, 0 , - 6648, 1795, 6649 ,3665, 7214, 7894 ,0, 0, 0 , - 6648, 6649, 6647 ,3665, 7894, 3666 ,0, 0, 0 , - 6649, 1721, 6650 ,7894, 1937, 7895 ,0, 0, 0 , - 6649, 6650, 6647 ,7894, 7895, 3666 ,0, 0, 0 , - 6650, 237, 6651 ,7895, 6224, 3663 ,0, 0, 0 , - 6650, 6651, 6647 ,7895, 3663, 3666 ,0, 0, 0 , - 6653, 239, 6654 ,3668, 6226, 7896 ,0, 0, 0 , - 6653, 6654, 6652 ,3668, 7896, 3669 ,0, 0, 0 , - 6654, 221, 6655 ,7896, 252, 5788 ,0, 0, 0 , - 6654, 6655, 6652 ,7896, 5788, 3669 ,0, 0, 0 , - 6655, 230, 6656 ,5788, 6216, 3667 ,0, 0, 0 , - 6655, 6656, 6652 ,5788, 3667, 3669 ,0, 0, 0 , - 6658, 229, 6659 ,3672, 5785, 5784 ,0, 0, 0 , - 6658, 6659, 6657 ,3672, 5784, 3673 ,0, 0, 0 , - 6659, 232, 6660 ,5784, 6217, 7897 ,0, 0, 0 , - 6659, 6660, 6657 ,5784, 7897, 3673 ,0, 0, 0 , - 6660, 174, 6661 ,7897, 6182, 3670 ,0, 0, 0 , - 6660, 6661, 6657 ,7897, 3670, 3673 ,0, 0, 0 , - 6663, 252, 6664 ,3676, 6235, 7898 ,0, 0, 0 , - 6663, 6664, 6662 ,3676, 7898, 3677 ,0, 0, 0 , - 6664, 171, 6665 ,7898, 5869, 5868 ,0, 0, 0 , - 6664, 6665, 6662 ,7898, 5868, 3677 ,0, 0, 0 , - 6665, 236, 6666 ,5868, 264, 7899 ,0, 0, 0 , - 6665, 6666, 6662 ,5868, 7899, 3677 ,0, 0, 0 , - 6666, 167, 6667 ,7899, 5878, 3674 ,0, 0, 0 , - 6666, 6667, 6662 ,7899, 3674, 3677 ,0, 0, 0 , - 6669, 264, 6670 ,3679, 5756, 5755 ,0, 0, 0 , - 6669, 6670, 6668 ,3679, 5755, 3680 ,0, 0, 0 , - 6670, 268, 6671 ,5755, 6247, 7900 ,0, 0, 0 , - 6670, 6671, 6668 ,5755, 7900, 3680 ,0, 0, 0 , - 6671, 253, 6672 ,7900, 6237, 3678 ,0, 0, 0 , - 6671, 6672, 6668 ,7900, 3678, 3680 ,0, 0, 0 , - 6674, 166, 6675 ,3683, 5875, 5874 ,0, 0, 0 , - 6674, 6675, 6673 ,3683, 5874, 3684 ,0, 0, 0 , - 6675, 173, 6676 ,5874, 204, 5858 ,0, 0, 0 , - 6675, 6676, 6673 ,5874, 5858, 3684 ,0, 0, 0 , - 6676, 248, 6677 ,5858, 6230, 3681 ,0, 0, 0 , - 6676, 6677, 6673 ,5858, 3681, 3684 ,0, 0, 0 , - 6679, 262, 6680 ,3686, 6242, 7901 ,0, 0, 0 , - 6679, 6680, 6678 ,3686, 7901, 3687 ,0, 0, 0 , - 6680, 163, 6681 ,7901, 5883, 3685 ,0, 0, 0 , - 6680, 6681, 6678 ,7901, 3685, 3687 ,0, 0, 0 , - 6683, 272, 6684 ,3689, 308, 5746 ,0, 0, 0 , - 6683, 6684, 6682 ,3689, 5746, 3690 ,0, 0, 0 , - 6684, 312, 6685 ,5746, 340, 7902 ,0, 0, 0 , - 6684, 6685, 6682 ,5746, 7902, 3690 ,0, 0, 0 , - 6685, 278, 6686 ,7902, 5743, 5742 ,0, 0, 0 , - 6685, 6686, 6682 ,7902, 5742, 3690 ,0, 0, 0 , - 6686, 927, 6687 ,5742, 996, 4961 ,0, 0, 0 , - 6686, 6687, 6682 ,5742, 4961, 3690 ,0, 0, 0 , - 6687, 931, 6688 ,4961, 6625, 7903 ,0, 0, 0 , - 6687, 6688, 6682 ,4961, 7903, 3690 ,0, 0, 0 , - 6688, 157, 6689 ,7903, 188, 3688 ,0, 0, 0 , - 6688, 6689, 6682 ,7903, 3688, 3690 ,0, 0, 0 , - 6691, 184, 6692 ,3692, 5847, 5846 ,0, 0, 0 , - 6691, 6692, 6690 ,3692, 5846, 3693 ,0, 0, 0 , - 6692, 273, 6693 ,5846, 6249, 7904 ,0, 0, 0 , - 6692, 6693, 6690 ,5846, 7904, 3693 ,0, 0, 0 , - 6693, 152, 6694 ,7904, 5894, 5893 ,0, 0, 0 , - 6693, 6694, 6690 ,7904, 5893, 3693 ,0, 0, 0 , - 6694, 155, 6695 ,5893, 6176, 3691 ,0, 0, 0 , - 6694, 6695, 6690 ,5893, 3691, 3693 ,0, 0, 0 , - 6697, 1828, 6698 ,3695, 7233, 7905 ,0, 0, 0 , - 6697, 6698, 6696 ,3695, 7905, 3696 ,0, 0, 0 , - 6698, 1688, 6699 ,7905, 1895, 7906 ,0, 0, 0 , - 6698, 6699, 6696 ,7905, 7906, 3696 ,0, 0, 0 , - 6699, 241, 6700 ,7906, 6227, 3694 ,0, 0, 0 , - 6699, 6700, 6696 ,7906, 3694, 3696 ,0, 0, 0 , - 6702, 136, 6703 ,3698, 165, 7907 ,0, 0, 0 , - 6702, 6703, 6701 ,3698, 7907, 3699 ,0, 0, 0 , - 6703, 128, 6704 ,7907, 6155, 3697 ,0, 0, 0 , - 6703, 6704, 6701 ,7907, 3697, 3699 ,0, 0, 0 , - 6706, 127, 6707 ,3702, 5918, 5917 ,0, 0, 0 , - 6706, 6707, 6705 ,3702, 5917, 3703 ,0, 0, 0 , - 6707, 130, 6708 ,5917, 5915, 5914 ,0, 0, 0 , - 6707, 6708, 6705 ,5917, 5914, 3703 ,0, 0, 0 , - 6708, 134, 6709 ,5914, 6159, 3700 ,0, 0, 0 , - 6708, 6709, 6705 ,5914, 3700, 3703 ,0, 0, 0 , - 6711, 133, 6712 ,3706, 5912, 5911 ,0, 0, 0 , - 6711, 6712, 6710 ,3706, 5911, 3707 ,0, 0, 0 , - 6712, 271, 6713 ,5911, 304, 7908 ,0, 0, 0 , - 6712, 6713, 6710 ,5911, 7908, 3707 ,0, 0, 0 , - 6713, 256, 6714 ,7908, 6240, 3704 ,0, 0, 0 , - 6713, 6714, 6710 ,7908, 3704, 3707 ,0, 0, 0 , - 6716, 145, 6717 ,3709, 6168, 7909 ,0, 0, 0 , - 6716, 6717, 6715 ,3709, 7909, 3710 ,0, 0, 0 , - 6717, 137, 6718 ,7909, 7910, 7911 ,0, 0, 0 , - 6717, 6718, 6715 ,7909, 7911, 3710 ,0, 0, 0 , - 6718, 126, 6719 ,7911, 5925, 5924 ,0, 0, 0 , - 6718, 6719, 6715 ,7911, 5924, 3710 ,0, 0, 0 , - 6719, 255, 6720 ,5924, 6238, 7912 ,0, 0, 0 , - 6719, 6720, 6715 ,5924, 7912, 3710 ,0, 0, 0 , - 6720, 245, 6721 ,7912, 6229, 3708 ,0, 0, 0 , - 6720, 6721, 6715 ,7912, 3708, 3710 ,0, 0, 0 , - 6723, 244, 6724 ,3713, 5771, 5770 ,0, 0, 0 , - 6723, 6724, 6722 ,3713, 5770, 3714 ,0, 0, 0 , - 6724, 249, 6725 ,5770, 6232, 7913 ,0, 0, 0 , - 6724, 6725, 6722 ,5770, 7913, 3714 ,0, 0, 0 , - 6725, 176, 6726 ,7913, 6184, 3711 ,0, 0, 0 , - 6725, 6726, 6722 ,7913, 3711, 3714 ,0, 0, 0 , - 6728, 142, 6729 ,3717, 169, 7914 ,0, 0, 0 , - 6728, 6729, 6727 ,3717, 7914, 3718 ,0, 0, 0 , - 6729, 122, 6730 ,7914, 6153, 3715 ,0, 0, 0 , - 6729, 6730, 6727 ,7914, 3715, 3718 ,0, 0, 0 , - 6732, 121, 6733 ,3721, 5931, 5930 ,0, 0, 0 , - 6732, 6733, 6731 ,3721, 5930, 3722 ,0, 0, 0 , - 6733, 175, 6734 ,5930, 5861, 5860 ,0, 0, 0 , - 6733, 6734, 6731 ,5930, 5860, 3722 ,0, 0, 0 , - 6734, 231, 6735 ,5860, 260, 7915 ,0, 0, 0 , - 6734, 6735, 6731 ,5860, 7915, 3722 ,0, 0, 0 , - 6735, 181, 6736 ,7915, 6186, 3719 ,0, 0, 0 , - 6735, 6736, 6731 ,7915, 3719, 3722 ,0, 0, 0 , - 6738, 118, 6739 ,3724, 5938, 5937 ,0, 0, 0 , - 6738, 6739, 6737 ,3724, 5937, 3725 ,0, 0, 0 , - 6739, 180, 6740 ,5937, 5855, 5854 ,0, 0, 0 , - 6739, 6740, 6737 ,5937, 5854, 3725 ,0, 0, 0 , - 6740, 185, 6741 ,5854, 6188, 7916 ,0, 0, 0 , - 6740, 6741, 6737 ,5854, 7916, 3725 ,0, 0, 0 , - 6741, 149, 6742 ,7916, 6173, 3723 ,0, 0, 0 , - 6741, 6742, 6737 ,7916, 3723, 3725 ,0, 0, 0 , - 6744, 139, 6745 ,3727, 5902, 5901 ,0, 0, 0 , - 6744, 6745, 6743 ,3727, 5901, 3728 ,0, 0, 0 , - 6745, 143, 6746 ,5901, 6166, 7917 ,0, 0, 0 , - 6745, 6746, 6743 ,5901, 7917, 3728 ,0, 0, 0 , - 6746, 115, 6747 ,7917, 135, 7918 ,0, 0, 0 , - 6746, 6747, 6743 ,7917, 7918, 3728 ,0, 0, 0 , - 6747, 114, 6748 ,7918, 6151, 3726 ,0, 0, 0 , - 6747, 6748, 6743 ,7918, 3726, 3728 ,0, 0, 0 , - 6750, 140, 6751 ,3730, 6163, 7919 ,0, 0, 0 , - 6750, 6751, 6749 ,3730, 7919, 3731 ,0, 0, 0 , - 6751, 111, 6752 ,7919, 6149, 3729 ,0, 0, 0 , - 6751, 6752, 6749 ,7919, 3729, 3731 ,0, 0, 0 , - 6754, 1860, 6755 ,3733, 7251, 7920 ,0, 0, 0 , - 6754, 6755, 6753 ,3733, 7920, 3734 ,0, 0, 0 , - 6755, 1831, 6756 ,7920, 2052, 7921 ,0, 0, 0 , - 6755, 6756, 6753 ,7920, 7921, 3734 ,0, 0, 0 , - 6756, 1829, 6757 ,7921, 7235, 7922 ,0, 0, 0 , - 6756, 6757, 6753 ,7921, 7922, 3734 ,0, 0, 0 , - 6757, 135, 6758 ,7922, 6161, 7923 ,0, 0, 0 , - 6757, 6758, 6753 ,7922, 7923, 3734 ,0, 0, 0 , - 6758, 129, 6759 ,7923, 151, 3732 ,0, 0, 0 , - 6758, 6759, 6753 ,7923, 3732, 3734 ,0, 0, 0 , - 6761, 1864, 6762 ,3737, 7924, 7925 ,0, 0, 0 , - 6761, 6762, 6760 ,3737, 7925, 3738 ,0, 0, 0 , - 6762, 1861, 6763 ,7925, 7253, 7926 ,0, 0, 0 , - 6762, 6763, 6760 ,7925, 7926, 3738 ,0, 0, 0 , - 6763, 100, 6764 ,7926, 6141, 3735 ,0, 0, 0 , - 6763, 6764, 6760 ,7926, 3735, 3738 ,0, 0, 0 , - 6766, 99, 6767 ,3741, 5961, 5960 ,0, 0, 0 , - 6766, 6767, 6765 ,3741, 5960, 3742 ,0, 0, 0 , - 6767, 103, 6768 ,5960, 5953, 5952 ,0, 0, 0 , - 6767, 6768, 6765 ,5960, 5952, 3742 ,0, 0, 0 , - 6768, 59, 6769 ,5952, 61, 3739 ,0, 0, 0 , - 6768, 6769, 6765 ,5952, 3739, 3742 ,0, 0, 0 , - 6771, 1865, 6772 ,3744, 2088, 7927 ,0, 0, 0 , - 6771, 6772, 6770 ,3744, 7927, 3745 ,0, 0, 0 , - 6772, 1864, 6761 ,7927, 7924, 3737 ,0, 0, 0 , - 6772, 6761, 6770 ,7927, 3737, 3745 ,0, 0, 0 , - 6761, 95, 6773 ,3737, 3736, 3743 ,0, 0, 0 , - 6761, 6773, 6770 ,3737, 3743, 3745 ,0, 0, 0 , - 6775, 96, 6769 ,3747, 3740, 3739 ,0, 0, 0 , - 6775, 6769, 6774 ,3747, 3739, 3748 ,0, 0, 0 , - 6769, 59, 6776 ,3739, 61, 3746 ,0, 0, 0 , - 6769, 6776, 6774 ,3739, 3746, 3748 ,0, 0, 0 , - 6778, 1871, 6779 ,3750, 7255, 7928 ,0, 0, 0 , - 6778, 6779, 6777 ,3750, 7928, 3751 ,0, 0, 0 , - 6779, 1869, 6780 ,7928, 7254, 7929 ,0, 0, 0 , - 6779, 6780, 6777 ,7928, 7929, 3751 ,0, 0, 0 , - 6780, 92, 6781 ,7929, 6139, 3749 ,0, 0, 0 , - 6780, 6781, 6777 ,7929, 3749, 3751 ,0, 0, 0 , - 6783, 91, 6784 ,3754, 5969, 5968 ,0, 0, 0 , - 6783, 6784, 6782 ,3754, 5968, 3755 ,0, 0, 0 , - 6784, 172, 6785 ,5968, 7930, 3752 ,0, 0, 0 , - 6784, 6785, 6782 ,5968, 3752, 3755 ,0, 0, 0 , - 6787, 1891, 6788 ,3757, 7261, 7931 ,0, 0, 0 , - 6787, 6788, 6786 ,3757, 7931, 3758 ,0, 0, 0 , - 6788, 1871, 6778 ,7931, 7255, 3750 ,0, 0, 0 , - 6788, 6778, 6786 ,7931, 3750, 3758 ,0, 0, 0 , - 6778, 87, 6789 ,3750, 99, 3756 ,0, 0, 0 , - 6778, 6789, 6786 ,3750, 3756, 3758 ,0, 0, 0 , - 6791, 89, 6792 ,3761, 5975, 5974 ,0, 0, 0 , - 6791, 6792, 6790 ,3761, 5974, 3762 ,0, 0, 0 , - 6792, 59, 6793 ,5974, 61, 3759 ,0, 0, 0 , - 6792, 6793, 6790 ,5974, 3759, 3762 ,0, 0, 0 , - 6795, 1894, 6796 ,3764, 2126, 7932 ,0, 0, 0 , - 6795, 6796, 6794 ,3764, 7932, 3765 ,0, 0, 0 , - 6796, 1892, 6797 ,7932, 7263, 7933 ,0, 0, 0 , - 6796, 6797, 6794 ,7932, 7933, 3765 ,0, 0, 0 , - 6797, 74, 6798 ,7933, 6124, 3763 ,0, 0, 0 , - 6797, 6798, 6794 ,7933, 3763, 3765 ,0, 0, 0 , - 6800, 75, 6801 ,3767, 81, 5980 ,0, 0, 0 , - 6800, 6801, 6799 ,3767, 5980, 3768 ,0, 0, 0 , - 6801, 68, 6802 ,5980, 92, 3766 ,0, 0, 0 , - 6801, 6802, 6799 ,5980, 3766, 3768 ,0, 0, 0 , - 6804, 67, 6805 ,3771, 5993, 5992 ,0, 0, 0 , - 6804, 6805, 6803 ,3771, 5992, 3772 ,0, 0, 0 , - 6805, 73, 6806 ,5992, 6122, 3769 ,0, 0, 0 , - 6805, 6806, 6803 ,5992, 3769, 3772 ,0, 0, 0 , - 6808, 72, 6809 ,3775, 5988, 5987 ,0, 0, 0 , - 6808, 6809, 6807 ,3775, 5987, 3776 ,0, 0, 0 , - 6809, 59, 6810 ,5987, 61, 3773 ,0, 0, 0 , - 6809, 6810, 6807 ,5987, 3773, 3776 ,0, 0, 0 , - 6812, 76, 6813 ,3779, 3836, 7934 ,0, 0, 0 , - 6812, 6813, 6811 ,3779, 7934, 3780 ,0, 0, 0 , - 6813, 65, 6814 ,7934, 6119, 3777 ,0, 0, 0 , - 6813, 6814, 6811 ,7934, 3777, 3780 ,0, 0, 0 , - 6816, 57, 6817 ,3782, 6113, 7935 ,0, 0, 0 , - 6816, 6817, 6815 ,3782, 7935, 3783 ,0, 0, 0 , - 6817, 60, 6818 ,7935, 6116, 3781 ,0, 0, 0 , - 6817, 6818, 6815 ,7935, 3781, 3783 ,0, 0, 0 , - 6820, 59, 6821 ,3786, 61, 5982 ,0, 0, 0 , - 6820, 6821, 6819 ,3786, 5982, 3787 ,0, 0, 0 , - 6821, 101, 6822 ,5982, 119, 3784 ,0, 0, 0 , - 6821, 6822, 6819 ,5982, 3784, 3787 ,0, 0, 0 , - 6824, 104, 6825 ,3790, 6144, 7936 ,0, 0, 0 , - 6824, 6825, 6823 ,3790, 7936, 3791 ,0, 0, 0 , - 6825, 98, 6826 ,7936, 5958, 5957 ,0, 0, 0 , - 6825, 6826, 6823 ,7936, 5957, 3791 ,0, 0, 0 , - 6826, 131, 6827 ,5957, 6157, 7937 ,0, 0, 0 , - 6826, 6827, 6823 ,5957, 7937, 3791 ,0, 0, 0 , - 6827, 107, 6828 ,7937, 147, 3788 ,0, 0, 0 , - 6827, 6828, 6823 ,7937, 3788, 3791 ,0, 0, 0 , - 6830, 54, 6831 ,3793, 6011, 6010 ,0, 0, 0 , - 6830, 6831, 6829 ,3793, 6010, 3794 ,0, 0, 0 , - 6831, 106, 6832 ,6010, 5950, 5949 ,0, 0, 0 , - 6831, 6832, 6829 ,6010, 5949, 3794 ,0, 0, 0 , - 6832, 110, 6833 ,5949, 6147, 3792 ,0, 0, 0 , - 6832, 6833, 6829 ,5949, 3792, 3794 ,0, 0, 0 , - 6835, 109, 6836 ,3797, 5947, 5946 ,0, 0, 0 , - 6835, 6836, 6834 ,3797, 5946, 3798 ,0, 0, 0 , - 6836, 113, 6837 ,5946, 5943, 5942 ,0, 0, 0 , - 6836, 6837, 6834 ,5946, 5942, 3798 ,0, 0, 0 , - 6837, 148, 6838 ,5942, 6171, 3795 ,0, 0, 0 , - 6837, 6838, 6834 ,5942, 3795, 3798 ,0, 0, 0 , - 6840, 81, 6841 ,3800, 6131, 7938 ,0, 0, 0 , - 6840, 6841, 6839 ,3800, 7938, 3801 ,0, 0, 0 , - 6841, 58, 6842 ,7938, 6115, 7939 ,0, 0, 0 , - 6841, 6842, 6839 ,7938, 7939, 3801 ,0, 0, 0 , - 6842, 55, 6843 ,7939, 6112, 7940 ,0, 0, 0 , - 6842, 6843, 6839 ,7939, 7940, 3801 ,0, 0, 0 , - 6843, 49, 6844 ,7940, 6110, 3799 ,0, 0, 0 , - 6843, 6844, 6839 ,7940, 3799, 3801 ,0, 0, 0 , - 6846, 48, 6847 ,3804, 6017, 6016 ,0, 0, 0 , - 6846, 6847, 6845 ,3804, 6016, 3805 ,0, 0, 0 , - 6847, 147, 6848 ,6016, 5899, 5898 ,0, 0, 0 , - 6847, 6848, 6845 ,6016, 5898, 3805 ,0, 0, 0 , - 6848, 154, 6849 ,5898, 6174, 3802 ,0, 0, 0 , - 6848, 6849, 6845 ,5898, 3802, 3805 ,0, 0, 0 , - 6851, 156, 6852 ,3808, 6178, 7941 ,0, 0, 0 , - 6851, 6852, 6850 ,3808, 7941, 3809 ,0, 0, 0 , - 6852, 151, 6853 ,7941, 5891, 5890 ,0, 0, 0 , - 6852, 6853, 6850 ,7941, 5890, 3809 ,0, 0, 0 , - 6853, 159, 6854 ,5890, 6180, 7942 ,0, 0, 0 , - 6853, 6854, 6850 ,5890, 7942, 3809 ,0, 0, 0 , - 6854, 37, 6855 ,7942, 6103, 3806 ,0, 0, 0 , - 6854, 6855, 6850 ,7942, 3806, 3809 ,0, 0, 0 , - 6857, 34, 6858 ,3812, 6034, 6033 ,0, 0, 0 , - 6857, 6858, 6856 ,3812, 6033, 3813 ,0, 0, 0 , - 6858, 36, 6859 ,6033, 37, 6026 ,0, 0, 0 , - 6858, 6859, 6856 ,6033, 6026, 3813 ,0, 0, 0 , - 6859, 41, 6860 ,6026, 6106, 3810 ,0, 0, 0 , - 6859, 6860, 6856 ,6026, 3810, 3813 ,0, 0, 0 , - 6862, 80, 6863 ,3815, 85, 7943 ,0, 0, 0 , - 6862, 6863, 6861 ,3815, 7943, 3816 ,0, 0, 0 , - 6863, 45, 6864 ,7943, 6108, 3814 ,0, 0, 0 , - 6863, 6864, 6861 ,7943, 3814, 3816 ,0, 0, 0 , - 6866, 44, 6867 ,3819, 6023, 6022 ,0, 0, 0 , - 6866, 6867, 6865 ,3819, 6022, 3820 ,0, 0, 0 , - 6867, 153, 6868 ,6022, 184, 7944 ,0, 0, 0 , - 6867, 6868, 6865 ,6022, 7944, 3820 ,0, 0, 0 , - 6868, 32, 6869 ,7944, 33, 3817 ,0, 0, 0 , - 6868, 6869, 6865 ,7944, 3817, 3820 ,0, 0, 0 , - 6871, 35, 6872 ,3823, 6102, 7945 ,0, 0, 0 , - 6871, 6872, 6870 ,3823, 7945, 3824 ,0, 0, 0 , - 6872, 28, 6873 ,7945, 29, 3821 ,0, 0, 0 , - 6872, 6873, 6870 ,7945, 3821, 3824 ,0, 0, 0 , - 6875, 56, 6876 ,3826, 57, 6000 ,0, 0, 0 , - 6875, 6876, 6874 ,3826, 6000, 3827 ,0, 0, 0 , - 6876, 79, 6877 ,6000, 6129, 7946 ,0, 0, 0 , - 6876, 6877, 6874 ,6000, 7946, 3827 ,0, 0, 0 , - 6877, 27, 6878 ,7946, 6100, 3825 ,0, 0, 0 , - 6877, 6878, 6874 ,7946, 3825, 3827 ,0, 0, 0 , - 6880, 26, 6881 ,3830, 6051, 6050 ,0, 0, 0 , - 6880, 6881, 6879 ,3830, 6050, 3831 ,0, 0, 0 , - 6881, 31, 6882 ,6050, 6043, 6042 ,0, 0, 0 , - 6881, 6882, 6879 ,6050, 6042, 3831 ,0, 0, 0 , - 6882, 84, 6883 ,6042, 95, 3828 ,0, 0, 0 , - 6882, 6883, 6879 ,6042, 3828, 3831 ,0, 0, 0 , - 6885, 60, 6817 ,3833, 6116, 7935 ,0, 0, 0 , - 6885, 6817, 6884 ,3833, 7935, 3834 ,0, 0, 0 , - 6817, 57, 6886 ,7935, 6113, 7947 ,0, 0, 0 , - 6817, 6886, 6884 ,7935, 7947, 3834 ,0, 0, 0 , - 6886, 22, 6887 ,7947, 6098, 3832 ,0, 0, 0 , - 6886, 6887, 6884 ,7947, 3832, 3834 ,0, 0, 0 , - 6812, 61, 6889 ,3779, 3778, 7948 ,0, 0, 0 , - 6812, 6889, 6888 ,3779, 7948, 3837 ,0, 0, 0 , - 6889, 18, 6890 ,7948, 6064, 3835 ,0, 0, 0 , - 6889, 6890, 6888 ,7948, 3835, 3837 ,0, 0, 0 , - 6892, 1887, 6893 ,3839, 7258, 7949 ,0, 0, 0 , - 6892, 6893, 6891 ,3839, 7949, 3840 ,0, 0, 0 , - 6893, 1877, 6894 ,7949, 7256, 7950 ,0, 0, 0 , - 6893, 6894, 6891 ,7949, 7950, 3840 ,0, 0, 0 , - 6894, 83, 6895 ,7950, 6133, 7951 ,0, 0, 0 , - 6894, 6895, 6891 ,7950, 7951, 3840 ,0, 0, 0 , - 6895, 78, 6896 ,7951, 6128, 3838 ,0, 0, 0 , - 6895, 6896, 6891 ,7951, 3838, 3840 ,0, 0, 0 , - 6898, 1944, 6899 ,3842, 7303, 7952 ,0, 0, 0 , - 6898, 6899, 6897 ,3842, 7952, 3843 ,0, 0, 0 , - 6899, 14, 6900 ,7952, 6094, 3841 ,0, 0, 0 , - 6899, 6900, 6897 ,7952, 3841, 3843 ,0, 0, 0 , - 6902, 13, 6903 ,3846, 6068, 6067 ,0, 0, 0 , - 6902, 6903, 6901 ,3846, 6067, 3847 ,0, 0, 0 , - 6903, 77, 6904 ,6067, 6126, 7953 ,0, 0, 0 , - 6903, 6904, 6901 ,6067, 7953, 3847 ,0, 0, 0 , - 6904, 17, 6905 ,7953, 6096, 3844 ,0, 0, 0 , - 6904, 6905, 6901 ,7953, 3844, 3847 ,0, 0, 0 , - 6907, 1948, 6908 ,3849, 7306, 7954 ,0, 0, 0 , - 6907, 6908, 6906 ,3849, 7954, 3850 ,0, 0, 0 , - 6908, 1945, 6909 ,7954, 7305, 7955 ,0, 0, 0 , - 6908, 6909, 6906 ,7954, 7955, 3850 ,0, 0, 0 , - 6909, 11, 6910 ,7955, 6092, 3848 ,0, 0, 0 , - 6909, 6910, 6906 ,7955, 3848, 3850 ,0, 0, 0 , - 6912, 10, 6913 ,3853, 6073, 6072 ,0, 0, 0 , - 6912, 6913, 6911 ,3853, 6072, 3854 ,0, 0, 0 , - 6913, 16, 6914 ,6072, 6062, 6061 ,0, 0, 0 , - 6913, 6914, 6911 ,6072, 6061, 3854 ,0, 0, 0 , - 6914, 21, 6915 ,6061, 6057, 6056 ,0, 0, 0 , - 6914, 6915, 6911 ,6061, 6056, 3854 ,0, 0, 0 , - 6915, 86, 6916 ,6056, 6137, 3851 ,0, 0, 0 , - 6915, 6916, 6911 ,6056, 3851, 3854 ,0, 0, 0 , - 6918, 1952, 6919 ,3856, 7309, 7956 ,0, 0, 0 , - 6918, 6919, 6917 ,3856, 7956, 3857 ,0, 0, 0 , - 6919, 1949, 6920 ,7956, 7308, 7957 ,0, 0, 0 , - 6919, 6920, 6917 ,7956, 7957, 3857 ,0, 0, 0 , - 6920, 7, 6921 ,7957, 6090, 3855 ,0, 0, 0 , - 6920, 6921, 6917 ,7957, 3855, 3857 ,0, 0, 0 , - 6923, 6, 6924 ,3860, 6079, 6078 ,0, 0, 0 , - 6923, 6924, 6922 ,3860, 6078, 3861 ,0, 0, 0 , - 6924, 85, 6925 ,6078, 6135, 7958 ,0, 0, 0 , - 6924, 6925, 6922 ,6078, 7958, 3861 ,0, 0, 0 , - 6925, 30, 6926 ,7958, 6039, 6038 ,0, 0, 0 , - 6925, 6926, 6922 ,7958, 6038, 3861 ,0, 0, 0 , - 6926, 40, 6927 ,6038, 6104, 3858 ,0, 0, 0 , - 6926, 6927, 6922 ,6038, 3858, 3861 ,0, 0, 0 , - 6929, 39, 6930 ,3864, 41, 7959 ,0, 0, 0 , - 6929, 6930, 6928 ,3864, 7959, 3865 ,0, 0, 0 , - 6930, 38, 6931 ,7959, 6029, 6028 ,0, 0, 0 , - 6930, 6931, 6928 ,7959, 6028, 3865 ,0, 0, 0 , - 6931, 158, 6932 ,6028, 5887, 5886 ,0, 0, 0 , - 6931, 6932, 6928 ,6028, 5886, 3865 ,0, 0, 0 , - 6932, 930, 6933 ,5886, 1000, 4959 ,0, 0, 0 , - 6932, 6933, 6928 ,5886, 4959, 3865 ,0, 0, 0 , - 6933, 934, 6934 ,4959, 1004, 7960 ,0, 0, 0 , - 6933, 6934, 6928 ,4959, 7960, 3865 ,0, 0, 0 , - 6934, 915, 6935 ,7960, 6615, 3862 ,0, 0, 0 , - 6934, 6935, 6928 ,7960, 3862, 3865 ,0, 0, 0 , - 6937, 1069, 6938 ,3868, 1224, 3870 ,0, 0, 0 , - 6937, 6938, 6936 ,3868, 3870, 3869 ,0, 0, 0 , - 6938, 1953, 6939 ,3870, 7311, 7961 ,0, 0, 0 , - 6938, 6939, 6936 ,3870, 7961, 3869 ,0, 0, 0 , - 6939, 3, 6940 ,7961, 6086, 3866 ,0, 0, 0 , - 6939, 6940, 6936 ,7961, 3866, 3869 ,0, 0, 0 , - 3386, 1072, 4540 ,1223, 6712, 7315 ,0, 0, 0 , - 3386, 4540, 6941 ,1223, 7315, 3871 ,0, 0, 0 , - 4540, 1954, 4533 ,7315, 7313, 7312 ,0, 0, 0 , - 4540, 4533, 6941 ,7315, 7312, 3871 ,0, 0, 0 , - 4533, 1953, 6938 ,7312, 7311, 3870 ,0, 0, 0 , - 4533, 6938, 6941 ,7312, 3870, 3871 ,0, 0, 0 , - 4486, 1917, 4547 ,2155, 3914, 7317 ,0, 0, 0 , - 4486, 4547, 6942 ,2155, 7317, 3873 ,0, 0, 0 , - 4547, 1951, 4534 ,7317, 2194, 2193 ,0, 0, 0 , - 4547, 4534, 6942 ,7317, 2193, 3873 ,0, 0, 0 , - 4534, 1954, 4539 ,2193, 7313, 3872 ,0, 0, 0 , - 4534, 4539, 6942 ,2193, 3872, 3873 ,0, 0, 0 , - 4528, 1949, 6919 ,3876, 7308, 7956 ,0, 0, 0 , - 4528, 6919, 6943 ,3876, 7956, 3877 ,0, 0, 0 , - 6919, 1952, 4531 ,7956, 7309, 2195 ,0, 0, 0 , - 6919, 4531, 6943 ,7956, 2195, 3877 ,0, 0, 0 , - 4531, 1951, 4546 ,2195, 2194, 3874 ,0, 0, 0 , - 4531, 4546, 6943 ,2195, 3874, 3877 ,0, 0, 0 , - 4424, 1874, 4553 ,3880, 3899, 7318 ,0, 0, 0 , - 4424, 4553, 6944 ,3880, 7318, 3881 ,0, 0, 0 , - 4553, 1947, 4529 ,7318, 2190, 2189 ,0, 0, 0 , - 4553, 4529, 6944 ,7318, 2189, 3881 ,0, 0, 0 , - 4529, 1950, 4545 ,2189, 3875, 3878 ,0, 0, 0 , - 4529, 4545, 6944 ,2189, 3878, 3881 ,0, 0, 0 , - 4523, 1945, 6908 ,3884, 7305, 7954 ,0, 0, 0 , - 4523, 6908, 6945 ,3884, 7954, 3885 ,0, 0, 0 , - 6908, 1948, 4526 ,7954, 7306, 2191 ,0, 0, 0 , - 6908, 4526, 6945 ,7954, 2191, 3885 ,0, 0, 0 , - 4526, 1947, 4552 ,2191, 2190, 3882 ,0, 0, 0 , - 4526, 4552, 6945 ,2191, 3882, 3885 ,0, 0, 0 , - 4516, 1941, 4558 ,2179, 7302, 7319 ,0, 0, 0 , - 4516, 4558, 6946 ,2179, 7319, 3887 ,0, 0, 0 , - 4558, 1943, 4524 ,7319, 2186, 2185 ,0, 0, 0 , - 4558, 4524, 6946 ,7319, 2185, 3887 ,0, 0, 0 , - 4524, 1946, 4551 ,2185, 3883, 3886 ,0, 0, 0 , - 4524, 4551, 6946 ,2185, 3886, 3887 ,0, 0, 0 , - 4518, 14, 6899 ,3890, 6094, 7952 ,0, 0, 0 , - 4518, 6899, 6947 ,3890, 7952, 3891 ,0, 0, 0 , - 6899, 1944, 4521 ,7952, 7303, 2187 ,0, 0, 0 , - 6899, 4521, 6947 ,7952, 2187, 3891 ,0, 0, 0 , - 4521, 1943, 4557 ,2187, 2186, 3888 ,0, 0, 0 , - 4521, 4557, 6947 ,2187, 3888, 3891 ,0, 0, 0 , - 4439, 1887, 6892 ,3892, 7258, 3839 ,0, 0, 0 , - 4439, 6892, 6948 ,3892, 3839, 3893 ,0, 0, 0 , - 6892, 12, 4519 ,3839, 13, 2183 ,0, 0, 0 , - 6892, 4519, 6948 ,3839, 2183, 3893 ,0, 0, 0 , - 4519, 1942, 4556 ,2183, 3889, 2211 ,0, 0, 0 , - 4519, 4556, 6948 ,2183, 2211, 3893 ,0, 0, 0 , - 4440, 1888, 4559 ,2117, 2210, 2209 ,0, 0, 0 , - 4440, 4559, 6949 ,2117, 2209, 3894 ,0, 0, 0 , - 4559, 1941, 4515 ,2209, 7302, 7301 ,0, 0, 0 , - 4559, 4515, 6949 ,2209, 7301, 3894 ,0, 0, 0 , - 4515, 1940, 4561 ,7301, 7300, 2214 ,0, 0, 0 , - 4515, 4561, 6949 ,7301, 2214, 3894 ,0, 0, 0 , - 4510, 1936, 4566 ,3895, 7297, 7321 ,0, 0, 0 , - 4510, 4566, 6950 ,3895, 7321, 3896 ,0, 0, 0 , - 4566, 1939, 4513 ,7321, 7298, 2181 ,0, 0, 0 , - 4566, 4513, 6950 ,7321, 2181, 3896 ,0, 0, 0 , - 4513, 1938, 4550 ,2181, 2180, 2207 ,0, 0, 0 , - 4513, 4550, 6950 ,2181, 2207, 3896 ,0, 0, 0 , - 4460, 1880, 4562 ,3897, 2269, 7320 ,0, 0, 0 , - 4460, 4562, 6951 ,3897, 7320, 3898 ,0, 0, 0 , - 4562, 1940, 4514 ,7320, 7300, 7299 ,0, 0, 0 , - 4562, 4514, 6951 ,7320, 7299, 3898 ,0, 0, 0 , - 4514, 1939, 4565 ,7299, 7298, 2218 ,0, 0, 0 , - 4514, 4565, 6951 ,7299, 2218, 3898 ,0, 0, 0 , - 4423, 1873, 4572 ,2105, 2104, 7323 ,0, 0, 0 , - 4423, 4572, 6952 ,2105, 7323, 3900 ,0, 0, 0 , - 4572, 1934, 4511 ,7323, 2176, 2175 ,0, 0, 0 , - 4572, 4511, 6952 ,7323, 2175, 3900 ,0, 0, 0 , - 4511, 1937, 4554 ,2175, 2206, 2205 ,0, 0, 0 , - 4511, 4554, 6952 ,2175, 2205, 3900 ,0, 0, 0 , - 4505, 1932, 4576 ,3903, 7294, 7324 ,0, 0, 0 , - 4505, 4576, 6953 ,3903, 7324, 3904 ,0, 0, 0 , - 4576, 1935, 4508 ,7324, 7295, 2177 ,0, 0, 0 , - 4576, 4508, 6953 ,7324, 2177, 3904 ,0, 0, 0 , - 4508, 1934, 4571 ,2177, 2176, 3901 ,0, 0, 0 , - 4508, 4571, 6953 ,2177, 3901, 3904 ,0, 0, 0 , - 4463, 1883, 4567 ,2141, 2140, 7322 ,0, 0, 0 , - 4463, 4567, 6954 ,2141, 7322, 3905 ,0, 0, 0 , - 4567, 1936, 4509 ,7322, 7297, 7296 ,0, 0, 0 , - 4567, 4509, 6954 ,7322, 7296, 3905 ,0, 0, 0 , - 4509, 1935, 4575 ,7296, 7295, 2226 ,0, 0, 0 , - 4509, 4575, 6954 ,7296, 2226, 3905 ,0, 0, 0 , - 4498, 1926, 4581 ,3906, 7288, 7326 ,0, 0, 0 , - 4498, 4581, 6955 ,3906, 7326, 3907 ,0, 0, 0 , - 4581, 1929, 4506 ,7326, 2172, 2171 ,0, 0, 0 , - 4581, 4506, 6955 ,7326, 2171, 3907 ,0, 0, 0 , - 4506, 1933, 4570 ,2171, 3902, 2222 ,0, 0, 0 , - 4506, 4570, 6955 ,2171, 2222, 3907 ,0, 0, 0 , - 4493, 1922, 4585 ,3908, 7287, 7327 ,0, 0, 0 , - 4493, 4585, 6956 ,3908, 7327, 3909 ,0, 0, 0 , - 4585, 1930, 4502 ,7327, 7290, 2173 ,0, 0, 0 , - 4585, 4502, 6956 ,7327, 2173, 3909 ,0, 0, 0 , - 4502, 1929, 4580 ,2173, 2172, 2230 ,0, 0, 0 , - 4502, 4580, 6956 ,2173, 2230, 3909 ,0, 0, 0 , - 4481, 1913, 4590 ,3910, 7283, 7329 ,0, 0, 0 , - 4481, 4590, 6957 ,3910, 7329, 3911 ,0, 0, 0 , - 4590, 1931, 4503 ,7329, 7292, 7291 ,0, 0, 0 , - 4590, 4503, 6957 ,7329, 7291, 3911 ,0, 0, 0 , - 4503, 1930, 4584 ,7291, 7290, 2234 ,0, 0, 0 , - 4503, 4584, 6957 ,7291, 2234, 3911 ,0, 0, 0 , - 4435, 1886, 4577 ,2113, 3957, 7325 ,0, 0, 0 , - 4435, 4577, 6958 ,2113, 7325, 3912 ,0, 0, 0 , - 4577, 1932, 4504 ,7325, 7294, 7293 ,0, 0, 0 , - 4577, 4504, 6958 ,7325, 7293, 3912 ,0, 0, 0 , - 4504, 1931, 4589 ,7293, 7292, 2237 ,0, 0, 0 , - 4504, 4589, 6958 ,7293, 2237, 3912 ,0, 0, 0 , - 4425, 1875, 4544 ,2103, 3879, 2203 ,0, 0, 0 , - 4425, 4544, 6959 ,2103, 2203, 3913 ,0, 0, 0 , - 4544, 1928, 4499 ,2203, 2202, 7289 ,0, 0, 0 , - 4544, 4499, 6959 ,2203, 7289, 3913 ,0, 0, 0 , - 4499, 1927, 4573 ,7289, 2221, 2220 ,0, 0, 0 , - 4499, 4573, 6959 ,7289, 2220, 3913 ,0, 0, 0 , - 4485, 1916, 4595 ,3915, 3930, 7330 ,0, 0, 0 , - 4485, 4595, 6960 ,3915, 7330, 3916 ,0, 0, 0 , - 4595, 1925, 4500 ,7330, 2168, 2167 ,0, 0, 0 , - 4595, 4500, 6960 ,7330, 2167, 3916 ,0, 0, 0 , - 4500, 1928, 4548 ,2167, 2202, 2201 ,0, 0, 0 , - 4500, 4548, 6960 ,2167, 2201, 3916 ,0, 0, 0 , - 4494, 1923, 4582 ,3919, 2229, 2228 ,0, 0, 0 , - 4494, 4582, 6961 ,3919, 2228, 3920 ,0, 0, 0 , - 4582, 1926, 4497 ,2228, 7288, 2169 ,0, 0, 0 , - 4582, 4497, 6961 ,2228, 2169, 3920 ,0, 0, 0 , - 4497, 1925, 4594 ,2169, 2168, 3917 ,0, 0, 0 , - 4497, 4594, 6961 ,2169, 3917, 3920 ,0, 0, 0 , - 4490, 1920, 4600 ,2159, 7286, 7331 ,0, 0, 0 , - 4490, 4600, 6962 ,2159, 7331, 3921 ,0, 0, 0 , - 4600, 1921, 4495 ,7331, 2164, 2163 ,0, 0, 0 , - 4600, 4495, 6962 ,7331, 2163, 3921 ,0, 0, 0 , - 4495, 1924, 4593 ,2163, 3918, 2240 ,0, 0, 0 , - 4495, 4593, 6962 ,2163, 2240, 3921 ,0, 0, 0 , - 4328, 1806, 4586 ,3924, 3932, 7328 ,0, 0, 0 , - 4328, 4586, 6963 ,3924, 7328, 3925 ,0, 0, 0 , - 4586, 1922, 4492 ,7328, 7287, 2165 ,0, 0, 0 , - 4586, 4492, 6963 ,7328, 2165, 3925 ,0, 0, 0 , - 4492, 1921, 4599 ,2165, 2164, 3922 ,0, 0, 0 , - 4492, 4599, 6963 ,2165, 3922, 3925 ,0, 0, 0 , - 4324, 1803, 4601 ,3928, 4058, 7332 ,0, 0, 0 , - 4324, 4601, 6964 ,3928, 7332, 3929 ,0, 0, 0 , - 4601, 1920, 4489 ,7332, 7286, 7285 ,0, 0, 0 , - 4601, 4489, 6964 ,7332, 7285, 3929 ,0, 0, 0 , - 4489, 1919, 4537 ,7285, 7284, 3926 ,0, 0, 0 , - 4489, 4537, 6964 ,7285, 3926, 3929 ,0, 0, 0 , - 4484, 1915, 4538 ,2157, 2156, 7314 ,0, 0, 0 , - 4484, 4538, 6965 ,2157, 7314, 3931 ,0, 0, 0 , - 4538, 1919, 4488 ,7314, 7284, 2161 ,0, 0, 0 , - 4538, 4488, 6965 ,7314, 2161, 3931 ,0, 0, 0 , - 4488, 1918, 4596 ,2161, 2160, 2239 ,0, 0, 0 , - 4488, 4596, 6965 ,2161, 2239, 3931 ,0, 0, 0 , - 4327, 1805, 4606 ,2018, 2017, 7333 ,0, 0, 0 , - 4327, 4606, 6966 ,2018, 7333, 3933 ,0, 0, 0 , - 4606, 1911, 4482 ,7333, 2152, 2151 ,0, 0, 0 , - 4606, 4482, 6966 ,7333, 2151, 3933 ,0, 0, 0 , - 4482, 1914, 4587 ,2151, 2233, 2232 ,0, 0, 0 , - 4482, 4587, 6966 ,2151, 2232, 3933 ,0, 0, 0 , - 4476, 1909, 4610 ,3936, 7280, 7334 ,0, 0, 0 , - 4476, 4610, 6967 ,3936, 7334, 3937 ,0, 0, 0 , - 4610, 1912, 4479 ,7334, 7281, 2153 ,0, 0, 0 , - 4610, 4479, 6967 ,7334, 2153, 3937 ,0, 0, 0 , - 4479, 1911, 4605 ,2153, 2152, 3934 ,0, 0, 0 , - 4479, 4605, 6967 ,2153, 3934, 3937 ,0, 0, 0 , - 4433, 1884, 4591 ,2115, 2114, 2236 ,0, 0, 0 , - 4433, 4591, 6968 ,2115, 2236, 3938 ,0, 0, 0 , - 4591, 1913, 4480 ,2236, 7283, 7282 ,0, 0, 0 , - 4591, 4480, 6968 ,2236, 7282, 3938 ,0, 0, 0 , - 4480, 1912, 4609 ,7282, 7281, 2251 ,0, 0, 0 , - 4480, 4609, 6968 ,7282, 2251, 3938 ,0, 0, 0 , - 4339, 1815, 4617 ,2024, 4001, 7337 ,0, 0, 0 , - 4339, 4617, 6969 ,2024, 7337, 3939 ,0, 0, 0 , - 4617, 1907, 4477 ,7337, 2148, 2147 ,0, 0, 0 , - 4617, 4477, 6969 ,7337, 2147, 3939 ,0, 0, 0 , - 4477, 1910, 4604 ,2147, 3935, 2247 ,0, 0, 0 , - 4477, 4604, 6969 ,2147, 2247, 3939 ,0, 0, 0 , - 4394, 1853, 4622 ,2073, 3995, 7338 ,0, 0, 0 , - 4394, 4622, 6970 ,2073, 7338, 3941 ,0, 0, 0 , - 4622, 1908, 4474 ,7338, 7278, 2149 ,0, 0, 0 , - 4622, 4474, 6970 ,7338, 2149, 3941 ,0, 0, 0 , - 4474, 1907, 4616 ,2149, 2148, 3940 ,0, 0, 0 , - 4474, 4616, 6970 ,2149, 3940, 3941 ,0, 0, 0 , - 4471, 1905, 4611 ,3944, 7277, 7335 ,0, 0, 0 , - 4471, 4611, 6971 ,3944, 7335, 3945 ,0, 0, 0 , - 4611, 1909, 4475 ,7335, 7280, 7279 ,0, 0, 0 , - 4611, 4475, 6971 ,7335, 7279, 3945 ,0, 0, 0 , - 4475, 1908, 4621 ,7279, 7278, 3942 ,0, 0, 0 , - 4475, 4621, 6971 ,7279, 3942, 3945 ,0, 0, 0 , - 4396, 1824, 4629 ,3946, 2044, 2261 ,0, 0, 0 , - 4396, 4629, 6972 ,3946, 2261, 3947 ,0, 0, 0 , - 4629, 1901, 4472 ,2261, 2144, 2143 ,0, 0, 0 , - 4629, 4472, 6972 ,2261, 2143, 3947 ,0, 0, 0 , - 4472, 1906, 4620 ,2143, 3943, 2259 ,0, 0, 0 , - 4472, 4620, 6972 ,2143, 2259, 3947 ,0, 0, 0 , - 4400, 1856, 4632 ,3950, 3973, 7340 ,0, 0, 0 , - 4400, 4632, 6973 ,3950, 7340, 3951 ,0, 0, 0 , - 4632, 1902, 4467 ,7340, 7271, 2145 ,0, 0, 0 , - 4632, 4467, 6973 ,7340, 2145, 3951 ,0, 0, 0 , - 4467, 1901, 4628 ,2145, 2144, 3948 ,0, 0, 0 , - 4467, 4628, 6973 ,2145, 3948, 3951 ,0, 0, 0 , - 6975, 1903, 4468 ,3952, 7273, 7272 ,0, 0, 0 , - 6975, 4468, 6974 ,3952, 7272, 3953 ,0, 0, 0 , - 4468, 1902, 4631 ,7272, 7271, 2265 ,0, 0, 0 , - 4468, 4631, 6974 ,7272, 2265, 3953 ,0, 0, 0 , - 4461, 1881, 4636 ,2135, 2217, 2267 ,0, 0, 0 , - 4461, 4636, 6976 ,2135, 2267, 3954 ,0, 0, 0 , - 4636, 1904, 4469 ,2267, 7275, 7274 ,0, 0, 0 , - 4636, 4469, 6976 ,2267, 7274, 3954 ,0, 0, 0 , - 4469, 1903, 6975 ,7274, 7273, 3952 ,0, 0, 0 , - 4469, 6975, 6976 ,7274, 3952, 3954 ,0, 0, 0 , - 4465, 1900, 4612 ,2139, 7270, 7336 ,0, 0, 0 , - 4465, 4612, 6977 ,2139, 7336, 3956 ,0, 0, 0 , - 4612, 1905, 4470 ,7336, 7277, 7276 ,0, 0, 0 , - 4612, 4470, 6977 ,7336, 7276, 3956 ,0, 0, 0 , - 4470, 1904, 4635 ,7276, 7275, 3955 ,0, 0, 0 , - 4470, 4635, 6977 ,7276, 3955, 3956 ,0, 0, 0 , - 4434, 1885, 4613 ,3958, 2250, 2249 ,0, 0, 0 , - 4434, 4613, 6978 ,3958, 2249, 3959 ,0, 0, 0 , - 4613, 1900, 4464 ,2249, 7270, 7269 ,0, 0, 0 , - 4613, 4464, 6978 ,2249, 7269, 3959 ,0, 0, 0 , - 4464, 1882, 4578 ,7269, 2225, 2224 ,0, 0, 0 , - 4464, 4578, 6978 ,7269, 2224, 3959 ,0, 0, 0 , - 4457, 1899, 4638 ,2131, 7268, 2270 ,0, 0, 0 , - 4457, 4638, 6979 ,2131, 2270, 3960 ,0, 0, 0 , - 4638, 1880, 4459 ,2270, 2269, 2137 ,0, 0, 0 , - 4638, 4459, 6979 ,2270, 2137, 3960 ,0, 0, 0 , - 4459, 1790, 4643 ,2137, 2136, 2272 ,0, 0, 0 , - 4459, 4643, 6979 ,2137, 2272, 3960 ,0, 0, 0 , - 4446, 1893, 4646 ,2121, 3966, 7342 ,0, 0, 0 , - 4446, 4646, 6980 ,2121, 7342, 3962 ,0, 0, 0 , - 4646, 1897, 4454 ,7342, 7264, 2133 ,0, 0, 0 , - 4646, 4454, 6980 ,7342, 2133, 3962 ,0, 0, 0 , - 4454, 1896, 4642 ,2133, 2132, 3961 ,0, 0, 0 , - 4454, 4642, 6980 ,2133, 3961, 3962 ,0, 0, 0 , - 4452, 1876, 4650 ,3963, 2108, 7343 ,0, 0, 0 , - 4452, 4650, 6981 ,3963, 7343, 3964 ,0, 0, 0 , - 4650, 1898, 4455 ,7343, 7266, 7265 ,0, 0, 0 , - 4650, 4455, 6981 ,7343, 7265, 3964 ,0, 0, 0 , - 4455, 1897, 4645 ,7265, 7264, 2277 ,0, 0, 0 , - 4455, 4645, 6981 ,7265, 2277, 3964 ,0, 0, 0 , - 4437, 1879, 4639 ,2119, 2118, 7341 ,0, 0, 0 , - 4437, 4639, 6982 ,2119, 7341, 3965 ,0, 0, 0 , - 4639, 1899, 4456 ,7341, 7268, 7267 ,0, 0, 0 , - 4639, 4456, 6982 ,7341, 7267, 3965 ,0, 0, 0 , - 4456, 1898, 4649 ,7267, 7266, 2281 ,0, 0, 0 , - 4456, 4649, 6982 ,7267, 2281, 3965 ,0, 0, 0 , - 4445, 1892, 6796 ,3967, 7263, 7932 ,0, 0, 0 , - 4445, 6796, 6983 ,3967, 7932, 3968 ,0, 0, 0 , - 6796, 1894, 4450 ,7932, 2126, 2125 ,0, 0, 0 , - 6796, 4450, 6983 ,7932, 2125, 3968 ,0, 0, 0 , - 4450, 1895, 4647 ,2125, 2276, 2275 ,0, 0, 0 , - 4450, 4647, 6983 ,2125, 2275, 3968 ,0, 0, 0 , - 4654, 1890, 4442 ,3969, 7259, 2123 ,0, 0, 0 , - 4654, 4442, 6984 ,3969, 2123, 3970 ,0, 0, 0 , - 4442, 1889, 4641 ,2123, 2122, 2273 ,0, 0, 0 , - 4442, 4641, 6984 ,2123, 2273, 3970 ,0, 0, 0 , - 4420, 1871, 6788 ,3971, 7255, 7931 ,0, 0, 0 , - 4420, 6788, 6985 ,3971, 7931, 3972 ,0, 0, 0 , - 6788, 1891, 4443 ,7931, 7261, 7260 ,0, 0, 0 , - 6788, 4443, 6985 ,7931, 7260, 3972 ,0, 0, 0 , - 4443, 1890, 4653 ,7260, 7259, 2285 ,0, 0, 0 , - 4443, 4653, 6985 ,7260, 2285, 3972 ,0, 0, 0 , - 4399, 1855, 6987 ,2081, 2080, 3993 ,0, 0, 0 , - 4399, 6987, 6986 ,2081, 3993, 3974 ,0, 0, 0 , - 6987, 1790, 4633 ,3993, 2136, 2264 ,0, 0, 0 , - 6987, 4633, 6986 ,3993, 2264, 3974 ,0, 0, 0 , - 4431, 1877, 6893 ,2111, 7256, 7949 ,0, 0, 0 , - 4431, 6893, 6988 ,2111, 7949, 3975 ,0, 0, 0 , - 6893, 1887, 4438 ,7949, 7258, 7257 ,0, 0, 0 , - 6893, 4438, 6988 ,7949, 7257, 3975 ,0, 0, 0 , - 4438, 1878, 4651 ,7257, 2280, 2279 ,0, 0, 0 , - 4438, 4651, 6988 ,7257, 2279, 3975 ,0, 0, 0 , - 6990, 1791, 4658 ,3976, 3980, 7344 ,0, 0, 0 , - 6990, 4658, 6989 ,3976, 7344, 3977 ,0, 0, 0 , - 4658, 1870, 4421 ,7344, 2100, 2099 ,0, 0, 0 , - 4658, 4421, 6989 ,7344, 2099, 3977 ,0, 0, 0 , - 4421, 1872, 4655 ,2099, 2284, 2283 ,0, 0, 0 , - 4421, 4655, 6989 ,2099, 2283, 3977 ,0, 0, 0 , - 4417, 1869, 6779 ,3978, 7254, 7928 ,0, 0, 0 , - 4417, 6779, 6991 ,3978, 7928, 3979 ,0, 0, 0 , - 6779, 1871, 4419 ,7928, 7255, 2101 ,0, 0, 0 , - 6779, 4419, 6991 ,7928, 2101, 3979 ,0, 0, 0 , - 4419, 1870, 4657 ,2101, 2100, 2289 ,0, 0, 0 , - 4419, 4657, 6991 ,2101, 2289, 3979 ,0, 0, 0 , - 6990, 1790, 4662 ,3976, 2136, 7345 ,0, 0, 0 , - 6990, 4662, 6992 ,3976, 7345, 3981 ,0, 0, 0 , - 4662, 1867, 4414 ,7345, 2092, 2091 ,0, 0, 0 , - 4662, 4414, 6992 ,7345, 2091, 3981 ,0, 0, 0 , - 4414, 1868, 4659 ,2091, 2288, 2287 ,0, 0, 0 , - 4414, 4659, 6992 ,2091, 2287, 3981 ,0, 0, 0 , - 6994, 1864, 6772 ,3982, 7924, 7927 ,0, 0, 0 , - 6994, 6772, 6993 ,3982, 7927, 3983 ,0, 0, 0 , - 6772, 1865, 4411 ,7927, 2088, 2087 ,0, 0, 0 , - 6772, 4411, 6993 ,7927, 2087, 3983 ,0, 0, 0 , - 4411, 1867, 4661 ,2087, 2092, 2293 ,0, 0, 0 , - 4411, 4661, 6993 ,2087, 2293, 3983 ,0, 0, 0 , - 4406, 1861, 6762 ,3986, 7253, 7925 ,0, 0, 0 , - 4406, 6762, 6995 ,3986, 7925, 3987 ,0, 0, 0 , - 6762, 1864, 6994 ,7925, 7924, 3982 ,0, 0, 0 , - 6762, 6994, 6995 ,7925, 3982, 3987 ,0, 0, 0 , - 6994, 1863, 4666 ,3982, 2292, 3984 ,0, 0, 0 , - 6994, 4666, 6995 ,3982, 3984, 3987 ,0, 0, 0 , - 4401, 1857, 4627 ,3988, 3949, 7339 ,0, 0, 0 , - 4401, 4627, 6996 ,3988, 7339, 3989 ,0, 0, 0 , - 4627, 1859, 4407 ,7339, 2084, 2083 ,0, 0, 0 , - 4627, 4407, 6996 ,7339, 2083, 3989 ,0, 0, 0 , - 4407, 1862, 4665 ,2083, 3985, 2297 ,0, 0, 0 , - 4407, 4665, 6996 ,2083, 2297, 3989 ,0, 0, 0 , - 4365, 1831, 6755 ,2053, 2052, 7920 ,0, 0, 0 , - 4365, 6755, 6997 ,2053, 7920, 3992 ,0, 0, 0 , - 6755, 1860, 4404 ,7920, 7251, 2085 ,0, 0, 0 , - 6755, 4404, 6997 ,7920, 2085, 3992 ,0, 0, 0 , - 4404, 1859, 4626 ,2085, 2084, 3990 ,0, 0, 0 , - 4404, 4626, 6997 ,2085, 3990, 3992 ,0, 0, 0 , - 6987, 1855, 4402 ,3993, 2080, 2079 ,0, 0, 0 , - 6987, 4402, 6998 ,3993, 2079, 3994 ,0, 0, 0 , - 4402, 1858, 4667 ,2079, 2296, 2295 ,0, 0, 0 , - 4402, 4667, 6998 ,2079, 2295, 3994 ,0, 0, 0 , - 4393, 1852, 4669 ,3996, 7250, 2300 ,0, 0, 0 , - 4393, 4669, 6999 ,3996, 2300, 3997 ,0, 0, 0 , - 4669, 1822, 4397 ,2300, 2040, 2077 ,0, 0, 0 , - 4669, 4397, 6999 ,2300, 2077, 3997 ,0, 0, 0 , - 4397, 1854, 4623 ,2077, 2258, 2257 ,0, 0, 0 , - 4397, 4623, 6999 ,2077, 2257, 3997 ,0, 0, 0 , - 4388, 1848, 4674 ,3998, 7247, 7347 ,0, 0, 0 , - 4388, 4674, 7000 ,3998, 7347, 3999 ,0, 0, 0 , - 4674, 1851, 4391 ,7347, 7248, 2075 ,0, 0, 0 , - 4674, 4391, 7000 ,7347, 2075, 3999 ,0, 0, 0 , - 4391, 1850, 4615 ,2075, 2074, 2255 ,0, 0, 0 , - 4391, 4615, 7000 ,2075, 2255, 3999 ,0, 0, 0 , - 4351, 1821, 4670 ,2035, 4045, 7346 ,0, 0, 0 , - 4351, 4670, 7001 ,2035, 7346, 4000 ,0, 0, 0 , - 4670, 1852, 4392 ,7346, 7250, 7249 ,0, 0, 0 , - 4670, 4392, 7001 ,7346, 7249, 4000 ,0, 0, 0 , - 4392, 1851, 4673 ,7249, 7248, 2303 ,0, 0, 0 , - 4392, 4673, 7001 ,7249, 2303, 4000 ,0, 0, 0 , - 4338, 1814, 4681 ,4002, 7229, 7350 ,0, 0, 0 , - 4338, 4681, 7002 ,4002, 7350, 4003 ,0, 0, 0 , - 4681, 1847, 4389 ,7350, 2070, 2069 ,0, 0, 0 , - 4681, 4389, 7002 ,7350, 2069, 4003 ,0, 0, 0 , - 4389, 1849, 4618 ,2069, 2254, 2253 ,0, 0, 0 , - 4389, 4618, 7002 ,2069, 2253, 4003 ,0, 0, 0 , - 4383, 1844, 4675 ,4006, 7244, 7348 ,0, 0, 0 , - 4383, 4675, 7003 ,4006, 7348, 4007 ,0, 0, 0 , - 4675, 1848, 4387 ,7348, 7247, 2071 ,0, 0, 0 , - 4675, 4387, 7003 ,7348, 2071, 4007 ,0, 0, 0 , - 4387, 1847, 4680 ,2071, 2070, 4004 ,0, 0, 0 , - 4387, 4680, 7003 ,2071, 4004, 4007 ,0, 0, 0 , - 4300, 1782, 4688 ,4008, 7207, 7352 ,0, 0, 0 , - 4300, 4688, 7004 ,4008, 7352, 4009 ,0, 0, 0 , - 4688, 1846, 4384 ,7352, 7246, 7245 ,0, 0, 0 , - 4688, 4384, 7004 ,7352, 7245, 4009 ,0, 0, 0 , - 4384, 1845, 4679 ,7245, 4005, 2307 ,0, 0, 0 , - 4384, 4679, 7004 ,7245, 2307, 4009 ,0, 0, 0 , - 4379, 1841, 4692 ,4012, 7243, 7353 ,0, 0, 0 , - 4379, 4692, 7005 ,4012, 7353, 4013 ,0, 0, 0 , - 4692, 1843, 4385 ,7353, 2066, 2065 ,0, 0, 0 , - 4692, 4385, 7005 ,7353, 2065, 4013 ,0, 0, 0 , - 4385, 1846, 4687 ,2065, 7246, 4010 ,0, 0, 0 , - 4385, 4687, 7005 ,2065, 4010, 4013 ,0, 0, 0 , - 4346, 1819, 4676 ,2032, 4048, 7349 ,0, 0, 0 , - 4346, 4676, 7006 ,2032, 7349, 4014 ,0, 0, 0 , - 4676, 1844, 4382 ,7349, 7244, 2067 ,0, 0, 0 , - 4676, 4382, 7006 ,7349, 2067, 4014 ,0, 0, 0 , - 4382, 1843, 4691 ,2067, 2066, 2314 ,0, 0, 0 , - 4382, 4691, 7006 ,2067, 2314, 4014 ,0, 0, 0 , - 4305, 1786, 4696 ,4017, 7209, 7354 ,0, 0, 0 , - 4305, 4696, 7007 ,4017, 7354, 4018 ,0, 0, 0 , - 4696, 1839, 4380 ,7354, 2062, 2061 ,0, 0, 0 , - 4696, 4380, 7007 ,7354, 2061, 4018 ,0, 0, 0 , - 4380, 1842, 4686 ,2061, 4011, 4015 ,0, 0, 0 , - 4380, 4686, 7007 ,2061, 4015, 4018 ,0, 0, 0 , - 4220, 1719, 4704 ,1930, 7173, 7359 ,0, 0, 0 , - 4220, 4704, 7008 ,1930, 7359, 4019 ,0, 0, 0 , - 4704, 1840, 4377 ,7359, 7241, 2063 ,0, 0, 0 , - 4704, 4377, 7008 ,7359, 2063, 4019 ,0, 0, 0 , - 4377, 1839, 4695 ,2063, 2062, 2317 ,0, 0, 0 , - 4377, 4695, 7008 ,2063, 2317, 4019 ,0, 0, 0 , - 4342, 1817, 4693 ,4022, 2033, 2313 ,0, 0, 0 , - 4342, 4693, 7009 ,4022, 2313, 4023 ,0, 0, 0 , - 4693, 1841, 4378 ,2313, 7243, 7242 ,0, 0, 0 , - 4693, 4378, 7009 ,2313, 7242, 4023 ,0, 0, 0 , - 4378, 1840, 4703 ,7242, 7241, 4020 ,0, 0, 0 , - 4378, 4703, 7009 ,7242, 4020, 4023 ,0, 0, 0 , - 4206, 1708, 4709 ,1918, 7165, 7360 ,0, 0, 0 , - 4206, 4709, 7010 ,1918, 7360, 4024 ,0, 0, 0 , - 4709, 1838, 4374 ,7360, 7240, 7239 ,0, 0, 0 , - 4709, 4374, 7010 ,7360, 7239, 4024 ,0, 0, 0 , - 4374, 1837, 4700 ,7239, 7238, 2320 ,0, 0, 0 , - 4374, 4700, 7010 ,7239, 2320, 4024 ,0, 0, 0 , - 4363, 1830, 4714 ,2047, 4035, 7361 ,0, 0, 0 , - 4363, 4714, 7011 ,2047, 7361, 4026 ,0, 0, 0 , - 4714, 1835, 4375 ,7361, 2058, 2057 ,0, 0, 0 , - 4714, 4375, 7011 ,7361, 2057, 4026 ,0, 0, 0 , - 4375, 1838, 4708 ,2057, 7240, 4025 ,0, 0, 0 , - 4375, 4708, 7011 ,2057, 4025, 4026 ,0, 0, 0 , - 4369, 1825, 4718 ,4029, 7232, 7362 ,0, 0, 0 , - 4369, 4718, 7012 ,4029, 7362, 4030 ,0, 0, 0 , - 4718, 1836, 4372 ,7362, 7236, 2059 ,0, 0, 0 , - 4718, 4372, 7012 ,7362, 2059, 4030 ,0, 0, 0 , - 4372, 1835, 4713 ,2059, 2058, 4027 ,0, 0, 0 , - 4372, 4713, 7012 ,2059, 4027, 4030 ,0, 0, 0 , - 7014, 1826, 4701 ,4031, 7357, 7356 ,0, 0, 0 , - 7014, 4701, 7013 ,4031, 7356, 4032 ,0, 0, 0 , - 4701, 1837, 4373 ,7356, 7238, 7237 ,0, 0, 0 , - 4701, 4373, 7013 ,7356, 7237, 4032 ,0, 0, 0 , - 4373, 1836, 4717 ,7237, 7236, 2332 ,0, 0, 0 , - 4373, 4717, 7013 ,7237, 2332, 4032 ,0, 0, 0 , - 4366, 1832, 4625 ,4033, 3991, 2262 ,0, 0, 0 , - 4366, 4625, 7015 ,4033, 2262, 4034 ,0, 0, 0 , - 4625, 1824, 4370 ,2262, 2044, 2055 ,0, 0, 0 , - 4625, 4370, 7015 ,2262, 2055, 4034 ,0, 0, 0 , - 4370, 1834, 4712 ,2055, 4028, 2328 ,0, 0, 0 , - 4370, 4712, 7015 ,2055, 2328, 4034 ,0, 0, 0 , - 4362, 1829, 6756 ,4036, 7235, 7921 ,0, 0, 0 , - 4362, 6756, 7016 ,4036, 7921, 4037 ,0, 0, 0 , - 6756, 1831, 4367 ,7921, 2052, 2051 ,0, 0, 0 , - 6756, 4367, 7016 ,7921, 2051, 4037 ,0, 0, 0 , - 4367, 1833, 4715 ,2051, 2327, 2326 ,0, 0, 0 , - 4367, 4715, 7016 ,2051, 2326, 4037 ,0, 0, 0 , - 4180, 1688, 6698 ,1896, 1895, 7905 ,0, 0, 0 , - 4180, 6698, 7017 ,1896, 7905, 4038 ,0, 0, 0 , - 6698, 1828, 4360 ,7905, 7233, 2049 ,0, 0, 0 , - 6698, 4360, 7017 ,7905, 2049, 4038 ,0, 0, 0 , - 4360, 1827, 4707 ,2049, 2048, 2324 ,0, 0, 0 , - 4360, 4707, 7017 ,2049, 2324, 4038 ,0, 0, 0 , - 4343, 1818, 4702 ,2028, 4021, 7358 ,0, 0, 0 , - 4343, 4702, 7018 ,2028, 7358, 4040 ,0, 0, 0 , - 4702, 1826, 7014 ,7358, 7357, 4031 ,0, 0, 0 , - 4702, 7014, 7018 ,7358, 4031, 4040 ,0, 0, 0 , - 7014, 1789, 7019 ,4031, 2331, 4039 ,0, 0, 0 , - 7014, 7019, 7018 ,4031, 4039, 4040 ,0, 0, 0 , - 4349, 1789, 4719 ,4043, 2331, 2330 ,0, 0, 0 , - 4349, 4719, 7020 ,4043, 2330, 4044 ,0, 0, 0 , - 4719, 1825, 4357 ,2330, 7232, 7231 ,0, 0, 0 , - 4719, 4357, 7020 ,2330, 7231, 4044 ,0, 0, 0 , - 4357, 1823, 7021 ,7231, 7230, 4041 ,0, 0, 0 , - 4357, 7021, 7020 ,7231, 4041, 4044 ,0, 0, 0 , - 4350, 1788, 7021 ,4046, 4042, 4041 ,0, 0, 0 , - 4350, 7021, 7022 ,4046, 4041, 4047 ,0, 0, 0 , - 7021, 1823, 4353 ,4041, 7230, 2041 ,0, 0, 0 , - 7021, 4353, 7022 ,4041, 2041, 4047 ,0, 0, 0 , - 4353, 1822, 4671 ,2041, 2040, 2299 ,0, 0, 0 , - 4353, 4671, 7022 ,2041, 2299, 4047 ,0, 0, 0 , - 4345, 1816, 7019 ,4049, 2029, 4039 ,0, 0, 0 , - 4345, 7019, 7023 ,4049, 4039, 4050 ,0, 0, 0 , - 7019, 1789, 4348 ,4039, 2331, 2037 ,0, 0, 0 , - 7019, 4348, 7023 ,4039, 2037, 4050 ,0, 0, 0 , - 4348, 1820, 4677 ,2037, 2036, 2302 ,0, 0, 0 , - 4348, 4677, 7023 ,2037, 2302, 4050 ,0, 0, 0 , - 4330, 1808, 4722 ,2016, 4055, 7363 ,0, 0, 0 , - 4330, 4722, 7024 ,2016, 7363, 4051 ,0, 0, 0 , - 4722, 1813, 4336 ,7363, 7227, 2026 ,0, 0, 0 , - 4722, 4336, 7024 ,7363, 2026, 4051 ,0, 0, 0 , - 4336, 1812, 4607 ,2026, 2025, 2246 ,0, 0, 0 , - 4336, 4607, 7024 ,2026, 2246, 4051 ,0, 0, 0 , - 4294, 1777, 4682 ,4052, 4089, 7351 ,0, 0, 0 , - 4294, 4682, 7025 ,4052, 7351, 4053 ,0, 0, 0 , - 4682, 1814, 4337 ,7351, 7229, 7228 ,0, 0, 0 , - 4682, 4337, 7025 ,7351, 7228, 4053 ,0, 0, 0 , - 4337, 1813, 4721 ,7228, 7227, 2336 ,0, 0, 0 , - 4337, 4721, 7025 ,7228, 2336, 4053 ,0, 0, 0 , - 4329, 1807, 4598 ,4056, 3923, 2244 ,0, 0, 0 , - 4329, 4598, 7026 ,4056, 2244, 4057 ,0, 0, 0 , - 4598, 1811, 4333 ,2244, 2243, 7226 ,0, 0, 0 , - 4598, 4333, 7026 ,2244, 7226, 4057 ,0, 0, 0 , - 4333, 1810, 4723 ,7226, 7225, 4054 ,0, 0, 0 , - 4333, 4723, 7026 ,7226, 4054, 4057 ,0, 0, 0 , - 4323, 1802, 4731 ,2014, 2013, 7366 ,0, 0, 0 , - 4323, 4731, 7027 ,2014, 7366, 4059 ,0, 0, 0 , - 4731, 1809, 4334 ,7366, 2021, 2020 ,0, 0, 0 , - 4731, 4334, 7027 ,7366, 2020, 4059 ,0, 0, 0 , - 4334, 1811, 4602 ,2020, 2243, 2242 ,0, 0, 0 , - 4334, 4602, 7027 ,2020, 2242, 4059 ,0, 0, 0 , - 4178, 1687, 4724 ,1890, 4097, 7364 ,0, 0, 0 , - 4178, 4724, 7028 ,1890, 7364, 4061 ,0, 0, 0 , - 4724, 1810, 4332 ,7364, 7225, 2022 ,0, 0, 0 , - 4724, 4332, 7028 ,7364, 2022, 4061 ,0, 0, 0 , - 4332, 1809, 4730 ,2022, 2021, 4060 ,0, 0, 0 , - 4332, 4730, 7028 ,2022, 4060, 4061 ,0, 0, 0 , - 3361, 1052, 4732 ,1205, 1204, 7367 ,0, 0, 0 , - 3361, 4732, 7029 ,1205, 7367, 4062 ,0, 0, 0 , - 4732, 1802, 4325 ,7367, 2013, 2012 ,0, 0, 0 , - 4732, 4325, 7029 ,7367, 2012, 4062 ,0, 0, 0 , - 4325, 1804, 4536 ,2012, 3927, 2199 ,0, 0, 0 , - 4325, 4536, 7029 ,2012, 2199, 4062 ,0, 0, 0 , - 4212, 1712, 4741 ,1928, 1927, 7369 ,0, 0, 0 , - 4212, 4741, 7030 ,1928, 7369, 4065 ,0, 0, 0 , - 4741, 1693, 4320 ,7369, 7224, 7223 ,0, 0, 0 , - 4741, 4320, 7030 ,7369, 7223, 4065 ,0, 0, 0 , - 4320, 1801, 4736 ,7223, 7222, 4063 ,0, 0, 0 , - 4320, 4736, 7030 ,7223, 4063, 4065 ,0, 0, 0 , - 4209, 1711, 4745 ,4067, 7166, 7370 ,0, 0, 0 , - 4209, 4745, 7031 ,4067, 7370, 4068 ,0, 0, 0 , - 4745, 1800, 4318 ,7370, 7220, 2010 ,0, 0, 0 , - 4745, 4318, 7031 ,7370, 2010, 4068 ,0, 0, 0 , - 4318, 1692, 4753 ,2010, 2009, 2352 ,0, 0, 0 , - 4318, 4753, 7031 ,2010, 2352, 4068 ,0, 0, 0 , - 4194, 1700, 4737 ,1906, 2342, 2341 ,0, 0, 0 , - 4194, 4737, 7032 ,1906, 2341, 4069 ,0, 0, 0 , - 4737, 1801, 4319 ,2341, 7222, 7221 ,0, 0, 0 , - 4737, 4319, 7032 ,2341, 7221, 4069 ,0, 0, 0 , - 4319, 1800, 4744 ,7221, 7220, 2350 ,0, 0, 0 , - 4319, 4744, 7032 ,7221, 2350, 4069 ,0, 0, 0 , - 4321, 1693, 4740 ,2008, 7224, 7368 ,0, 0, 0 , - 4321, 4740, 7033 ,2008, 7368, 4070 ,0, 0, 0 , - 4740, 1799, 4315 ,7368, 7219, 7218 ,0, 0, 0 , - 4740, 4315, 7033 ,7368, 7218, 4070 ,0, 0, 0 , - 4315, 1798, 4749 ,7218, 7217, 2353 ,0, 0, 0 , - 4315, 4749, 7033 ,7218, 2353, 4070 ,0, 0, 0 , - 4303, 1784, 4756 ,1998, 1997, 7374 ,0, 0, 0 , - 4303, 4756, 7034 ,1998, 7374, 4071 ,0, 0, 0 , - 4756, 1796, 4316 ,7374, 2005, 2004 ,0, 0, 0 , - 4756, 4316, 7034 ,7374, 2004, 4071 ,0, 0, 0 , - 4316, 1799, 4739 ,2004, 7219, 2347 ,0, 0, 0 , - 4316, 4739, 7034 ,2004, 2347, 4071 ,0, 0, 0 , - 4239, 1733, 4762 ,4072, 4163, 7376 ,0, 0, 0 , - 4239, 4762, 7035 ,4072, 7376, 4073 ,0, 0, 0 , - 4762, 1797, 4313 ,7376, 7215, 2006 ,0, 0, 0 , - 4762, 4313, 7035 ,7376, 2006, 4073 ,0, 0, 0 , - 4313, 1796, 4755 ,2006, 2005, 2357 ,0, 0, 0 , - 4313, 4755, 7035 ,2006, 2357, 4073 ,0, 0, 0 , - 4226, 1722, 4750 ,4076, 4079, 7372 ,0, 0, 0 , - 4226, 4750, 7036 ,4076, 7372, 4077 ,0, 0, 0 , - 4750, 1798, 4314 ,7372, 7217, 7216 ,0, 0, 0 , - 4750, 4314, 7036 ,7372, 7216, 4077 ,0, 0, 0 , - 4314, 1797, 4761 ,7216, 7215, 4074 ,0, 0, 0 , - 4314, 4761, 7036 ,7216, 4074, 4077 ,0, 0, 0 , - 4225, 1721, 6649 ,1938, 1937, 7894 ,0, 0, 0 , - 4225, 6649, 7037 ,1938, 7894, 4080 ,0, 0, 0 , - 6649, 1795, 4310 ,7894, 7214, 7213 ,0, 0, 0 , - 6649, 4310, 7037 ,7894, 7213, 4080 ,0, 0, 0 , - 4310, 1794, 4751 ,7213, 7212, 4078 ,0, 0, 0 , - 4310, 4751, 7037 ,7213, 4078, 4080 ,0, 0, 0 , - 4222, 1690, 4766 ,4083, 4188, 7377 ,0, 0, 0 , - 4222, 4766, 7038 ,4083, 7377, 4084 ,0, 0, 0 , - 4766, 1793, 4308 ,7377, 7210, 2002 ,0, 0, 0 , - 4766, 4308, 7038 ,7377, 2002, 4084 ,0, 0, 0 , - 4308, 1792, 6645 ,2002, 2001, 4081 ,0, 0, 0 , - 4308, 6645, 7038 ,2002, 4081, 4084 ,0, 0, 0 , - 4210, 1709, 4752 ,1922, 4066, 7373 ,0, 0, 0 , - 4210, 4752, 7039 ,1922, 7373, 4085 ,0, 0, 0 , - 4752, 1794, 4309 ,7373, 7212, 7211 ,0, 0, 0 , - 4752, 4309, 7039 ,7373, 7211, 4085 ,0, 0, 0 , - 4309, 1793, 4765 ,7211, 7210, 2364 ,0, 0, 0 , - 4309, 4765, 7039 ,7211, 2364, 4085 ,0, 0, 0 , - 4231, 1726, 4757 ,4086, 4166, 7375 ,0, 0, 0 , - 4231, 4757, 7040 ,4086, 7375, 4087 ,0, 0, 0 , - 4757, 1784, 4306 ,7375, 1997, 1996 ,0, 0, 0 , - 4757, 4306, 7040 ,7375, 1996, 4087 ,0, 0, 0 , - 4306, 1787, 4685 ,1996, 4016, 2311 ,0, 0, 0 , - 4306, 4685, 7040 ,1996, 2311, 4087 ,0, 0, 0 , - 4215, 1715, 4697 ,1926, 4171, 7355 ,0, 0, 0 , - 4215, 4697, 7041 ,1926, 7355, 4088 ,0, 0, 0 , - 4697, 1786, 4304 ,7355, 7209, 7208 ,0, 0, 0 , - 4697, 4304, 7041 ,7355, 7208, 4088 ,0, 0, 0 , - 4304, 1785, 4742 ,7208, 2346, 2345 ,0, 0, 0 , - 4304, 4742, 7041 ,7208, 2345, 4088 ,0, 0, 0 , - 4293, 1776, 4770 ,4090, 7202, 7378 ,0, 0, 0 , - 4293, 4770, 7042 ,4090, 7378, 4091 ,0, 0, 0 , - 4770, 1779, 4301 ,7378, 1993, 1992 ,0, 0, 0 , - 4770, 4301, 7042 ,7378, 1992, 4091 ,0, 0, 0 , - 4301, 1783, 4683 ,1992, 2306, 2305 ,0, 0, 0 , - 4301, 4683, 7042 ,1992, 2305, 4091 ,0, 0, 0 , - 4285, 1770, 4775 ,4092, 7200, 7380 ,0, 0, 0 , - 4285, 4775, 7043 ,4092, 7380, 4093 ,0, 0, 0 , - 4775, 1780, 4297 ,7380, 7203, 1994 ,0, 0, 0 , - 4775, 4297, 7043 ,7380, 1994, 4093 ,0, 0, 0 , - 4297, 1779, 4769 ,1994, 1993, 2368 ,0, 0, 0 , - 4297, 4769, 7043 ,1994, 2368, 4093 ,0, 0, 0 , - 4278, 1764, 4779 ,1978, 1977, 7381 ,0, 0, 0 , - 4278, 4779, 7044 ,1978, 7381, 4094 ,0, 0, 0 , - 4779, 1781, 4298 ,7381, 7205, 7204 ,0, 0, 0 , - 4779, 4298, 7044 ,7381, 7204, 4094 ,0, 0, 0 , - 4298, 1780, 4774 ,7204, 7203, 2372 ,0, 0, 0 , - 4298, 4774, 7044 ,7204, 2372, 4094 ,0, 0, 0 , - 4232, 1727, 4689 ,4095, 2310, 2309 ,0, 0, 0 , - 4232, 4689, 7045 ,4095, 2309, 4096 ,0, 0, 0 , - 4689, 1782, 4299 ,2309, 7207, 7206 ,0, 0, 0 , - 4689, 4299, 7045 ,2309, 7206, 4096 ,0, 0, 0 , - 4299, 1781, 4778 ,7206, 7205, 2376 ,0, 0, 0 , - 4299, 4778, 7045 ,7206, 2376, 4096 ,0, 0, 0 , - 4177, 1686, 4785 ,4098, 7155, 7383 ,0, 0, 0 , - 4177, 4785, 7046 ,4098, 7383, 4099 ,0, 0, 0 , - 4785, 1775, 4295 ,7383, 1989, 1988 ,0, 0, 0 , - 4785, 4295, 7046 ,7383, 1988, 4099 ,0, 0, 0 , - 4295, 1778, 4725 ,1988, 2335, 2334 ,0, 0, 0 , - 4295, 4725, 7046 ,1988, 2334, 4099 ,0, 0, 0 , - 4289, 1773, 4771 ,4102, 7201, 7379 ,0, 0, 0 , - 4289, 4771, 7047 ,4102, 7379, 4103 ,0, 0, 0 , - 4771, 1776, 4292 ,7379, 7202, 1990 ,0, 0, 0 , - 4771, 4292, 7047 ,7379, 1990, 4103 ,0, 0, 0 , - 4292, 1775, 4784 ,1990, 1989, 4100 ,0, 0, 0 , - 4292, 4784, 7047 ,1990, 4100, 4103 ,0, 0, 0 , - 4139, 1656, 4789 ,1858, 4242, 7384 ,0, 0, 0 , - 4139, 4789, 7048 ,1858, 7384, 4104 ,0, 0, 0 , - 4789, 1772, 4290 ,7384, 1985, 1984 ,0, 0, 0 , - 4789, 4290, 7048 ,7384, 1984, 4104 ,0, 0, 0 , - 4290, 1774, 4783 ,1984, 4101, 2379 ,0, 0, 0 , - 4290, 4783, 7048 ,1984, 2379, 4104 ,0, 0, 0 , - 4286, 1771, 4772 ,1980, 2367, 2366 ,0, 0, 0 , - 4286, 4772, 7049 ,1980, 2366, 4106 ,0, 0, 0 , - 4772, 1773, 4288 ,2366, 7201, 1986 ,0, 0, 0 , - 4772, 4288, 7049 ,2366, 1986, 4106 ,0, 0, 0 , - 4288, 1772, 4793 ,1986, 1985, 4105 ,0, 0, 0 , - 4288, 4793, 7049 ,1986, 4105, 4106 ,0, 0, 0 , - 3338, 1032, 4797 ,1179, 2387, 2386 ,0, 0, 0 , - 3338, 4797, 7050 ,1179, 2386, 4107 ,0, 0, 0 , - 4797, 1769, 4283 ,2386, 7198, 1982 ,0, 0, 0 , - 4797, 4283, 7050 ,2386, 1982, 4107 ,0, 0, 0 , - 4283, 1768, 4792 ,1982, 1981, 2384 ,0, 0, 0 , - 4283, 4792, 7050 ,1982, 2384, 4107 ,0, 0, 0 , - 4279, 1765, 4776 ,4110, 2371, 2370 ,0, 0, 0 , - 4279, 4776, 7051 ,4110, 2370, 4111 ,0, 0, 0 , - 4776, 1770, 4284 ,2370, 7200, 7199 ,0, 0, 0 , - 4776, 4284, 7051 ,2370, 7199, 4111 ,0, 0, 0 , - 4284, 1769, 4796 ,7199, 7198, 4108 ,0, 0, 0 , - 4284, 4796, 7051 ,7199, 4108, 4111 ,0, 0, 0 , - 3332, 1034, 4801 ,4112, 6699, 7385 ,0, 0, 0 , - 3332, 4801, 7052 ,4112, 7385, 4113 ,0, 0, 0 , - 4801, 1767, 4280 ,7385, 7197, 7196 ,0, 0, 0 , - 4801, 4280, 7052 ,7385, 7196, 4113 ,0, 0, 0 , - 4280, 1766, 4795 ,7196, 4109, 2388 ,0, 0, 0 , - 4280, 4795, 7052 ,7196, 2388, 4113 ,0, 0, 0 , - 4275, 1762, 4780 ,4116, 7195, 7382 ,0, 0, 0 , - 4275, 4780, 7053 ,4116, 7382, 4117 ,0, 0, 0 , - 4780, 1764, 4281 ,7382, 1977, 1976 ,0, 0, 0 , - 4780, 4281, 7053 ,7382, 1976, 4117 ,0, 0, 0 , - 4281, 1767, 4800 ,1976, 7197, 4114 ,0, 0, 0 , - 4281, 4800, 7053 ,1976, 4114, 4117 ,0, 0, 0 , - 3334, 1022, 4806 ,4118, 2460, 7386 ,0, 0, 0 , - 3334, 4806, 7054 ,4118, 7386, 4119 ,0, 0, 0 , - 4806, 1760, 4276 ,7386, 1973, 1972 ,0, 0, 0 , - 4806, 4276, 7054 ,7386, 1972, 4119 ,0, 0, 0 , - 4276, 1763, 4799 ,1972, 4115, 2392 ,0, 0, 0 , - 4276, 4799, 7054 ,1972, 2392, 4119 ,0, 0, 0 , - 4270, 1758, 4810 ,4122, 7192, 7387 ,0, 0, 0 , - 4270, 4810, 7055 ,4122, 7387, 4123 ,0, 0, 0 , - 4810, 1761, 4273 ,7387, 7193, 1974 ,0, 0, 0 , - 4810, 4273, 7055 ,7387, 1974, 4123 ,0, 0, 0 , - 4273, 1760, 4805 ,1974, 1973, 4120 ,0, 0, 0 , - 4273, 4805, 7055 ,1974, 4120, 4123 ,0, 0, 0 , - 4233, 1728, 4781 ,4124, 2375, 2374 ,0, 0, 0 , - 4233, 4781, 7056 ,4124, 2374, 4125 ,0, 0, 0 , - 4781, 1762, 4274 ,2374, 7195, 7194 ,0, 0, 0 , - 4781, 4274, 7056 ,2374, 7194, 4125 ,0, 0, 0 , - 4274, 1761, 4809 ,7194, 7193, 2400 ,0, 0, 0 , - 4274, 4809, 7056 ,7194, 2400, 4125 ,0, 0, 0 , - 3313, 1024, 4815 ,4126, 6691, 7388 ,0, 0, 0 , - 3313, 4815, 7057 ,4126, 7388, 4127 ,0, 0, 0 , - 4815, 1756, 4271 ,7388, 1969, 1968 ,0, 0, 0 , - 4815, 4271, 7057 ,7388, 1968, 4127 ,0, 0, 0 , - 4271, 1759, 4804 ,1968, 4121, 2396 ,0, 0, 0 , - 4271, 4804, 7057 ,1968, 2396, 4127 ,0, 0, 0 , - 4265, 1754, 4820 ,4130, 7189, 7390 ,0, 0, 0 , - 4265, 4820, 7058 ,4130, 7390, 4131 ,0, 0, 0 , - 4820, 1757, 4268 ,7390, 7190, 1970 ,0, 0, 0 , - 4820, 4268, 7058 ,7390, 1970, 4131 ,0, 0, 0 , - 4268, 1756, 4814 ,1970, 1969, 4128 ,0, 0, 0 , - 4268, 4814, 7058 ,1970, 4128, 4131 ,0, 0, 0 , - 4234, 1729, 4811 ,1940, 2399, 2398 ,0, 0, 0 , - 4234, 4811, 7059 ,1940, 2398, 4132 ,0, 0, 0 , - 4811, 1758, 4269 ,2398, 7192, 7191 ,0, 0, 0 , - 4811, 4269, 7059 ,2398, 7191, 4132 ,0, 0, 0 , - 4269, 1757, 4819 ,7191, 7190, 2407 ,0, 0, 0 , - 4269, 4819, 7059 ,7191, 2407, 4132 ,0, 0, 0 , - 3310, 1018, 4826 ,4133, 2410, 2409 ,0, 0, 0 , - 3310, 4826, 7060 ,4133, 2409, 4134 ,0, 0, 0 , - 4826, 1752, 4266 ,2409, 1965, 1964 ,0, 0, 0 , - 4826, 4266, 7060 ,2409, 1964, 4134 ,0, 0, 0 , - 4266, 1755, 4813 ,1964, 4129, 2404 ,0, 0, 0 , - 4266, 4813, 7060 ,1964, 2404, 4134 ,0, 0, 0 , - 4260, 1750, 4829 ,4137, 7186, 7392 ,0, 0, 0 , - 4260, 4829, 7061 ,4137, 7392, 4138 ,0, 0, 0 , - 4829, 1753, 4263 ,7392, 7187, 1966 ,0, 0, 0 , - 4829, 4263, 7061 ,7392, 1966, 4138 ,0, 0, 0 , - 4263, 1752, 4825 ,1966, 1965, 4135 ,0, 0, 0 , - 4263, 4825, 7061 ,1966, 4135, 4138 ,0, 0, 0 , - 4236, 1730, 4821 ,1946, 1945, 7391 ,0, 0, 0 , - 4236, 4821, 7062 ,1946, 7391, 4139 ,0, 0, 0 , - 4821, 1754, 4264 ,7391, 7189, 7188 ,0, 0, 0 , - 4821, 4264, 7062 ,7391, 7188, 4139 ,0, 0, 0 , - 4264, 1753, 4828 ,7188, 7187, 2415 ,0, 0, 0 , - 4264, 4828, 7062 ,7188, 2415, 4139 ,0, 0, 0 , - 3303, 1015, 4834 ,1150, 1147, 7393 ,0, 0, 0 , - 3303, 4834, 7063 ,1150, 7393, 4140 ,0, 0, 0 , - 4834, 1748, 4261 ,7393, 1961, 1960 ,0, 0, 0 , - 4834, 4261, 7063 ,7393, 1960, 4140 ,0, 0, 0 , - 4261, 1751, 4824 ,1960, 4136, 2411 ,0, 0, 0 , - 4261, 4824, 7063 ,1960, 2411, 4140 ,0, 0, 0 , - 4255, 1746, 4839 ,4143, 7183, 7394 ,0, 0, 0 , - 4255, 4839, 7064 ,4143, 7394, 4144 ,0, 0, 0 , - 4839, 1749, 4258 ,7394, 7184, 1962 ,0, 0, 0 , - 4839, 4258, 7064 ,7394, 1962, 4144 ,0, 0, 0 , - 4258, 1748, 4833 ,1962, 1961, 4141 ,0, 0, 0 , - 4258, 4833, 7064 ,1962, 4141, 4144 ,0, 0, 0 , - 4237, 1731, 4830 ,4145, 2414, 2413 ,0, 0, 0 , - 4237, 4830, 7065 ,4145, 2413, 4146 ,0, 0, 0 , - 4830, 1750, 4259 ,2413, 7186, 7185 ,0, 0, 0 , - 4830, 4259, 7065 ,2413, 7185, 4146 ,0, 0, 0 , - 4259, 1749, 4838 ,7185, 7184, 2423 ,0, 0, 0 , - 4259, 4838, 7065 ,7185, 2423, 4146 ,0, 0, 0 , - 3296, 1008, 4845 ,4147, 4235, 7396 ,0, 0, 0 , - 3296, 4845, 7066 ,4147, 7396, 4148 ,0, 0, 0 , - 4845, 1744, 4256 ,7396, 1957, 1956 ,0, 0, 0 , - 4845, 4256, 7066 ,7396, 1956, 4148 ,0, 0, 0 , - 4256, 1747, 4832 ,1956, 4142, 2419 ,0, 0, 0 , - 4256, 4832, 7066 ,1956, 2419, 4148 ,0, 0, 0 , - 4250, 1742, 4851 ,4151, 7180, 7399 ,0, 0, 0 , - 4250, 4851, 7067 ,4151, 7399, 4152 ,0, 0, 0 , - 4851, 1745, 4253 ,7399, 7181, 1958 ,0, 0, 0 , - 4851, 4253, 7067 ,7399, 1958, 4152 ,0, 0, 0 , - 4253, 1744, 4844 ,1958, 1957, 4149 ,0, 0, 0 , - 4253, 4844, 7067 ,1958, 4149, 4152 ,0, 0, 0 , - 4245, 1738, 4840 ,4153, 7177, 7395 ,0, 0, 0 , - 4245, 4840, 7068 ,4153, 7395, 4154 ,0, 0, 0 , - 4840, 1746, 4254 ,7395, 7183, 7182 ,0, 0, 0 , - 4840, 4254, 7068 ,7395, 7182, 4154 ,0, 0, 0 , - 4254, 1745, 4850 ,7182, 7181, 2431 ,0, 0, 0 , - 4254, 4850, 7068 ,7182, 2431, 4154 ,0, 0, 0 , - 3284, 1006, 6556 ,4155, 4240, 7876 ,0, 0, 0 , - 3284, 6556, 7069 ,4155, 7876, 4156 ,0, 0, 0 , - 6556, 1740, 4251 ,7876, 1953, 1952 ,0, 0, 0 , - 6556, 4251, 7069 ,7876, 1952, 4156 ,0, 0, 0 , - 4251, 1743, 4843 ,1952, 4150, 2427 ,0, 0, 0 , - 4251, 4843, 7069 ,1952, 2427, 4156 ,0, 0, 0 , - 4246, 1739, 4852 ,1948, 2430, 2429 ,0, 0, 0 , - 4246, 4852, 7070 ,1948, 2429, 4158 ,0, 0, 0 , - 4852, 1742, 4249 ,2429, 7180, 7179 ,0, 0, 0 , - 4852, 4249, 7070 ,2429, 7179, 4158 ,0, 0, 0 , - 4249, 1741, 6552 ,7179, 7178, 4157 ,0, 0, 0 , - 4249, 6552, 7070 ,7179, 4157, 4158 ,0, 0, 0 , - 4227, 1723, 4760 ,4161, 4075, 2361 ,0, 0, 0 , - 4227, 4760, 7071 ,4161, 2361, 4162 ,0, 0, 0 , - 4760, 1737, 4243 ,2361, 2360, 7175 ,0, 0, 0 , - 4760, 4243, 7071 ,2361, 7175, 4162 ,0, 0, 0 , - 4243, 1736, 6547 ,7175, 7174, 4159 ,0, 0, 0 , - 4243, 6547, 7071 ,7175, 4159, 4162 ,0, 0, 0 , - 4238, 1732, 4841 ,4164, 2422, 2421 ,0, 0, 0 , - 4238, 4841, 7072 ,4164, 2421, 4165 ,0, 0, 0 , - 4841, 1738, 4244 ,2421, 7177, 7176 ,0, 0, 0 , - 4841, 4244, 7072 ,2421, 7176, 4165 ,0, 0, 0 , - 4244, 1737, 4763 ,7176, 2360, 2359 ,0, 0, 0 , - 4244, 4763, 7072 ,7176, 2359, 4165 ,0, 0, 0 , - 4230, 1725, 4822 ,1942, 1941, 2406 ,0, 0, 0 , - 4230, 4822, 7073 ,1942, 2406, 4167 ,0, 0, 0 , - 4822, 1730, 4240 ,2406, 1945, 1944 ,0, 0, 0 , - 4822, 4240, 7073 ,2406, 1944, 4167 ,0, 0, 0 , - 4240, 1734, 4758 ,1944, 2356, 2355 ,0, 0, 0 , - 4240, 4758, 7073 ,1944, 2355, 4167 ,0, 0, 0 , - 4203, 1705, 4705 ,1920, 1919, 2319 ,0, 0, 0 , - 4203, 4705, 7074 ,1920, 2319, 4170 ,0, 0, 0 , - 4705, 1719, 4219 ,2319, 7173, 7172 ,0, 0, 0 , - 4705, 4219, 7074 ,2319, 7172, 4170 ,0, 0, 0 , - 4219, 1718, 4855 ,7172, 7171, 4168 ,0, 0, 0 , - 4219, 4855, 7074 ,7172, 4168, 4170 ,0, 0, 0 , - 4214, 1714, 4860 ,4172, 7168, 7401 ,0, 0, 0 , - 4214, 4860, 7075 ,4172, 7401, 4173 ,0, 0, 0 , - 4860, 1717, 4217 ,7401, 7169, 1932 ,0, 0, 0 , - 4860, 4217, 7075 ,7401, 1932, 4173 ,0, 0, 0 , - 4217, 1716, 4698 ,1932, 1931, 2316 ,0, 0, 0 , - 4217, 4698, 7075 ,1932, 2316, 4173 ,0, 0, 0 , - 4201, 1704, 4856 ,1914, 7161, 7400 ,0, 0, 0 , - 4201, 4856, 7076 ,1914, 7400, 4174 ,0, 0, 0 , - 4856, 1718, 4218 ,7400, 7171, 7170 ,0, 0, 0 , - 4856, 4218, 7076 ,7400, 7170, 4174 ,0, 0, 0 , - 4218, 1717, 4859 ,7170, 7169, 2438 ,0, 0, 0 , - 4218, 4859, 7076 ,7170, 2438, 4174 ,0, 0, 0 , - 4197, 1701, 4861 ,4175, 4183, 7402 ,0, 0, 0 , - 4197, 4861, 7077 ,4175, 7402, 4176 ,0, 0, 0 , - 4861, 1714, 4213 ,7402, 7168, 7167 ,0, 0, 0 , - 4861, 4213, 7077 ,7402, 7167, 4176 ,0, 0, 0 , - 4213, 1713, 4735 ,7167, 4064, 2343 ,0, 0, 0 , - 4213, 4735, 7077 ,7167, 2343, 4176 ,0, 0, 0 , - 4190, 1697, 4746 ,1902, 4185, 7371 ,0, 0, 0 , - 4190, 4746, 7078 ,1902, 7371, 4177 ,0, 0, 0 , - 4746, 1711, 4208 ,7371, 7166, 1924 ,0, 0, 0 , - 4746, 4208, 7078 ,7371, 1924, 4177 ,0, 0, 0 , - 4208, 1710, 4864 ,1924, 1923, 2441 ,0, 0, 0 , - 4208, 4864, 7078 ,1924, 2441, 4177 ,0, 0, 0 , - 4185, 1689, 4710 ,1898, 2323, 2322 ,0, 0, 0 , - 4185, 4710, 7079 ,1898, 2322, 4179 ,0, 0, 0 , - 4710, 1708, 4205 ,2322, 7165, 7164 ,0, 0, 0 , - 4710, 4205, 7079 ,2322, 7164, 4179 ,0, 0, 0 , - 4205, 1707, 4868 ,7164, 7163, 4178 ,0, 0, 0 , - 4205, 4868, 7079 ,7164, 4178, 4179 ,0, 0, 0 , - 4132, 1650, 4869 ,1856, 1855, 7403 ,0, 0, 0 , - 4132, 4869, 7080 ,1856, 7403, 4180 ,0, 0, 0 , - 4869, 1707, 4204 ,7403, 7163, 7162 ,0, 0, 0 , - 4869, 4204, 7080 ,7403, 7162, 4180 ,0, 0, 0 , - 4204, 1706, 4854 ,7162, 4169, 2435 ,0, 0, 0 , - 4204, 4854, 7080 ,7162, 2435, 4180 ,0, 0, 0 , - 4133, 1651, 4857 ,4181, 2434, 2433 ,0, 0, 0 , - 4133, 4857, 7081 ,4181, 2433, 4182 ,0, 0, 0 , - 4857, 1704, 4200 ,2433, 7161, 7160 ,0, 0, 0 , - 4857, 4200, 7081 ,2433, 7160, 4182 ,0, 0, 0 , - 4200, 1703, 4872 ,7160, 7159, 2449 ,0, 0, 0 , - 4200, 4872, 7081 ,7160, 2449, 4182 ,0, 0, 0 , - 4196, 1699, 4873 ,1912, 1911, 7404 ,0, 0, 0 , - 4196, 4873, 7082 ,1912, 7404, 4184 ,0, 0, 0 , - 4873, 1703, 4199 ,7404, 7159, 1916 ,0, 0, 0 , - 4873, 4199, 7082 ,7404, 1916, 4184 ,0, 0, 0 , - 4199, 1702, 4862 ,1916, 1915, 2437 ,0, 0, 0 , - 4199, 4862, 7082 ,1916, 2437, 4184 ,0, 0, 0 , - 4189, 1696, 4877 ,4186, 7158, 7405 ,0, 0, 0 , - 4189, 4877, 7083 ,4186, 7405, 4187 ,0, 0, 0 , - 4877, 1699, 4192 ,7405, 1911, 1908 ,0, 0, 0 , - 4877, 4192, 7083 ,7405, 1908, 4187 ,0, 0, 0 , - 4192, 1698, 4747 ,1908, 1907, 2349 ,0, 0, 0 , - 4192, 4747, 7083 ,1908, 2349, 4187 ,0, 0, 0 , - 4184, 1691, 4867 ,1900, 1899, 2445 ,0, 0, 0 , - 4184, 4867, 7084 ,1900, 2445, 4189 ,0, 0, 0 , - 4867, 1695, 4187 ,2445, 2444, 1904 ,0, 0, 0 , - 4867, 4187, 7084 ,2445, 1904, 4189 ,0, 0, 0 , - 4187, 1694, 4865 ,1904, 1903, 2440 ,0, 0, 0 , - 4187, 4865, 7084 ,1904, 2440, 4189 ,0, 0, 0 , - 4134, 1652, 4880 ,1854, 2448, 7406 ,0, 0, 0 , - 4134, 4880, 7085 ,1854, 7406, 4190 ,0, 0, 0 , - 4880, 1696, 4188 ,7406, 7158, 7157 ,0, 0, 0 , - 4880, 4188, 7085 ,7406, 7157, 4190 ,0, 0, 0 , - 4188, 1695, 4870 ,7157, 2444, 2443 ,0, 0, 0 , - 4188, 4870, 7085 ,7157, 2443, 4190 ,0, 0, 0 , - 4136, 1653, 4786 ,1860, 1859, 2378 ,0, 0, 0 , - 4136, 4786, 7086 ,1860, 2378, 4193 ,0, 0, 0 , - 4786, 1686, 4176 ,2378, 7155, 1892 ,0, 0, 0 , - 4786, 4176, 7086 ,2378, 1892, 4193 ,0, 0, 0 , - 4176, 1685, 4729 ,1892, 1891, 4191 ,0, 0, 0 , - 4176, 4729, 7086 ,1892, 4191, 4193 ,0, 0, 0 , - 3368, 1058, 4885 ,1207, 4904, 7407 ,0, 0, 0 , - 3368, 4885, 7087 ,1207, 7407, 4194 ,0, 0, 0 , - 4885, 1684, 4173 ,7407, 7154, 7153 ,0, 0, 0 , - 4885, 4173, 7087 ,7407, 7153, 4194 ,0, 0, 0 , - 4173, 1683, 4727 ,7153, 7152, 2339 ,0, 0, 0 , - 4173, 4727, 7087 ,7153, 2339, 4194 ,0, 0, 0 , - 4168, 1679, 4889 ,4197, 7149, 7408 ,0, 0, 0 , - 4168, 4889, 7088 ,4197, 7408, 4198 ,0, 0, 0 , - 4889, 1681, 4174 ,7408, 1887, 1886 ,0, 0, 0 , - 4889, 4174, 7088 ,7408, 1886, 4198 ,0, 0, 0 , - 4174, 1684, 4884 ,1886, 7154, 4195 ,0, 0, 0 , - 4174, 4884, 7088 ,1886, 4195, 4198 ,0, 0, 0 , - 3324, 1031, 4894 ,4199, 6697, 7409 ,0, 0, 0 , - 3324, 4894, 7089 ,4199, 7409, 4200 ,0, 0, 0 , - 4894, 1682, 4171 ,7409, 7150, 1888 ,0, 0, 0 , - 4894, 4171, 7089 ,7409, 1888, 4200 ,0, 0, 0 , - 4171, 1681, 4888 ,1888, 1887, 2461 ,0, 0, 0 , - 4171, 4888, 7089 ,1888, 2461, 4200 ,0, 0, 0 , - 4137, 1654, 4728 ,4203, 4192, 7365 ,0, 0, 0 , - 4137, 4728, 7090 ,4203, 7365, 4204 ,0, 0, 0 , - 4728, 1683, 4172 ,7365, 7152, 7151 ,0, 0, 0 , - 4728, 4172, 7090 ,7365, 7151, 4204 ,0, 0, 0 , - 4172, 1682, 4893 ,7151, 7150, 4201 ,0, 0, 0 , - 4172, 4893, 7090 ,7151, 4201, 4204 ,0, 0, 0 , - 3355, 1048, 4899 ,1195, 6701, 7410 ,0, 0, 0 , - 3355, 4899, 7091 ,1195, 7410, 4206 ,0, 0, 0 , - 4899, 1677, 4169 ,7410, 1883, 1882 ,0, 0, 0 , - 4899, 4169, 7091 ,7410, 1882, 4206 ,0, 0, 0 , - 4169, 1680, 4883 ,1882, 4196, 4205 ,0, 0, 0 , - 4169, 4883, 7091 ,1882, 4205, 4206 ,0, 0, 0 , - 4142, 1658, 4903 ,4209, 4248, 7411 ,0, 0, 0 , - 4142, 4903, 7092 ,4209, 7411, 4210 ,0, 0, 0 , - 4903, 1678, 4166 ,7411, 7147, 1884 ,0, 0, 0 , - 4903, 4166, 7092 ,7411, 1884, 4210 ,0, 0, 0 , - 4166, 1677, 4898 ,1884, 1883, 4207 ,0, 0, 0 , - 4166, 4898, 7092 ,1884, 4207, 4210 ,0, 0, 0 , - 4890, 1679, 4167 ,2459, 7149, 7148 ,0, 0, 0 , - 4890, 4167, 7093 ,2459, 7148, 4211 ,0, 0, 0 , - 4167, 1678, 4902 ,7148, 7147, 2470 ,0, 0, 0 , - 4167, 4902, 7093 ,7148, 2470, 4211 ,0, 0, 0 , - 4144, 1660, 4913 ,1862, 7132, 7414 ,0, 0, 0 , - 4144, 4913, 7094 ,1862, 7414, 4213 ,0, 0, 0 , - 4913, 1676, 4163 ,7414, 7146, 7145 ,0, 0, 0 , - 4913, 4163, 7094 ,7414, 7145, 4213 ,0, 0, 0 , - 4163, 1675, 4909 ,7145, 7144, 4212 ,0, 0, 0 , - 4163, 4909, 7094 ,7145, 4212, 4213 ,0, 0, 0 , - 3374, 1062, 4919 ,1217, 1216, 7416 ,0, 0, 0 , - 3374, 4919, 7095 ,1217, 7416, 4214 ,0, 0, 0 , - 4919, 1673, 4164 ,7416, 1879, 1878 ,0, 0, 0 , - 4919, 4164, 7095 ,7416, 1878, 4214 ,0, 0, 0 , - 4164, 1676, 4912 ,1878, 7146, 2478 ,0, 0, 0 , - 4164, 4912, 7095 ,1878, 2478, 4214 ,0, 0, 0 , - 4158, 1671, 4923 ,4217, 7141, 7417 ,0, 0, 0 , - 4158, 4923, 7096 ,4217, 7417, 4218 ,0, 0, 0 , - 4923, 1674, 4161 ,7417, 7142, 1880 ,0, 0, 0 , - 4923, 4161, 7096 ,7417, 1880, 4218 ,0, 0, 0 , - 4161, 1673, 4918 ,1880, 1879, 4215 ,0, 0, 0 , - 4161, 4918, 7096 ,1880, 4215, 4218 ,0, 0, 0 , - 3308, 1019, 4910 ,1152, 2473, 2472 ,0, 0, 0 , - 3308, 4910, 7097 ,1152, 2472, 4219 ,0, 0, 0 , - 4910, 1675, 4162 ,2472, 7144, 7143 ,0, 0, 0 , - 4910, 4162, 7097 ,2472, 7143, 4219 ,0, 0, 0 , - 4162, 1674, 4922 ,7143, 7142, 2484 ,0, 0, 0 , - 4162, 4922, 7097 ,7143, 2484, 4219 ,0, 0, 0 , - 3347, 1042, 4928 ,1187, 4895, 7418 ,0, 0, 0 , - 3347, 4928, 7098 ,1187, 7418, 4220 ,0, 0, 0 , - 4928, 1669, 4159 ,7418, 1875, 1874 ,0, 0, 0 , - 4928, 4159, 7098 ,7418, 1874, 4220 ,0, 0, 0 , - 4159, 1672, 4917 ,1874, 4216, 2481 ,0, 0, 0 , - 4159, 4917, 7098 ,1874, 2481, 4220 ,0, 0, 0 , - 4153, 1667, 4933 ,4223, 7138, 7419 ,0, 0, 0 , - 4153, 4933, 7099 ,4223, 7419, 4224 ,0, 0, 0 , - 4933, 1670, 4156 ,7419, 7139, 1876 ,0, 0, 0 , - 4933, 4156, 7099 ,7419, 1876, 4224 ,0, 0, 0 , - 4156, 1669, 4927 ,1876, 1875, 4221 ,0, 0, 0 , - 4156, 4927, 7099 ,1876, 4221, 4224 ,0, 0, 0 , - 3300, 1017, 4924 ,4227, 1153, 2483 ,0, 0, 0 , - 3300, 4924, 7100 ,4227, 2483, 4228 ,0, 0, 0 , - 4924, 1671, 4157 ,2483, 7141, 7140 ,0, 0, 0 , - 4924, 4157, 7100 ,2483, 7140, 4228 ,0, 0, 0 , - 4157, 1670, 4932 ,7140, 7139, 4225 ,0, 0, 0 , - 4157, 4932, 7100 ,7140, 4225, 4228 ,0, 0, 0 , - 3381, 1068, 4938 ,1219, 6710, 7421 ,0, 0, 0 , - 3381, 4938, 7101 ,1219, 7421, 4229 ,0, 0, 0 , - 4938, 1665, 4154 ,7421, 1871, 1870 ,0, 0, 0 , - 4938, 4154, 7101 ,7421, 1870, 4229 ,0, 0, 0 , - 4154, 1668, 4926 ,1870, 4222, 2487 ,0, 0, 0 , - 4154, 4926, 7101 ,1870, 2487, 4229 ,0, 0, 0 , - 4148, 1663, 4942 ,4232, 7135, 7422 ,0, 0, 0 , - 4148, 4942, 7102 ,4232, 7422, 4233 ,0, 0, 0 , - 4942, 1666, 4151 ,7422, 7136, 1872 ,0, 0, 0 , - 4942, 4151, 7102 ,7422, 1872, 4233 ,0, 0, 0 , - 4151, 1665, 4937 ,1872, 1871, 4230 ,0, 0, 0 , - 4151, 4937, 7102 ,1872, 4230, 4233 ,0, 0, 0 , - 3289, 1011, 4934 ,4236, 1141, 7420 ,0, 0, 0 , - 3289, 4934, 7103 ,4236, 7420, 4237 ,0, 0, 0 , - 4934, 1667, 4152 ,7420, 7138, 7137 ,0, 0, 0 , - 4934, 4152, 7103 ,7420, 7137, 4237 ,0, 0, 0 , - 4152, 1666, 4941 ,7137, 7136, 4234 ,0, 0, 0 , - 4152, 4941, 7103 ,7137, 4234, 4237 ,0, 0, 0 , - 3340, 1036, 6445 ,1185, 1184, 7849 ,0, 0, 0 , - 3340, 6445, 7104 ,1185, 7849, 4238 ,0, 0, 0 , - 6445, 1661, 4149 ,7849, 1867, 1866 ,0, 0, 0 , - 6445, 4149, 7104 ,7849, 1866, 4238 ,0, 0, 0 , - 4149, 1664, 4936 ,1866, 4231, 2494 ,0, 0, 0 , - 4149, 4936, 7104 ,1866, 2494, 4238 ,0, 0, 0 , - 3284, 1002, 4943 ,4155, 2426, 7423 ,0, 0, 0 , - 3284, 4943, 7105 ,4155, 7423, 4241 ,0, 0, 0 , - 4943, 1663, 4147 ,7423, 7135, 7134 ,0, 0, 0 , - 4943, 4147, 7105 ,7423, 7134, 4241 ,0, 0, 0 , - 4147, 1662, 6441 ,7134, 7133, 4239 ,0, 0, 0 , - 4147, 6441, 7105 ,7134, 4239, 4241 ,0, 0, 0 , - 4138, 1655, 4892 ,4243, 4202, 2465 ,0, 0, 0 , - 4138, 4892, 7106 ,4243, 2465, 4244 ,0, 0, 0 , - 4892, 1033, 3337 ,2465, 2464, 1181 ,0, 0, 0 , - 4892, 3337, 7106 ,2465, 1181, 4244 ,0, 0, 0 , - 3337, 1035, 4790 ,1181, 1180, 2381 ,0, 0, 0 , - 3337, 4790, 7106 ,1181, 2381, 4244 ,0, 0, 0 , - 3307, 1020, 4817 ,4245, 2403, 2402 ,0, 0, 0 , - 3307, 4817, 7107 ,4245, 2402, 4246 ,0, 0, 0 , - 4817, 1027, 3317 ,2402, 6694, 6693 ,0, 0, 0 , - 4817, 3317, 7107 ,2402, 6693, 4246 ,0, 0, 0 , - 3317, 1026, 4906 ,6693, 6692, 2474 ,0, 0, 0 , - 3317, 4906, 7107 ,6693, 2474, 4246 ,0, 0, 0 , - 4141, 1657, 4908 ,1864, 1863, 7413 ,0, 0, 0 , - 4141, 4908, 7108 ,1864, 7413, 4249 ,0, 0, 0 , - 4908, 1028, 3320 ,7413, 6696, 6695 ,0, 0, 0 , - 4908, 3320, 7108 ,7413, 6695, 4249 ,0, 0, 0 , - 3320, 1021, 4904 ,6695, 2395, 4247 ,0, 0, 0 , - 3320, 4904, 7108 ,6695, 4247, 4249 ,0, 0, 0 , - 3351, 1045, 4914 ,1191, 4900, 7415 ,0, 0, 0 , - 3351, 4914, 7109 ,1191, 7415, 4250 ,0, 0, 0 , - 4914, 1660, 4143 ,7415, 7132, 7131 ,0, 0, 0 , - 4914, 4143, 7109 ,7415, 7131, 4250 ,0, 0, 0 , - 4143, 1659, 4897 ,7131, 4208, 2468 ,0, 0, 0 , - 4143, 4897, 7109 ,7131, 2468, 4250 ,0, 0, 0 , - 3301, 1016, 4931 ,1146, 4226, 2490 ,0, 0, 0 , - 3301, 4931, 7110 ,1146, 2490, 4252 ,0, 0, 0 , - 4931, 1013, 3293 ,2490, 2489, 6690 ,0, 0, 0 , - 4931, 3293, 7110 ,2490, 6690, 4252 ,0, 0, 0 , - 3293, 1012, 4835 ,6690, 6689, 4251 ,0, 0, 0 , - 3293, 4835, 7110 ,6690, 4251, 4252 ,0, 0, 0 , - 4122, 1641, 6421 ,1848, 1847, 7840 ,0, 0, 0 , - 4122, 6421, 7111 ,1848, 7840, 4255 ,0, 0, 0 , - 6421, 1648, 4129 ,7840, 7130, 7129 ,0, 0, 0 , - 6421, 4129, 7111 ,7840, 7129, 4255 ,0, 0, 0 , - 4129, 1647, 4953 ,7129, 7128, 4253 ,0, 0, 0 , - 4129, 4953, 7111 ,7129, 4253, 4255 ,0, 0, 0 , - 3342, 1038, 4947 ,4258, 4892, 7424 ,0, 0, 0 , - 3342, 4947, 7112 ,4258, 7424, 4259 ,0, 0, 0 , - 4947, 1646, 4127 ,7424, 7126, 1852 ,0, 0, 0 , - 4947, 4127, 7112 ,7424, 1852, 4259 ,0, 0, 0 , - 4127, 1645, 6434 ,1852, 1851, 4256 ,0, 0, 0 , - 4127, 6434, 7112 ,1852, 4256, 4259 ,0, 0, 0 , - 4086, 1618, 4954 ,1810, 7096, 7426 ,0, 0, 0 , - 4086, 4954, 7113 ,1810, 7426, 4261 ,0, 0, 0 , - 4954, 1647, 4128 ,7426, 7128, 7127 ,0, 0, 0 , - 4954, 4128, 7113 ,7426, 7127, 4261 ,0, 0, 0 , - 4128, 1646, 4946 ,7127, 7126, 4260 ,0, 0, 0 , - 4128, 4946, 7113 ,7127, 4260, 4261 ,0, 0, 0 , - 4117, 1637, 6411 ,1844, 1843, 7836 ,0, 0, 0 , - 4117, 6411, 7114 ,1844, 7836, 4264 ,0, 0, 0 , - 6411, 1644, 4124 ,7836, 7125, 7124 ,0, 0, 0 , - 6411, 4124, 7114 ,7836, 7124, 4264 ,0, 0, 0 , - 4124, 1643, 4958 ,7124, 7123, 4262 ,0, 0, 0 , - 4124, 4958, 7114 ,7124, 4262, 4264 ,0, 0, 0 , - 4081, 1614, 4959 ,1806, 7091, 7427 ,0, 0, 0 , - 4081, 4959, 7115 ,1806, 7427, 4265 ,0, 0, 0 , - 4959, 1643, 4123 ,7427, 7123, 7122 ,0, 0, 0 , - 4959, 4123, 7115 ,7427, 7122, 4265 ,0, 0, 0 , - 4123, 1642, 4952 ,7122, 4254, 2504 ,0, 0, 0 , - 4123, 4952, 7115 ,7122, 2504, 4265 ,0, 0, 0 , - 4112, 1633, 6401 ,1840, 1839, 7832 ,0, 0, 0 , - 4112, 6401, 7116 ,1840, 7832, 4268 ,0, 0, 0 , - 6401, 1640, 4119 ,7832, 7121, 7120 ,0, 0, 0 , - 6401, 4119, 7116 ,7832, 7120, 4268 ,0, 0, 0 , - 4119, 1639, 4963 ,7120, 7119, 4266 ,0, 0, 0 , - 4119, 4963, 7116 ,7120, 4266, 4268 ,0, 0, 0 , - 4076, 1610, 4964 ,1802, 7087, 7428 ,0, 0, 0 , - 4076, 4964, 7117 ,1802, 7428, 4269 ,0, 0, 0 , - 4964, 1639, 4118 ,7428, 7119, 7118 ,0, 0, 0 , - 4964, 4118, 7117 ,7428, 7118, 4269 ,0, 0, 0 , - 4118, 1638, 4957 ,7118, 4263, 2507 ,0, 0, 0 , - 4118, 4957, 7117 ,7118, 2507, 4269 ,0, 0, 0 , - 4107, 1629, 6391 ,1836, 1835, 7828 ,0, 0, 0 , - 4107, 6391, 7118 ,1836, 7828, 4272 ,0, 0, 0 , - 6391, 1636, 4114 ,7828, 7117, 7116 ,0, 0, 0 , - 6391, 4114, 7118 ,7828, 7116, 4272 ,0, 0, 0 , - 4114, 1635, 4968 ,7116, 7115, 4270 ,0, 0, 0 , - 4114, 4968, 7118 ,7116, 4270, 4272 ,0, 0, 0 , - 4070, 1605, 4969 ,4273, 7083, 7429 ,0, 0, 0 , - 4070, 4969, 7119 ,4273, 7429, 4274 ,0, 0, 0 , - 4969, 1635, 4113 ,7429, 7115, 7114 ,0, 0, 0 , - 4969, 4113, 7119 ,7429, 7114, 4274 ,0, 0, 0 , - 4113, 1634, 4962 ,7114, 4267, 2511 ,0, 0, 0 , - 4113, 4962, 7119 ,7114, 2511, 4274 ,0, 0, 0 , - 4102, 1625, 6381 ,1832, 1831, 7824 ,0, 0, 0 , - 4102, 6381, 7120 ,1832, 7824, 4277 ,0, 0, 0 , - 6381, 1632, 4109 ,7824, 7113, 7112 ,0, 0, 0 , - 6381, 4109, 7120 ,7824, 7112, 4277 ,0, 0, 0 , - 4109, 1631, 4973 ,7112, 7111, 4275 ,0, 0, 0 , - 4109, 4973, 7120 ,7112, 4275, 4277 ,0, 0, 0 , - 4067, 1603, 4974 ,1794, 7082, 7430 ,0, 0, 0 , - 4067, 4974, 7121 ,1794, 7430, 4278 ,0, 0, 0 , - 4974, 1631, 4108 ,7430, 7111, 7110 ,0, 0, 0 , - 4974, 4108, 7121 ,7430, 7110, 4278 ,0, 0, 0 , - 4108, 1630, 4967 ,7110, 4271, 2514 ,0, 0, 0 , - 4108, 4967, 7121 ,7110, 2514, 4278 ,0, 0, 0 , - 4098, 344, 6371 ,1828, 1827, 7820 ,0, 0, 0 , - 4098, 6371, 7122 ,1828, 7820, 4281 ,0, 0, 0 , - 6371, 1628, 4104 ,7820, 7109, 7108 ,0, 0, 0 , - 6371, 4104, 7122 ,7820, 7108, 4281 ,0, 0, 0 , - 4104, 1627, 4979 ,7108, 7107, 4279 ,0, 0, 0 , - 4104, 4979, 7122 ,7108, 4279, 4281 ,0, 0, 0 , - 4057, 1595, 4980 ,4282, 7075, 7432 ,0, 0, 0 , - 4057, 4980, 7123 ,4282, 7432, 4283 ,0, 0, 0 , - 4980, 1627, 4103 ,7432, 7107, 7106 ,0, 0, 0 , - 4980, 4103, 7123 ,7432, 7106, 4283 ,0, 0, 0 , - 4103, 1626, 4972 ,7106, 4276, 2518 ,0, 0, 0 , - 4103, 4972, 7123 ,7106, 2518, 4283 ,0, 0, 0 , - 4094, 348, 7125 ,1824, 1823, 7962 ,0, 0, 0 , - 4094, 7125, 7124 ,1824, 7962, 4286 ,0, 0, 0 , - 7125, 345, 4100 ,7962, 6274, 7105 ,0, 0, 0 , - 7125, 4100, 7124 ,7962, 7105, 4286 ,0, 0, 0 , - 4100, 1624, 4985 ,7105, 7104, 4284 ,0, 0, 0 , - 4100, 4985, 7124 ,7105, 4284, 4286 ,0, 0, 0 , - 4050, 1590, 4986 ,1778, 7071, 7434 ,0, 0, 0 , - 4050, 4986, 7126 ,1778, 7434, 4287 ,0, 0, 0 , - 4986, 1624, 4099 ,7434, 7104, 7103 ,0, 0, 0 , - 4986, 4099, 7126 ,7434, 7103, 4287 ,0, 0, 0 , - 4099, 1623, 4978 ,7103, 4280, 2521 ,0, 0, 0 , - 4099, 4978, 7126 ,7103, 2521, 4287 ,0, 0, 0 , - 4090, 352, 7128 ,1820, 1819, 7963 ,0, 0, 0 , - 4090, 7128, 7127 ,1820, 7963, 4290 ,0, 0, 0 , - 7128, 349, 4096 ,7963, 6275, 7102 ,0, 0, 0 , - 7128, 4096, 7127 ,7963, 7102, 4290 ,0, 0, 0 , - 4096, 1622, 4990 ,7102, 7101, 4288 ,0, 0, 0 , - 4096, 4990, 7127 ,7102, 4288, 4290 ,0, 0, 0 , - 4045, 1586, 4991 ,1774, 7067, 7435 ,0, 0, 0 , - 4045, 4991, 7129 ,1774, 7435, 4291 ,0, 0, 0 , - 4991, 1622, 4095 ,7435, 7101, 7100 ,0, 0, 0 , - 4991, 4095, 7129 ,7435, 7100, 4291 ,0, 0, 0 , - 4095, 1621, 4984 ,7100, 4285, 2524 ,0, 0, 0 , - 4095, 4984, 7129 ,7100, 2524, 4291 ,0, 0, 0 , - 4088, 356, 7131 ,1814, 6277, 7964 ,0, 0, 0 , - 4088, 7131, 7130 ,1814, 7964, 4292 ,0, 0, 0 , - 7131, 353, 4092 ,7964, 6276, 7099 ,0, 0, 0 , - 7131, 4092, 7130 ,7964, 7099, 4292 ,0, 0, 0 , - 4092, 1620, 4994 ,7099, 7098, 2530 ,0, 0, 0 , - 4092, 4994, 7130 ,7099, 2530, 4292 ,0, 0, 0 , - 4040, 1582, 4995 ,1770, 7063, 7436 ,0, 0, 0 , - 4040, 4995, 7132 ,1770, 7436, 4293 ,0, 0, 0 , - 4995, 1620, 4091 ,7436, 7098, 7097 ,0, 0, 0 , - 4995, 4091, 7132 ,7436, 7097, 4293 ,0, 0, 0 , - 4091, 1619, 4989 ,7097, 4289, 2527 ,0, 0, 0 , - 4091, 4989, 7132 ,7097, 2527, 4293 ,0, 0, 0 , - 4078, 1611, 4955 ,1808, 1807, 2503 ,0, 0, 0 , - 4078, 4955, 7133 ,1808, 2503, 4296 ,0, 0, 0 , - 4955, 1618, 4085 ,2503, 7096, 7095 ,0, 0, 0 , - 4955, 4085, 7133 ,2503, 7095, 4296 ,0, 0, 0 , - 4085, 1617, 5008 ,7095, 7094, 4294 ,0, 0, 0 , - 4085, 5008, 7133 ,7095, 4294, 4296 ,0, 0, 0 , - 3376, 1064, 5003 ,4297, 6707, 7438 ,0, 0, 0 , - 3376, 5003, 7134 ,4297, 7438, 4298 ,0, 0, 0 , - 5003, 1616, 4083 ,7438, 7092, 1812 ,0, 0, 0 , - 5003, 4083, 7134 ,7438, 1812, 4298 ,0, 0, 0 , - 4083, 1615, 4945 ,1812, 1811, 2501 ,0, 0, 0 , - 4083, 4945, 7134 ,1812, 2501, 4298 ,0, 0, 0 , - 4025, 1571, 5009 ,1762, 1761, 7440 ,0, 0, 0 , - 4025, 5009, 7135 ,1762, 7440, 4301 ,0, 0, 0 , - 5009, 1617, 4084 ,7440, 7094, 7093 ,0, 0, 0 , - 5009, 4084, 7135 ,7440, 7093, 4301 ,0, 0, 0 , - 4084, 1616, 5002 ,7093, 7092, 4299 ,0, 0, 0 , - 4084, 5002, 7135 ,7093, 4299, 4301 ,0, 0, 0 , - 4073, 1607, 4960 ,1804, 1803, 2506 ,0, 0, 0 , - 4073, 4960, 7136 ,1804, 2506, 4304 ,0, 0, 0 , - 4960, 1614, 4080 ,2506, 7091, 7090 ,0, 0, 0 , - 4960, 4080, 7136 ,2506, 7090, 4304 ,0, 0, 0 , - 4080, 1613, 5014 ,7090, 7089, 4302 ,0, 0, 0 , - 4080, 5014, 7136 ,7090, 4302, 4304 ,0, 0, 0 , - 3997, 1549, 5015 ,4305, 4383, 7442 ,0, 0, 0 , - 3997, 5015, 7137 ,4305, 7442, 4306 ,0, 0, 0 , - 5015, 1613, 4079 ,7442, 7089, 7088 ,0, 0, 0 , - 5015, 4079, 7137 ,7442, 7088, 4306 ,0, 0, 0 , - 4079, 1612, 5007 ,7088, 4295, 2538 ,0, 0, 0 , - 4079, 5007, 7137 ,7088, 2538, 4306 ,0, 0, 0 , - 4071, 1606, 4965 ,1798, 2510, 2509 ,0, 0, 0 , - 4071, 4965, 7138 ,1798, 2509, 4308 ,0, 0, 0 , - 4965, 1610, 4075 ,2509, 7087, 7086 ,0, 0, 0 , - 4965, 4075, 7138 ,2509, 7086, 4308 ,0, 0, 0 , - 4075, 1609, 5020 ,7086, 7085, 4307 ,0, 0, 0 , - 4075, 5020, 7138 ,7086, 4307, 4308 ,0, 0, 0 , - 4003, 1554, 5021 ,4309, 7037, 7443 ,0, 0, 0 , - 4003, 5021, 7139 ,4309, 7443, 4310 ,0, 0, 0 , - 5021, 1609, 4074 ,7443, 7085, 7084 ,0, 0, 0 , - 5021, 4074, 7139 ,7443, 7084, 4310 ,0, 0, 0 , - 4074, 1608, 5013 ,7084, 4303, 2542 ,0, 0, 0 , - 4074, 5013, 7139 ,7084, 2542, 4310 ,0, 0, 0 , - 4064, 1600, 4970 ,1796, 1795, 2513 ,0, 0, 0 , - 4064, 4970, 7140 ,1796, 2513, 4313 ,0, 0, 0 , - 4970, 1605, 4069 ,2513, 7083, 1800 ,0, 0, 0 , - 4970, 4069, 7140 ,2513, 1800, 4313 ,0, 0, 0 , - 4069, 1604, 5019 ,1800, 1799, 4311 ,0, 0, 0 , - 4069, 5019, 7140 ,1800, 4311, 4313 ,0, 0, 0 , - 4062, 1599, 4975 ,1790, 7078, 7431 ,0, 0, 0 , - 4062, 4975, 7141 ,1790, 7431, 4315 ,0, 0, 0 , - 4975, 1603, 4066 ,7431, 7082, 7081 ,0, 0, 0 , - 4975, 4066, 7141 ,7431, 7081, 4315 ,0, 0, 0 , - 4066, 1602, 5025 ,7081, 7080, 4314 ,0, 0, 0 , - 4066, 5025, 7141 ,7081, 4314, 4315 ,0, 0, 0 , - 3811, 1404, 5026 ,4316, 4515, 7444 ,0, 0, 0 , - 3811, 5026, 7142 ,4316, 7444, 4317 ,0, 0, 0 , - 5026, 1602, 4065 ,7444, 7080, 7079 ,0, 0, 0 , - 5026, 4065, 7142 ,7444, 7079, 4317 ,0, 0, 0 , - 4065, 1601, 5018 ,7079, 4312, 2546 ,0, 0, 0 , - 4065, 5018, 7142 ,7079, 2546, 4317 ,0, 0, 0 , - 4058, 1596, 4976 ,1786, 2517, 2516 ,0, 0, 0 , - 4058, 4976, 7143 ,1786, 2516, 4319 ,0, 0, 0 , - 4976, 1599, 4061 ,2516, 7078, 7077 ,0, 0, 0 , - 4976, 4061, 7143 ,2516, 7077, 4319 ,0, 0, 0 , - 4061, 1598, 5032 ,7077, 7076, 4318 ,0, 0, 0 , - 4061, 5032, 7143 ,7077, 4318, 4319 ,0, 0, 0 , - 3839, 1426, 5033 ,4320, 4498, 7445 ,0, 0, 0 , - 3839, 5033, 7144 ,4320, 7445, 4321 ,0, 0, 0 , - 5033, 1598, 4060 ,7445, 7076, 1792 ,0, 0, 0 , - 5033, 4060, 7144 ,7445, 1792, 4321 ,0, 0, 0 , - 4060, 1597, 5024 ,1792, 1791, 2550 ,0, 0, 0 , - 4060, 5024, 7144 ,1792, 2550, 4321 ,0, 0, 0 , - 4054, 1593, 4981 ,1782, 7074, 7433 ,0, 0, 0 , - 4054, 4981, 7145 ,1782, 7433, 4323 ,0, 0, 0 , - 4981, 1595, 4056 ,7433, 7075, 1788 ,0, 0, 0 , - 4981, 4056, 7145 ,7433, 1788, 4323 ,0, 0, 0 , - 4056, 1594, 5031 ,1788, 1787, 4322 ,0, 0, 0 , - 4056, 5031, 7145 ,1788, 4322, 4323 ,0, 0, 0 , - 4047, 1587, 4982 ,1780, 1779, 2520 ,0, 0, 0 , - 4047, 4982, 7146 ,1780, 2520, 4326 ,0, 0, 0 , - 4982, 1593, 4053 ,2520, 7074, 7073 ,0, 0, 0 , - 4982, 4053, 7146 ,2520, 7073, 4326 ,0, 0, 0 , - 4053, 1592, 5038 ,7073, 7072, 4324 ,0, 0, 0 , - 4053, 5038, 7146 ,7073, 4324, 4326 ,0, 0, 0 , - 3801, 1396, 5039 ,4327, 6915, 7446 ,0, 0, 0 , - 3801, 5039, 7147 ,4327, 7446, 4328 ,0, 0, 0 , - 5039, 1592, 4052 ,7446, 7072, 1784 ,0, 0, 0 , - 5039, 4052, 7147 ,7446, 1784, 4328 ,0, 0, 0 , - 4052, 1591, 5030 ,1784, 1783, 2554 ,0, 0, 0 , - 4052, 5030, 7147 ,1784, 2554, 4328 ,0, 0, 0 , - 4042, 1583, 4987 ,1776, 1775, 2523 ,0, 0, 0 , - 4042, 4987, 7148 ,1776, 2523, 4331 ,0, 0, 0 , - 4987, 1590, 4049 ,2523, 7071, 7070 ,0, 0, 0 , - 4987, 4049, 7148 ,2523, 7070, 4331 ,0, 0, 0 , - 4049, 1589, 5043 ,7070, 7069, 4329 ,0, 0, 0 , - 4049, 5043, 7148 ,7070, 4329, 4331 ,0, 0, 0 , - 3797, 1393, 5044 ,1564, 6913, 7447 ,0, 0, 0 , - 3797, 5044, 7149 ,1564, 7447, 4332 ,0, 0, 0 , - 5044, 1589, 4048 ,7447, 7069, 7068 ,0, 0, 0 , - 5044, 4048, 7149 ,7447, 7068, 4332 ,0, 0, 0 , - 4048, 1588, 5037 ,7068, 4325, 2557 ,0, 0, 0 , - 4048, 5037, 7149 ,7068, 2557, 4332 ,0, 0, 0 , - 4037, 1579, 4992 ,1772, 1771, 2526 ,0, 0, 0 , - 4037, 4992, 7150 ,1772, 2526, 4335 ,0, 0, 0 , - 4992, 1586, 4044 ,2526, 7067, 7066 ,0, 0, 0 , - 4992, 4044, 7150 ,2526, 7066, 4335 ,0, 0, 0 , - 4044, 1585, 5048 ,7066, 7065, 4333 ,0, 0, 0 , - 4044, 5048, 7150 ,7066, 4333, 4335 ,0, 0, 0 , - 3792, 1389, 5049 ,1560, 6909, 7448 ,0, 0, 0 , - 3792, 5049, 7151 ,1560, 7448, 4336 ,0, 0, 0 , - 5049, 1585, 4043 ,7448, 7065, 7064 ,0, 0, 0 , - 5049, 4043, 7151 ,7448, 7064, 4336 ,0, 0, 0 , - 4043, 1584, 5042 ,7064, 4330, 2560 ,0, 0, 0 , - 4043, 5042, 7151 ,7064, 2560, 4336 ,0, 0, 0 , - 4035, 1578, 4996 ,1768, 1815, 2529 ,0, 0, 0 , - 4035, 4996, 7152 ,1768, 2529, 4338 ,0, 0, 0 , - 4996, 1582, 4039 ,2529, 7063, 7062 ,0, 0, 0 , - 4996, 4039, 7152 ,2529, 7062, 4338 ,0, 0, 0 , - 4039, 1581, 5053 ,7062, 7061, 4337 ,0, 0, 0 , - 4039, 5053, 7152 ,7062, 4337, 4338 ,0, 0, 0 , - 3762, 1368, 5054 ,1534, 4567, 7449 ,0, 0, 0 , - 3762, 5054, 7153 ,1534, 7449, 4339 ,0, 0, 0 , - 5054, 1581, 4038 ,7449, 7061, 7060 ,0, 0, 0 , - 5054, 4038, 7153 ,7449, 7060, 4339 ,0, 0, 0 , - 4038, 1580, 5047 ,7060, 4334, 2563 ,0, 0, 0 , - 4038, 5047, 7153 ,7060, 2563, 4339 ,0, 0, 0 , - 3970, 1528, 5064 ,4342, 7020, 7452 ,0, 0, 0 , - 3970, 5064, 7154 ,4342, 7452, 4343 ,0, 0, 0 , - 5064, 1577, 4031 ,7452, 7059, 7058 ,0, 0, 0 , - 5064, 4031, 7154 ,7452, 7058, 4343 ,0, 0, 0 , - 4031, 1576, 5058 ,7058, 7057, 4340 ,0, 0, 0 , - 4031, 5058, 7154 ,7058, 4340, 4343 ,0, 0, 0 , - 3941, 1505, 5000 ,4344, 4356, 7437 ,0, 0, 0 , - 3941, 5000, 7155 ,4344, 7437, 4345 ,0, 0, 0 , - 5000, 1575, 4032 ,7437, 1765, 1764 ,0, 0, 0 , - 5000, 4032, 7155 ,7437, 1764, 4345 ,0, 0, 0 , - 4032, 1577, 5063 ,1764, 7059, 2575 ,0, 0, 0 , - 4032, 5063, 7155 ,1764, 2575, 4345 ,0, 0, 0 , - 3371, 1060, 5059 ,4348, 6705, 7450 ,0, 0, 0 , - 3371, 5059, 7156 ,4348, 7450, 4349 ,0, 0, 0 , - 5059, 1576, 4030 ,7450, 7057, 1766 ,0, 0, 0 , - 5059, 4030, 7156 ,7450, 1766, 4349 ,0, 0, 0 , - 4030, 1575, 4999 ,1766, 1765, 4346 ,0, 0, 0 , - 4030, 4999, 7156 ,1766, 4346, 4349 ,0, 0, 0 , - 4016, 1564, 5070 ,1754, 1753, 7454 ,0, 0, 0 , - 4016, 5070, 7157 ,1754, 7454, 4352 ,0, 0, 0 , - 5070, 1574, 4027 ,7454, 7056, 7055 ,0, 0, 0 , - 5070, 4027, 7157 ,7454, 7055, 4352 ,0, 0, 0 , - 4027, 1573, 5074 ,7055, 7054, 4350 ,0, 0, 0 , - 4027, 5074, 7157 ,7055, 4350, 4352 ,0, 0, 0 , - 4023, 1570, 5010 ,1756, 7052, 7441 ,0, 0, 0 , - 4023, 5010, 7158 ,1756, 7441, 4354 ,0, 0, 0 , - 5010, 1571, 4028 ,7441, 1761, 1760 ,0, 0, 0 , - 5010, 4028, 7158 ,7441, 1760, 4354 ,0, 0, 0 , - 4028, 1574, 5069 ,1760, 7056, 4353 ,0, 0, 0 , - 4028, 5069, 7158 ,1760, 4353, 4354 ,0, 0, 0 , - 3940, 1504, 5075 ,4357, 4430, 7455 ,0, 0, 0 , - 3940, 5075, 7159 ,4357, 7455, 4358 ,0, 0, 0 , - 5075, 1573, 4026 ,7455, 7054, 7053 ,0, 0, 0 , - 5075, 4026, 7159 ,7455, 7053, 4358 ,0, 0, 0 , - 4026, 1572, 5001 ,7053, 4300, 4355 ,0, 0, 0 , - 4026, 5001, 7159 ,7053, 4355, 4358 ,0, 0, 0 , - 3998, 1550, 5011 ,4359, 2537, 2536 ,0, 0, 0 , - 3998, 5011, 7160 ,4359, 2536, 4360 ,0, 0, 0 , - 5011, 1570, 4022 ,2536, 7052, 7051 ,0, 0, 0 , - 5011, 4022, 7160 ,2536, 7051, 4360 ,0, 0, 0 , - 4022, 1569, 5078 ,7051, 7050, 2586 ,0, 0, 0 , - 4022, 5078, 7160 ,7051, 2586, 4360 ,0, 0, 0 , - 4014, 1563, 5079 ,1748, 7045, 7456 ,0, 0, 0 , - 4014, 5079, 7161 ,1748, 7456, 4361 ,0, 0, 0 , - 5079, 1569, 4021 ,7456, 7050, 1758 ,0, 0, 0 , - 5079, 4021, 7161 ,7456, 1758, 4361 ,0, 0, 0 , - 4021, 1568, 5068 ,1758, 1757, 2578 ,0, 0, 0 , - 4021, 5068, 7161 ,1758, 2578, 4361 ,0, 0, 0 , - 3604, 1243, 5086 ,1407, 6807, 7458 ,0, 0, 0 , - 3604, 5086, 7162 ,1407, 7458, 4362 ,0, 0, 0 , - 5086, 1567, 4018 ,7458, 7049, 7048 ,0, 0, 0 , - 5086, 4018, 7162 ,7458, 7048, 4362 ,0, 0, 0 , - 4018, 1566, 5089 ,7048, 7047, 2592 ,0, 0, 0 , - 4018, 5089, 7162 ,7048, 2592, 4362 ,0, 0, 0 , - 4011, 1560, 5071 ,1750, 1749, 2577 ,0, 0, 0 , - 4011, 5071, 7163 ,1750, 2577, 4365 ,0, 0, 0 , - 5071, 1564, 4019 ,2577, 1753, 1752 ,0, 0, 0 , - 5071, 4019, 7163 ,2577, 1752, 4365 ,0, 0, 0 , - 4019, 1567, 5085 ,1752, 7049, 4363 ,0, 0, 0 , - 4019, 5085, 7163 ,1752, 4363, 4365 ,0, 0, 0 , - 3946, 1509, 5090 ,4366, 7003, 7459 ,0, 0, 0 , - 3946, 5090, 7164 ,4366, 7459, 4367 ,0, 0, 0 , - 5090, 1566, 4017 ,7459, 7047, 7046 ,0, 0, 0 , - 5090, 4017, 7164 ,7459, 7046, 4367 ,0, 0, 0 , - 4017, 1565, 5073 ,7046, 4351, 2582 ,0, 0, 0 , - 4017, 5073, 7164 ,7046, 2582, 4367 ,0, 0, 0 , - 4006, 1556, 5080 ,1746, 1745, 7457 ,0, 0, 0 , - 4006, 5080, 7165 ,1746, 7457, 4370 ,0, 0, 0 , - 5080, 1563, 4013 ,7457, 7045, 7044 ,0, 0, 0 , - 5080, 4013, 7165 ,7457, 7044, 4370 ,0, 0, 0 , - 4013, 1562, 5095 ,7044, 7043, 4368 ,0, 0, 0 , - 4013, 5095, 7165 ,7044, 4368, 4370 ,0, 0, 0 , - 3974, 1531, 5096 ,4373, 4394, 7461 ,0, 0, 0 , - 3974, 5096, 7166 ,4373, 7461, 4374 ,0, 0, 0 , - 5096, 1562, 4012 ,7461, 7043, 7042 ,0, 0, 0 , - 5096, 4012, 7166 ,7461, 7042, 4374 ,0, 0, 0 , - 4012, 1561, 5084 ,7042, 4364, 4371 ,0, 0, 0 , - 4012, 5084, 7166 ,7042, 4371, 4374 ,0, 0, 0 , - 3805, 1399, 5101 ,4377, 4385, 7462 ,0, 0, 0 , - 3805, 5101, 7167 ,4377, 7462, 4378 ,0, 0, 0 , - 5101, 1559, 4008 ,7462, 7041, 7040 ,0, 0, 0 , - 5101, 4008, 7167 ,7462, 7040, 4378 ,0, 0, 0 , - 4008, 1558, 5105 ,7040, 7039, 4375 ,0, 0, 0 , - 4008, 5105, 7167 ,7040, 4375, 4378 ,0, 0, 0 , - 3999, 1551, 5081 ,1736, 2585, 2584 ,0, 0, 0 , - 3999, 5081, 7168 ,1736, 2584, 4380 ,0, 0, 0 , - 5081, 1556, 4009 ,2584, 1745, 1744 ,0, 0, 0 , - 5081, 4009, 7168 ,2584, 1744, 4380 ,0, 0, 0 , - 4009, 1559, 5100 ,1744, 7041, 4379 ,0, 0, 0 , - 4009, 5100, 7168 ,1744, 4379, 4380 ,0, 0, 0 , - 3989, 1543, 5106 ,4381, 4392, 7463 ,0, 0, 0 , - 3989, 5106, 7169 ,4381, 7463, 4382 ,0, 0, 0 , - 5106, 1558, 4007 ,7463, 7039, 7038 ,0, 0, 0 , - 5106, 4007, 7169 ,7463, 7038, 4382 ,0, 0, 0 , - 4007, 1557, 5094 ,7038, 4369, 2596 ,0, 0, 0 , - 4007, 5094, 7169 ,7038, 2596, 4382 ,0, 0, 0 , - 3996, 1548, 5099 ,1738, 1737, 2599 ,0, 0, 0 , - 3996, 5099, 7170 ,1738, 2599, 4384 ,0, 0, 0 , - 5099, 1552, 4004 ,2599, 1741, 1740 ,0, 0, 0 , - 5099, 4004, 7170 ,2599, 1740, 4384 ,0, 0, 0 , - 4004, 1555, 5016 ,1740, 2541, 2540 ,0, 0, 0 , - 4004, 5016, 7170 ,1740, 2540, 4384 ,0, 0, 0 , - 3804, 1398, 5110 ,1574, 1573, 7464 ,0, 0, 0 , - 3804, 5110, 7171 ,1574, 7464, 4386 ,0, 0, 0 , - 5110, 1553, 4001 ,7464, 7035, 1742 ,0, 0, 0 , - 5110, 4001, 7171 ,7464, 1742, 4386 ,0, 0, 0 , - 4001, 1552, 5102 ,1742, 1741, 2598 ,0, 0, 0 , - 4001, 5102, 7171 ,1742, 2598, 4386 ,0, 0, 0 , - 3812, 1405, 5022 ,1576, 2545, 2544 ,0, 0, 0 , - 3812, 5022, 7172 ,1576, 2544, 4387 ,0, 0, 0 , - 5022, 1554, 4002 ,2544, 7037, 7036 ,0, 0, 0 , - 5022, 4002, 7172 ,2544, 7036, 4387 ,0, 0, 0 , - 4002, 1553, 5109 ,7036, 7035, 2605 ,0, 0, 0 , - 4002, 5109, 7172 ,7036, 2605, 4387 ,0, 0, 0 , - 3986, 1541, 5115 ,1724, 7031, 7465 ,0, 0, 0 , - 3986, 5115, 7173 ,1724, 7465, 4389 ,0, 0, 0 , - 5115, 1547, 3993 ,7465, 7034, 7033 ,0, 0, 0 , - 5115, 3993, 7173 ,7465, 7033, 4389 ,0, 0, 0 , - 3993, 1546, 5122 ,7033, 7032, 4388 ,0, 0, 0 , - 3993, 5122, 7173 ,7033, 4388, 4389 ,0, 0, 0 , - 3806, 1400, 5104 ,4390, 4376, 2602 ,0, 0, 0 , - 3806, 5104, 7174 ,4390, 2602, 4391 ,0, 0, 0 , - 5104, 1545, 3994 ,2602, 1733, 1732 ,0, 0, 0 , - 5104, 3994, 7174 ,2602, 1732, 4391 ,0, 0, 0 , - 3994, 1547, 5114 ,1732, 7034, 2609 ,0, 0, 0 , - 3994, 5114, 7174 ,1732, 2609, 4391 ,0, 0, 0 , - 3988, 1542, 5123 ,1730, 1729, 7469 ,0, 0, 0 , - 3988, 5123, 7175 ,1730, 7469, 4393 ,0, 0, 0 , - 5123, 1546, 3992 ,7469, 7032, 1734 ,0, 0, 0 , - 5123, 3992, 7175 ,7469, 1734, 4393 ,0, 0, 0 , - 3992, 1545, 5107 ,1734, 1733, 2601 ,0, 0, 0 , - 3992, 5107, 7175 ,1734, 2601, 4393 ,0, 0, 0 , - 3973, 1530, 5124 ,1718, 1717, 7470 ,0, 0, 0 , - 3973, 5124, 7176 ,1718, 7470, 4395 ,0, 0, 0 , - 5124, 1542, 3990 ,7470, 1729, 1728 ,0, 0, 0 , - 5124, 3990, 7176 ,7470, 1728, 4395 ,0, 0, 0 , - 3990, 1544, 5097 ,1728, 2595, 2594 ,0, 0, 0 , - 3990, 5097, 7176 ,1728, 2594, 4395 ,0, 0, 0 , - 3858, 1441, 5116 ,1616, 6944, 7466 ,0, 0, 0 , - 3858, 5116, 7177 ,1616, 7466, 4396 ,0, 0, 0 , - 5116, 1541, 3985 ,7466, 7031, 7030 ,0, 0, 0 , - 5116, 3985, 7177 ,7466, 7030, 4396 ,0, 0, 0 , - 3985, 1540, 5132 ,7030, 7029, 2619 ,0, 0, 0 , - 3985, 5132, 7177 ,7030, 2619, 4396 ,0, 0, 0 , - 3978, 1534, 5128 ,1722, 1721, 7471 ,0, 0, 0 , - 3978, 5128, 7178 ,1722, 7471, 4397 ,0, 0, 0 , - 5128, 1539, 3983 ,7471, 7027, 1726 ,0, 0, 0 , - 5128, 3983, 7178 ,7471, 1726, 4397 ,0, 0, 0 , - 3983, 1538, 5121 ,1726, 1725, 2613 ,0, 0, 0 , - 3983, 5121, 7178 ,1726, 2613, 4397 ,0, 0, 0 , - 3907, 1478, 5133 ,1660, 6976, 7473 ,0, 0, 0 , - 3907, 5133, 7179 ,1660, 7473, 4398 ,0, 0, 0 , - 5133, 1540, 3984 ,7473, 7029, 7028 ,0, 0, 0 , - 5133, 3984, 7179 ,7473, 7028, 4398 ,0, 0, 0 , - 3984, 1539, 5127 ,7028, 7027, 2616 ,0, 0, 0 , - 3984, 5127, 7179 ,7028, 2616, 4398 ,0, 0, 0 , - 3588, 1230, 5140 ,1397, 1396, 7476 ,0, 0, 0 , - 3588, 5140, 7180 ,1397, 7476, 4399 ,0, 0, 0 , - 5140, 1537, 3980 ,7476, 7026, 7025 ,0, 0, 0 , - 5140, 3980, 7180 ,7476, 7025, 4399 ,0, 0, 0 , - 3980, 1536, 5143 ,7025, 7024, 2627 ,0, 0, 0 , - 3980, 5143, 7180 ,7025, 2627, 4399 ,0, 0, 0 , - 3912, 1482, 5129 ,1664, 6980, 7472 ,0, 0, 0 , - 3912, 5129, 7181 ,1664, 7472, 4401 ,0, 0, 0 , - 5129, 1534, 3981 ,7472, 1721, 1720 ,0, 0, 0 , - 5129, 3981, 7181 ,7472, 1720, 4401 ,0, 0, 0 , - 3981, 1537, 5139 ,1720, 7026, 4400 ,0, 0, 0 , - 3981, 5139, 7181 ,1720, 4400, 4401 ,0, 0, 0 , - 3976, 1533, 5144 ,1716, 7022, 7477 ,0, 0, 0 , - 3976, 5144, 7182 ,1716, 7477, 4402 ,0, 0, 0 , - 5144, 1536, 3979 ,7477, 7024, 7023 ,0, 0, 0 , - 5144, 3979, 7182 ,7477, 7023, 4402 ,0, 0, 0 , - 3979, 1535, 5125 ,7023, 2612, 2611 ,0, 0, 0 , - 3979, 5125, 7182 ,7023, 2611, 4402 ,0, 0, 0 , - 3595, 1236, 5145 ,1399, 6802, 7478 ,0, 0, 0 , - 3595, 5145, 7183 ,1399, 7478, 4403 ,0, 0, 0 , - 5145, 1533, 3975 ,7478, 7022, 7021 ,0, 0, 0 , - 5145, 3975, 7183 ,7478, 7021, 4403 ,0, 0, 0 , - 3975, 1532, 5083 ,7021, 4372, 2589 ,0, 0, 0 , - 3975, 5083, 7183 ,7021, 2589, 4403 ,0, 0, 0 , - 3363, 1054, 5151 ,4404, 6703, 7479 ,0, 0, 0 , - 3363, 5151, 7184 ,4404, 7479, 4405 ,0, 0, 0 , - 5151, 1527, 3971 ,7479, 1713, 1712 ,0, 0, 0 , - 5151, 3971, 7184 ,7479, 1712, 4405 ,0, 0, 0 , - 3971, 1529, 5057 ,1712, 4341, 2571 ,0, 0, 0 , - 3971, 5057, 7184 ,1712, 2571, 4405 ,0, 0, 0 , - 3965, 1524, 5065 ,4408, 7017, 7453 ,0, 0, 0 , - 3965, 5065, 7185 ,4408, 7453, 4409 ,0, 0, 0 , - 5065, 1528, 3969 ,7453, 7020, 1714 ,0, 0, 0 , - 5065, 3969, 7185 ,7453, 1714, 4409 ,0, 0, 0 , - 3969, 1527, 5150 ,1714, 1713, 4406 ,0, 0, 0 , - 3969, 5150, 7185 ,1714, 4406, 4409 ,0, 0, 0 , - 3962, 1522, 5160 ,1704, 7016, 7482 ,0, 0, 0 , - 3962, 5160, 7186 ,1704, 7482, 4411 ,0, 0, 0 , - 5160, 1526, 3966 ,7482, 7019, 7018 ,0, 0, 0 , - 5160, 3966, 7186 ,7482, 7018, 4411 ,0, 0, 0 , - 3966, 1525, 5149 ,7018, 4407, 4410 ,0, 0, 0 , - 3966, 5149, 7186 ,7018, 4410, 4411 ,0, 0, 0 , - 3952, 1514, 5155 ,1696, 7007, 7480 ,0, 0, 0 , - 3952, 5155, 7187 ,1696, 7480, 4412 ,0, 0, 0 , - 5155, 1523, 3967 ,7480, 1709, 1708 ,0, 0, 0 , - 5155, 3967, 7187 ,7480, 1708, 4412 ,0, 0, 0 , - 3967, 1526, 5159 ,1708, 7019, 2637 ,0, 0, 0 , - 3967, 5159, 7187 ,1708, 2637, 4412 ,0, 0, 0 , - 3942, 1506, 5066 ,1688, 2574, 2573 ,0, 0, 0 , - 3942, 5066, 7188 ,1688, 2573, 4413 ,0, 0, 0 , - 5066, 1524, 3964 ,2573, 7017, 1710 ,0, 0, 0 , - 5066, 3964, 7188 ,2573, 1710, 4413 ,0, 0, 0 , - 3964, 1523, 5154 ,1710, 1709, 2634 ,0, 0, 0 , - 3964, 5154, 7188 ,1710, 2634, 4413 ,0, 0, 0 , - 3954, 1515, 5161 ,1702, 1701, 7483 ,0, 0, 0 , - 3954, 5161, 7189 ,1702, 7483, 4416 ,0, 0, 0 , - 5161, 1522, 3961 ,7483, 7016, 7015 ,0, 0, 0 , - 5161, 3961, 7189 ,7483, 7015, 4416 ,0, 0, 0 , - 3961, 1521, 5170 ,7015, 7014, 4414 ,0, 0, 0 , - 3961, 5170, 7189 ,7015, 4414, 4416 ,0, 0, 0 , - 3358, 1050, 5166 ,4417, 4889, 7484 ,0, 0, 0 , - 3358, 5166, 7190 ,4417, 7484, 4418 ,0, 0, 0 , - 5166, 1520, 3959 ,7484, 7012, 1706 ,0, 0, 0 , - 5166, 3959, 7190 ,7484, 1706, 4418 ,0, 0, 0 , - 3959, 1519, 5148 ,1706, 1705, 2631 ,0, 0, 0 , - 3959, 5148, 7190 ,1706, 2631, 4418 ,0, 0, 0 , - 3937, 1502, 5171 ,1684, 7001, 7485 ,0, 0, 0 , - 3937, 5171, 7191 ,1684, 7485, 4420 ,0, 0, 0 , - 5171, 1521, 3960 ,7485, 7014, 7013 ,0, 0, 0 , - 5171, 3960, 7191 ,7485, 7013, 4420 ,0, 0, 0 , - 3960, 1520, 5165 ,7013, 7012, 4419 ,0, 0, 0 , - 3960, 5165, 7191 ,7013, 4419, 4420 ,0, 0, 0 , - 3614, 1251, 5176 ,1415, 6816, 7486 ,0, 0, 0 , - 3614, 5176, 7192 ,1415, 7486, 4421 ,0, 0, 0 , - 5176, 1518, 3956 ,7486, 7011, 7010 ,0, 0, 0 , - 5176, 3956, 7192 ,7486, 7010, 4421 ,0, 0, 0 , - 3956, 1517, 5179 ,7010, 7009, 2650 ,0, 0, 0 , - 3956, 5179, 7192 ,7010, 2650, 4421 ,0, 0, 0 , - 3949, 1511, 5162 ,1698, 1697, 2636 ,0, 0, 0 , - 3949, 5162, 7193 ,1698, 2636, 4424 ,0, 0, 0 , - 5162, 1515, 3957 ,2636, 1701, 1700 ,0, 0, 0 , - 5162, 3957, 7193 ,2636, 1700, 4424 ,0, 0, 0 , - 3957, 1518, 5175 ,1700, 7011, 4422 ,0, 0, 0 , - 3957, 5175, 7193 ,1700, 4422, 4424 ,0, 0, 0 , - 3932, 1498, 5180 ,1680, 6996, 7487 ,0, 0, 0 , - 3932, 5180, 7194 ,1680, 7487, 4425 ,0, 0, 0 , - 5180, 1517, 3955 ,7487, 7009, 7008 ,0, 0, 0 , - 5180, 3955, 7194 ,7487, 7008, 4425 ,0, 0, 0 , - 3955, 1516, 5169 ,7008, 4415, 2644 ,0, 0, 0 , - 3955, 5169, 7194 ,7008, 2644, 4425 ,0, 0, 0 , - 3944, 1507, 5156 ,1694, 1693, 7481 ,0, 0, 0 , - 3944, 5156, 7195 ,1694, 7481, 4428 ,0, 0, 0 , - 5156, 1514, 3951 ,7481, 7007, 7006 ,0, 0, 0 , - 5156, 3951, 7195 ,7481, 7006, 4428 ,0, 0, 0 , - 3951, 1513, 5186 ,7006, 7005, 4426 ,0, 0, 0 , - 3951, 5186, 7195 ,7006, 4426, 4428 ,0, 0, 0 , - 3609, 1247, 5187 ,1411, 6811, 7490 ,0, 0, 0 , - 3609, 5187, 7196 ,1411, 7490, 4429 ,0, 0, 0 , - 5187, 1513, 3950 ,7490, 7005, 7004 ,0, 0, 0 , - 5187, 3950, 7196 ,7490, 7004, 4429 ,0, 0, 0 , - 3950, 1512, 5174 ,7004, 4423, 2647 ,0, 0, 0 , - 3950, 5174, 7196 ,7004, 2647, 4429 ,0, 0, 0 , - 3939, 1503, 5157 ,1690, 1689, 2633 ,0, 0, 0 , - 3939, 5157, 7197 ,1690, 2633, 4431 ,0, 0, 0 , - 5157, 1507, 3947 ,2633, 1693, 1692 ,0, 0, 0 , - 5157, 3947, 7197 ,2633, 1692, 4431 ,0, 0, 0 , - 3947, 1510, 5076 ,1692, 2581, 2580 ,0, 0, 0 , - 3947, 5076, 7197 ,1692, 2580, 4431 ,0, 0, 0 , - 3600, 1240, 5091 ,1403, 4707, 7460 ,0, 0, 0 , - 3600, 5091, 7198 ,1403, 7460, 4432 ,0, 0, 0 , - 5091, 1509, 3945 ,7460, 7003, 7002 ,0, 0, 0 , - 5091, 3945, 7198 ,7460, 7002, 4432 ,0, 0, 0 , - 3945, 1508, 5185 ,7002, 4427, 2653 ,0, 0, 0 , - 3945, 5185, 7198 ,7002, 2653, 4432 ,0, 0, 0 , - 3929, 1495, 5172 ,1682, 1681, 2643 ,0, 0, 0 , - 3929, 5172, 7199 ,1682, 2643, 4435 ,0, 0, 0 , - 5172, 1502, 3936 ,2643, 7001, 7000 ,0, 0, 0 , - 5172, 3936, 7199 ,2643, 7000, 4435 ,0, 0, 0 , - 3936, 1501, 6150 ,7000, 6999, 4433 ,0, 0, 0 , - 3936, 6150, 7199 ,7000, 4433, 4435 ,0, 0, 0 , - 3384, 1070, 6155 ,4436, 4985, 7749 ,0, 0, 0 , - 3384, 6155, 7200 ,4436, 7749, 4437 ,0, 0, 0 , - 6155, 1500, 3934 ,7749, 6997, 1686 ,0, 0, 0 , - 6155, 3934, 7200 ,7749, 1686, 4437 ,0, 0, 0 , - 3934, 1499, 5164 ,1686, 1685, 2641 ,0, 0, 0 , - 3934, 5164, 7200 ,1686, 2641, 4437 ,0, 0, 0 , - 3924, 1491, 5181 ,1678, 1677, 7488 ,0, 0, 0 , - 3924, 5181, 7201 ,1678, 7488, 4440 ,0, 0, 0 , - 5181, 1498, 3931 ,7488, 6996, 6995 ,0, 0, 0 , - 5181, 3931, 7201 ,7488, 6995, 4440 ,0, 0, 0 , - 3931, 1497, 6145 ,6995, 6994, 4438 ,0, 0, 0 , - 3931, 6145, 7201 ,6995, 4438, 4440 ,0, 0, 0 , - 3919, 1487, 5191 ,1674, 1673, 7491 ,0, 0, 0 , - 3919, 5191, 7202 ,1674, 7491, 4443 ,0, 0, 0 , - 5191, 1494, 3926 ,7491, 6992, 6991 ,0, 0, 0 , - 5191, 3926, 7202 ,7491, 6991, 4443 ,0, 0, 0 , - 3926, 1493, 6135 ,6991, 6990, 4441 ,0, 0, 0 , - 3926, 6135, 7202 ,6991, 4441, 4443 ,0, 0, 0 , - 3520, 1178, 5182 ,1337, 1336, 7489 ,0, 0, 0 , - 3520, 5182, 7203 ,1337, 7489, 4444 ,0, 0, 0 , - 5182, 1491, 3927 ,7489, 1677, 1676 ,0, 0, 0 , - 5182, 3927, 7203 ,7489, 1676, 4444 ,0, 0, 0 , - 3927, 1494, 5190 ,1676, 6992, 2657 ,0, 0, 0 , - 3927, 5190, 7203 ,1676, 2657, 4444 ,0, 0, 0 , - 3914, 1483, 5196 ,1670, 1669, 7493 ,0, 0, 0 , - 3914, 5196, 7204 ,1670, 7493, 4447 ,0, 0, 0 , - 5196, 1490, 3921 ,7493, 6988, 6987 ,0, 0, 0 , - 5196, 3921, 7204 ,7493, 6987, 4447 ,0, 0, 0 , - 3921, 1489, 6125 ,6987, 6986, 4445 ,0, 0, 0 , - 3921, 6125, 7204 ,6987, 4445, 4447 ,0, 0, 0 , - 3515, 1174, 5192 ,1333, 1332, 7492 ,0, 0, 0 , - 3515, 5192, 7205 ,1333, 7492, 4448 ,0, 0, 0 , - 5192, 1487, 3922 ,7492, 1673, 1672 ,0, 0, 0 , - 5192, 3922, 7205 ,7492, 1672, 4448 ,0, 0, 0 , - 3922, 1490, 5195 ,1672, 6988, 2661 ,0, 0, 0 , - 3922, 5195, 7205 ,1672, 2661, 4448 ,0, 0, 0 , - 3909, 1479, 5138 ,1666, 1665, 7475 ,0, 0, 0 , - 3909, 5138, 7206 ,1666, 7475, 4451 ,0, 0, 0 , - 5138, 1486, 3916 ,7475, 6984, 6983 ,0, 0, 0 , - 5138, 3916, 7206 ,7475, 6983, 4451 ,0, 0, 0 , - 3916, 1485, 6120 ,6983, 6982, 4449 ,0, 0, 0 , - 3916, 6120, 7206 ,6983, 4449, 4451 ,0, 0, 0 , - 3512, 1172, 5197 ,4452, 4788, 7494 ,0, 0, 0 , - 3512, 5197, 7207 ,4452, 7494, 4453 ,0, 0, 0 , - 5197, 1483, 3917 ,7494, 1669, 1668 ,0, 0, 0 , - 5197, 3917, 7207 ,7494, 1668, 4453 ,0, 0, 0 , - 3917, 1486, 5137 ,1668, 6984, 2623 ,0, 0, 0 , - 3917, 5137, 7207 ,1668, 2623, 4453 ,0, 0, 0 , - 3904, 1475, 5130 ,1662, 1661, 2615 ,0, 0, 0 , - 3904, 5130, 7208 ,1662, 2615, 4456 ,0, 0, 0 , - 5130, 1482, 3911 ,2615, 6980, 6979 ,0, 0, 0 , - 5130, 3911, 7208 ,2615, 6979, 4456 ,0, 0, 0 , - 3911, 1481, 6115 ,6979, 6978, 4454 ,0, 0, 0 , - 3911, 6115, 7208 ,6979, 4454, 4456 ,0, 0, 0 , - 3899, 1471, 5134 ,1658, 1657, 7474 ,0, 0, 0 , - 3899, 5134, 7209 ,1658, 7474, 4459 ,0, 0, 0 , - 5134, 1478, 3906 ,7474, 6976, 6975 ,0, 0, 0 , - 5134, 3906, 7209 ,7474, 6975, 4459 ,0, 0, 0 , - 3906, 1477, 6110 ,6975, 6974, 4457 ,0, 0, 0 , - 3906, 6110, 7209 ,6975, 4457, 4459 ,0, 0, 0 , - 3638, 1270, 5202 ,1435, 4546, 7495 ,0, 0, 0 , - 3638, 5202, 7210 ,1435, 7495, 4460 ,0, 0, 0 , - 5202, 1474, 3901 ,7495, 6972, 6971 ,0, 0, 0 , - 5202, 3901, 7210 ,7495, 6971, 4460 ,0, 0, 0 , - 3901, 1473, 5205 ,6971, 6970, 2668 ,0, 0, 0 , - 3901, 5205, 7210 ,6971, 2668, 4460 ,0, 0, 0 , - 3855, 1438, 5135 ,1618, 1617, 2618 ,0, 0, 0 , - 3855, 5135, 7211 ,1618, 2618, 4463 ,0, 0, 0 , - 5135, 1471, 3902 ,2618, 1657, 1656 ,0, 0, 0 , - 5135, 3902, 7211 ,2618, 1656, 4463 ,0, 0, 0 , - 3902, 1474, 5201 ,1656, 6972, 4461 ,0, 0, 0 , - 3902, 5201, 7211 ,1656, 4461, 4463 ,0, 0, 0 , - 3897, 1470, 5206 ,1652, 6968, 7496 ,0, 0, 0 , - 3897, 5206, 7212 ,1652, 7496, 4465 ,0, 0, 0 , - 5206, 1473, 3900 ,7496, 6970, 6969 ,0, 0, 0 , - 5206, 3900, 7212 ,7496, 6969, 4465 ,0, 0, 0 , - 3900, 1472, 6109 ,6969, 4458, 4464 ,0, 0, 0 , - 3900, 6109, 7212 ,6969, 4464, 4465 ,0, 0, 0 , - 3860, 1442, 5207 ,1622, 1621, 7497 ,0, 0, 0 , - 3860, 5207, 7213 ,1622, 7497, 4468 ,0, 0, 0 , - 5207, 1470, 3896 ,7497, 6968, 6967 ,0, 0, 0 , - 5207, 3896, 7213 ,7497, 6967, 4468 ,0, 0, 0 , - 3896, 1469, 6092 ,6967, 6966, 4466 ,0, 0, 0 , - 3896, 6092, 7213 ,6967, 4466, 4468 ,0, 0, 0 , - 3876, 1455, 5218 ,1632, 6955, 7500 ,0, 0, 0 , - 3876, 5218, 7214 ,1632, 7500, 4469 ,0, 0, 0 , - 5218, 1467, 3892 ,7500, 6965, 6964 ,0, 0, 0 , - 5218, 3892, 7214 ,7500, 6964, 4469 ,0, 0, 0 , - 3892, 1466, 5222 ,6964, 6963, 2679 ,0, 0, 0 , - 3892, 5222, 7214 ,6964, 2679, 4469 ,0, 0, 0 , - 3666, 1292, 5214 ,4470, 6829, 7499 ,0, 0, 0 , - 3666, 5214, 7215 ,4470, 7499, 4471 ,0, 0, 0 , - 5214, 1465, 3893 ,7499, 1649, 1648 ,0, 0, 0 , - 5214, 3893, 7215 ,7499, 1648, 4471 ,0, 0, 0 , - 3893, 1467, 5217 ,1648, 6965, 2676 ,0, 0, 0 , - 3893, 5217, 7215 ,1648, 2676, 4471 ,0, 0, 0 , - 3886, 1461, 5223 ,1646, 1645, 7502 ,0, 0, 0 , - 3886, 5223, 7216 ,1646, 7502, 4474 ,0, 0, 0 , - 5223, 1466, 3891 ,7502, 6963, 1650 ,0, 0, 0 , - 5223, 3891, 7216 ,7502, 1650, 4474 ,0, 0, 0 , - 3891, 1465, 5213 ,1650, 1649, 4472 ,0, 0, 0 , - 3891, 5213, 7216 ,1650, 4472, 4474 ,0, 0, 0 , - 3883, 1460, 5224 ,1642, 1641, 7503 ,0, 0, 0 , - 3883, 5224, 7217 ,1642, 7503, 4476 ,0, 0, 0 , - 5224, 1461, 3889 ,7503, 1645, 1644 ,0, 0, 0 , - 5224, 3889, 7217 ,7503, 1644, 4476 ,0, 0, 0 , - 3889, 1464, 6071 ,1644, 6962, 4475 ,0, 0, 0 , - 3889, 6071, 7217 ,1644, 4475, 4476 ,0, 0, 0 , - 3862, 1444, 6065 ,4479, 6946, 3268 ,0, 0, 0 , - 3862, 6065, 7218 ,4479, 3268, 4480 ,0, 0, 0 , - 6065, 1463, 3887 ,3268, 3267, 6960 ,0, 0, 0 , - 6065, 3887, 7218 ,3268, 6960, 4480 ,0, 0, 0 , - 3887, 1462, 5212 ,6960, 4473, 4477 ,0, 0, 0 , - 3887, 5212, 7218 ,6960, 4477, 4480 ,0, 0, 0 , - 3878, 1456, 5225 ,1638, 1637, 7504 ,0, 0, 0 , - 3878, 5225, 7219 ,1638, 7504, 4483 ,0, 0, 0 , - 5225, 1460, 3884 ,7504, 1641, 1640 ,0, 0, 0 , - 5225, 3884, 7219 ,7504, 1640, 4483 ,0, 0, 0 , - 3884, 518, 5229 ,1640, 3263, 4481 ,0, 0, 0 , - 3884, 5229, 7219 ,1640, 4481, 4483 ,0, 0, 0 , - 3799, 1394, 5236 ,1570, 1569, 7505 ,0, 0, 0 , - 3799, 5236, 7220 ,1570, 7505, 4486 ,0, 0, 0 , - 5236, 1459, 3880 ,7505, 6959, 6958 ,0, 0, 0 , - 5236, 3880, 7220 ,7505, 6958, 4486 ,0, 0, 0 , - 3880, 1458, 5240 ,6958, 6957, 4484 ,0, 0, 0 , - 3880, 5240, 7220 ,6958, 4484, 4486 ,0, 0, 0 , - 3873, 1452, 5226 ,1634, 1633, 2678 ,0, 0, 0 , - 3873, 5226, 7221 ,1634, 2678, 4489 ,0, 0, 0 , - 5226, 1456, 3881 ,2678, 1637, 1636 ,0, 0, 0 , - 5226, 3881, 7221 ,2678, 1636, 4489 ,0, 0, 0 , - 3881, 1459, 5235 ,1636, 6959, 4487 ,0, 0, 0 , - 3881, 5235, 7221 ,1636, 4487, 4489 ,0, 0, 0 , - 3784, 1382, 5241 ,1558, 1557, 7506 ,0, 0, 0 , - 3784, 5241, 7222 ,1558, 7506, 4490 ,0, 0, 0 , - 5241, 1458, 3879 ,7506, 6957, 6956 ,0, 0, 0 , - 5241, 3879, 7222 ,7506, 6956, 4490 ,0, 0, 0 , - 3879, 1457, 5228 ,6956, 4482, 2683 ,0, 0, 0 , - 3879, 5228, 7222 ,6956, 2683, 4490 ,0, 0, 0 , - 3660, 1287, 5219 ,1457, 1456, 7501 ,0, 0, 0 , - 3660, 5219, 7223 ,1457, 7501, 4491 ,0, 0, 0 , - 5219, 1455, 3875 ,7501, 6955, 6954 ,0, 0, 0 , - 5219, 3875, 7223 ,7501, 6954, 4491 ,0, 0, 0 , - 3875, 1454, 5244 ,6954, 6953, 2694 ,0, 0, 0 , - 3875, 5244, 7223 ,6954, 2694, 4491 ,0, 0, 0 , - 3869, 1449, 5245 ,1630, 1629, 7507 ,0, 0, 0 , - 3869, 5245, 7224 ,1630, 7507, 4494 ,0, 0, 0 , - 5245, 1454, 3874 ,7507, 6953, 6952 ,0, 0, 0 , - 5245, 3874, 7224 ,7507, 6952, 4494 ,0, 0, 0 , - 3874, 1453, 5234 ,6952, 4488, 4492 ,0, 0, 0 , - 3874, 5234, 7224 ,6952, 4492, 4494 ,0, 0, 0 , - 3867, 1448, 5251 ,1624, 6949, 7510 ,0, 0, 0 , - 3867, 5251, 7225 ,1624, 7510, 4495 ,0, 0, 0 , - 5251, 1451, 3870 ,7510, 6951, 6950 ,0, 0, 0 , - 5251, 3870, 7225 ,7510, 6950, 4495 ,0, 0, 0 , - 3870, 1450, 5233 ,6950, 4493, 2686 ,0, 0, 0 , - 3870, 5233, 7225 ,6950, 2686, 4495 ,0, 0, 0 , - 3835, 1423, 5246 ,1596, 6928, 7508 ,0, 0, 0 , - 3835, 5246, 7226 ,1596, 7508, 4496 ,0, 0, 0 , - 5246, 1449, 3871 ,7508, 1629, 1628 ,0, 0, 0 , - 5246, 3871, 7226 ,7508, 1628, 4496 ,0, 0, 0 , - 3871, 1451, 5250 ,1628, 6951, 2697 ,0, 0, 0 , - 3871, 5250, 7226 ,1628, 2697, 4496 ,0, 0, 0 , - 3838, 1425, 5252 ,4499, 6929, 7511 ,0, 0, 0 , - 3838, 5252, 7227 ,4499, 7511, 4500 ,0, 0, 0 , - 5252, 1448, 3866 ,7511, 6949, 6948 ,0, 0, 0 , - 5252, 3866, 7227 ,7511, 6948, 4500 ,0, 0, 0 , - 3866, 1447, 5034 ,6948, 6947, 4497 ,0, 0, 0 , - 3866, 5034, 7227 ,6948, 4497, 4500 ,0, 0, 0 , - 3802, 1397, 5035 ,1568, 2553, 2552 ,0, 0, 0 , - 3802, 5035, 7228 ,1568, 2552, 4501 ,0, 0, 0 , - 5035, 1447, 3865 ,2552, 6947, 1626 ,0, 0, 0 , - 5035, 3865, 7228 ,2552, 1626, 4501 ,0, 0, 0 , - 3865, 1446, 5237 ,1626, 1625, 2685 ,0, 0, 0 , - 3865, 5237, 7228 ,1626, 2685, 4501 ,0, 0, 0 , - 3657, 1285, 5208 ,4502, 6826, 7498 ,0, 0, 0 , - 3657, 5208, 7229 ,4502, 7498, 4503 ,0, 0, 0 , - 5208, 1442, 3863 ,7498, 1621, 1620 ,0, 0, 0 , - 5208, 3863, 7229 ,7498, 1620, 4503 ,0, 0, 0 , - 3863, 1445, 5211 ,1620, 4478, 2672 ,0, 0, 0 , - 3863, 5211, 7229 ,1620, 2672, 4503 ,0, 0, 0 , - 3853, 1437, 5117 ,1612, 6940, 7467 ,0, 0, 0 , - 3853, 5117, 7230 ,1612, 7467, 4505 ,0, 0, 0 , - 5117, 1441, 3857 ,7467, 6944, 6943 ,0, 0, 0 , - 5117, 3857, 7230 ,7467, 6943, 4505 ,0, 0, 0 , - 3857, 1440, 5257 ,6943, 6942, 4504 ,0, 0, 0 , - 3857, 5257, 7230 ,6943, 4504, 4505 ,0, 0, 0 , - 3819, 1410, 5258 ,1586, 1585, 7512 ,0, 0, 0 , - 3819, 5258, 7231 ,1586, 7512, 4506 ,0, 0, 0 , - 5258, 1440, 3856 ,7512, 6942, 6941 ,0, 0, 0 , - 5258, 3856, 7231 ,7512, 6941, 4506 ,0, 0, 0 , - 3856, 1439, 5200 ,6941, 4462, 2665 ,0, 0, 0 , - 3856, 5200, 7231 ,6941, 2665, 4506 ,0, 0, 0 , - 3849, 1434, 5118 ,1608, 6937, 7468 ,0, 0, 0 , - 3849, 5118, 7232 ,1608, 7468, 4508 ,0, 0, 0 , - 5118, 1437, 3852 ,7468, 6940, 6939 ,0, 0, 0 , - 5118, 3852, 7232 ,7468, 6939, 4508 ,0, 0, 0 , - 3852, 1436, 5262 ,6939, 6938, 4507 ,0, 0, 0 , - 3852, 5262, 7232 ,6939, 4507, 4508 ,0, 0, 0 , - 3845, 1431, 5263 ,1604, 6934, 7513 ,0, 0, 0 , - 3845, 5263, 7233 ,1604, 7513, 4510 ,0, 0, 0 , - 5263, 1436, 3851 ,7513, 6938, 1614 ,0, 0, 0 , - 5263, 3851, 7233 ,7513, 1614, 4510 ,0, 0, 0 , - 3851, 1435, 5256 ,1614, 1613, 4509 ,0, 0, 0 , - 3851, 5256, 7233 ,1614, 4509, 4510 ,0, 0, 0 , - 3807, 1401, 5119 ,1572, 2608, 2607 ,0, 0, 0 , - 3807, 5119, 7234 ,1572, 2607, 4512 ,0, 0, 0 , - 5119, 1434, 3848 ,2607, 6937, 6936 ,0, 0, 0 , - 5119, 3848, 7234 ,2607, 6936, 4512 ,0, 0, 0 , - 3848, 1433, 5111 ,6936, 6935, 4511 ,0, 0, 0 , - 3848, 5111, 7234 ,6936, 4511, 4512 ,0, 0, 0 , - 3809, 1402, 5112 ,1578, 1577, 2604 ,0, 0, 0 , - 3809, 5112, 7235 ,1578, 2604, 4513 ,0, 0, 0 , - 5112, 1433, 3847 ,2604, 6935, 1610 ,0, 0, 0 , - 5112, 3847, 7235 ,2604, 1610, 4513 ,0, 0, 0 , - 3847, 1432, 5261 ,1610, 1609, 2704 ,0, 0, 0 , - 3847, 5261, 7235 ,1610, 2704, 4513 ,0, 0, 0 , - 3810, 1403, 5264 ,4516, 2703, 2702 ,0, 0, 0 , - 3810, 5264, 7236 ,4516, 2702, 4517 ,0, 0, 0 , - 5264, 1431, 3844 ,2702, 6934, 6933 ,0, 0, 0 , - 5264, 3844, 7236 ,2702, 6933, 4517 ,0, 0, 0 , - 3844, 1430, 5027 ,6933, 6932, 4514 ,0, 0, 0 , - 3844, 5027, 7236 ,6933, 4514, 4517 ,0, 0, 0 , - 3817, 1409, 5268 ,1580, 4526, 7514 ,0, 0, 0 , - 3817, 5268, 7237 ,1580, 7514, 4518 ,0, 0, 0 , - 5268, 1429, 3842 ,7514, 6930, 1606 ,0, 0, 0 , - 5268, 3842, 7237 ,7514, 1606, 4518 ,0, 0, 0 , - 3842, 1428, 5255 ,1606, 1605, 2700 ,0, 0, 0 , - 3842, 5255, 7237 ,1606, 2700, 4518 ,0, 0, 0 , - 3840, 1427, 5028 ,1600, 2549, 2548 ,0, 0, 0 , - 3840, 5028, 7238 ,1600, 2548, 4520 ,0, 0, 0 , - 5028, 1430, 3843 ,2548, 6932, 6931 ,0, 0, 0 , - 5028, 3843, 7238 ,2548, 6931, 4520 ,0, 0, 0 , - 3843, 1429, 5267 ,6931, 6930, 4519 ,0, 0, 0 , - 3843, 5267, 7238 ,6931, 4519, 4520 ,0, 0, 0 , - 3832, 1420, 5253 ,1598, 1597, 2696 ,0, 0, 0 , - 3832, 5253, 7239 ,1598, 2696, 4521 ,0, 0, 0 , - 5253, 1425, 3837 ,2696, 6929, 1602 ,0, 0, 0 , - 5253, 3837, 7239 ,2696, 1602, 4521 ,0, 0, 0 , - 3837, 1424, 5266 ,1602, 1601, 2708 ,0, 0, 0 , - 3837, 5266, 7239 ,1602, 2708, 4521 ,0, 0, 0 , - 3651, 1280, 5247 ,4524, 4672, 7509 ,0, 0, 0 , - 3651, 5247, 7240 ,4524, 7509, 4525 ,0, 0, 0 , - 5247, 1423, 3834 ,7509, 6928, 6927 ,0, 0, 0 , - 5247, 3834, 7240 ,7509, 6927, 4525 ,0, 0, 0 , - 3834, 1422, 5273 ,6927, 6926, 4522 ,0, 0, 0 , - 3834, 5273, 7240 ,6927, 4522, 4525 ,0, 0, 0 , - 3816, 1408, 5274 ,4527, 4539, 7516 ,0, 0, 0 , - 3816, 5274, 7241 ,4527, 7516, 4528 ,0, 0, 0 , - 5274, 1422, 3833 ,7516, 6926, 6925 ,0, 0, 0 , - 5274, 3833, 7241 ,7516, 6925, 4528 ,0, 0, 0 , - 3833, 1421, 5269 ,6925, 2707, 2706 ,0, 0, 0 , - 3833, 5269, 7241 ,6925, 2706, 4528 ,0, 0, 0 , - 3755, 1362, 5278 ,1532, 1531, 7517 ,0, 0, 0 , - 3755, 5278, 7242 ,1532, 7517, 4531 ,0, 0, 0 , - 5278, 1419, 3829 ,7517, 6924, 6923 ,0, 0, 0 , - 5278, 3829, 7242 ,7517, 6923, 4531 ,0, 0, 0 , - 3829, 1418, 5284 ,6923, 6922, 4529 ,0, 0, 0 , - 3829, 5284, 7242 ,6923, 4529, 4531 ,0, 0, 0 , - 3652, 1281, 5272 ,4532, 4523, 7515 ,0, 0, 0 , - 3652, 5272, 7243 ,4532, 7515, 4533 ,0, 0, 0 , - 5272, 1417, 3830 ,7515, 1593, 1592 ,0, 0, 0 , - 5272, 3830, 7243 ,7515, 1592, 4533 ,0, 0, 0 , - 3830, 1419, 5277 ,1592, 6924, 2715 ,0, 0, 0 , - 3830, 5277, 7243 ,1592, 2715, 4533 ,0, 0, 0 , - 3826, 1416, 5285 ,1588, 6921, 7519 ,0, 0, 0 , - 3826, 5285, 7244 ,1588, 7519, 4534 ,0, 0, 0 , - 5285, 1418, 3828 ,7519, 6922, 1594 ,0, 0, 0 , - 5285, 3828, 7244 ,7519, 1594, 4534 ,0, 0, 0 , - 3828, 1417, 5271 ,1594, 1593, 2711 ,0, 0, 0 , - 3828, 5271, 7244 ,1594, 2711, 4534 ,0, 0, 0 , - 3715, 1331, 5286 ,4537, 4617, 7520 ,0, 0, 0 , - 3715, 5286, 7245 ,4537, 7520, 4538 ,0, 0, 0 , - 5286, 1416, 3825 ,7520, 6921, 6920 ,0, 0, 0 , - 5286, 3825, 7245 ,7520, 6920, 4538 ,0, 0, 0 , - 3825, 1415, 5290 ,6920, 6919, 4535 ,0, 0, 0 , - 3825, 5290, 7245 ,6920, 4535, 4538 ,0, 0, 0 , - 3815, 1407, 5291 ,4540, 4544, 7521 ,0, 0, 0 , - 3815, 5291, 7246 ,4540, 7521, 4541 ,0, 0, 0 , - 5291, 1415, 3824 ,7521, 6919, 1590 ,0, 0, 0 , - 5291, 3824, 7246 ,7521, 1590, 4541 ,0, 0, 0 , - 3824, 1414, 5275 ,1590, 1589, 2710 ,0, 0, 0 , - 3824, 5275, 7246 ,1590, 2710, 4541 ,0, 0, 0 , - 3716, 1332, 5289 ,1494, 4536, 2722 ,0, 0, 0 , - 3716, 5289, 7247 ,1494, 2722, 4543 ,0, 0, 0 , - 5289, 1413, 3821 ,2722, 2721, 6918 ,0, 0, 0 , - 5289, 3821, 7247 ,2722, 6918, 4543 ,0, 0, 0 , - 3821, 1412, 5295 ,6918, 6917, 4542 ,0, 0, 0 , - 3821, 5295, 7247 ,6918, 4542, 4543 ,0, 0, 0 , - 3814, 1406, 5259 ,1582, 1581, 2699 ,0, 0, 0 , - 3814, 5259, 7248 ,1582, 2699, 4545 ,0, 0, 0 , - 5259, 1410, 3822 ,2699, 1585, 1584 ,0, 0, 0 , - 5259, 3822, 7248 ,2699, 1584, 4545 ,0, 0, 0 , - 3822, 1413, 5292 ,1584, 2721, 2720 ,0, 0, 0 , - 3822, 5292, 7248 ,1584, 2720, 4545 ,0, 0, 0 , - 3637, 1269, 5296 ,4547, 4623, 7522 ,0, 0, 0 , - 3637, 5296, 7249 ,4547, 7522, 4548 ,0, 0, 0 , - 5296, 1412, 3820 ,7522, 6917, 6916 ,0, 0, 0 , - 5296, 3820, 7249 ,7522, 6916, 4548 ,0, 0, 0 , - 3820, 1411, 5203 ,6916, 2664, 2663 ,0, 0, 0 , - 3820, 5203, 7249 ,6916, 2663, 4548 ,0, 0, 0 , - 3794, 1390, 5040 ,1566, 1565, 2556 ,0, 0, 0 , - 3794, 5040, 7250 ,1566, 2556, 4549 ,0, 0, 0 , - 5040, 1396, 3800 ,2556, 6915, 6914 ,0, 0, 0 , - 5040, 3800, 7250 ,2556, 6914, 4549 ,0, 0, 0 , - 3800, 1395, 5239 ,6914, 4485, 2690 ,0, 0, 0 , - 3800, 5239, 7250 ,6914, 2690, 4549 ,0, 0, 0 , - 3789, 1386, 5045 ,1562, 1561, 2559 ,0, 0, 0 , - 3789, 5045, 7251 ,1562, 2559, 4552 ,0, 0, 0 , - 5045, 1393, 3796 ,2559, 6913, 6912 ,0, 0, 0 , - 5045, 3796, 7251 ,2559, 6912, 4552 ,0, 0, 0 , - 3796, 1392, 5300 ,6912, 6911, 4550 ,0, 0, 0 , - 3796, 5300, 7251 ,6912, 4550, 4552 ,0, 0, 0 , - 3787, 1385, 5301 ,1556, 6905, 7523 ,0, 0, 0 , - 3787, 5301, 7252 ,1556, 7523, 4553 ,0, 0, 0 , - 5301, 1392, 3795 ,7523, 6911, 6910 ,0, 0, 0 , - 5301, 3795, 7252 ,7523, 6910, 4553 ,0, 0, 0 , - 3795, 1391, 5242 ,6910, 2689, 2688 ,0, 0, 0 , - 3795, 5242, 7252 ,6910, 2688, 4553 ,0, 0, 0 , - 3760, 1366, 5050 ,1536, 1535, 2562 ,0, 0, 0 , - 3760, 5050, 7253 ,1536, 2562, 4554 ,0, 0, 0 , - 5050, 1389, 3791 ,2562, 6909, 6908 ,0, 0, 0 , - 5050, 3791, 7253 ,2562, 6908, 4554 ,0, 0, 0 , - 3791, 1388, 5304 ,6908, 6907, 2733 ,0, 0, 0 , - 3791, 5304, 7253 ,6908, 2733, 4554 ,0, 0, 0 , - 3782, 1381, 5305 ,1552, 6901, 7524 ,0, 0, 0 , - 3782, 5305, 7254 ,1552, 7524, 4555 ,0, 0, 0 , - 5305, 1388, 3790 ,7524, 6907, 6906 ,0, 0, 0 , - 5305, 3790, 7254 ,7524, 6906, 4555 ,0, 0, 0 , - 3790, 1387, 5299 ,6906, 4551, 2729 ,0, 0, 0 , - 3790, 5299, 7254 ,6906, 2729, 4555 ,0, 0, 0 , - 3779, 1378, 5302 ,1554, 1553, 2728 ,0, 0, 0 , - 3779, 5302, 7255 ,1554, 2728, 4558 ,0, 0, 0 , - 5302, 1385, 3786 ,2728, 6905, 6904 ,0, 0, 0 , - 5302, 3786, 7255 ,2728, 6904, 4558 ,0, 0, 0 , - 3786, 1384, 5310 ,6904, 6903, 4556 ,0, 0, 0 , - 3786, 5310, 7255 ,6904, 4556, 4558 ,0, 0, 0 , - 3765, 1369, 5311 ,4560, 4573, 7526 ,0, 0, 0 , - 3765, 5311, 7256 ,4560, 7526, 4561 ,0, 0, 0 , - 5311, 1384, 3785 ,7526, 6903, 6902 ,0, 0, 0 , - 5311, 3785, 7256 ,7526, 6902, 4561 ,0, 0, 0 , - 3785, 1383, 5231 ,6902, 2682, 2681 ,0, 0, 0 , - 3785, 5231, 7256 ,6902, 2681, 4561 ,0, 0, 0 , - 3775, 1375, 5306 ,1550, 1549, 7525 ,0, 0, 0 , - 3775, 5306, 7257 ,1550, 7525, 4564 ,0, 0, 0 , - 5306, 1381, 3781 ,7525, 6901, 6900 ,0, 0, 0 , - 5306, 3781, 7257 ,7525, 6900, 4564 ,0, 0, 0 , - 3781, 1380, 5315 ,6900, 6899, 4562 ,0, 0, 0 , - 3781, 5315, 7257 ,6900, 4562, 4564 ,0, 0, 0 , - 3768, 1371, 5316 ,4565, 4571, 7527 ,0, 0, 0 , - 3768, 5316, 7258 ,4565, 7527, 4566 ,0, 0, 0 , - 5316, 1380, 3780 ,7527, 6899, 6898 ,0, 0, 0 , - 5316, 3780, 7258 ,7527, 6898, 4566 ,0, 0, 0 , - 3780, 1379, 5309 ,6898, 4557, 2737 ,0, 0, 0 , - 3780, 5309, 7258 ,6898, 2737, 4566 ,0, 0, 0 , - 3761, 1367, 5307 ,4568, 2732, 2731 ,0, 0, 0 , - 3761, 5307, 7259 ,4568, 2731, 4569 ,0, 0, 0 , - 5307, 1375, 3777 ,2731, 1549, 1548 ,0, 0, 0 , - 5307, 3777, 7259 ,2731, 1548, 4569 ,0, 0, 0 , - 3777, 1377, 5055 ,1548, 2566, 2565 ,0, 0, 0 , - 3777, 5055, 7259 ,1548, 2565, 4569 ,0, 0, 0 , - 3772, 604, 5319 ,1546, 656, 7528 ,0, 0, 0 , - 3772, 5319, 7260 ,1546, 7528, 4570 ,0, 0, 0 , - 5319, 1377, 3776 ,7528, 2566, 6897 ,0, 0, 0 , - 5319, 3776, 7260 ,7528, 6897, 4570 ,0, 0, 0 , - 3776, 1376, 5314 ,6897, 4563, 2741 ,0, 0, 0 , - 3776, 5314, 7260 ,6897, 2741, 4570 ,0, 0, 0 , - 3767, 1370, 5968 ,1544, 1543, 3203 ,0, 0, 0 , - 3767, 5968, 7261 ,1544, 3203, 4572 ,0, 0, 0 , - 5968, 605, 3773 ,3203, 3202, 6896 ,0, 0, 0 , - 5968, 3773, 7261 ,3203, 6896, 4572 ,0, 0, 0 , - 3773, 1374, 5317 ,6896, 2740, 2739 ,0, 0, 0 , - 3773, 5317, 7261 ,6896, 2739, 4572 ,0, 0, 0 , - 3764, 612, 5965 ,1540, 1539, 7702 ,0, 0, 0 , - 3764, 5965, 7262 ,1540, 7702, 4574 ,0, 0, 0 , - 5965, 1373, 3769 ,7702, 6895, 6894 ,0, 0, 0 , - 5965, 3769, 7262 ,7702, 6894, 4574 ,0, 0, 0 , - 3769, 1372, 5312 ,6894, 2736, 2735 ,0, 0, 0 , - 3769, 5312, 7262 ,6894, 2735, 4574 ,0, 0, 0 , - 3617, 1253, 5324 ,4575, 4627, 7529 ,0, 0, 0 , - 3617, 5324, 7263 ,4575, 7529, 4576 ,0, 0, 0 , - 5324, 1365, 3757 ,7529, 6893, 6892 ,0, 0, 0 , - 5324, 3757, 7263 ,7529, 6892, 4576 ,0, 0, 0 , - 3757, 1364, 5327 ,6892, 6891, 2750 ,0, 0, 0 , - 3757, 5327, 7263 ,6892, 2750, 4576 ,0, 0, 0 , - 3750, 1358, 5279 ,1528, 1527, 7518 ,0, 0, 0 , - 3750, 5279, 7264 ,1528, 7518, 4579 ,0, 0, 0 , - 5279, 1362, 3758 ,7518, 1531, 1530 ,0, 0, 0 , - 5279, 3758, 7264 ,7518, 1530, 4579 ,0, 0, 0 , - 3758, 1365, 5323 ,1530, 6893, 4577 ,0, 0, 0 , - 3758, 5323, 7264 ,1530, 4577, 4579 ,0, 0, 0 , - 3647, 1277, 5328 ,4582, 6824, 7530 ,0, 0, 0 , - 3647, 5328, 7265 ,4582, 7530, 4583 ,0, 0, 0 , - 5328, 1364, 3756 ,7530, 6891, 6890 ,0, 0, 0 , - 5328, 3756, 7265 ,7530, 6890, 4583 ,0, 0, 0 , - 3756, 1363, 5283 ,6890, 4530, 4580 ,0, 0, 0 , - 3756, 5283, 7265 ,6890, 4580, 4583 ,0, 0, 0 , - 3745, 1354, 5335 ,1524, 1523, 7534 ,0, 0, 0 , - 3745, 5335, 7266 ,1524, 7534, 4586 ,0, 0, 0 , - 5335, 1361, 3752 ,7534, 6889, 6888 ,0, 0, 0 , - 5335, 3752, 7266 ,7534, 6888, 4586 ,0, 0, 0 , - 3752, 1360, 5340 ,6888, 6887, 4584 ,0, 0, 0 , - 3752, 5340, 7266 ,6888, 4584, 4586 ,0, 0, 0 , - 3653, 1282, 5280 ,1447, 2714, 2713 ,0, 0, 0 , - 3653, 5280, 7267 ,1447, 2713, 4587 ,0, 0, 0 , - 5280, 1358, 3753 ,2713, 1527, 1526 ,0, 0, 0 , - 5280, 3753, 7267 ,2713, 1526, 4587 ,0, 0, 0 , - 3753, 1361, 5334 ,1526, 6889, 2753 ,0, 0, 0 , - 3753, 5334, 7267 ,1526, 2753, 4587 ,0, 0, 0 , - 3711, 1328, 5341 ,1490, 6866, 7536 ,0, 0, 0 , - 3711, 5341, 7268 ,1490, 7536, 4588 ,0, 0, 0 , - 5341, 1360, 3751 ,7536, 6887, 6886 ,0, 0, 0 , - 5341, 3751, 7268 ,7536, 6886, 4588 ,0, 0, 0 , - 3751, 1359, 5322 ,6886, 4578, 2746 ,0, 0, 0 , - 3751, 5322, 7268 ,6886, 2746, 4588 ,0, 0, 0 , - 3740, 1350, 5345 ,1520, 1519, 7537 ,0, 0, 0 , - 3740, 5345, 7269 ,1520, 7537, 4591 ,0, 0, 0 , - 5345, 1357, 3747 ,7537, 6885, 6884 ,0, 0, 0 , - 5345, 3747, 7269 ,7537, 6884, 4591 ,0, 0, 0 , - 3747, 1356, 5350 ,6884, 6883, 4589 ,0, 0, 0 , - 3747, 5350, 7269 ,6884, 4589, 4591 ,0, 0, 0 , - 3662, 1289, 5336 ,4592, 6828, 7535 ,0, 0, 0 , - 3662, 5336, 7270 ,4592, 7535, 4593 ,0, 0, 0 , - 5336, 1354, 3748 ,7535, 1523, 1522 ,0, 0, 0 , - 5336, 3748, 7270 ,7535, 1522, 4593 ,0, 0, 0 , - 3748, 1357, 5344 ,1522, 6885, 2760 ,0, 0, 0 , - 3748, 5344, 7270 ,1522, 2760, 4593 ,0, 0, 0 , - 3706, 1324, 5351 ,1486, 6861, 7539 ,0, 0, 0 , - 3706, 5351, 7271 ,1486, 7539, 4594 ,0, 0, 0 , - 5351, 1356, 3746 ,7539, 6883, 6882 ,0, 0, 0 , - 5351, 3746, 7271 ,7539, 6882, 4594 ,0, 0, 0 , - 3746, 1355, 5339 ,6882, 4585, 2756 ,0, 0, 0 , - 3746, 5339, 7271 ,6882, 2756, 4594 ,0, 0, 0 , - 3735, 1346, 5355 ,1516, 1515, 7540 ,0, 0, 0 , - 3735, 5355, 7272 ,1516, 7540, 4597 ,0, 0, 0 , - 5355, 1353, 3742 ,7540, 6881, 6880 ,0, 0, 0 , - 5355, 3742, 7272 ,7540, 6880, 4597 ,0, 0, 0 , - 3742, 1352, 5360 ,6880, 6879, 4595 ,0, 0, 0 , - 3742, 5360, 7272 ,6880, 4595, 4597 ,0, 0, 0 , - 3668, 1294, 5346 ,1459, 6831, 7538 ,0, 0, 0 , - 3668, 5346, 7273 ,1459, 7538, 4598 ,0, 0, 0 , - 5346, 1350, 3743 ,7538, 1519, 1518 ,0, 0, 0 , - 5346, 3743, 7273 ,7538, 1518, 4598 ,0, 0, 0 , - 3743, 1353, 5354 ,1518, 6881, 2766 ,0, 0, 0 , - 3743, 5354, 7273 ,1518, 2766, 4598 ,0, 0, 0 , - 3701, 1320, 5361 ,1482, 6857, 7542 ,0, 0, 0 , - 3701, 5361, 7274 ,1482, 7542, 4599 ,0, 0, 0 , - 5361, 1352, 3741 ,7542, 6879, 6878 ,0, 0, 0 , - 5361, 3741, 7274 ,7542, 6878, 4599 ,0, 0, 0 , - 3741, 1351, 5349 ,6878, 4590, 2763 ,0, 0, 0 , - 3741, 5349, 7274 ,6878, 2763, 4599 ,0, 0, 0 , - 3731, 1343, 5365 ,4602, 6871, 7543 ,0, 0, 0 , - 3731, 5365, 7275 ,4602, 7543, 4603 ,0, 0, 0 , - 5365, 1349, 3737 ,7543, 6877, 6876 ,0, 0, 0 , - 5365, 3737, 7275 ,7543, 6876, 4603 ,0, 0, 0 , - 3737, 1348, 5372 ,6876, 6875, 4600 ,0, 0, 0 , - 3737, 5372, 7275 ,6876, 4600, 4603 ,0, 0, 0 , - 3655, 1283, 5356 ,1453, 1452, 7541 ,0, 0, 0 , - 3655, 5356, 7276 ,1453, 7541, 4604 ,0, 0, 0 , - 5356, 1346, 3738 ,7541, 1515, 1514 ,0, 0, 0 , - 5356, 3738, 7276 ,7541, 1514, 4604 ,0, 0, 0 , - 3738, 1349, 5364 ,1514, 6877, 2773 ,0, 0, 0 , - 3738, 5364, 7276 ,1514, 2773, 4604 ,0, 0, 0 , - 3696, 1316, 5373 ,1478, 6853, 7547 ,0, 0, 0 , - 3696, 5373, 7277 ,1478, 7547, 4605 ,0, 0, 0 , - 5373, 1348, 3736 ,7547, 6875, 6874 ,0, 0, 0 , - 5373, 3736, 7277 ,7547, 6874, 4605 ,0, 0, 0 , - 3736, 1347, 5359 ,6874, 4596, 2769 ,0, 0, 0 , - 3736, 5359, 7277 ,6874, 2769, 4605 ,0, 0, 0 , - 3643, 1274, 5384 ,1439, 6822, 7550 ,0, 0, 0 , - 3643, 5384, 7278 ,1439, 7550, 4606 ,0, 0, 0 , - 5384, 1345, 3732 ,7550, 6873, 6872 ,0, 0, 0 , - 5384, 3732, 7278 ,7550, 6872, 4606 ,0, 0, 0 , - 3732, 1344, 5371 ,6872, 4601, 2776 ,0, 0, 0 , - 3732, 5371, 7278 ,6872, 2776, 4606 ,0, 0, 0 , - 3645, 1275, 5379 ,1445, 1444, 7549 ,0, 0, 0 , - 3645, 5379, 7279 ,1445, 7549, 4609 ,0, 0, 0 , - 5379, 1342, 3733 ,7549, 1511, 1510 ,0, 0, 0 , - 5379, 3733, 7279 ,7549, 1510, 4609 ,0, 0, 0 , - 3733, 1345, 5383 ,1510, 6873, 4607 ,0, 0, 0 , - 3733, 5383, 7279 ,1510, 4607, 4609 ,0, 0, 0 , - 3723, 1337, 5366 ,4612, 6868, 7544 ,0, 0, 0 , - 3723, 5366, 7280 ,4612, 7544, 4613 ,0, 0, 0 , - 5366, 1343, 3730 ,7544, 6871, 1512 ,0, 0, 0 , - 5366, 3730, 7280 ,7544, 1512, 4613 ,0, 0, 0 , - 3730, 1342, 5378 ,1512, 1511, 4610 ,0, 0, 0 , - 3730, 5378, 7280 ,1512, 4610, 4613 ,0, 0, 0 , - 3724, 1338, 5377 ,1502, 4611, 2780 ,0, 0, 0 , - 3724, 5377, 7281 ,1502, 2780, 4615 ,0, 0, 0 , - 5377, 1341, 3727 ,2780, 2779, 6870 ,0, 0, 0 , - 5377, 3727, 7281 ,2780, 6870, 4615 ,0, 0, 0 , - 3727, 1340, 5388 ,6870, 6869, 4614 ,0, 0, 0 , - 3727, 5388, 7281 ,6870, 4614, 4615 ,0, 0, 0 , - 3648, 1278, 5282 ,1443, 4581, 2718 ,0, 0, 0 , - 3648, 5282, 7282 ,1443, 2718, 4616 ,0, 0, 0 , - 5282, 1339, 3728 ,2718, 1507, 1506 ,0, 0, 0 , - 5282, 3728, 7282 ,2718, 1506, 4616 ,0, 0, 0 , - 3728, 1341, 5380 ,1506, 2779, 2778 ,0, 0, 0 , - 3728, 5380, 7282 ,1506, 2778, 4616 ,0, 0, 0 , - 3714, 1330, 5389 ,4618, 4621, 7551 ,0, 0, 0 , - 3714, 5389, 7283 ,4618, 7551, 4619 ,0, 0, 0 , - 5389, 1340, 3726 ,7551, 6869, 1508 ,0, 0, 0 , - 5389, 3726, 7283 ,7551, 1508, 4619 ,0, 0, 0 , - 3726, 1339, 5287 ,1508, 1507, 2717 ,0, 0, 0 , - 3726, 5287, 7283 ,1508, 2717, 4619 ,0, 0, 0 , - 3718, 1333, 5367 ,1500, 1499, 7545 ,0, 0, 0 , - 3718, 5367, 7284 ,1500, 7545, 4620 ,0, 0, 0 , - 5367, 1337, 3722 ,7545, 6868, 1504 ,0, 0, 0 , - 5367, 3722, 7284 ,7545, 1504, 4620 ,0, 0, 0 , - 3722, 1336, 5387 ,1504, 1503, 2787 ,0, 0, 0 , - 3722, 5387, 7284 ,1504, 2787, 4620 ,0, 0, 0 , - 3713, 1329, 5294 ,1496, 1495, 2726 ,0, 0, 0 , - 3713, 5294, 7285 ,1496, 2726, 4622 ,0, 0, 0 , - 5294, 1335, 3719 ,2726, 2725, 6867 ,0, 0, 0 , - 5294, 3719, 7285 ,2726, 6867, 4622 ,0, 0, 0 , - 3719, 1334, 5390 ,6867, 2786, 2785 ,0, 0, 0 , - 3719, 5390, 7285 ,6867, 2785, 4622 ,0, 0, 0 , - 3636, 1268, 5368 ,4624, 4674, 7546 ,0, 0, 0 , - 3636, 5368, 7286 ,4624, 7546, 4625 ,0, 0, 0 , - 5368, 1333, 3720 ,7546, 1499, 1498 ,0, 0, 0 , - 5368, 3720, 7286 ,7546, 1498, 4625 ,0, 0, 0 , - 3720, 1335, 5297 ,1498, 2725, 2724 ,0, 0, 0 , - 3720, 5297, 7286 ,1498, 2724, 4625 ,0, 0, 0 , - 3703, 1321, 5342 ,1488, 1487, 2755 ,0, 0, 0 , - 3703, 5342, 7287 ,1488, 2755, 4626 ,0, 0, 0 , - 5342, 1328, 3710 ,2755, 6866, 6865 ,0, 0, 0 , - 5342, 3710, 7287 ,2755, 6865, 4626 ,0, 0, 0 , - 3710, 1327, 5396 ,6865, 6864, 2795 ,0, 0, 0 , - 3710, 5396, 7287 ,6865, 2795, 4626 ,0, 0, 0 , - 3616, 1252, 5393 ,1421, 1420, 7552 ,0, 0, 0 , - 3616, 5393, 7288 ,1421, 7552, 4628 ,0, 0, 0 , - 5393, 1326, 3708 ,7552, 6862, 1492 ,0, 0, 0 , - 5393, 3708, 7288 ,7552, 1492, 4628 ,0, 0, 0 , - 3708, 1325, 5325 ,1492, 1491, 2745 ,0, 0, 0 , - 3708, 5325, 7288 ,1492, 2745, 4628 ,0, 0, 0 , - 3674, 1297, 5397 ,4629, 4632, 7553 ,0, 0, 0 , - 3674, 5397, 7289 ,4629, 7553, 4630 ,0, 0, 0 , - 5397, 1327, 3709 ,7553, 6864, 6863 ,0, 0, 0 , - 5397, 3709, 7289 ,7553, 6863, 4630 ,0, 0, 0 , - 3709, 1326, 5392 ,6863, 6862, 2791 ,0, 0, 0 , - 3709, 5392, 7289 ,6863, 2791, 4630 ,0, 0, 0 , - 3698, 1317, 5352 ,1484, 1483, 2762 ,0, 0, 0 , - 3698, 5352, 7290 ,1484, 2762, 4631 ,0, 0, 0 , - 5352, 1324, 3705 ,2762, 6861, 6860 ,0, 0, 0 , - 5352, 3705, 7290 ,2762, 6860, 4631 ,0, 0, 0 , - 3705, 1323, 5400 ,6860, 6859, 2799 ,0, 0, 0 , - 3705, 5400, 7290 ,6860, 2799, 4631 ,0, 0, 0 , - 3673, 1296, 5401 ,1468, 1467, 7554 ,0, 0, 0 , - 3673, 5401, 7291 ,1468, 7554, 4633 ,0, 0, 0 , - 5401, 1323, 3704 ,7554, 6859, 6858 ,0, 0, 0 , - 5401, 3704, 7291 ,7554, 6858, 4633 ,0, 0, 0 , - 3704, 1322, 5398 ,6858, 2794, 2793 ,0, 0, 0 , - 3704, 5398, 7291 ,6858, 2793, 4633 ,0, 0, 0 , - 3693, 1313, 5362 ,1480, 1479, 2768 ,0, 0, 0 , - 3693, 5362, 7292 ,1480, 2768, 4634 ,0, 0, 0 , - 5362, 1320, 3700 ,2768, 6857, 6856 ,0, 0, 0 , - 5362, 3700, 7292 ,2768, 6856, 4634 ,0, 0, 0 , - 3700, 1319, 5404 ,6856, 6855, 2803 ,0, 0, 0 , - 3700, 5404, 7292 ,6856, 2803, 4634 ,0, 0, 0 , - 3683, 1306, 5405 ,1466, 4638, 7555 ,0, 0, 0 , - 3683, 5405, 7293 ,1466, 7555, 4635 ,0, 0, 0 , - 5405, 1319, 3699 ,7555, 6855, 6854 ,0, 0, 0 , - 5405, 3699, 7293 ,7555, 6854, 4635 ,0, 0, 0 , - 3699, 1318, 5402 ,6854, 2798, 2797 ,0, 0, 0 , - 3699, 5402, 7293 ,6854, 2797, 4635 ,0, 0, 0 , - 3691, 1312, 5374 ,1474, 6849, 7548 ,0, 0, 0 , - 3691, 5374, 7294 ,1474, 7548, 4637 ,0, 0, 0 , - 5374, 1316, 3695 ,7548, 6853, 6852 ,0, 0, 0 , - 5374, 3695, 7294 ,7548, 6852, 4637 ,0, 0, 0 , - 3695, 1315, 5409 ,6852, 6851, 4636 ,0, 0, 0 , - 3695, 5409, 7294 ,6852, 4636, 4637 ,0, 0, 0 , - 3682, 1305, 5410 ,4639, 4646, 7556 ,0, 0, 0 , - 3682, 5410, 7295 ,4639, 7556, 4640 ,0, 0, 0 , - 5410, 1315, 3694 ,7556, 6851, 6850 ,0, 0, 0 , - 5410, 3694, 7295 ,7556, 6850, 4640 ,0, 0, 0 , - 3694, 1314, 5406 ,6850, 2802, 2801 ,0, 0, 0 , - 3694, 5406, 7295 ,6850, 2801, 4640 ,0, 0, 0 , - 3640, 1271, 5375 ,1441, 1440, 2775 ,0, 0, 0 , - 3640, 5375, 7296 ,1441, 2775, 4643 ,0, 0, 0 , - 5375, 1312, 3690 ,2775, 6849, 6848 ,0, 0, 0 , - 5375, 3690, 7296 ,2775, 6848, 4643 ,0, 0, 0 , - 3690, 1311, 5414 ,6848, 6847, 4641 ,0, 0, 0 , - 3690, 5414, 7296 ,6848, 4641, 4643 ,0, 0, 0 , - 3687, 1309, 5415 ,1470, 6846, 7557 ,0, 0, 0 , - 3687, 5415, 7297 ,1470, 7557, 4644 ,0, 0, 0 , - 5415, 1311, 3689 ,7557, 6847, 1476 ,0, 0, 0 , - 5415, 3689, 7297 ,7557, 1476, 4644 ,0, 0, 0 , - 3689, 1310, 5408 ,1476, 1475, 2806 ,0, 0, 0 , - 3689, 5408, 7297 ,1476, 2806, 4644 ,0, 0, 0 , - 3260, 994, 5416 ,1111, 2809, 2808 ,0, 0, 0 , - 3260, 5416, 7298 ,1111, 2808, 4645 ,0, 0, 0 , - 5416, 1309, 3686 ,2808, 6846, 6845 ,0, 0, 0 , - 5416, 3686, 7298 ,2808, 6845, 4645 ,0, 0, 0 , - 3686, 1308, 5418 ,6845, 6844, 2813 ,0, 0, 0 , - 3686, 5418, 7298 ,6845, 2813, 4645 ,0, 0, 0 , - 3681, 1304, 5419 ,4647, 6843, 7558 ,0, 0, 0 , - 3681, 5419, 7299 ,4647, 7558, 4648 ,0, 0, 0 , - 5419, 1308, 3685 ,7558, 6844, 1472 ,0, 0, 0 , - 5419, 3685, 7299 ,7558, 1472, 4648 ,0, 0, 0 , - 3685, 1307, 5411 ,1472, 1471, 2805 ,0, 0, 0 , - 3685, 5411, 7299 ,1472, 2805, 4648 ,0, 0, 0 , - 3619, 1255, 5424 ,1419, 4688, 7559 ,0, 0, 0 , - 3619, 5424, 7300 ,1419, 7559, 4649 ,0, 0, 0 , - 5424, 1299, 3675 ,7559, 6833, 6832 ,0, 0, 0 , - 5424, 3675, 7300 ,7559, 6832, 4649 ,0, 0, 0 , - 3675, 1298, 5394 ,6832, 2790, 2789 ,0, 0, 0 , - 3675, 5394, 7300 ,6832, 2789, 4649 ,0, 0, 0 , - 3670, 992, 7302 ,4652, 1112, 4654 ,0, 0, 0 , - 3670, 7302, 7301 ,4652, 4654, 4653 ,0, 0, 0 , - 7302, 1300, 3676 ,4654, 6835, 6834 ,0, 0, 0 , - 7302, 3676, 7301 ,4654, 6834, 4653 ,0, 0, 0 , - 3676, 1299, 5423 ,6834, 6833, 4650 ,0, 0, 0 , - 3676, 5423, 7301 ,6834, 4650, 4653 ,0, 0, 0 , - 7304, 1301, 3677 ,4655, 6837, 6836 ,0, 0, 0 , - 7304, 3677, 7303 ,4655, 6836, 4656 ,0, 0, 0 , - 3677, 1300, 7302 ,6836, 6835, 4654 ,0, 0, 0 , - 3677, 7302, 7303 ,6836, 4654, 4656 ,0, 0, 0 , - 7306, 1302, 3678 ,4657, 6839, 6838 ,0, 0, 0 , - 7306, 3678, 7305 ,4657, 6838, 4658 ,0, 0, 0 , - 3678, 1301, 7304 ,6838, 6837, 4655 ,0, 0, 0 , - 3678, 7304, 7305 ,6838, 4655, 4658 ,0, 0, 0 , - 5420, 1304, 3680 ,2812, 6843, 6842 ,0, 0, 0 , - 5420, 3680, 7307 ,2812, 6842, 4660 ,0, 0, 0 , - 3680, 1303, 7308 ,6842, 6841, 4659 ,0, 0, 0 , - 3680, 7308, 7307 ,6842, 4659, 4660 ,0, 0, 0 , - 3623, 1258, 5427 ,1423, 4685, 2819 ,0, 0, 0 , - 3623, 5427, 7309 ,1423, 2819, 4661 ,0, 0, 0 , - 5427, 998, 3671 ,2819, 1464, 1463 ,0, 0, 0 , - 5427, 3671, 7309 ,2819, 1463, 4661 ,0, 0, 0 , - 3671, 1295, 5422 ,1463, 4651, 2816 ,0, 0, 0 , - 3671, 5422, 7309 ,1463, 2816, 4661 ,0, 0, 0 , - 3627, 1261, 5431 ,1427, 4681, 2823 ,0, 0, 0 , - 3627, 5431, 7310 ,1427, 2823, 4662 ,0, 0, 0 , - 5431, 997, 3270 ,2823, 2822, 6684 ,0, 0, 0 , - 5431, 3270, 7310 ,2823, 6684, 4662 ,0, 0, 0 , - 3270, 998, 5429 ,6684, 1464, 2818 ,0, 0, 0 , - 3270, 5429, 7310 ,6684, 2818, 4662 ,0, 0, 0 , - 3631, 1264, 7312 ,4664, 4918, 4917 ,0, 0, 0 , - 3631, 7312, 7311 ,4664, 4917, 4665 ,0, 0, 0 , - 7312, 996, 3267 ,4917, 6681, 6683 ,0, 0, 0 , - 7312, 3267, 7311 ,4917, 6683, 4665 ,0, 0, 0 , - 3267, 997, 5433 ,6683, 2822, 2821 ,0, 0, 0 , - 3267, 5433, 7311 ,6683, 2821, 4665 ,0, 0, 0 , - 3641, 1272, 5413 ,4668, 4642, 2810 ,0, 0, 0 , - 3641, 5413, 7313 ,4668, 2810, 4669 ,0, 0, 0 , - 5413, 994, 3259 ,2810, 2809, 6680 ,0, 0, 0 , - 5413, 3259, 7313 ,2810, 6680, 4669 ,0, 0, 0 , - 3259, 995, 5437 ,6680, 6679, 4666 ,0, 0, 0 , - 3259, 5437, 7313 ,6680, 4666, 4669 ,0, 0, 0 , - 3663, 1290, 5347 ,1455, 2759, 2758 ,0, 0, 0 , - 3663, 5347, 7314 ,1455, 2758, 4670 ,0, 0, 0 , - 5347, 1294, 3667 ,2758, 6831, 6830 ,0, 0, 0 , - 5347, 3667, 7314 ,2758, 6830, 4670 ,0, 0, 0 , - 3667, 1293, 5220 ,6830, 2675, 2674 ,0, 0, 0 , - 3667, 5220, 7314 ,6830, 2674, 4670 ,0, 0, 0 , - 3658, 1286, 5215 ,1451, 2671, 2670 ,0, 0, 0 , - 3658, 5215, 7315 ,1451, 2670, 4671 ,0, 0, 0 , - 5215, 1292, 3665 ,2670, 6829, 1461 ,0, 0, 0 , - 5215, 3665, 7315 ,2670, 1461, 4671 ,0, 0, 0 , - 3665, 1291, 5357 ,1461, 1460, 2765 ,0, 0, 0 , - 3665, 5357, 7315 ,1461, 2765, 4671 ,0, 0, 0 , - 3650, 1279, 5337 ,1449, 1448, 2752 ,0, 0, 0 , - 3650, 5337, 7316 ,1449, 2752, 4673 ,0, 0, 0 , - 5337, 1289, 3661 ,2752, 6828, 6827 ,0, 0, 0 , - 5337, 3661, 7316 ,2752, 6827, 4673 ,0, 0, 0 , - 3661, 1288, 5248 ,6827, 2693, 2692 ,0, 0, 0 , - 3661, 5248, 7316 ,6827, 2692, 4673 ,0, 0, 0 , - 3635, 1267, 5209 ,1437, 1436, 2667 ,0, 0, 0 , - 3635, 5209, 7317 ,1437, 2667, 4675 ,0, 0, 0 , - 5209, 1285, 3656 ,2667, 6826, 6825 ,0, 0, 0 , - 5209, 3656, 7317 ,2667, 6825, 4675 ,0, 0, 0 , - 3656, 1284, 5369 ,6825, 2772, 2771 ,0, 0, 0 , - 3656, 5369, 7317 ,6825, 2771, 4675 ,0, 0, 0 , - 3633, 1266, 5329 ,1431, 6820, 7531 ,0, 0, 0 , - 3633, 5329, 7318 ,1431, 7531, 4676 ,0, 0, 0 , - 5329, 1277, 3646 ,7531, 6824, 6823 ,0, 0, 0 , - 5329, 3646, 7318 ,7531, 6823, 4676 ,0, 0, 0 , - 3646, 1276, 5382 ,6823, 4608, 2783 ,0, 0, 0 , - 3646, 5382, 7318 ,6823, 2783, 4676 ,0, 0, 0 , - 3629, 1262, 5385 ,1433, 1432, 2782 ,0, 0, 0 , - 3629, 5385, 7319 ,1433, 2782, 4679 ,0, 0, 0 , - 5385, 1274, 3642 ,2782, 6822, 6821 ,0, 0, 0 , - 5385, 3642, 7319 ,2782, 6821, 4679 ,0, 0, 0 , - 3642, 1273, 5436 ,6821, 4667, 4677 ,0, 0, 0 , - 3642, 5436, 7319 ,6821, 4677, 4679 ,0, 0, 0 , - 3626, 1260, 5330 ,4682, 6818, 7532 ,0, 0, 0 , - 3626, 5330, 7320 ,4682, 7532, 4683 ,0, 0, 0 , - 5330, 1266, 3632 ,7532, 6820, 6819 ,0, 0, 0 , - 5330, 3632, 7320 ,7532, 6819, 4683 ,0, 0, 0 , - 3632, 1265, 5432 ,6819, 4663, 4680 ,0, 0, 0 , - 3632, 5432, 7320 ,6819, 4680, 4683 ,0, 0, 0 , - 3622, 1257, 5331 ,4686, 6817, 7533 ,0, 0, 0 , - 3622, 5331, 7321 ,4686, 7533, 4687 ,0, 0, 0 , - 5331, 1260, 3625 ,7533, 6818, 1429 ,0, 0, 0 , - 5331, 3625, 7321 ,7533, 1429, 4687 ,0, 0, 0 , - 3625, 1259, 5428 ,1429, 1428, 4684 ,0, 0, 0 , - 3625, 5428, 7321 ,1429, 4684, 4687 ,0, 0, 0 , - 3618, 1254, 5332 ,4689, 2749, 2748 ,0, 0, 0 , - 3618, 5332, 7322 ,4689, 2748, 4690 ,0, 0, 0 , - 5332, 1257, 3621 ,2748, 6817, 1425 ,0, 0, 0 , - 5332, 3621, 7322 ,2748, 1425, 4690 ,0, 0, 0 , - 3621, 1256, 5425 ,1425, 1424, 2815 ,0, 0, 0 , - 3621, 5425, 7322 ,1425, 2815, 4690 ,0, 0, 0 , - 3606, 1244, 5177 ,1413, 1412, 2646 ,0, 0, 0 , - 3606, 5177, 7323 ,1413, 2646, 4693 ,0, 0, 0 , - 5177, 1251, 3613 ,2646, 6816, 6815 ,0, 0, 0 , - 5177, 3613, 7323 ,2646, 6815, 4693 ,0, 0, 0 , - 3613, 1250, 5448 ,6815, 6814, 4691 ,0, 0, 0 , - 3613, 5448, 7323 ,6815, 4691, 4693 ,0, 0, 0 , - 3523, 1181, 5442 ,1335, 4753, 7560 ,0, 0, 0 , - 3523, 5442, 7324 ,1335, 7560, 4694 ,0, 0, 0 , - 5442, 1249, 3611 ,7560, 6812, 1417 ,0, 0, 0 , - 5442, 3611, 7324 ,7560, 1417, 4694 ,0, 0, 0 , - 3611, 1248, 5183 ,1417, 1416, 2649 ,0, 0, 0 , - 3611, 5183, 7324 ,1417, 2649, 4694 ,0, 0, 0 , - 3556, 1207, 5449 ,4697, 4746, 7561 ,0, 0, 0 , - 3556, 5449, 7325 ,4697, 7561, 4698 ,0, 0, 0 , - 5449, 1250, 3612 ,7561, 6814, 6813 ,0, 0, 0 , - 5449, 3612, 7325 ,7561, 6813, 4698 ,0, 0, 0 , - 3612, 1249, 5441 ,6813, 6812, 4695 ,0, 0, 0 , - 3612, 5441, 7325 ,6813, 4695, 4698 ,0, 0, 0 , - 3597, 1237, 5188 ,1405, 1404, 2652 ,0, 0, 0 , - 3597, 5188, 7326 ,1405, 2652, 4701 ,0, 0, 0 , - 5188, 1247, 3608 ,2652, 6811, 6810 ,0, 0, 0 , - 5188, 3608, 7326 ,2652, 6810, 4701 ,0, 0, 0 , - 3608, 1246, 5453 ,6810, 6809, 4699 ,0, 0, 0 , - 3608, 5453, 7326 ,6810, 4699, 4701 ,0, 0, 0 , - 3572, 1219, 5454 ,1381, 1380, 7562 ,0, 0, 0 , - 3572, 5454, 7327 ,1381, 7562, 4703 ,0, 0, 0 , - 5454, 1246, 3607 ,7562, 6809, 6808 ,0, 0, 0 , - 5454, 3607, 7327 ,7562, 6808, 4703 ,0, 0, 0 , - 3607, 1245, 5447 ,6808, 4692, 4702 ,0, 0, 0 , - 3607, 5447, 7327 ,6808, 4702, 4703 ,0, 0, 0 , - 3592, 1233, 5087 ,1401, 1400, 2588 ,0, 0, 0 , - 3592, 5087, 7328 ,1401, 2588, 4706 ,0, 0, 0 , - 5087, 1243, 3603 ,2588, 6807, 6806 ,0, 0, 0 , - 5087, 3603, 7328 ,2588, 6806, 4706 ,0, 0, 0 , - 3603, 1242, 5458 ,6806, 6805, 4704 ,0, 0, 0 , - 3603, 5458, 7328 ,6806, 4704, 4706 ,0, 0, 0 , - 3599, 1239, 5459 ,4708, 6804, 7563 ,0, 0, 0 , - 3599, 5459, 7329 ,4708, 7563, 4709 ,0, 0, 0 , - 5459, 1242, 3602 ,7563, 6805, 1409 ,0, 0, 0 , - 5459, 3602, 7329 ,7563, 1409, 4709 ,0, 0, 0 , - 3602, 1241, 5092 ,1409, 1408, 2591 ,0, 0, 0 , - 3602, 5092, 7329 ,1409, 2591, 4709 ,0, 0, 0 , - 3566, 1215, 5460 ,1371, 4739, 7564 ,0, 0, 0 , - 3566, 5460, 7330 ,1371, 7564, 4710 ,0, 0, 0 , - 5460, 1239, 3598 ,7564, 6804, 6803 ,0, 0, 0 , - 5460, 3598, 7330 ,7564, 6803, 4710 ,0, 0, 0 , - 3598, 1238, 5452 ,6803, 4700, 2837 ,0, 0, 0 , - 3598, 5452, 7330 ,6803, 2837, 4710 ,0, 0, 0 , - 3589, 1231, 5146 ,4713, 2626, 2625 ,0, 0, 0 , - 3589, 5146, 7331 ,4713, 2625, 4714 ,0, 0, 0 , - 5146, 1236, 3594 ,2625, 6802, 6801 ,0, 0, 0 , - 5146, 3594, 7331 ,2625, 6801, 4714 ,0, 0, 0 , - 3594, 1235, 5465 ,6801, 6800, 4711 ,0, 0, 0 , - 3594, 5465, 7331 ,6801, 4711, 4714 ,0, 0, 0 , - 3570, 1218, 5466 ,1375, 4725, 7565 ,0, 0, 0 , - 3570, 5466, 7332 ,1375, 7565, 4715 ,0, 0, 0 , - 5466, 1235, 3593 ,7565, 6800, 6799 ,0, 0, 0 , - 5466, 3593, 7332 ,7565, 6799, 4715 ,0, 0, 0 , - 3593, 1234, 5457 ,6799, 4705, 2840 ,0, 0, 0 , - 3593, 5457, 7332 ,6799, 2840, 4715 ,0, 0, 0 , - 3513, 1173, 5141 ,1327, 2622, 2621 ,0, 0, 0 , - 3513, 5141, 7333 ,1327, 2621, 4717 ,0, 0, 0 , - 5141, 1230, 3590 ,2621, 1396, 1395 ,0, 0, 0 , - 5141, 3590, 7333 ,2621, 1395, 4717 ,0, 0, 0 , - 3590, 1232, 5464 ,1395, 4712, 4716 ,0, 0, 0 , - 3590, 5464, 7333 ,1395, 4716, 4717 ,0, 0, 0 , - 3581, 1225, 5482 ,4720, 6795, 7569 ,0, 0, 0 , - 3581, 5482, 7334 ,4720, 7569, 4721 ,0, 0, 0 , - 5482, 1229, 3585 ,7569, 6798, 6797 ,0, 0, 0 , - 5482, 3585, 7334 ,7569, 6797, 4721 ,0, 0, 0 , - 3585, 1228, 5477 ,6797, 6796, 4718 ,0, 0, 0 , - 3585, 5477, 7334 ,6797, 4718, 4721 ,0, 0, 0 , - 3480, 1146, 5468 ,4722, 4803, 7566 ,0, 0, 0 , - 3480, 5468, 7335 ,4722, 7566, 4723 ,0, 0, 0 , - 5468, 1227, 3586 ,7566, 1392, 1391 ,0, 0, 0 , - 5468, 3586, 7335 ,7566, 1391, 4723 ,0, 0, 0 , - 3586, 1229, 5481 ,1391, 6798, 2856 ,0, 0, 0 , - 3586, 5481, 7335 ,1391, 2856, 4723 ,0, 0, 0 , - 3569, 1217, 5478 ,4726, 6791, 7568 ,0, 0, 0 , - 3569, 5478, 7336 ,4726, 7568, 4727 ,0, 0, 0 , - 5478, 1228, 3584 ,7568, 6796, 1393 ,0, 0, 0 , - 5478, 3584, 7336 ,7568, 1393, 4727 ,0, 0, 0 , - 3584, 1227, 5467 ,1393, 1392, 4724 ,0, 0, 0 , - 3584, 5467, 7336 ,1393, 4724, 4727 ,0, 0, 0 , - 3564, 1213, 5492 ,4728, 4737, 7573 ,0, 0, 0 , - 3564, 5492, 7337 ,4728, 7573, 4729 ,0, 0, 0 , - 5492, 1223, 3582 ,7573, 1388, 1387 ,0, 0, 0 , - 5492, 3582, 7337 ,7573, 1387, 4729 ,0, 0, 0 , - 3582, 1226, 5476 ,1387, 4719, 2852 ,0, 0, 0 , - 3582, 5476, 7337 ,1387, 2852, 4729 ,0, 0, 0 , - 3577, 1222, 5487 ,4730, 6792, 7571 ,0, 0, 0 , - 3577, 5487, 7338 ,4730, 7571, 4731 ,0, 0, 0 , - 5487, 1224, 3579 ,7571, 6793, 1389 ,0, 0, 0 , - 5487, 3579, 7338 ,7571, 1389, 4731 ,0, 0, 0 , - 3579, 1223, 5491 ,1389, 1388, 2863 ,0, 0, 0 , - 3579, 5491, 7338 ,1389, 2863, 4731 ,0, 0, 0 , - 3477, 1144, 5483 ,1299, 4815, 7570 ,0, 0, 0 , - 3477, 5483, 7339 ,1299, 7570, 4732 ,0, 0, 0 , - 5483, 1225, 3580 ,7570, 6795, 6794 ,0, 0, 0 , - 5483, 3580, 7339 ,7570, 6794, 4732 ,0, 0, 0 , - 3580, 1224, 5486 ,6794, 6793, 2859 ,0, 0, 0 , - 3580, 5486, 7339 ,6794, 2859, 4732 ,0, 0, 0 , - 3431, 1108, 5488 ,4735, 4818, 7572 ,0, 0, 0 , - 3431, 5488, 7340 ,4735, 7572, 4736 ,0, 0, 0 , - 5488, 1222, 3576 ,7572, 6792, 1385 ,0, 0, 0 , - 5488, 3576, 7340 ,7572, 1385, 4736 ,0, 0, 0 , - 3576, 1220, 5446 ,1385, 1384, 4733 ,0, 0, 0 , - 3576, 5446, 7340 ,1385, 4733, 4736 ,0, 0, 0 , - 3563, 1212, 5455 ,1373, 1372, 2836 ,0, 0, 0 , - 3563, 5455, 7341 ,1373, 2836, 4738 ,0, 0, 0 , - 5455, 1219, 3574 ,2836, 1380, 1379 ,0, 0, 0 , - 5455, 3574, 7341 ,2836, 1379, 4738 ,0, 0, 0 , - 3574, 1221, 5493 ,1379, 2862, 2861 ,0, 0, 0 , - 3574, 5493, 7341 ,1379, 2861, 4738 ,0, 0, 0 , - 3565, 1214, 5479 ,4740, 2851, 2850 ,0, 0, 0 , - 3565, 5479, 7342 ,4740, 2850, 4741 ,0, 0, 0 , - 5479, 1217, 3568 ,2850, 6791, 1377 ,0, 0, 0 , - 5479, 3568, 7342 ,2850, 1377, 4741 ,0, 0, 0 , - 3568, 1216, 5461 ,1377, 1376, 2839 ,0, 0, 0 , - 3568, 5461, 7342 ,1377, 2839, 4741 ,0, 0, 0 , - 3541, 1195, 5497 ,4742, 6780, 7574 ,0, 0, 0 , - 3541, 5497, 7343 ,4742, 7574, 4743 ,0, 0, 0 , - 5497, 1211, 3560 ,7574, 6790, 6789 ,0, 0, 0 , - 5497, 3560, 7343 ,7574, 6789, 4743 ,0, 0, 0 , - 3560, 1210, 5503 ,6789, 6788, 2871 ,0, 0, 0 , - 3560, 5503, 7343 ,6789, 2871, 4743 ,0, 0, 0 , - 3432, 1109, 5445 ,1259, 4734, 2834 ,0, 0, 0 , - 3432, 5445, 7344 ,1259, 2834, 4745 ,0, 0, 0 , - 5445, 1209, 3561 ,2834, 1368, 1367 ,0, 0, 0 , - 5445, 3561, 7344 ,2834, 1367, 4745 ,0, 0, 0 , - 3561, 1211, 5496 ,1367, 6790, 4744 ,0, 0, 0 , - 3561, 5496, 7344 ,1367, 4744, 4745 ,0, 0, 0 , - 3555, 1206, 5504 ,4747, 6787, 7577 ,0, 0, 0 , - 3555, 5504, 7345 ,4747, 7577, 4748 ,0, 0, 0 , - 5504, 1210, 3559 ,7577, 6788, 1369 ,0, 0, 0 , - 5504, 3559, 7345 ,7577, 1369, 4748 ,0, 0, 0 , - 3559, 1209, 5450 ,1369, 1368, 2833 ,0, 0, 0 , - 3559, 5450, 7345 ,1369, 2833, 4748 ,0, 0, 0 , - 3550, 1202, 5508 ,4749, 6784, 7578 ,0, 0, 0 , - 3550, 5508, 7346 ,4749, 7578, 4750 ,0, 0, 0 , - 5508, 1205, 3557 ,7578, 1364, 1363 ,0, 0, 0 , - 5508, 3557, 7346 ,7578, 1363, 4750 ,0, 0, 0 , - 3557, 1208, 5440 ,1363, 4696, 2831 ,0, 0, 0 , - 3557, 5440, 7346 ,1363, 2831, 4750 ,0, 0, 0 , - 3542, 1196, 5505 ,4751, 2870, 2869 ,0, 0, 0 , - 3542, 5505, 7347 ,4751, 2869, 4752 ,0, 0, 0 , - 5505, 1206, 3554 ,2869, 6787, 1365 ,0, 0, 0 , - 5505, 3554, 7347 ,2869, 1365, 4752 ,0, 0, 0 , - 3554, 1205, 5507 ,1365, 1364, 2875 ,0, 0, 0 , - 3554, 5507, 7347 ,1365, 2875, 4752 ,0, 0, 0 , - 3522, 1180, 5518 ,4754, 6769, 7581 ,0, 0, 0 , - 3522, 5518, 7348 ,4754, 7581, 4755 ,0, 0, 0 , - 5518, 1204, 3551 ,7581, 6786, 6785 ,0, 0, 0 , - 5518, 3551, 7348 ,7581, 6785, 4755 ,0, 0, 0 , - 3551, 1203, 5443 ,6785, 2830, 2829 ,0, 0, 0 , - 3551, 5443, 7348 ,6785, 2829, 4755 ,0, 0, 0 , - 3508, 1169, 5514 ,1323, 6762, 7580 ,0, 0, 0 , - 3508, 5514, 7349 ,1323, 7580, 4756 ,0, 0, 0 , - 5514, 1201, 3552 ,7580, 1360, 1359 ,0, 0, 0 , - 5514, 3552, 7349 ,7580, 1359, 4756 ,0, 0, 0 , - 3552, 1204, 5517 ,1359, 6786, 2882 ,0, 0, 0 , - 3552, 5517, 7349 ,1359, 2882, 4756 ,0, 0, 0 , - 3531, 1187, 5509 ,4759, 4770, 7579 ,0, 0, 0 , - 3531, 5509, 7350 ,4759, 7579, 4760 ,0, 0, 0 , - 5509, 1202, 3549 ,7579, 6784, 1361 ,0, 0, 0 , - 5509, 3549, 7350 ,7579, 1361, 4760 ,0, 0, 0 , - 3549, 1201, 5513 ,1361, 1360, 4757 ,0, 0, 0 , - 3549, 5513, 7350 ,1361, 4757, 4760 ,0, 0, 0 , - 3456, 1127, 5526 ,1285, 1284, 7584 ,0, 0, 0 , - 3456, 5526, 7351 ,1285, 7584, 4763 ,0, 0, 0 , - 5526, 1200, 3546 ,7584, 6783, 6782 ,0, 0, 0 , - 5526, 3546, 7351 ,7584, 6782, 4763 ,0, 0, 0 , - 3546, 1199, 5530 ,6782, 6781, 4761 ,0, 0, 0 , - 3546, 5530, 7351 ,6782, 4761, 4763 ,0, 0, 0 , - 3435, 1111, 5500 ,4766, 4820, 7576 ,0, 0, 0 , - 3435, 5500, 7352 ,4766, 7576, 4767 ,0, 0, 0 , - 5500, 1198, 3547 ,7576, 1356, 1355 ,0, 0, 0 , - 5500, 3547, 7352 ,7576, 1355, 4767 ,0, 0, 0 , - 3547, 1200, 5525 ,1355, 6783, 4764 ,0, 0, 0 , - 3547, 5525, 7352 ,1355, 4764, 4767 ,0, 0, 0 , - 3538, 1193, 5531 ,1347, 6779, 7585 ,0, 0, 0 , - 3538, 5531, 7353 ,1347, 7585, 4769 ,0, 0, 0 , - 5531, 1199, 3545 ,7585, 6781, 1357 ,0, 0, 0 , - 5531, 3545, 7353 ,7585, 1357, 4769 ,0, 0, 0 , - 3545, 1198, 5499 ,1357, 1356, 4768 ,0, 0, 0 , - 3545, 5499, 7353 ,1357, 4768, 4769 ,0, 0, 0 , - 3530, 1186, 5537 ,1345, 1344, 7587 ,0, 0, 0 , - 3530, 5537, 7354 ,1345, 7587, 4771 ,0, 0, 0 , - 5537, 1194, 3543 ,7587, 1352, 1351 ,0, 0, 0 , - 5537, 3543, 7354 ,7587, 1351, 4771 ,0, 0, 0 , - 3543, 1197, 5510 ,1351, 2874, 2873 ,0, 0, 0 , - 3543, 5510, 7354 ,1351, 2873, 4771 ,0, 0, 0 , - 3535, 1190, 5498 ,1349, 1348, 7575 ,0, 0, 0 , - 3535, 5498, 7355 ,1349, 7575, 4774 ,0, 0, 0 , - 5498, 1195, 3540 ,7575, 6780, 1353 ,0, 0, 0 , - 5498, 3540, 7355 ,7575, 1353, 4774 ,0, 0, 0 , - 3540, 1194, 5536 ,1353, 1352, 4772 ,0, 0, 0 , - 3540, 5536, 7355 ,1353, 4772, 4774 ,0, 0, 0 , - 3448, 1121, 5532 ,4777, 4837, 7586 ,0, 0, 0 , - 3448, 5532, 7356 ,4777, 7586, 4778 ,0, 0, 0 , - 5532, 1193, 3537 ,7586, 6779, 6778 ,0, 0, 0 , - 5532, 3537, 7356 ,7586, 6778, 4778 ,0, 0, 0 , - 3537, 1192, 5541 ,6778, 6777, 4775 ,0, 0, 0 , - 3537, 5541, 7356 ,6778, 4775, 4778 ,0, 0, 0 , - 3528, 1185, 5542 ,1339, 6773, 7588 ,0, 0, 0 , - 3528, 5542, 7357 ,1339, 7588, 4779 ,0, 0, 0 , - 5542, 1192, 3536 ,7588, 6777, 6776 ,0, 0, 0 , - 5542, 3536, 7357 ,7588, 6776, 4779 ,0, 0, 0 , - 3536, 1191, 5535 ,6776, 4773, 2891 ,0, 0, 0 , - 3536, 5535, 7357 ,6776, 2891, 4779 ,0, 0, 0 , - 3499, 1161, 5547 ,1321, 1320, 7590 ,0, 0, 0 , - 3499, 5547, 7358 ,1321, 7590, 4780 ,0, 0, 0 , - 5547, 1189, 3532 ,7590, 6775, 6774 ,0, 0, 0 , - 5547, 3532, 7358 ,7590, 6774, 4780 ,0, 0, 0 , - 3532, 1188, 5512 ,6774, 4758, 2879 ,0, 0, 0 , - 3532, 5512, 7358 ,6774, 2879, 4780 ,0, 0, 0 , - 3525, 1182, 5538 ,1341, 1340, 2890 ,0, 0, 0 , - 3525, 5538, 7359 ,1341, 2890, 4781 ,0, 0, 0 , - 5538, 1186, 3533 ,2890, 1344, 1343 ,0, 0, 0 , - 5538, 3533, 7359 ,2890, 1343, 4781 ,0, 0, 0 , - 3533, 1189, 5546 ,1343, 6775, 2898 ,0, 0, 0 , - 3533, 5546, 7359 ,1343, 2898, 4781 ,0, 0, 0 , - 3420, 1099, 5543 ,1253, 1252, 7589 ,0, 0, 0 , - 3420, 5543, 7360 ,1253, 7589, 4784 ,0, 0, 0 , - 5543, 1185, 3527 ,7589, 6773, 6772 ,0, 0, 0 , - 5543, 3527, 7360 ,7589, 6772, 4784 ,0, 0, 0 , - 3527, 1184, 5551 ,6772, 6771, 4782 ,0, 0, 0 , - 3527, 5551, 7360 ,6772, 4782, 4784 ,0, 0, 0 , - 3503, 1165, 5552 ,1319, 6758, 7591 ,0, 0, 0 , - 3503, 5552, 7361 ,1319, 7591, 4785 ,0, 0, 0 , - 5552, 1184, 3526 ,7591, 6771, 6770 ,0, 0, 0 , - 5552, 3526, 7361 ,7591, 6770, 4785 ,0, 0, 0 , - 3526, 1183, 5548 ,6770, 2897, 2896 ,0, 0, 0 , - 3526, 5548, 7361 ,6770, 2896, 4785 ,0, 0, 0 , - 3518, 1177, 5519 ,1331, 6767, 7582 ,0, 0, 0 , - 3518, 5519, 7362 ,1331, 7582, 4786 ,0, 0, 0 , - 5519, 1180, 3521 ,7582, 6769, 6768 ,0, 0, 0 , - 5519, 3521, 7362 ,7582, 6768, 4786 ,0, 0, 0 , - 3521, 1179, 5193 ,6768, 2656, 2655 ,0, 0, 0 , - 3521, 5193, 7362 ,6768, 2655, 4786 ,0, 0, 0 , - 3505, 1166, 5520 ,1325, 1324, 2881 ,0, 0, 0 , - 3505, 5520, 7363 ,1325, 2881, 4787 ,0, 0, 0 , - 5520, 1177, 3517 ,2881, 6767, 6766 ,0, 0, 0 , - 5520, 3517, 7363 ,2881, 6766, 4787 ,0, 0, 0 , - 3517, 1176, 5556 ,6766, 6765, 2906 ,0, 0, 0 , - 3517, 5556, 7363 ,6766, 2906, 4787 ,0, 0, 0 , - 3511, 1171, 5557 ,4789, 6763, 7593 ,0, 0, 0 , - 3511, 5557, 7364 ,4789, 7593, 4790 ,0, 0, 0 , - 5557, 1176, 3516 ,7593, 6765, 6764 ,0, 0, 0 , - 5557, 3516, 7364 ,7593, 6764, 4790 ,0, 0, 0 , - 3516, 1175, 5198 ,6764, 2660, 2659 ,0, 0, 0 , - 3516, 5198, 7364 ,6764, 2659, 4790 ,0, 0, 0 , - 3495, 1158, 5558 ,4791, 4797, 7594 ,0, 0, 0 , - 3495, 5558, 7365 ,4791, 7594, 4792 ,0, 0, 0 , - 5558, 1171, 3510 ,7594, 6763, 1329 ,0, 0, 0 , - 5558, 3510, 7365 ,7594, 1329, 4792 ,0, 0, 0 , - 3510, 1170, 5463 ,1329, 1328, 2844 ,0, 0, 0 , - 3510, 5463, 7365 ,1329, 2844, 4792 ,0, 0, 0 , - 3500, 1162, 5515 ,4795, 2878, 2877 ,0, 0, 0 , - 3500, 5515, 7366 ,4795, 2877, 4796 ,0, 0, 0 , - 5515, 1169, 3507 ,2877, 6762, 6761 ,0, 0, 0 , - 5515, 3507, 7366 ,2877, 6761, 4796 ,0, 0, 0 , - 3507, 1168, 5472 ,6761, 6760, 4793 ,0, 0, 0 , - 3507, 5472, 7366 ,6761, 4793, 4796 ,0, 0, 0 , - 3494, 1157, 5473 ,1317, 1316, 7567 ,0, 0, 0 , - 3494, 5473, 7367 ,1317, 7567, 4798 ,0, 0, 0 , - 5473, 1168, 3506 ,7567, 6760, 6759 ,0, 0, 0 , - 5473, 3506, 7367 ,7567, 6759, 4798 ,0, 0, 0 , - 3506, 1167, 5559 ,6759, 2905, 2904 ,0, 0, 0 , - 3506, 5559, 7367 ,6759, 2904, 4798 ,0, 0, 0 , - 3412, 1093, 5553 ,4799, 4880, 7592 ,0, 0, 0 , - 3412, 5553, 7368 ,4799, 7592, 4800 ,0, 0, 0 , - 5553, 1165, 3502 ,7592, 6758, 6757 ,0, 0, 0 , - 5553, 3502, 7368 ,7592, 6757, 4800 ,0, 0, 0 , - 3502, 1164, 5561 ,6757, 6756, 2910 ,0, 0, 0 , - 3502, 5561, 7368 ,6757, 2910, 4800 ,0, 0, 0 , - 3491, 1155, 5562 ,4801, 6752, 7595 ,0, 0, 0 , - 3491, 5562, 7369 ,4801, 7595, 4802 ,0, 0, 0 , - 5562, 1164, 3501 ,7595, 6756, 6755 ,0, 0, 0 , - 5562, 3501, 7369 ,7595, 6755, 4802 ,0, 0, 0 , - 3501, 1163, 5471 ,6755, 4794, 2848 ,0, 0, 0 , - 3501, 5471, 7369 ,6755, 2848, 4802 ,0, 0, 0 , - 3479, 1145, 5568 ,1305, 1304, 7597 ,0, 0, 0 , - 3479, 5568, 7370 ,1305, 7597, 4804 ,0, 0, 0 , - 5568, 1160, 3496 ,7597, 6754, 6753 ,0, 0, 0 , - 5568, 3496, 7370 ,7597, 6753, 4804 ,0, 0, 0 , - 3496, 1159, 5469 ,6753, 2843, 2842 ,0, 0, 0 , - 3496, 5469, 7370 ,6753, 2842, 4804 ,0, 0, 0 , - 3492, 1156, 5474 ,1311, 2847, 2846 ,0, 0, 0 , - 3492, 5474, 7371 ,1311, 2846, 4806 ,0, 0, 0 , - 5474, 1157, 3497 ,2846, 1316, 1315 ,0, 0, 0 , - 5474, 3497, 7371 ,2846, 1315, 4806 ,0, 0, 0 , - 3497, 1160, 5567 ,1315, 6754, 4805 ,0, 0, 0 , - 3497, 5567, 7371 ,1315, 4805, 4806 ,0, 0, 0 , - 3484, 1149, 5572 ,1309, 1308, 7598 ,0, 0, 0 , - 3484, 5572, 7372 ,1309, 7598, 4807 ,0, 0, 0 , - 5572, 1154, 3489 ,7598, 6750, 1313 ,0, 0, 0 , - 5572, 3489, 7372 ,7598, 1313, 4807 ,0, 0, 0 , - 3489, 1153, 5566 ,1313, 1312, 2914 ,0, 0, 0 , - 3489, 5566, 7372 ,1313, 2914, 4807 ,0, 0, 0 , - 3467, 1136, 5563 ,1291, 6738, 7596 ,0, 0, 0 , - 3467, 5563, 7373 ,1291, 7596, 4808 ,0, 0, 0 , - 5563, 1155, 3490 ,7596, 6752, 6751 ,0, 0, 0 , - 5563, 3490, 7373 ,7596, 6751, 4808 ,0, 0, 0 , - 3490, 1154, 5571 ,6751, 6750, 2917 ,0, 0, 0 , - 3490, 5571, 7373 ,6751, 2917, 4808 ,0, 0, 0 , - 3436, 1112, 5524 ,1263, 4765, 7583 ,0, 0, 0 , - 3436, 5524, 7374 ,1263, 7583, 4809 ,0, 0, 0 , - 5524, 1152, 3486 ,7583, 6749, 6748 ,0, 0, 0 , - 5524, 3486, 7374 ,7583, 6748, 4809 ,0, 0, 0 , - 3486, 1151, 5576 ,6748, 6747, 2920 ,0, 0, 0 , - 3486, 5576, 7374 ,6748, 2920, 4809 ,0, 0, 0 , - 3470, 1138, 5573 ,4812, 6739, 7599 ,0, 0, 0 , - 3470, 5573, 7375 ,4812, 7599, 4813 ,0, 0, 0 , - 5573, 1149, 3487 ,7599, 1308, 1307 ,0, 0, 0 , - 5573, 3487, 7375 ,7599, 1307, 4813 ,0, 0, 0 , - 3487, 1152, 5523 ,1307, 6749, 4810 ,0, 0, 0 , - 3487, 5523, 7375 ,1307, 4810, 4813 ,0, 0, 0 , - 3482, 1148, 5577 ,1303, 6745, 7600 ,0, 0, 0 , - 3482, 5577, 7376 ,1303, 7600, 4814 ,0, 0, 0 , - 5577, 1151, 3485 ,7600, 6747, 6746 ,0, 0, 0 , - 5577, 3485, 7376 ,7600, 6746, 4814 ,0, 0, 0 , - 3485, 1150, 5569 ,6746, 2913, 2912 ,0, 0, 0 , - 3485, 5569, 7376 ,6746, 2912, 4814 ,0, 0, 0 , - 3476, 1143, 5578 ,4816, 6743, 7601 ,0, 0, 0 , - 3476, 5578, 7377 ,4816, 7601, 4817 ,0, 0, 0 , - 5578, 1148, 3481 ,7601, 6745, 6744 ,0, 0, 0 , - 5578, 3481, 7377 ,7601, 6744, 4817 ,0, 0, 0 , - 3481, 1147, 5484 ,6744, 2855, 2854 ,0, 0, 0 , - 3481, 5484, 7377 ,6744, 2854, 4817 ,0, 0, 0 , - 3430, 1107, 5495 ,1261, 1260, 2867 ,0, 0, 0 , - 3430, 5495, 7378 ,1261, 2867, 4819 ,0, 0, 0 , - 5495, 1142, 3474 ,2867, 2866, 1301 ,0, 0, 0 , - 5495, 3474, 7378 ,2867, 1301, 4819 ,0, 0, 0 , - 3474, 1141, 5489 ,1301, 1300, 2858 ,0, 0, 0 , - 3474, 5489, 7378 ,1301, 2858, 4819 ,0, 0, 0 , - 3434, 1110, 5579 ,1265, 1264, 2919 ,0, 0, 0 , - 3434, 5579, 7379 ,1265, 2919, 4821 ,0, 0, 0 , - 5579, 1143, 3475 ,2919, 6743, 6742 ,0, 0, 0 , - 5579, 3475, 7379 ,2919, 6742, 4821 ,0, 0, 0 , - 3475, 1142, 5501 ,6742, 2866, 2865 ,0, 0, 0 , - 3475, 5501, 7379 ,6742, 2865, 4821 ,0, 0, 0 , - 3462, 1132, 5586 ,1287, 6734, 7603 ,0, 0, 0 , - 3462, 5586, 7380 ,1287, 7603, 4822 ,0, 0, 0 , - 5586, 1140, 3471 ,7603, 6741, 6740 ,0, 0, 0 , - 5586, 3471, 7380 ,7603, 6740, 4822 ,0, 0, 0 , - 3471, 1139, 5522 ,6740, 4811, 2885 ,0, 0, 0 , - 3471, 5522, 7380 ,6740, 2885, 4822 ,0, 0, 0 , - 3404, 1087, 5582 ,1235, 4829, 7602 ,0, 0, 0 , - 3404, 5582, 7381 ,1235, 7602, 4823 ,0, 0, 0 , - 5582, 1137, 3472 ,7602, 1296, 1295 ,0, 0, 0 , - 5582, 3472, 7381 ,7602, 1295, 4823 ,0, 0, 0 , - 3472, 1140, 5585 ,1295, 6741, 2927 ,0, 0, 0 , - 3472, 5585, 7381 ,1295, 2927, 4823 ,0, 0, 0 , - 3464, 1133, 5574 ,1293, 1292, 2916 ,0, 0, 0 , - 3464, 5574, 7382 ,1293, 2916, 4824 ,0, 0, 0 , - 5574, 1138, 3469 ,2916, 6739, 1297 ,0, 0, 0 , - 5574, 3469, 7382 ,2916, 1297, 4824 ,0, 0, 0 , - 3469, 1137, 5581 ,1297, 1296, 2924 ,0, 0, 0 , - 3469, 5581, 7382 ,1297, 2924, 4824 ,0, 0, 0 , - 3413, 1094, 5564 ,4827, 2909, 2908 ,0, 0, 0 , - 3413, 5564, 7383 ,4827, 2908, 4828 ,0, 0, 0 , - 5564, 1136, 3466 ,2908, 6738, 6737 ,0, 0, 0 , - 5564, 3466, 7383 ,2908, 6737, 4828 ,0, 0, 0 , - 3466, 1135, 5591 ,6737, 6736, 4825 ,0, 0, 0 , - 3466, 5591, 7383 ,6737, 4825, 4828 ,0, 0, 0 , - 3403, 1086, 5592 ,4830, 6716, 7605 ,0, 0, 0 , - 3403, 5592, 7384 ,4830, 7605, 4831 ,0, 0, 0 , - 5592, 1135, 3465 ,7605, 6736, 6735 ,0, 0, 0 , - 5592, 3465, 7384 ,7605, 6735, 4831 ,0, 0, 0 , - 3465, 1134, 5583 ,6735, 2923, 2922 ,0, 0, 0 , - 3465, 5583, 7384 ,6735, 2922, 4831 ,0, 0, 0 , - 3406, 1088, 5587 ,1241, 1240, 7604 ,0, 0, 0 , - 3406, 5587, 7385 ,1241, 7604, 4832 ,0, 0, 0 , - 5587, 1132, 3461 ,7604, 6734, 6733 ,0, 0, 0 , - 5587, 3461, 7385 ,7604, 6733, 4832 ,0, 0, 0 , - 3461, 1131, 5596 ,6733, 6732, 2935 ,0, 0, 0 , - 3461, 5596, 7385 ,6733, 2935, 4832 ,0, 0, 0 , - 3458, 1129, 5597 ,1283, 6731, 7607 ,0, 0, 0 , - 3458, 5597, 7386 ,1283, 7607, 4833 ,0, 0, 0 , - 5597, 1131, 3460 ,7607, 6732, 1289 ,0, 0, 0 , - 5597, 3460, 7386 ,7607, 1289, 4833 ,0, 0, 0 , - 3460, 1130, 5527 ,1289, 1288, 2884 ,0, 0, 0 , - 3460, 5527, 7386 ,1289, 2884, 4833 ,0, 0, 0 , - 3454, 1126, 5598 ,1279, 6729, 7608 ,0, 0, 0 , - 3454, 5598, 7387 ,1279, 7608, 4834 ,0, 0, 0 , - 5598, 1129, 3457 ,7608, 6731, 6730 ,0, 0, 0 , - 5598, 3457, 7387 ,7608, 6730, 4834 ,0, 0, 0 , - 3457, 1128, 5529 ,6730, 4762, 2888 ,0, 0, 0 , - 3457, 5529, 7387 ,6730, 2888, 4834 ,0, 0, 0 , - 3407, 1089, 5599 ,4835, 2934, 2933 ,0, 0, 0 , - 3407, 5599, 7388 ,4835, 2933, 4836 ,0, 0, 0 , - 5599, 1126, 3453 ,2933, 6729, 6728 ,0, 0, 0 , - 5599, 3453, 7388 ,2933, 6728, 4836 ,0, 0, 0 , - 3453, 1125, 5601 ,6728, 6727, 2939 ,0, 0, 0 , - 3453, 5601, 7388 ,6728, 2939, 4836 ,0, 0, 0 , - 3447, 1120, 5602 ,1277, 1276, 7609 ,0, 0, 0 , - 3447, 5602, 7389 ,1277, 7609, 4838 ,0, 0, 0 , - 5602, 1125, 3452 ,7609, 6727, 1281 ,0, 0, 0 , - 5602, 3452, 7389 ,7609, 1281, 4838 ,0, 0, 0 , - 3452, 1124, 5533 ,1281, 1280, 2887 ,0, 0, 0 , - 3452, 5533, 7389 ,1281, 2887, 4838 ,0, 0, 0 , - 3428, 1106, 5609 ,1255, 4860, 7611 ,0, 0, 0 , - 3428, 5609, 7390 ,1255, 7611, 4839 ,0, 0, 0 , - 5609, 1123, 3449 ,7611, 6726, 6725 ,0, 0, 0 , - 5609, 3449, 7390 ,7611, 6725, 4839 ,0, 0, 0 , - 3449, 1122, 5540 ,6725, 4776, 2894 ,0, 0, 0 , - 3449, 5540, 7390 ,6725, 2894, 4839 ,0, 0, 0 , - 3439, 1114, 5603 ,4842, 4845, 7610 ,0, 0, 0 , - 3439, 5603, 7391 ,4842, 7610, 4843 ,0, 0, 0 , - 5603, 1120, 3450 ,7610, 1276, 1275 ,0, 0, 0 , - 5603, 3450, 7391 ,7610, 1275, 4843 ,0, 0, 0 , - 3450, 1123, 5608 ,1275, 6726, 4840 ,0, 0, 0 , - 3450, 5608, 7391 ,1275, 4840, 4843 ,0, 0, 0 , - 3438, 1113, 5617 ,1269, 1268, 7613 ,0, 0, 0 , - 3438, 5617, 7392 ,1269, 7613, 4846 ,0, 0, 0 , - 5617, 1119, 3444 ,7613, 6724, 6723 ,0, 0, 0 , - 5617, 3444, 7392 ,7613, 6723, 4846 ,0, 0, 0 , - 3444, 1118, 5604 ,6723, 6722, 4844 ,0, 0, 0 , - 3444, 5604, 7392 ,6723, 4844, 4846 ,0, 0, 0 , - 3400, 1083, 5613 ,4847, 4883, 7612 ,0, 0, 0 , - 3400, 5613, 7393 ,4847, 7612, 4848 ,0, 0, 0 , - 5613, 1117, 3445 ,7612, 1272, 1271 ,0, 0, 0 , - 5613, 3445, 7393 ,7612, 1271, 4848 ,0, 0, 0 , - 3445, 1119, 5616 ,1271, 6724, 2951 ,0, 0, 0 , - 3445, 5616, 7393 ,1271, 2951, 4848 ,0, 0, 0 , - 3408, 1090, 5605 ,4849, 2938, 2937 ,0, 0, 0 , - 3408, 5605, 7394 ,4849, 2937, 4850 ,0, 0, 0 , - 5605, 1118, 3443 ,2937, 6722, 1273 ,0, 0, 0 , - 5605, 3443, 7394 ,2937, 1273, 4850 ,0, 0, 0 , - 3443, 1117, 5612 ,1273, 1272, 2947 ,0, 0, 0 , - 3443, 5612, 7394 ,1273, 2947, 4850 ,0, 0, 0 , - 3272, 987, 5623 ,1123, 1108, 2953 ,0, 0, 0 , - 3272, 5623, 7395 ,1123, 2953, 4851 ,0, 0, 0 , - 5623, 1116, 3440 ,2953, 6721, 6720 ,0, 0, 0 , - 5623, 3440, 7395 ,2953, 6720, 4851 ,0, 0, 0 , - 3440, 1115, 5607 ,6720, 4841, 2943 ,0, 0, 0 , - 3440, 5607, 7395 ,6720, 2943, 4851 ,0, 0, 0 , - 3401, 1084, 5618 ,4854, 2950, 2949 ,0, 0, 0 , - 3401, 5618, 7396 ,4854, 2949, 4855 ,0, 0, 0 , - 5618, 1113, 3441 ,2949, 1268, 1267 ,0, 0, 0 , - 5618, 3441, 7396 ,2949, 1267, 4855 ,0, 0, 0 , - 3441, 1116, 5622 ,1267, 6721, 4852 ,0, 0, 0 , - 3441, 5622, 7396 ,1267, 4852, 4855 ,0, 0, 0 , - 3389, 1074, 5620 ,4858, 4886, 2954 ,0, 0, 0 , - 3389, 5620, 7397 ,4858, 2954, 4859 ,0, 0, 0 , - 5620, 987, 7398 ,2954, 1108, 4856 ,0, 0, 0 , - 5620, 7398, 7397 ,2954, 4856, 4859 ,0, 0, 0 , - 3427, 1105, 5625 ,4861, 6719, 2958 ,0, 0, 0 , - 3427, 5625, 7399 ,4861, 2958, 4862 ,0, 0, 0 , - 5625, 1000, 3273 ,2958, 2957, 6685 ,0, 0, 0 , - 5625, 3273, 7399 ,2958, 6685, 4862 ,0, 0, 0 , - 3273, 999, 5610 ,6685, 2942, 2941 ,0, 0, 0 , - 3273, 5610, 7399 ,6685, 2941, 4862 ,0, 0, 0 , - 3391, 1076, 7401 ,4865, 4927, 4926 ,0, 0, 0 , - 3391, 7401, 7400 ,4865, 4926, 4866 ,0, 0, 0 , - 7401, 987, 7402 ,4926, 1108, 4863 ,0, 0, 0 , - 7401, 7402, 7400 ,4926, 4863, 4866 ,0, 0, 0 , - 3423, 1102, 7404 ,4868, 4923, 4922 ,0, 0, 0 , - 3423, 7404, 7403 ,4868, 4922, 4869 ,0, 0, 0 , - 7404, 1001, 3276 ,4922, 6687, 6686 ,0, 0, 0 , - 7404, 3276, 7403 ,4922, 6686, 4869 ,0, 0, 0 , - 3276, 1000, 5627 ,6686, 2957, 2956 ,0, 0, 0 , - 3276, 5627, 7403 ,6686, 2956, 4869 ,0, 0, 0 , - 3397, 1081, 5634 ,1231, 6714, 2965 ,0, 0, 0 , - 3397, 5634, 7405 ,1231, 2965, 4870 ,0, 0, 0 , - 5634, 987, 3251 ,2965, 1108, 1105 ,0, 0, 0 , - 5634, 3251, 7405 ,2965, 1105, 4870 ,0, 0, 0 , - 3251, 989, 5641 ,1105, 1104, 2967 ,0, 0, 0 , - 3251, 5641, 7405 ,1105, 2967, 4870 ,0, 0, 0 , - 3392, 1077, 7402 ,4872, 4864, 4863 ,0, 0, 0 , - 3392, 7402, 7406 ,4872, 4863, 4873 ,0, 0, 0 , - 7402, 987, 5636 ,4863, 1108, 2964 ,0, 0, 0 , - 7402, 5636, 7406 ,4863, 2964, 4873 ,0, 0, 0 , - 3416, 1096, 5638 ,1249, 1248, 2968 ,0, 0, 0 , - 3416, 5638, 7407 ,1249, 2968, 4876 ,0, 0, 0 , - 5638, 989, 3253 ,2968, 1104, 1103 ,0, 0, 0 , - 5638, 3253, 7407 ,2968, 1103, 4876 ,0, 0, 0 , - 3253, 991, 5631 ,1103, 6676, 4874 ,0, 0, 0 , - 3253, 5631, 7407 ,1103, 4874, 4876 ,0, 0, 0 , - 3424, 1103, 5626 ,1251, 4867, 7614 ,0, 0, 0 , - 3424, 5626, 7408 ,1251, 7614, 4877 ,0, 0, 0 , - 5626, 1105, 3426 ,7614, 6719, 1257 ,0, 0, 0 , - 5626, 3426, 7408 ,7614, 1257, 4877 ,0, 0, 0 , - 3426, 1104, 5544 ,1257, 1256, 2893 ,0, 0, 0 , - 3426, 5544, 7408 ,1257, 2893, 4877 ,0, 0, 0 , - 3417, 1097, 5630 ,4878, 4875, 7615 ,0, 0, 0 , - 3417, 5630, 7409 ,4878, 7615, 4879 ,0, 0, 0 , - 5630, 1101, 3421 ,7615, 6718, 6717 ,0, 0, 0 , - 5630, 3421, 7409 ,7615, 6717, 4879 ,0, 0, 0 , - 3421, 1100, 5550 ,6717, 4783, 2902 ,0, 0, 0 , - 3421, 5550, 7409 ,6717, 2902, 4879 ,0, 0, 0 , - 3411, 1092, 5639 ,1245, 1244, 7617 ,0, 0, 0 , - 3411, 5639, 7410 ,1245, 7617, 4881 ,0, 0, 0 , - 5639, 1096, 3418 ,7617, 1248, 1247 ,0, 0, 0 , - 5639, 3418, 7410 ,7617, 1247, 4881 ,0, 0, 0 , - 3418, 1098, 5554 ,1247, 2901, 2900 ,0, 0, 0 , - 3418, 5554, 7410 ,1247, 2900, 4881 ,0, 0, 0 , - 3395, 1079, 5640 ,1233, 1232, 7618 ,0, 0, 0 , - 3395, 5640, 7411 ,1233, 7618, 4882 ,0, 0, 0 , - 5640, 1092, 3414 ,7618, 1244, 1243 ,0, 0, 0 , - 5640, 3414, 7411 ,7618, 1243, 4882 ,0, 0, 0 , - 3414, 1095, 5590 ,1243, 4826, 2931 ,0, 0, 0 , - 3414, 5590, 7411 ,1243, 2931, 4882 ,0, 0, 0 , - 3399, 1082, 5588 ,1237, 1236, 2926 ,0, 0, 0 , - 3399, 5588, 7412 ,1237, 2926, 4884 ,0, 0, 0 , - 5588, 1088, 3409 ,2926, 1240, 1239 ,0, 0, 0 , - 5588, 3409, 7412 ,2926, 1239, 4884 ,0, 0, 0 , - 3409, 1091, 5614 ,1239, 2946, 2945 ,0, 0, 0 , - 3409, 5614, 7412 ,1239, 2945, 4884 ,0, 0, 0 , - 3388, 1073, 5593 ,1229, 1228, 7606 ,0, 0, 0 , - 3388, 5593, 7413 ,1229, 7606, 4887 ,0, 0, 0 , - 5593, 1086, 3402 ,7606, 6716, 6715 ,0, 0, 0 , - 5593, 3402, 7413 ,7606, 6715, 4887 ,0, 0, 0 , - 3402, 1085, 5621 ,6715, 4853, 4885 ,0, 0, 0 , - 3402, 5621, 7413 ,6715, 4885, 4887 ,0, 0, 0 , - 3393, 1078, 5635 ,1227, 4871, 7616 ,0, 0, 0 , - 3393, 5635, 7414 ,1227, 7616, 4888 ,0, 0, 0 , - 5635, 1081, 3396 ,7616, 6714, 6713 ,0, 0, 0 , - 5635, 3396, 7414 ,7616, 6713, 4888 ,0, 0, 0 , - 3396, 1080, 5594 ,6713, 2930, 2929 ,0, 0, 0 , - 3396, 5594, 7414 ,6713, 2929, 4888 ,0, 0, 0 , - 3357, 1049, 4541 ,1201, 1200, 7316 ,0, 0, 0 , - 3357, 4541, 7415 ,1201, 7316, 4890 ,0, 0, 0 , - 4541, 1072, 3385 ,7316, 6712, 6711 ,0, 0, 0 , - 4541, 3385, 7415 ,7316, 6711, 4890 ,0, 0, 0 , - 3385, 1071, 5167 ,6711, 2640, 2639 ,0, 0, 0 , - 3385, 5167, 7415 ,6711, 2639, 4890 ,0, 0, 0 , - 3341, 1037, 4939 ,4893, 2493, 2492 ,0, 0, 0 , - 3341, 4939, 7416 ,4893, 2492, 4894 ,0, 0, 0 , - 4939, 1068, 3380 ,2492, 6710, 6709 ,0, 0, 0 , - 4939, 3380, 7416 ,2492, 6709, 4894 ,0, 0, 0 , - 3380, 1067, 4948 ,6709, 6708, 4891 ,0, 0, 0 , - 3380, 4948, 7416 ,6709, 4891, 4894 ,0, 0, 0 , - 3346, 1041, 4949 ,4896, 4898, 7425 ,0, 0, 0 , - 3346, 4949, 7417 ,4896, 7425, 4897 ,0, 0, 0 , - 4949, 1067, 3379 ,7425, 6708, 1221 ,0, 0, 0 , - 4949, 3379, 7417 ,7425, 1221, 4897 ,0, 0, 0 , - 3379, 1066, 4929 ,1221, 1220, 2486 ,0, 0, 0 , - 3379, 4929, 7417 ,1221, 2486, 4897 ,0, 0, 0 , - 3345, 1040, 4920 ,1189, 1188, 2480 ,0, 0, 0 , - 3345, 4920, 7418 ,1189, 2480, 4899 ,0, 0, 0 , - 4920, 1062, 3377 ,2480, 1216, 1215 ,0, 0, 0 , - 4920, 3377, 7418 ,2480, 1215, 4899 ,0, 0, 0 , - 3377, 1065, 4950 ,1215, 2500, 2499 ,0, 0, 0 , - 3377, 4950, 7418 ,1215, 2499, 4899 ,0, 0, 0 , - 3350, 1044, 5004 ,4901, 4909, 7439 ,0, 0, 0 , - 3350, 5004, 7419 ,4901, 7439, 4902 ,0, 0, 0 , - 5004, 1064, 3375 ,7439, 6707, 6706 ,0, 0, 0 , - 5004, 3375, 7419 ,7439, 6706, 4902 ,0, 0, 0 , - 3375, 1063, 4915 ,6706, 2477, 2476 ,0, 0, 0 , - 3375, 4915, 7419 ,6706, 2476, 4902 ,0, 0, 0 , - 3353, 1046, 4882 ,1197, 1196, 2457 ,0, 0, 0 , - 3353, 4882, 7420 ,1197, 2457, 4903 ,0, 0, 0 , - 4882, 1059, 3372 ,2457, 1212, 1211 ,0, 0, 0 , - 4882, 3372, 7420 ,2457, 1211, 4903 ,0, 0, 0 , - 3372, 1061, 4998 ,1211, 4347, 2534 ,0, 0, 0 , - 3372, 4998, 7420 ,1211, 2534, 4903 ,0, 0, 0 , - 3367, 1057, 5060 ,4905, 6704, 7451 ,0, 0, 0 , - 3367, 5060, 7421 ,4905, 7451, 4906 ,0, 0, 0 , - 5060, 1060, 3370 ,7451, 6705, 1213 ,0, 0, 0 , - 5060, 3370, 7421 ,7451, 1213, 4906 ,0, 0, 0 , - 3370, 1059, 4886 ,1213, 1212, 2456 ,0, 0, 0 , - 3370, 4886, 7421 ,1213, 2456, 4906 ,0, 0, 0 , - 3364, 1055, 5061 ,1203, 2570, 2569 ,0, 0, 0 , - 3364, 5061, 7422 ,1203, 2569, 4907 ,0, 0, 0 , - 5061, 1057, 3366 ,2569, 6704, 1209 ,0, 0, 0 , - 5061, 3366, 7422 ,2569, 1209, 4907 ,0, 0, 0 , - 3366, 1056, 4733 ,1209, 1208, 2338 ,0, 0, 0 , - 3366, 4733, 7422 ,1209, 2338, 4907 ,0, 0, 0 , - 3359, 1051, 5152 ,1199, 2630, 2629 ,0, 0, 0 , - 3359, 5152, 7423 ,1199, 2629, 4908 ,0, 0, 0 , - 5152, 1054, 3362 ,2629, 6703, 6702 ,0, 0, 0 , - 5152, 3362, 7423 ,2629, 6702, 4908 ,0, 0, 0 , - 3362, 1053, 4542 ,6702, 2198, 2197 ,0, 0, 0 , - 3362, 4542, 7423 ,6702, 2197, 4908 ,0, 0, 0 , - 3349, 1043, 4900 ,1193, 1192, 2467 ,0, 0, 0 , - 3349, 4900, 7424 ,1193, 2467, 4910 ,0, 0, 0 , - 4900, 1048, 3354 ,2467, 6701, 6700 ,0, 0, 0 , - 4900, 3354, 7424 ,2467, 6700, 4910 ,0, 0, 0 , - 3354, 1047, 5005 ,6700, 2533, 2532 ,0, 0, 0 , - 3354, 5005, 7424 ,6700, 2532, 4910 ,0, 0, 0 , - 3335, 1029, 4802 ,1177, 2391, 2390 ,0, 0, 0 , - 3335, 4802, 7425 ,1177, 2390, 4911 ,0, 0, 0 , - 4802, 1034, 3331 ,2390, 6699, 1175 ,0, 0, 0 , - 4802, 3331, 7425 ,2390, 1175, 4911 ,0, 0, 0 , - 3329, 1033, 4895 ,1172, 2464, 2463 ,0, 0, 0 , - 3329, 4895, 7426 ,1172, 2463, 4912 ,0, 0, 0 , - 4895, 1031, 3323 ,2463, 6697, 1170 ,0, 0, 0 , - 4895, 3323, 7426 ,2463, 1170, 4912 ,0, 0, 0 , - 3321, 1028, 4907 ,1166, 6696, 7412 ,0, 0, 0 , - 3321, 4907, 7427 ,1166, 7412, 4914 ,0, 0, 0 , - 4907, 1026, 3316 ,7412, 6692, 1164 ,0, 0, 0 , - 4907, 3316, 7427 ,7412, 1164, 4914 ,0, 0, 0 , - 3316, 1025, 7428 ,1164, 1163, 4913 ,0, 0, 0 , - 3316, 7428, 7427 ,1164, 4913, 4914 ,0, 0, 0 , - 3318, 1027, 4816 ,1162, 6694, 7389 ,0, 0, 0 , - 3318, 4816, 7429 ,1162, 7389, 4915 ,0, 0, 0 , - 4816, 1024, 3312 ,7389, 6691, 1160 ,0, 0, 0 , - 4816, 3312, 7429 ,7389, 1160, 4915 ,0, 0, 0 , - 3312, 1023, 7428 ,1160, 1159, 4913 ,0, 0, 0 , - 3312, 7428, 7429 ,1160, 4913, 4915 ,0, 0, 0 , - 3297, 1014, 4836 ,1144, 2418, 2417 ,0, 0, 0 , - 3297, 4836, 7430 ,1144, 2417, 4916 ,0, 0, 0 , - 4836, 1012, 3292 ,2417, 6689, 1142 ,0, 0, 0 , - 4836, 3292, 7430 ,2417, 1142, 4916 ,0, 0, 0 , - 3292, 1011, 3288 ,1142, 1141, 1138 ,0, 0, 0 , - 3292, 3288, 7430 ,1142, 1138, 4916 ,0, 0, 0 , - 3630, 1263, 5435 ,4919, 4678, 2827 ,0, 0, 0 , - 3630, 5435, 7431 ,4919, 2827, 4920 ,0, 0, 0 , - 5435, 993, 3263 ,2827, 2826, 6682 ,0, 0, 0 , - 5435, 3263, 7431 ,2827, 6682, 4920 ,0, 0, 0 , - 3263, 996, 7312 ,6682, 6681, 4917 ,0, 0, 0 , - 3263, 7312, 7431 ,6682, 4917, 4920 ,0, 0, 0 , - 7308, 1303, 3679 ,4659, 6841, 6840 ,0, 0, 0 , - 7308, 3679, 7432 ,4659, 6840, 4921 ,0, 0, 0 , - 3679, 1302, 7306 ,6840, 6839, 4657 ,0, 0, 0 , - 3679, 7306, 7432 ,6840, 4657, 4921 ,0, 0, 0 , - 3422, 1101, 5629 ,4924, 6718, 2962 ,0, 0, 0 , - 3422, 5629, 7433 ,4924, 2962, 4925 ,0, 0, 0 , - 5629, 988, 3279 ,2962, 2961, 6688 ,0, 0, 0 , - 5629, 3279, 7433 ,2962, 6688, 4925 ,0, 0, 0 , - 3279, 1001, 7404 ,6688, 6687, 4922 ,0, 0, 0 , - 3279, 7404, 7433 ,6688, 4922, 4925 ,0, 0, 0 , - 3390, 1075, 7398 ,4928, 4857, 4856 ,0, 0, 0 , - 3390, 7398, 7434 ,4928, 4856, 4929 ,0, 0, 0 , - 7398, 987, 7401 ,4856, 1108, 4926 ,0, 0, 0 , - 7398, 7401, 7434 ,4856, 4926, 4929 ,0, 0, 0 , - 3264, 993, 5438 ,1115, 2826, 2825 ,0, 0, 0 , - 3264, 5438, 7435 ,1115, 2825, 4930 ,0, 0, 0 , - 5438, 995, 3258 ,2825, 6679, 1113 ,0, 0, 0 , - 5438, 3258, 7435 ,2825, 1113, 4930 ,0, 0, 0 , - 3280, 988, 5632 ,1127, 2961, 2960 ,0, 0, 0 , - 3280, 5632, 7436 ,1127, 2960, 4931 ,0, 0, 0 , - 5632, 991, 3256 ,2960, 6676, 6678 ,0, 0, 0 , - 5632, 3256, 7436 ,2960, 6678, 4931 ,0, 0, 0 , - 3256, 990, 3255 ,6678, 6677, 1109 ,0, 0, 0 , - 3256, 3255, 7436 ,6678, 1109, 4931 ,0, 0, 0 , - 3249, 986, 5652 ,1099, 5008, 2978 ,0, 0, 0 , - 3249, 5652, 7437 ,1099, 2978, 4932 ,0, 0, 0 , - 5652, 975, 3221 ,2978, 2977, 1079 ,0, 0, 0 , - 5652, 3221, 7437 ,2978, 1079, 4932 ,0, 0, 0 , - 3221, 872, 3248 ,1079, 1078, 1101 ,0, 0, 0 , - 3221, 3248, 7437 ,1079, 1101, 4932 ,0, 0, 0 , - 3242, 983, 5846 ,1092, 5214, 3115 ,0, 0, 0 , - 3242, 5846, 7438 ,1092, 3115, 4933 ,0, 0, 0 , - 5846, 981, 3237 ,3115, 3114, 1090 ,0, 0, 0 , - 5846, 3237, 7438 ,3115, 1090, 4933 ,0, 0, 0 , - 7440, 908, 3108 ,4935, 6605, 977 ,0, 0, 0 , - 7440, 3108, 7439 ,4935, 977, 4936 ,0, 0, 0 , - 3108, 907, 7441 ,977, 976, 4934 ,0, 0, 0 , - 3108, 7441, 7439 ,977, 4934, 4936 ,0, 0, 0 , - 3222, 975, 5655 ,4939, 2977, 2976 ,0, 0, 0 , - 3222, 5655, 7442 ,4939, 2976, 4940 ,0, 0, 0 , - 5655, 882, 3081 ,2976, 952, 951 ,0, 0, 0 , - 5655, 3081, 7442 ,2976, 951, 4940 ,0, 0, 0 , - 3081, 886, 7443 ,951, 6588, 4937 ,0, 0, 0 , - 3081, 7443, 7442 ,951, 4937, 4940 ,0, 0, 0 , - 2818, 677, 7445 ,4943, 5225, 5224 ,0, 0, 0 , - 2818, 7445, 7444 ,4943, 5224, 4944 ,0, 0, 0 , - 7445, 689, 7446 ,5224, 1085, 4941 ,0, 0, 0 , - 7445, 7446, 7444 ,5224, 4941, 4944 ,0, 0, 0 , - 3238, 981, 5849 ,4947, 3114, 3113 ,0, 0, 0 , - 3238, 5849, 7447 ,4947, 3113, 4948 ,0, 0, 0 , - 5849, 719, 2868 ,3113, 6481, 773 ,0, 0, 0 , - 5849, 2868, 7447 ,3113, 773, 4948 ,0, 0, 0 , - 2868, 718, 7448 ,773, 772, 4945 ,0, 0, 0 , - 2868, 7448, 7447 ,773, 4945, 4948 ,0, 0, 0 , - 3210, 969, 6574 ,1064, 5690, 7880 ,0, 0, 0 , - 3210, 6574, 7449 ,1064, 7880, 4949 ,0, 0, 0 , - 6574, 965, 3204 ,7880, 6666, 1062 ,0, 0, 0 , - 6574, 3204, 7449 ,7880, 1062, 4949 ,0, 0, 0 , - 3204, 310, 3213 ,1062, 1061, 1068 ,0, 0, 0 , - 3204, 3213, 7449 ,1062, 1068, 4949 ,0, 0, 0 , - 3189, 960, 6594 ,1046, 6658, 7885 ,0, 0, 0 , - 3189, 6594, 7450 ,1046, 7885, 4951 ,0, 0, 0 , - 6594, 958, 3184 ,7885, 6656, 1044 ,0, 0, 0 , - 6594, 3184, 7450 ,7885, 1044, 4951 ,0, 0, 0 , - 3184, 957, 7451 ,1044, 1043, 4950 ,0, 0, 0 , - 3184, 7451, 7450 ,1044, 4950, 4951 ,0, 0, 0 , - 3186, 959, 6486 ,1042, 5702, 7862 ,0, 0, 0 , - 3186, 6486, 7452 ,1042, 7862, 4952 ,0, 0, 0 , - 6486, 955, 3180 ,7862, 6655, 1040 ,0, 0, 0 , - 6486, 3180, 7452 ,7862, 1040, 4952 ,0, 0, 0 , - 3180, 302, 7451 ,1040, 1039, 4950 ,0, 0, 0 , - 3180, 7451, 7452 ,1040, 4950, 4952 ,0, 0, 0 , - 3178, 954, 6503 ,1036, 6654, 7867 ,0, 0, 0 , - 3178, 6503, 7453 ,1036, 7867, 4953 ,0, 0, 0 , - 6503, 951, 3175 ,7867, 6647, 1034 ,0, 0, 0 , - 6503, 3175, 7453 ,7867, 1034, 4953 ,0, 0, 0 , - 3173, 953, 6607 ,1031, 6652, 7887 ,0, 0, 0 , - 3173, 6607, 7454 ,1031, 7887, 4954 ,0, 0, 0 , - 6607, 952, 3167 ,7887, 6648, 1029 ,0, 0, 0 , - 6607, 3167, 7454 ,7887, 1029, 4954 ,0, 0, 0 , - 3147, 938, 6498 ,4957, 6633, 7865 ,0, 0, 0 , - 3147, 6498, 7455 ,4957, 7865, 4958 ,0, 0, 0 , - 6498, 940, 3152 ,7865, 1012, 1011 ,0, 0, 0 , - 6498, 3152, 7455 ,7865, 1011, 4958 ,0, 0, 0 , - 3152, 942, 6346 ,1011, 6636, 4955 ,0, 0, 0 , - 3152, 6346, 7455 ,1011, 4955, 4958 ,0, 0, 0 , - 3140, 933, 6198 ,999, 6629, 7762 ,0, 0, 0 , - 3140, 6198, 7456 ,999, 7762, 4960 ,0, 0, 0 , - 6198, 935, 3142 ,7762, 6630, 1005 ,0, 0, 0 , - 6198, 3142, 7456 ,7762, 1005, 4960 ,0, 0, 0 , - 3142, 934, 6933 ,1005, 1004, 4959 ,0, 0, 0 , - 3142, 6933, 7456 ,1005, 4959, 4960 ,0, 0, 0 , - 3135, 929, 6287 ,995, 6624, 7790 ,0, 0, 0 , - 3135, 6287, 7457 ,995, 7790, 4962 ,0, 0, 0 , - 6287, 932, 3138 ,7790, 6627, 6626 ,0, 0, 0 , - 6287, 3138, 7457 ,7790, 6626, 4962 ,0, 0, 0 , - 3138, 931, 6687 ,6626, 6625, 4961 ,0, 0, 0 , - 3138, 6687, 7457 ,6626, 4961, 4962 ,0, 0, 0 , - 3131, 926, 6288 ,991, 6621, 7791 ,0, 0, 0 , - 3131, 6288, 7458 ,991, 7791, 4964 ,0, 0, 0 , - 6288, 929, 3134 ,7791, 6624, 6623 ,0, 0, 0 , - 6288, 3134, 7458 ,7791, 6623, 4964 ,0, 0, 0 , - 3134, 928, 6513 ,6623, 6622, 4963 ,0, 0, 0 , - 3134, 6513, 7458 ,6623, 4963, 4964 ,0, 0, 0 , - 3129, 924, 6512 ,993, 992, 7869 ,0, 0, 0 , - 3129, 6512, 7459 ,993, 7869, 4967 ,0, 0, 0 , - 6512, 937, 3148 ,7869, 1008, 1007 ,0, 0, 0 , - 6512, 3148, 7459 ,7869, 1007, 4967 ,0, 0, 0 , - 3148, 939, 6345 ,1007, 4956, 4965 ,0, 0, 0 , - 3148, 6345, 7459 ,1007, 4965, 4967 ,0, 0, 0 , - 3127, 923, 6347 ,987, 6619, 7811 ,0, 0, 0 , - 3127, 6347, 7460 ,987, 7811, 4969 ,0, 0, 0 , - 6347, 942, 3151 ,7811, 6636, 6635 ,0, 0, 0 , - 6347, 3151, 7460 ,7811, 6635, 4969 ,0, 0, 0 , - 3151, 941, 6481 ,6635, 6634, 4968 ,0, 0, 0 , - 3151, 6481, 7460 ,6635, 4968, 4969 ,0, 0, 0 , - 3125, 921, 6477 ,4972, 6617, 7860 ,0, 0, 0 , - 3125, 6477, 7461 ,4972, 7860, 4973 ,0, 0, 0 , - 6477, 943, 3156 ,7860, 1016, 1015 ,0, 0, 0 , - 6477, 3156, 7461 ,7860, 1015, 4973 ,0, 0, 0 , - 3156, 945, 6427 ,1015, 6639, 4970 ,0, 0, 0 , - 3156, 6427, 7461 ,1015, 4970, 4973 ,0, 0, 0 , - 3122, 919, 6428 ,983, 4977, 7842 ,0, 0, 0 , - 3122, 6428, 7462 ,983, 7842, 4975 ,0, 0, 0 , - 6428, 945, 3155 ,7842, 6639, 6638 ,0, 0, 0 , - 6428, 3155, 7462 ,7842, 6638, 4975 ,0, 0, 0 , - 3155, 944, 6468 ,6638, 6637, 4974 ,0, 0, 0 , - 3155, 6468, 7462 ,6638, 4974, 4975 ,0, 0, 0 , - 3121, 918, 6458 ,4978, 6616, 7856 ,0, 0, 0 , - 3121, 6458, 7463 ,4978, 7856, 4979 ,0, 0, 0 , - 6458, 946, 3161 ,7856, 1020, 1019 ,0, 0, 0 , - 6458, 3161, 7463 ,7856, 1019, 4979 ,0, 0, 0 , - 3161, 949, 6429 ,1019, 6644, 4976 ,0, 0, 0 , - 3161, 6429, 7463 ,1019, 4976, 4979 ,0, 0, 0 , - 3117, 915, 6934 ,4982, 6615, 7960 ,0, 0, 0 , - 3117, 6934, 7464 ,4982, 7960, 4983 ,0, 0, 0 , - 6934, 934, 3144 ,7960, 1004, 1003 ,0, 0, 0 , - 6934, 3144, 7464 ,7960, 1003, 4983 ,0, 0, 0 , - 3144, 936, 6182 ,1003, 6632, 4980 ,0, 0, 0 , - 3144, 6182, 7464 ,1003, 4980, 4983 ,0, 0, 0 , - 3383, 1069, 6937 ,1225, 1224, 3868 ,0, 0, 0 , - 3383, 6937, 7465 ,1225, 3868, 4986 ,0, 0, 0 , - 6937, 914, 3115 ,3868, 3867, 981 ,0, 0, 0 , - 6937, 3115, 7465 ,3868, 981, 4986 ,0, 0, 0 , - 3115, 913, 6156 ,981, 980, 4984 ,0, 0, 0 , - 3115, 6156, 7465 ,981, 4984, 4986 ,0, 0, 0 , - 3343, 1039, 6433 ,1183, 4257, 7843 ,0, 0, 0 , - 3343, 6433, 7466 ,1183, 7843, 4988 ,0, 0, 0 , - 6433, 948, 3159 ,7843, 6642, 6641 ,0, 0, 0 , - 6433, 3159, 7466 ,7843, 6641, 4988 ,0, 0, 0 , - 3159, 947, 6446 ,6641, 6640, 4987 ,0, 0, 0 , - 3159, 6446, 7466 ,6641, 4987, 4988 ,0, 0, 0 , - 3105, 905, 5649 ,4991, 6604, 7621 ,0, 0, 0 , - 3105, 5649, 7467 ,4991, 7621, 4992 ,0, 0, 0 , - 5649, 911, 3111 ,7621, 6611, 6610 ,0, 0, 0 , - 5649, 3111, 7467 ,7621, 6610, 4992 ,0, 0, 0 , - 3111, 910, 5691 ,6610, 6609, 4989 ,0, 0, 0 , - 3111, 5691, 7467 ,6610, 4989, 4992 ,0, 0, 0 , - 3102, 903, 5692 ,967, 6603, 7629 ,0, 0, 0 , - 3102, 5692, 7468 ,967, 7629, 4994 ,0, 0, 0 , - 5692, 910, 3110 ,7629, 6609, 6608 ,0, 0, 0 , - 5692, 3110, 7468 ,7629, 6608, 4994 ,0, 0, 0 , - 3110, 909, 5662 ,6608, 6607, 4993 ,0, 0, 0 , - 3110, 5662, 7468 ,6608, 4993, 4994 ,0, 0, 0 , - 3093, 895, 5697 ,4997, 6593, 7631 ,0, 0, 0 , - 3093, 5697, 7469 ,4997, 7631, 4998 ,0, 0, 0 , - 5697, 901, 3099 ,7631, 6599, 6598 ,0, 0, 0 , - 5697, 3099, 7469 ,7631, 6598, 4998 ,0, 0, 0 , - 3099, 900, 5671 ,6598, 6597, 4995 ,0, 0, 0 , - 3099, 5671, 7469 ,6598, 4995, 4998 ,0, 0, 0 , - 3088, 891, 5643 ,4999, 6591, 2971 ,0, 0, 0 , - 3088, 5643, 7470 ,4999, 2971, 5000 ,0, 0, 0 , - 5643, 904, 3106 ,2971, 972, 971 ,0, 0, 0 , - 5643, 3106, 7470 ,2971, 971, 5000 ,0, 0, 0 , - 3106, 906, 5690 ,971, 4990, 3008 ,0, 0, 0 , - 3106, 5690, 7470 ,971, 3008, 5000 ,0, 0, 0 , - 3083, 887, 5644 ,957, 956, 7619 ,0, 0, 0 , - 3083, 5644, 7471 ,957, 7619, 5003 ,0, 0, 0 , - 5644, 891, 3087 ,7619, 6591, 961 ,0, 0, 0 , - 5644, 3087, 7471 ,7619, 961, 5003 ,0, 0, 0 , - 3087, 890, 5731 ,961, 960, 5001 ,0, 0, 0 , - 3087, 5731, 7471 ,961, 5001, 5003 ,0, 0, 0 , - 3077, 882, 5654 ,953, 952, 7622 ,0, 0, 0 , - 3077, 5654, 7472 ,953, 7622, 5004 ,0, 0, 0 , - 5654, 889, 3084 ,7622, 6590, 6589 ,0, 0, 0 , - 5654, 3084, 7472 ,7622, 6589, 5004 ,0, 0, 0 , - 3084, 888, 5730 ,6589, 5002, 3037 ,0, 0, 0 , - 3084, 5730, 7472 ,6589, 3037, 5004 ,0, 0, 0 , - 3075, 881, 5658 ,947, 6582, 7623 ,0, 0, 0 , - 3075, 5658, 7473 ,947, 7623, 5006 ,0, 0, 0 , - 5658, 885, 3079 ,7623, 6586, 6585 ,0, 0, 0 , - 5658, 3079, 7473 ,7623, 6585, 5006 ,0, 0, 0 , - 3079, 884, 5741 ,6585, 6584, 5005 ,0, 0, 0 , - 3079, 5741, 7473 ,6585, 5005, 5006 ,0, 0, 0 , - 3244, 985, 5645 ,1097, 1096, 7620 ,0, 0, 0 , - 3244, 5645, 7474 ,1097, 7620, 5009 ,0, 0, 0 , - 5645, 887, 3085 ,7620, 956, 955 ,0, 0, 0 , - 5645, 3085, 7474 ,7620, 955, 5009 ,0, 0, 0 , - 3085, 889, 5653 ,955, 6590, 5007 ,0, 0, 0 , - 3085, 5653, 7474 ,955, 5007, 5009 ,0, 0, 0 , - 7476, 912, 3112 ,5010, 6613, 6612 ,0, 0, 0 , - 7476, 3112, 7475 ,5010, 6612, 5011 ,0, 0, 0 , - 3112, 911, 5648 ,6612, 6611, 2974 ,0, 0, 0 , - 3112, 5648, 7475 ,6612, 2974, 5011 ,0, 0, 0 , - 3246, 872, 5650 ,1095, 1078, 2973 ,0, 0, 0 , - 3246, 5650, 7477 ,1095, 2973, 5012 ,0, 0, 0 , - 5650, 905, 3104 ,2973, 6604, 973 ,0, 0, 0 , - 5650, 3104, 7477 ,2973, 973, 5012 ,0, 0, 0 , - 3104, 904, 5646 ,973, 972, 2970 ,0, 0, 0 , - 3104, 5646, 7477 ,973, 2970, 5012 ,0, 0, 0 , - 3225, 976, 7443 ,5013, 4938, 4937 ,0, 0, 0 , - 3225, 7443, 7478 ,5013, 4937, 5014 ,0, 0, 0 , - 7443, 886, 3080 ,4937, 6588, 6587 ,0, 0, 0 , - 7443, 3080, 7478 ,4937, 6587, 5014 ,0, 0, 0 , - 3080, 885, 5657 ,6587, 6586, 2982 ,0, 0, 0 , - 3080, 5657, 7478 ,6587, 2982, 5014 ,0, 0, 0 , - 7441, 907, 3113 ,4934, 976, 975 ,0, 0, 0 , - 7441, 3113, 7479 ,4934, 975, 5015 ,0, 0, 0 , - 3113, 912, 7476 ,975, 6613, 5010 ,0, 0, 0 , - 3113, 7476, 7479 ,975, 5010, 5015 ,0, 0, 0 , - 3228, 977, 5659 ,5018, 2981, 2980 ,0, 0, 0 , - 3228, 5659, 7480 ,5018, 2980, 5019 ,0, 0, 0 , - 5659, 881, 3074 ,2980, 6582, 6581 ,0, 0, 0 , - 5659, 3074, 7480 ,2980, 6581, 5019 ,0, 0, 0 , - 3074, 880, 5676 ,6581, 6580, 5016 ,0, 0, 0 , - 3074, 5676, 7480 ,6581, 5016, 5019 ,0, 0, 0 , - 5663, 909, 3109 ,5020, 6607, 6606 ,0, 0, 0 , - 5663, 3109, 7481 ,5020, 6606, 5021 ,0, 0, 0 , - 3109, 908, 7440 ,6606, 6605, 4935 ,0, 0, 0 , - 3109, 7440, 7481 ,6606, 4935, 5021 ,0, 0, 0 , - 3061, 869, 5667 ,5022, 6573, 7624 ,0, 0, 0 , - 3061, 5667, 7482 ,5022, 7624, 5023 ,0, 0, 0 , - 5667, 899, 3097 ,7624, 6595, 969 ,0, 0, 0 , - 5667, 3097, 7482 ,7624, 969, 5023 ,0, 0, 0 , - 3097, 898, 5661 ,969, 968, 2986 ,0, 0, 0 , - 3097, 5661, 7482 ,969, 2986, 5023 ,0, 0, 0 , - 3062, 870, 5664 ,5026, 2985, 2984 ,0, 0, 0 , - 3062, 5664, 7483 ,5026, 2984, 5027 ,0, 0, 0 , - 5664, 872, 3229 ,2984, 1078, 1083 ,0, 0, 0 , - 5664, 3229, 7483 ,2984, 1083, 5027 ,0, 0, 0 , - 3229, 978, 5675 ,1083, 5017, 5024 ,0, 0, 0 , - 3229, 5675, 7483 ,1083, 5024, 5027 ,0, 0, 0 , - 3058, 867, 5679 ,931, 5031, 3001 ,0, 0, 0 , - 3058, 5679, 7484 ,931, 3001, 5028 ,0, 0, 0 , - 5679, 897, 3094 ,3001, 3000, 6594 ,0, 0, 0 , - 5679, 3094, 7484 ,3001, 6594, 5028 ,0, 0, 0 , - 3094, 896, 5670 ,6594, 4996, 2993 ,0, 0, 0 , - 3094, 5670, 7484 ,6594, 2993, 5028 ,0, 0, 0 , - 3056, 865, 5672 ,933, 932, 2992 ,0, 0, 0 , - 3056, 5672, 7485 ,933, 2992, 5029 ,0, 0, 0 , - 5672, 900, 3098 ,2992, 6597, 6596 ,0, 0, 0 , - 5672, 3098, 7485 ,2992, 6596, 5029 ,0, 0, 0 , - 3098, 899, 5666 ,6596, 6595, 2990 ,0, 0, 0 , - 3098, 5666, 7485 ,6596, 2990, 5029 ,0, 0, 0 , - 3057, 866, 5668 ,5032, 2989, 2988 ,0, 0, 0 , - 3057, 5668, 7486 ,5032, 2988, 5033 ,0, 0, 0 , - 5668, 869, 3060 ,2988, 6573, 937 ,0, 0, 0 , - 5668, 3060, 7486 ,2988, 937, 5033 ,0, 0, 0 , - 3060, 868, 5680 ,937, 936, 5030 ,0, 0, 0 , - 3060, 5680, 7486 ,937, 5030, 5033 ,0, 0, 0 , - 3052, 862, 5681 ,5034, 6572, 7625 ,0, 0, 0 , - 3052, 5681, 7487 ,5034, 7625, 5035 ,0, 0, 0 , - 5681, 868, 3063 ,7625, 936, 935 ,0, 0, 0 , - 5681, 3063, 7487 ,7625, 935, 5035 ,0, 0, 0 , - 3063, 871, 5674 ,935, 5025, 2997 ,0, 0, 0 , - 3063, 5674, 7487 ,935, 2997, 5035 ,0, 0, 0 , - 3053, 863, 5677 ,5036, 2996, 2995 ,0, 0, 0 , - 3053, 5677, 7488 ,5036, 2995, 5037 ,0, 0, 0 , - 5677, 880, 3073 ,2995, 6580, 949 ,0, 0, 0 , - 5677, 3073, 7488 ,2995, 949, 5037 ,0, 0, 0 , - 3073, 879, 5740 ,949, 948, 3045 ,0, 0, 0 , - 3073, 5740, 7488 ,949, 3045, 5037 ,0, 0, 0 , - 3049, 860, 5682 ,923, 5040, 7626 ,0, 0, 0 , - 3049, 5682, 7489 ,923, 7626, 5039 ,0, 0, 0 , - 5682, 862, 3051 ,7626, 6572, 929 ,0, 0, 0 , - 5682, 3051, 7489 ,7626, 929, 5039 ,0, 0, 0 , - 3051, 861, 5752 ,929, 928, 5038 ,0, 0, 0 , - 3051, 5752, 7489 ,929, 5038, 5039 ,0, 0, 0 , - 3048, 859, 5685 ,5041, 6571, 3004 ,0, 0, 0 , - 3048, 5685, 7490 ,5041, 3004, 5042 ,0, 0, 0 , - 5685, 894, 3095 ,3004, 964, 963 ,0, 0, 0 , - 5685, 3095, 7490 ,3004, 963, 5042 ,0, 0, 0 , - 3095, 897, 5683 ,963, 3000, 2999 ,0, 0, 0 , - 3095, 5683, 7490 ,963, 2999, 5042 ,0, 0, 0 , - 3044, 856, 5686 ,5043, 6570, 7627 ,0, 0, 0 , - 3044, 5686, 7491 ,5043, 7627, 5044 ,0, 0, 0 , - 5686, 859, 3047 ,7627, 6571, 925 ,0, 0, 0 , - 5686, 3047, 7491 ,7627, 925, 5044 ,0, 0, 0 , - 3047, 858, 5751 ,925, 924, 3053 ,0, 0, 0 , - 3047, 5751, 7491 ,925, 3053, 5044 ,0, 0, 0 , - 3041, 854, 5687 ,915, 5047, 7628 ,0, 0, 0 , - 3041, 5687, 7492 ,915, 7628, 5046 ,0, 0, 0 , - 5687, 856, 3043 ,7628, 6570, 921 ,0, 0, 0 , - 5687, 3043, 7492 ,7628, 921, 5046 ,0, 0, 0 , - 3043, 855, 5761 ,921, 920, 5045 ,0, 0, 0 , - 3043, 5761, 7492 ,921, 5045, 5046 ,0, 0, 0 , - 3040, 853, 5698 ,5048, 6569, 7632 ,0, 0, 0 , - 3040, 5698, 7493 ,5048, 7632, 5049 ,0, 0, 0 , - 5698, 895, 3092 ,7632, 6593, 965 ,0, 0, 0 , - 5698, 3092, 7493 ,7632, 965, 5049 ,0, 0, 0 , - 3092, 894, 5688 ,965, 964, 3003 ,0, 0, 0 , - 3092, 5688, 7493 ,965, 3003, 5049 ,0, 0, 0 , - 3037, 851, 5693 ,911, 5052, 7630 ,0, 0, 0 , - 3037, 5693, 7494 ,911, 7630, 5051 ,0, 0, 0 , - 5693, 903, 3101 ,7630, 6603, 6602 ,0, 0, 0 , - 5693, 3101, 7494 ,7630, 6602, 5051 ,0, 0, 0 , - 3101, 902, 5702 ,6602, 6601, 5050 ,0, 0, 0 , - 3101, 5702, 7494 ,6602, 5050, 5051 ,0, 0, 0 , - 3036, 850, 5720 ,5053, 6568, 3030 ,0, 0, 0 , - 3036, 5720, 7495 ,5053, 3030, 5054 ,0, 0, 0 , - 5720, 893, 3089 ,3030, 3029, 6592 ,0, 0, 0 , - 5720, 3089, 7495 ,3030, 6592, 5054 ,0, 0, 0 , - 3089, 892, 5694 ,6592, 3007, 3006 ,0, 0, 0 , - 3089, 5694, 7495 ,6592, 3006, 5054 ,0, 0, 0 , - 3029, 844, 5711 ,909, 908, 7635 ,0, 0, 0 , - 3029, 5711, 7496 ,909, 7635, 5055 ,0, 0, 0 , - 5711, 849, 3034 ,7635, 6566, 913 ,0, 0, 0 , - 5711, 3034, 7496 ,7635, 913, 5055 ,0, 0, 0 , - 3034, 848, 5701 ,913, 912, 3016 ,0, 0, 0 , - 3034, 5701, 7496 ,913, 3016, 5055 ,0, 0, 0 , - 3030, 845, 5703 ,5056, 3015, 3014 ,0, 0, 0 , - 3030, 5703, 7497 ,5056, 3014, 5057 ,0, 0, 0 , - 5703, 902, 3100 ,3014, 6601, 6600 ,0, 0, 0 , - 5703, 3100, 7497 ,3014, 6600, 5057 ,0, 0, 0 , - 3100, 901, 5696 ,6600, 6599, 3012 ,0, 0, 0 , - 3100, 5696, 7497 ,6600, 3012, 5057 ,0, 0, 0 , - 3031, 846, 5699 ,5060, 3011, 3010 ,0, 0, 0 , - 3031, 5699, 7498 ,5060, 3010, 5061 ,0, 0, 0 , - 5699, 853, 3039 ,3010, 6569, 917 ,0, 0, 0 , - 5699, 3039, 7498 ,3010, 917, 5061 ,0, 0, 0 , - 3039, 852, 5760 ,917, 916, 5058 ,0, 0, 0 , - 3039, 5760, 7498 ,917, 5058, 5061 ,0, 0, 0 , - 3027, 843, 5705 ,903, 6565, 3019 ,0, 0, 0 , - 3027, 5705, 7499 ,903, 3019, 5063 ,0, 0, 0 , - 5705, 873, 3067 ,3019, 940, 939 ,0, 0, 0 , - 5705, 3067, 7499 ,3019, 939, 5063 ,0, 0, 0 , - 3067, 875, 5785 ,939, 6576, 5062 ,0, 0, 0 , - 3067, 5785, 7499 ,939, 5062, 5063 ,0, 0, 0 , - 3024, 840, 5784 ,905, 904, 7654 ,0, 0, 0 , - 3024, 5784, 7500 ,905, 7654, 5066 ,0, 0, 0 , - 5784, 876, 3071 ,7654, 944, 943 ,0, 0, 0 , - 5784, 3071, 7500 ,7654, 943, 5066 ,0, 0, 0 , - 3071, 878, 5796 ,943, 6579, 5064 ,0, 0, 0 , - 3071, 5796, 7500 ,943, 5064, 5066 ,0, 0, 0 , - 3021, 838, 5706 ,5069, 6561, 7633 ,0, 0, 0 , - 3021, 5706, 7501 ,5069, 7633, 5070 ,0, 0, 0 , - 5706, 843, 3026 ,7633, 6565, 6564 ,0, 0, 0 , - 5706, 3026, 7501 ,7633, 6564, 5070 ,0, 0, 0 , - 3026, 842, 5801 ,6564, 6563, 5067 ,0, 0, 0 , - 3026, 5801, 7501 ,6564, 5067, 5070 ,0, 0, 0 , - 3017, 835, 5707 ,895, 5077, 7634 ,0, 0, 0 , - 3017, 5707, 7502 ,895, 7634, 5072 ,0, 0, 0 , - 5707, 838, 3020 ,7634, 6561, 6560 ,0, 0, 0 , - 5707, 3020, 7502 ,7634, 6560, 5072 ,0, 0, 0 , - 3020, 837, 5717 ,6560, 6559, 5071 ,0, 0, 0 , - 3020, 5717, 7502 ,6560, 5071, 5072 ,0, 0, 0 , - 3015, 833, 5712 ,5075, 6558, 7636 ,0, 0, 0 , - 3015, 5712, 7503 ,5075, 7636, 5076 ,0, 0, 0 , - 5712, 844, 3032 ,7636, 908, 907 ,0, 0, 0 , - 5712, 3032, 7503 ,7636, 907, 5076 ,0, 0, 0 , - 3032, 847, 5759 ,907, 5059, 5073 ,0, 0, 0 , - 3032, 5759, 7503 ,907, 5073, 5076 ,0, 0, 0 , - 3016, 834, 5758 ,5078, 5074, 7648 ,0, 0, 0 , - 3016, 5758, 7504 ,5078, 7648, 5079 ,0, 0, 0 , - 5758, 874, 3065 ,7648, 6574, 941 ,0, 0, 0 , - 5758, 3065, 7504 ,7648, 941, 5079 ,0, 0, 0 , - 3065, 873, 5708 ,941, 940, 3018 ,0, 0, 0 , - 3065, 5708, 7504 ,941, 3018, 5079 ,0, 0, 0 , - 3012, 831, 5721 ,891, 6557, 7637 ,0, 0, 0 , - 3012, 5721, 7505 ,891, 7637, 5080 ,0, 0, 0 , - 5721, 850, 3035 ,7637, 6568, 6567 ,0, 0, 0 , - 5721, 3035, 7505 ,7637, 6567, 5080 ,0, 0, 0 , - 3035, 849, 5710 ,6567, 6566, 3022 ,0, 0, 0 , - 3035, 5710, 7505 ,6567, 3022, 5080 ,0, 0, 0 , - 3009, 828, 5713 ,893, 892, 3021 ,0, 0, 0 , - 3009, 5713, 7506 ,893, 3021, 5083 ,0, 0, 0 , - 5713, 833, 3014 ,3021, 6558, 897 ,0, 0, 0 , - 5713, 3014, 7506 ,3021, 897, 5083 ,0, 0, 0 , - 3014, 832, 5716 ,897, 896, 5081 ,0, 0, 0 , - 3014, 5716, 7506 ,897, 5081, 5083 ,0, 0, 0 , - 3005, 825, 5811 ,5084, 6553, 7661 ,0, 0, 0 , - 3005, 5811, 7507 ,5084, 7661, 5085 ,0, 0, 0 , - 5811, 830, 3010 ,7661, 6555, 6554 ,0, 0, 0 , - 5811, 3010, 7507 ,7661, 6554, 5085 ,0, 0, 0 , - 3010, 829, 5715 ,6554, 5082, 3026 ,0, 0, 0 , - 3010, 5715, 7507 ,6554, 3026, 5085 ,0, 0, 0 , - 3006, 826, 5718 ,5088, 3025, 3024 ,0, 0, 0 , - 3006, 5718, 7508 ,5088, 3024, 5089 ,0, 0, 0 , - 5718, 837, 3019 ,3024, 6559, 901 ,0, 0, 0 , - 5718, 3019, 7508 ,3024, 901, 5089 ,0, 0, 0 , - 3019, 836, 5817 ,901, 900, 5086 ,0, 0, 0 , - 3019, 5817, 7508 ,901, 5086, 5089 ,0, 0, 0 , - 3002, 823, 5722 ,883, 5091, 7638 ,0, 0, 0 , - 3002, 5722, 7509 ,883, 7638, 5090 ,0, 0, 0 , - 5722, 831, 3011 ,7638, 6557, 6556 ,0, 0, 0 , - 5722, 3011, 7509 ,7638, 6556, 5090 ,0, 0, 0 , - 3011, 830, 5810 ,6556, 6555, 3095 ,0, 0, 0 , - 3011, 5810, 7509 ,6556, 3095, 5090 ,0, 0, 0 , - 3001, 822, 5732 ,5092, 6552, 7641 ,0, 0, 0 , - 3001, 5732, 7510 ,5092, 7641, 5093 ,0, 0, 0 , - 5732, 890, 3090 ,7641, 960, 959 ,0, 0, 0 , - 5732, 3090, 7510 ,7641, 959, 5093 ,0, 0, 0 , - 3090, 893, 5723 ,959, 3029, 3028 ,0, 0, 0 , - 3090, 5723, 7510 ,959, 3028, 5093 ,0, 0, 0 , - 2996, 818, 5812 ,879, 5095, 7662 ,0, 0, 0 , - 2996, 5812, 7511 ,879, 7662, 5094 ,0, 0, 0 , - 5812, 825, 3004 ,7662, 6553, 889 ,0, 0, 0 , - 5812, 3004, 7511 ,7662, 889, 5094 ,0, 0, 0 , - 3004, 824, 5725 ,889, 888, 3033 ,0, 0, 0 , - 3004, 5725, 7511 ,889, 3033, 5094 ,0, 0, 0 , - 2995, 817, 5771 ,5096, 6547, 7651 ,0, 0, 0 , - 2995, 5771, 7512 ,5096, 7651, 5097 ,0, 0, 0 , - 5771, 820, 2998 ,7651, 6548, 885 ,0, 0, 0 , - 5771, 2998, 7512 ,7651, 885, 5097 ,0, 0, 0 , - 2998, 819, 5813 ,885, 884, 3094 ,0, 0, 0 , - 2998, 5813, 7512 ,885, 3094, 5097 ,0, 0, 0 , - 2988, 811, 5726 ,877, 876, 7639 ,0, 0, 0 , - 2988, 5726, 7513 ,877, 7639, 5100 ,0, 0, 0 , - 5726, 824, 3007 ,7639, 888, 887 ,0, 0, 0 , - 5726, 3007, 7513 ,7639, 887, 5100 ,0, 0, 0 , - 3007, 827, 5816 ,887, 5087, 5098 ,0, 0, 0 , - 3007, 5816, 7513 ,887, 5098, 5100 ,0, 0, 0 , - 2986, 810, 5727 ,871, 5103, 7640 ,0, 0, 0 , - 2986, 5727, 7514 ,871, 7640, 5102 ,0, 0, 0 , - 5727, 811, 2991 ,7640, 876, 875 ,0, 0, 0 , - 5727, 2991, 7514 ,7640, 875, 5102 ,0, 0, 0 , - 2991, 814, 6130 ,875, 6544, 5101 ,0, 0, 0 , - 2991, 6130, 7514 ,875, 5101, 5102 ,0, 0, 0 , - 2985, 809, 5765 ,5104, 6540, 7649 ,0, 0, 0 , - 2985, 5765, 7515 ,5104, 7649, 5105 ,0, 0, 0 , - 5765, 816, 2993 ,7649, 6545, 881 ,0, 0, 0 , - 5765, 2993, 7515 ,7649, 881, 5105 ,0, 0, 0 , - 2993, 815, 5728 ,881, 880, 3032 ,0, 0, 0 , - 2993, 5728, 7515 ,881, 3032, 5105 ,0, 0, 0 , - 2981, 806, 5766 ,867, 6537, 7650 ,0, 0, 0 , - 2981, 5766, 7516 ,867, 7650, 5107 ,0, 0, 0 , - 5766, 809, 2984 ,7650, 6540, 6539 ,0, 0, 0 , - 5766, 2984, 7516 ,7650, 6539, 5107 ,0, 0, 0 , - 2984, 808, 6140 ,6539, 6538, 5106 ,0, 0, 0 , - 2984, 6140, 7516 ,6539, 5106, 5107 ,0, 0, 0 , - 2976, 802, 5733 ,863, 5110, 7642 ,0, 0, 0 , - 2976, 5733, 7517 ,863, 7642, 5109 ,0, 0, 0 , - 5733, 822, 3000 ,7642, 6552, 6551 ,0, 0, 0 , - 5733, 3000, 7517 ,7642, 6551, 5109 ,0, 0, 0 , - 3000, 821, 5737 ,6551, 6550, 5108 ,0, 0, 0 , - 3000, 5737, 7517 ,6551, 5108, 5109 ,0, 0, 0 , - 2975, 801, 5742 ,5111, 6532, 7643 ,0, 0, 0 , - 2975, 5742, 7518 ,5111, 7643, 5112 ,0, 0, 0 , - 5742, 884, 3078 ,7643, 6584, 6583 ,0, 0, 0 , - 5742, 3078, 7518 ,7643, 6583, 5112 ,0, 0, 0 , - 3078, 883, 5734 ,6583, 3036, 3035 ,0, 0, 0 , - 3078, 5734, 7518 ,6583, 3035, 5112 ,0, 0, 0 , - 2969, 796, 5748 ,5113, 6529, 7645 ,0, 0, 0 , - 2969, 5748, 7519 ,5113, 7645, 5114 ,0, 0, 0 , - 5748, 800, 2973 ,7645, 6530, 865 ,0, 0, 0 , - 5748, 2973, 7519 ,7645, 865, 5114 ,0, 0, 0 , - 2973, 799, 5736 ,865, 864, 3041 ,0, 0, 0 , - 2973, 5736, 7519 ,865, 3041, 5114 ,0, 0, 0 , - 2970, 797, 5738 ,5117, 3040, 3039 ,0, 0, 0 , - 2970, 5738, 7520 ,5117, 3039, 5118 ,0, 0, 0 , - 5738, 821, 2999 ,3039, 6550, 6549 ,0, 0, 0 , - 5738, 2999, 7520 ,3039, 6549, 5118 ,0, 0, 0 , - 2999, 820, 5770 ,6549, 6548, 5115 ,0, 0, 0 , - 2999, 5770, 7520 ,6549, 5115, 5118 ,0, 0, 0 , - 2966, 794, 5743 ,855, 5121, 7644 ,0, 0, 0 , - 2966, 5743, 7521 ,855, 7644, 5120 ,0, 0, 0 , - 5743, 801, 2974 ,7644, 6532, 6531 ,0, 0, 0 , - 5743, 2974, 7521 ,7644, 6531, 5120 ,0, 0, 0 , - 2974, 800, 5747 ,6531, 6530, 5119 ,0, 0, 0 , - 2974, 5747, 7521 ,6531, 5119, 5120 ,0, 0, 0 , - 2965, 793, 5753 ,5122, 6528, 7646 ,0, 0, 0 , - 2965, 5753, 7522 ,5122, 7646, 5123 ,0, 0, 0 , - 5753, 861, 3054 ,7646, 928, 927 ,0, 0, 0 , - 5753, 3054, 7522 ,7646, 927, 5123 ,0, 0, 0 , - 3054, 864, 5744 ,927, 3044, 3043 ,0, 0, 0 , - 3054, 5744, 7522 ,927, 3043, 5123 ,0, 0, 0 , - 2958, 787, 5788 ,853, 852, 7656 ,0, 0, 0 , - 2958, 5788, 7523 ,853, 7656, 5124 ,0, 0, 0 , - 5788, 792, 2963 ,7656, 6526, 857 ,0, 0, 0 , - 5788, 2963, 7523 ,7656, 857, 5124 ,0, 0, 0 , - 2963, 791, 5746 ,857, 856, 3049 ,0, 0, 0 , - 2963, 5746, 7523 ,857, 3049, 5124 ,0, 0, 0 , - 2959, 788, 5749 ,5127, 3048, 3047 ,0, 0, 0 , - 2959, 5749, 7524 ,5127, 3047, 5128 ,0, 0, 0 , - 5749, 796, 2968 ,3047, 6529, 861 ,0, 0, 0 , - 5749, 2968, 7524 ,3047, 861, 5128 ,0, 0, 0 , - 2968, 795, 5775 ,861, 860, 5125 ,0, 0, 0 , - 2968, 5775, 7524 ,861, 5125, 5128 ,0, 0, 0 , - 2956, 786, 5754 ,847, 5132, 7647 ,0, 0, 0 , - 2956, 5754, 7525 ,847, 7647, 5130 ,0, 0, 0 , - 5754, 793, 2964 ,7647, 6528, 6527 ,0, 0, 0 , - 5754, 2964, 7525 ,7647, 6527, 5130 ,0, 0, 0 , - 2964, 792, 5787 ,6527, 6526, 5129 ,0, 0, 0 , - 2964, 5787, 7525 ,6527, 5129, 5130 ,0, 0, 0 , - 2954, 784, 5786 ,849, 848, 7655 ,0, 0, 0 , - 2954, 5786, 7526 ,849, 7655, 5131 ,0, 0, 0 , - 5786, 875, 3066 ,7655, 6576, 6575 ,0, 0, 0 , - 5786, 3066, 7526 ,7655, 6575, 5131 ,0, 0, 0 , - 3066, 874, 5757 ,6575, 6574, 3057 ,0, 0, 0 , - 3066, 5757, 7526 ,6575, 3057, 5131 ,0, 0, 0 , - 2955, 785, 5762 ,5133, 3056, 3055 ,0, 0, 0 , - 2955, 5762, 7527 ,5133, 3055, 5134 ,0, 0, 0 , - 5762, 855, 3045 ,3055, 920, 919 ,0, 0, 0 , - 5762, 3045, 7527 ,3055, 919, 5134 ,0, 0, 0 , - 3045, 857, 5755 ,919, 3052, 3051 ,0, 0, 0 , - 3045, 5755, 7527 ,919, 3051, 5134 ,0, 0, 0 , - 2949, 780, 5776 ,845, 844, 7652 ,0, 0, 0 , - 2949, 5776, 7528 ,845, 7652, 5135 ,0, 0, 0 , - 5776, 795, 2971 ,7652, 860, 859 ,0, 0, 0 , - 5776, 2971, 7528 ,7652, 859, 5135 ,0, 0, 0 , - 2971, 798, 5769 ,859, 5116, 3065 ,0, 0, 0 , - 2971, 5769, 7528 ,859, 3065, 5135 ,0, 0, 0 , - 2950, 781, 5772 ,5136, 3064, 3063 ,0, 0, 0 , - 2950, 5772, 7529 ,5136, 3063, 5137 ,0, 0, 0 , - 5772, 817, 2994 ,3063, 6547, 6546 ,0, 0, 0 , - 5772, 2994, 7529 ,3063, 6546, 5137 ,0, 0, 0 , - 2994, 816, 5764 ,6546, 6545, 3061 ,0, 0, 0 , - 2994, 5764, 7529 ,6546, 3061, 5137 ,0, 0, 0 , - 2951, 782, 5767 ,5140, 3060, 3059 ,0, 0, 0 , - 2951, 5767, 7530 ,5140, 3059, 5141 ,0, 0, 0 , - 5767, 806, 2980 ,3059, 6537, 6536 ,0, 0, 0 , - 5767, 2980, 7530 ,3059, 6536, 5141 ,0, 0, 0 , - 2980, 805, 5843 ,6536, 6535, 5138 ,0, 0, 0 , - 2980, 5843, 7530 ,6536, 5138, 5141 ,0, 0, 0 , - 2944, 776, 5779 ,841, 840, 3073 ,0, 0, 0 , - 2944, 5779, 7531 ,841, 3073, 5142 ,0, 0, 0 , - 5779, 790, 2960 ,3073, 3072, 6525 ,0, 0, 0 , - 5779, 2960, 7531 ,3073, 6525, 5142 ,0, 0, 0 , - 2960, 789, 5774 ,6525, 5126, 3069 ,0, 0, 0 , - 2960, 5774, 7531 ,6525, 3069, 5142 ,0, 0, 0 , - 2945, 777, 5777 ,5145, 3068, 3067 ,0, 0, 0 , - 2945, 5777, 7532 ,5145, 3067, 5146 ,0, 0, 0 , - 5777, 780, 2952 ,3067, 844, 843 ,0, 0, 0 , - 5777, 2952, 7532 ,3067, 843, 5146 ,0, 0, 0 , - 2952, 783, 5842 ,843, 5139, 5143 ,0, 0, 0 , - 2952, 5842, 7532 ,843, 5143, 5146 ,0, 0, 0 , - 2942, 775, 5780 ,835, 5150, 7653 ,0, 0, 0 , - 2942, 5780, 7533 ,835, 7653, 5148 ,0, 0, 0 , - 5780, 776, 2947 ,7653, 840, 839 ,0, 0, 0 , - 5780, 2947, 7533 ,7653, 839, 5148 ,0, 0, 0 , - 2947, 779, 5837 ,839, 6524, 5147 ,0, 0, 0 , - 2947, 5837, 7533 ,839, 5147, 5148 ,0, 0, 0 , - 2940, 773, 5836 ,837, 836, 7669 ,0, 0, 0 , - 2940, 5836, 7534 ,837, 7669, 5149 ,0, 0, 0 , - 5836, 877, 3069 ,7669, 6577, 945 ,0, 0, 0 , - 5836, 3069, 7534 ,7669, 945, 5149 ,0, 0, 0 , - 3069, 876, 5783 ,945, 944, 3077 ,0, 0, 0 , - 3069, 5783, 7534 ,945, 3077, 5149 ,0, 0, 0 , - 2941, 774, 5789 ,5151, 3076, 3075 ,0, 0, 0 , - 2941, 5789, 7535 ,5151, 3075, 5152 ,0, 0, 0 , - 5789, 787, 2961 ,3075, 852, 851 ,0, 0, 0 , - 5789, 2961, 7535 ,3075, 851, 5152 ,0, 0, 0 , - 2961, 790, 5781 ,851, 3072, 3071 ,0, 0, 0 , - 2961, 5781, 7535 ,851, 3071, 5152 ,0, 0, 0 , - 2933, 768, 5806 ,827, 6517, 7659 ,0, 0, 0 , - 2933, 5806, 7536 ,827, 7659, 5154 ,0, 0, 0 , - 5806, 772, 2937 ,7659, 6522, 6521 ,0, 0, 0 , - 5806, 2937, 7536 ,7659, 6521, 5154 ,0, 0, 0 , - 2937, 771, 5824 ,6521, 6520, 5153 ,0, 0, 0 , - 2937, 5824, 7536 ,6521, 5153, 5154 ,0, 0, 0 , - 2928, 765, 5830 ,825, 824, 7667 ,0, 0, 0 , - 2928, 5830, 7537 ,825, 7667, 5157 ,0, 0, 0 , - 5830, 770, 2935 ,7667, 6518, 833 ,0, 0, 0 , - 5830, 2935, 7537 ,7667, 833, 5157 ,0, 0, 0 , - 2935, 769, 5792 ,833, 832, 5155 ,0, 0, 0 , - 2935, 5792, 7537 ,833, 5155, 5157 ,0, 0, 0 , - 2926, 764, 5797 ,819, 6514, 7657 ,0, 0, 0 , - 2926, 5797, 7538 ,819, 7657, 5159 ,0, 0, 0 , - 5797, 878, 3070 ,7657, 6579, 6578 ,0, 0, 0 , - 5797, 3070, 7538 ,7657, 6578, 5159 ,0, 0, 0 , - 3070, 877, 5835 ,6578, 6577, 5158 ,0, 0, 0 , - 3070, 5835, 7538 ,6578, 5158, 5159 ,0, 0, 0 , - 2922, 761, 5802 ,815, 6512, 7658 ,0, 0, 0 , - 2922, 5802, 7539 ,815, 7658, 5160 ,0, 0, 0 , - 5802, 842, 3025 ,7658, 6563, 6562 ,0, 0, 0 , - 5802, 3025, 7539 ,7658, 6562, 5160 ,0, 0, 0 , - 3025, 841, 5795 ,6562, 5065, 3084 ,0, 0, 0 , - 3025, 5795, 7539 ,6562, 3084, 5160 ,0, 0, 0 , - 2919, 758, 5798 ,817, 816, 3083 ,0, 0, 0 , - 2919, 5798, 7540 ,817, 3083, 5161 ,0, 0, 0 , - 5798, 764, 2925 ,3083, 6514, 6513 ,0, 0, 0 , - 5798, 2925, 7540 ,3083, 6513, 5161 ,0, 0, 0 , - 2925, 763, 5791 ,6513, 5156, 3081 ,0, 0, 0 , - 2925, 5791, 7540 ,6513, 3081, 5161 ,0, 0, 0 , - 2920, 759, 5793 ,5162, 3080, 3079 ,0, 0, 0 , - 2920, 5793, 7541 ,5162, 3079, 5163 ,0, 0, 0 , - 5793, 769, 2938 ,3079, 832, 831 ,0, 0, 0 , - 5793, 2938, 7541 ,3079, 831, 5163 ,0, 0, 0 , - 2938, 772, 5805 ,831, 6522, 3092 ,0, 0, 0 , - 2938, 5805, 7541 ,831, 3092, 5163 ,0, 0, 0 , - 2917, 757, 5807 ,811, 5167, 7660 ,0, 0, 0 , - 2917, 5807, 7542 ,811, 7660, 5165 ,0, 0, 0 , - 5807, 768, 2932 ,7660, 6517, 6516 ,0, 0, 0 , - 5807, 2932, 7542 ,7660, 6516, 5165 ,0, 0, 0 , - 2932, 767, 5819 ,6516, 6515, 5164 ,0, 0, 0 , - 2932, 5819, 7542 ,6516, 5164, 5165 ,0, 0, 0 , - 2915, 755, 5818 ,813, 812, 7663 ,0, 0, 0 , - 2915, 5818, 7543 ,813, 7663, 5166 ,0, 0, 0 , - 5818, 836, 3022 ,7663, 900, 899 ,0, 0, 0 , - 5818, 3022, 7543 ,7663, 899, 5166 ,0, 0, 0 , - 3022, 839, 5800 ,899, 5068, 3088 ,0, 0, 0 , - 3022, 5800, 7543 ,899, 3088, 5166 ,0, 0, 0 , - 2916, 756, 5803 ,5168, 3087, 3086 ,0, 0, 0 , - 2916, 5803, 7544 ,5168, 3086, 5169 ,0, 0, 0 , - 5803, 761, 2921 ,3086, 6512, 6511 ,0, 0, 0 , - 5803, 2921, 7544 ,3086, 6511, 5169 ,0, 0, 0 , - 2921, 760, 5808 ,6511, 3091, 3090 ,0, 0, 0 , - 2921, 5808, 7544 ,6511, 3090, 5169 ,0, 0, 0 , - 2911, 752, 6209 ,809, 808, 7766 ,0, 0, 0 , - 2911, 6209, 7545 ,809, 7766, 5170 ,0, 0, 0 , - 6209, 813, 2989 ,7766, 6542, 6541 ,0, 0, 0 , - 6209, 2989, 7545 ,7766, 6541, 5170 ,0, 0, 0 , - 2989, 812, 5815 ,6541, 5099, 3099 ,0, 0, 0 , - 2989, 5815, 7545 ,6541, 3099, 5170 ,0, 0, 0 , - 2909, 751, 5820 ,803, 5172, 7664 ,0, 0, 0 , - 2909, 5820, 7546 ,803, 7664, 5171 ,0, 0, 0 , - 5820, 767, 2931 ,7664, 6515, 829 ,0, 0, 0 , - 5820, 2931, 7546 ,7664, 829, 5171 ,0, 0, 0 , - 2931, 766, 5823 ,829, 828, 3102 ,0, 0, 0 , - 2931, 5823, 7546 ,829, 3102, 5171 ,0, 0, 0 , - 2908, 750, 6201 ,5173, 6509, 3358 ,0, 0, 0 , - 2908, 6201, 7547 ,5173, 3358, 5174 ,0, 0, 0 , - 6201, 754, 2912 ,3358, 3357, 6510 ,0, 0, 0 , - 6201, 2912, 7547 ,3358, 6510, 5174 ,0, 0, 0 , - 2912, 753, 5821 ,6510, 3098, 3097 ,0, 0, 0 , - 2912, 5821, 7547 ,6510, 3097, 5174 ,0, 0, 0 , - 2904, 747, 5825 ,799, 6506, 7665 ,0, 0, 0 , - 2904, 5825, 7548 ,799, 7665, 5175 ,0, 0, 0 , - 5825, 771, 2936 ,7665, 6520, 6519 ,0, 0, 0 , - 5825, 2936, 7548 ,7665, 6519, 5175 ,0, 0, 0 , - 2936, 770, 5829 ,6519, 6518, 3105 ,0, 0, 0 , - 2936, 5829, 7548 ,6519, 3105, 5175 ,0, 0, 0 , - 2899, 743, 5826 ,795, 5177, 7666 ,0, 0, 0 , - 2899, 5826, 7549 ,795, 7666, 5176 ,0, 0, 0 , - 5826, 747, 2903 ,7666, 6506, 6505 ,0, 0, 0 , - 5826, 2903, 7549 ,7666, 6505, 5176 ,0, 0, 0 , - 2903, 746, 6255 ,6505, 6504, 3394 ,0, 0, 0 , - 2903, 6255, 7549 ,6505, 3394, 5176 ,0, 0, 0 , - 2898, 742, 6263 ,5178, 6501, 7783 ,0, 0, 0 , - 2898, 6263, 7550 ,5178, 7783, 5179 ,0, 0, 0 , - 6263, 749, 2906 ,7783, 6507, 805 ,0, 0, 0 , - 6263, 2906, 7550 ,7783, 805, 5179 ,0, 0, 0 , - 2906, 748, 5827 ,805, 804, 3101 ,0, 0, 0 , - 2906, 5827, 7550 ,805, 3101, 5179 ,0, 0, 0 , - 2895, 740, 5831 ,791, 5181, 7668 ,0, 0, 0 , - 2895, 5831, 7551 ,791, 7668, 5180 ,0, 0, 0 , - 5831, 765, 2929 ,7668, 824, 823 ,0, 0, 0 , - 5831, 2929, 7551 ,7668, 823, 5180 ,0, 0, 0 , - 2929, 762, 5834 ,823, 820, 3108 ,0, 0, 0 , - 2929, 5834, 7551 ,823, 3108, 5180 ,0, 0, 0 , - 2894, 739, 6160 ,5182, 6500, 7750 ,0, 0, 0 , - 2894, 6160, 7552 ,5182, 7750, 5183 ,0, 0, 0 , - 6160, 745, 2901 ,7750, 6502, 801 ,0, 0, 0 , - 6160, 2901, 7552 ,7750, 801, 5183 ,0, 0, 0 , - 2901, 744, 5832 ,801, 800, 3104 ,0, 0, 0 , - 2901, 5832, 7552 ,801, 3104, 5183 ,0, 0, 0 , - 2890, 736, 5838 ,787, 5186, 7670 ,0, 0, 0 , - 2890, 5838, 7553 ,787, 7670, 5184 ,0, 0, 0 , - 5838, 779, 2946 ,7670, 6524, 6523 ,0, 0, 0 , - 5838, 2946, 7553 ,7670, 6523, 5184 ,0, 0, 0 , - 2946, 778, 5841 ,6523, 5144, 3111 ,0, 0, 0 , - 2946, 5841, 7553 ,6523, 3111, 5184 ,0, 0, 0 , - 2887, 733, 5844 ,789, 788, 3110 ,0, 0, 0 , - 2887, 5844, 7554 ,789, 3110, 5185 ,0, 0, 0 , - 5844, 805, 2979 ,3110, 6535, 6534 ,0, 0, 0 , - 5844, 2979, 7554 ,3110, 6534, 5185 ,0, 0, 0 , - 2979, 804, 6164 ,6534, 6533, 3333 ,0, 0, 0 , - 2979, 6164, 7554 ,6534, 3333, 5185 ,0, 0, 0 , - 2889, 735, 6172 ,5187, 6497, 7755 ,0, 0, 0 , - 2889, 6172, 7555 ,5187, 7755, 5188 ,0, 0, 0 , - 6172, 738, 2892 ,7755, 6498, 793 ,0, 0, 0 , - 6172, 2892, 7555 ,7755, 793, 5188 ,0, 0, 0 , - 2892, 737, 5839 ,793, 792, 3107 ,0, 0, 0 , - 2892, 5839, 7555 ,793, 3107, 5188 ,0, 0, 0 , - 2880, 728, 5952 ,779, 6491, 3191 ,0, 0, 0 , - 2880, 5952, 7556 ,779, 3191, 5190 ,0, 0, 0 , - 5952, 732, 2884 ,3191, 3190, 6495 ,0, 0, 0 , - 5952, 2884, 7556 ,3191, 6495, 5190 ,0, 0, 0 , - 2884, 731, 5861 ,6495, 6494, 5189 ,0, 0, 0 , - 2884, 5861, 7556 ,6495, 5189, 5190 ,0, 0, 0 , - 2876, 725, 5953 ,775, 6488, 7698 ,0, 0, 0 , - 2876, 5953, 7557 ,775, 7698, 5192 ,0, 0, 0 , - 5953, 728, 2879 ,7698, 6491, 6490 ,0, 0, 0 , - 5953, 2879, 7557 ,7698, 6490, 5192 ,0, 0, 0 , - 2879, 727, 5856 ,6490, 6489, 5191 ,0, 0, 0 , - 2879, 5856, 7557 ,6490, 5191, 5192 ,0, 0, 0 , - 2871, 721, 5954 ,5195, 6485, 7699 ,0, 0, 0 , - 2871, 5954, 7558 ,5195, 7699, 5196 ,0, 0, 0 , - 5954, 725, 2875 ,7699, 6488, 6487 ,0, 0, 0 , - 5954, 2875, 7558 ,7699, 6487, 5196 ,0, 0, 0 , - 2875, 724, 5852 ,6487, 6486, 5193 ,0, 0, 0 , - 2875, 5852, 7558 ,6487, 5193, 5196 ,0, 0, 0 , - 2860, 712, 5901 ,5199, 6476, 7679 ,0, 0, 0 , - 2860, 5901, 7559 ,5199, 7679, 5200 ,0, 0, 0 , - 5901, 720, 2869 ,7679, 6483, 6482 ,0, 0, 0 , - 5901, 2869, 7559 ,7679, 6482, 5200 ,0, 0, 0 , - 2869, 719, 5848 ,6482, 6481, 5197 ,0, 0, 0 , - 2869, 5848, 7559 ,6482, 5197, 5200 ,0, 0, 0 , - 2856, 709, 5955 ,759, 6473, 7700 ,0, 0, 0 , - 2856, 5955, 7560 ,759, 7700, 5202 ,0, 0, 0 , - 5955, 721, 2870 ,7700, 6485, 6484 ,0, 0, 0 , - 5955, 2870, 7560 ,7700, 6484, 5202 ,0, 0, 0 , - 2870, 720, 5900 ,6484, 6483, 5201 ,0, 0, 0 , - 2870, 5900, 7560 ,6484, 5201, 5202 ,0, 0, 0 , - 2846, 701, 6096 ,751, 6464, 3290 ,0, 0, 0 , - 2846, 6096, 7561 ,751, 3290, 5204 ,0, 0, 0 , - 6096, 715, 2863 ,3290, 3289, 769 ,0, 0, 0 , - 6096, 2863, 7561 ,3290, 769, 5204 ,0, 0, 0 , - 2863, 714, 5916 ,769, 768, 5203 ,0, 0, 0 , - 2863, 5916, 7561 ,769, 5203, 5204 ,0, 0, 0 , - 2841, 697, 5948 ,747, 6459, 7696 ,0, 0, 0 , - 2841, 5948, 7562 ,747, 7696, 5205 ,0, 0, 0 , - 5948, 703, 2848 ,7696, 6465, 757 ,0, 0, 0 , - 5948, 2848, 7562 ,7696, 757, 5205 ,0, 0, 0 , - 2848, 702, 6044 ,757, 756, 3253 ,0, 0, 0 , - 2848, 6044, 7562 ,757, 3253, 5205 ,0, 0, 0 , - 2833, 690, 6088 ,745, 744, 7735 ,0, 0, 0 , - 2833, 6088, 7563 ,745, 7735, 5208 ,0, 0, 0 , - 6088, 700, 2844 ,7735, 6462, 6461 ,0, 0, 0 , - 6088, 2844, 7563 ,7735, 6461, 5208 ,0, 0, 0 , - 2844, 699, 5928 ,6461, 6460, 5206 ,0, 0, 0 , - 2844, 5928, 7563 ,6461, 5206, 5208 ,0, 0, 0 , - 2835, 692, 5938 ,5211, 6454, 7692 ,0, 0, 0 , - 2835, 5938, 7564 ,5211, 7692, 5212 ,0, 0, 0 , - 5938, 696, 2839 ,7692, 6457, 6456 ,0, 0, 0 , - 5938, 2839, 7564 ,7692, 6456, 5212 ,0, 0, 0 , - 2839, 695, 6081 ,6456, 6455, 5209 ,0, 0, 0 , - 2839, 6081, 7564 ,6456, 5209, 5212 ,0, 0, 0 , - 3241, 982, 5868 ,5215, 6674, 3132 ,0, 0, 0 , - 3241, 5868, 7565 ,5215, 3132, 5216 ,0, 0, 0 , - 5868, 710, 2861 ,3132, 764, 763 ,0, 0, 0 , - 5868, 2861, 7565 ,3132, 763, 5216 ,0, 0, 0 , - 2861, 713, 5847 ,763, 5198, 5213 ,0, 0, 0 , - 2861, 5847, 7565 ,763, 5213, 5216 ,0, 0, 0 , - 3235, 980, 7448 ,5217, 4946, 4945 ,0, 0, 0 , - 3235, 7448, 7566 ,5217, 4945, 5218 ,0, 0, 0 , - 7448, 718, 2872 ,4945, 772, 771 ,0, 0, 0 , - 7448, 2872, 7566 ,4945, 771, 5218 ,0, 0, 0 , - 2872, 722, 5851 ,771, 5194, 3119 ,0, 0, 0 , - 2872, 5851, 7566 ,771, 3119, 5218 ,0, 0, 0 , - 3232, 979, 5853 ,5219, 3118, 3117 ,0, 0, 0 , - 3232, 5853, 7567 ,5219, 3117, 5220 ,0, 0, 0 , - 5853, 724, 2874 ,3117, 6486, 777 ,0, 0, 0 , - 5853, 2874, 7567 ,3117, 777, 5220 ,0, 0, 0 , - 2874, 723, 5855 ,777, 776, 3122 ,0, 0, 0 , - 2874, 5855, 7567 ,777, 3122, 5220 ,0, 0, 0 , - 2829, 687, 5857 ,741, 740, 3121 ,0, 0, 0 , - 2829, 5857, 7568 ,741, 3121, 5223 ,0, 0, 0 , - 5857, 727, 2878 ,3121, 6489, 781 ,0, 0, 0 , - 5857, 2878, 7568 ,3121, 781, 5223 ,0, 0, 0 , - 2878, 726, 5860 ,781, 780, 5221 ,0, 0, 0 , - 2878, 5860, 7568 ,781, 5221, 5223 ,0, 0, 0 , - 2817, 676, 5864 ,737, 736, 3129 ,0, 0, 0 , - 2817, 5864, 7569 ,737, 3129, 5226 ,0, 0, 0 , - 5864, 689, 7445 ,3129, 1085, 5224 ,0, 0, 0 , - 5864, 7445, 7569 ,3129, 5224, 5226 ,0, 0, 0 , - 2819, 678, 7446 ,5229, 4942, 4941 ,0, 0, 0 , - 2819, 7446, 7570 ,5229, 4941, 5230 ,0, 0, 0 , - 7446, 689, 7571 ,4941, 1085, 5227 ,0, 0, 0 , - 7446, 7571, 7570 ,4941, 5227, 5230 ,0, 0, 0 , - 2820, 679, 7571 ,5233, 5228, 5227 ,0, 0, 0 , - 2820, 7571, 7572 ,5233, 5227, 5234 ,0, 0, 0 , - 7571, 689, 7573 ,5227, 1085, 5231 ,0, 0, 0 , - 7571, 7573, 7572 ,5227, 5231, 5234 ,0, 0, 0 , - 2821, 680, 7573 ,5235, 5232, 5231 ,0, 0, 0 , - 2821, 7573, 7574 ,5235, 5231, 5236 ,0, 0, 0 , - 7573, 689, 2830 ,5231, 1085, 6452 ,0, 0, 0 , - 7573, 2830, 7574 ,5231, 6452, 5236 ,0, 0, 0 , - 2830, 688, 5859 ,6452, 5222, 3126 ,0, 0, 0 , - 2830, 5859, 7574 ,6452, 3126, 5236 ,0, 0, 0 , - 2822, 681, 5862 ,5239, 3125, 3124 ,0, 0, 0 , - 2822, 5862, 7575 ,5239, 3124, 5240 ,0, 0, 0 , - 5862, 731, 2883 ,3124, 6494, 6493 ,0, 0, 0 , - 5862, 2883, 7575 ,3124, 6493, 5240 ,0, 0, 0 , - 2883, 730, 5891 ,6493, 6492, 5237 ,0, 0, 0 , - 2883, 5891, 7575 ,6493, 5237, 5240 ,0, 0, 0 , - 2815, 675, 5865 ,731, 5243, 7671 ,0, 0, 0 , - 2815, 5865, 7576 ,731, 7671, 5242 ,0, 0, 0 , - 5865, 676, 2827 ,7671, 736, 735 ,0, 0, 0 , - 5865, 2827, 7576 ,7671, 735, 5242 ,0, 0, 0 , - 2827, 686, 5874 ,735, 6451, 5241 ,0, 0, 0 , - 2827, 5874, 7576 ,735, 5241, 5242 ,0, 0, 0 , - 2814, 674, 5869 ,5244, 6443, 7672 ,0, 0, 0 , - 2814, 5869, 7577 ,5244, 7672, 5245 ,0, 0, 0 , - 5869, 982, 3240 ,7672, 6674, 1093 ,0, 0, 0 , - 5869, 3240, 7577 ,7672, 1093, 5245 ,0, 0, 0 , - 3240, 689, 5866 ,1093, 1085, 3128 ,0, 0, 0 , - 3240, 5866, 7577 ,1093, 3128, 5245 ,0, 0, 0 , - 2811, 672, 5870 ,727, 5247, 7673 ,0, 0, 0 , - 2811, 5870, 7578 ,727, 7673, 5246 ,0, 0, 0 , - 5870, 674, 2813 ,7673, 6443, 733 ,0, 0, 0 , - 5870, 2813, 7578 ,7673, 733, 5246 ,0, 0, 0 , - 2813, 673, 5873 ,733, 732, 3135 ,0, 0, 0 , - 2813, 5873, 7578 ,733, 3135, 5246 ,0, 0, 0 , - 2810, 671, 5910 ,5248, 6442, 7681 ,0, 0, 0 , - 2810, 5910, 7579 ,5248, 7681, 5249 ,0, 0, 0 , - 5910, 711, 2858 ,7681, 6474, 765 ,0, 0, 0 , - 5910, 2858, 7579 ,7681, 765, 5249 ,0, 0, 0 , - 2858, 710, 5871 ,765, 764, 3131 ,0, 0, 0 , - 2858, 5871, 7579 ,765, 3131, 5249 ,0, 0, 0 , - 2807, 669, 5875 ,723, 5251, 7674 ,0, 0, 0 , - 2807, 5875, 7580 ,723, 7674, 5250 ,0, 0, 0 , - 5875, 686, 2826 ,7674, 6451, 6450 ,0, 0, 0 , - 5875, 2826, 7580 ,7674, 6450, 5250 ,0, 0, 0 , - 2826, 685, 5878 ,6450, 6449, 3138 ,0, 0, 0 , - 2826, 5878, 7580 ,6450, 3138, 5250 ,0, 0, 0 , - 2806, 668, 5911 ,5252, 6441, 7682 ,0, 0, 0 , - 2806, 5911, 7581 ,5252, 7682, 5253 ,0, 0, 0 , - 5911, 671, 2809 ,7682, 6442, 729 ,0, 0, 0 , - 5911, 2809, 7581 ,7682, 729, 5253 ,0, 0, 0 , - 2809, 670, 5876 ,729, 728, 3134 ,0, 0, 0 , - 2809, 5876, 7581 ,729, 3134, 5253 ,0, 0, 0 , - 2802, 665, 5879 ,719, 5255, 7675 ,0, 0, 0 , - 2802, 5879, 7582 ,719, 7675, 5254 ,0, 0, 0 , - 5879, 685, 2825 ,7675, 6449, 6448 ,0, 0, 0 , - 5879, 2825, 7582 ,7675, 6448, 5254 ,0, 0, 0 , - 2825, 684, 5882 ,6448, 6447, 3141 ,0, 0, 0 , - 2825, 5882, 7582 ,6448, 3141, 5254 ,0, 0, 0 , - 2801, 664, 5923 ,5256, 6438, 7687 ,0, 0, 0 , - 2801, 5923, 7583 ,5256, 7687, 5257 ,0, 0, 0 , - 5923, 667, 2804 ,7687, 6439, 725 ,0, 0, 0 , - 5923, 2804, 7583 ,7687, 725, 5257 ,0, 0, 0 , - 2804, 666, 5880 ,725, 724, 3137 ,0, 0, 0 , - 2804, 5880, 7583 ,725, 3137, 5257 ,0, 0, 0 , - 2797, 661, 5883 ,715, 5259, 7676 ,0, 0, 0 , - 2797, 5883, 7584 ,715, 7676, 5258 ,0, 0, 0 , - 5883, 684, 2824 ,7676, 6447, 6446 ,0, 0, 0 , - 5883, 2824, 7584 ,7676, 6446, 5258 ,0, 0, 0 , - 2824, 683, 5886 ,6446, 6445, 3144 ,0, 0, 0 , - 2824, 5886, 7584 ,6446, 3144, 5258 ,0, 0, 0 , - 2796, 660, 5933 ,5260, 6435, 7690 ,0, 0, 0 , - 2796, 5933, 7585 ,5260, 7690, 5261 ,0, 0, 0 , - 5933, 663, 2799 ,7690, 6436, 721 ,0, 0, 0 , - 5933, 2799, 7585 ,7690, 721, 5261 ,0, 0, 0 , - 2799, 662, 5884 ,721, 720, 3140 ,0, 0, 0 , - 2799, 5884, 7585 ,721, 3140, 5261 ,0, 0, 0 , - 2792, 657, 5887 ,711, 5266, 7677 ,0, 0, 0 , - 2792, 5887, 7586 ,711, 7677, 5262 ,0, 0, 0 , - 5887, 683, 2823 ,7677, 6445, 6444 ,0, 0, 0 , - 5887, 2823, 7586 ,7677, 6444, 5262 ,0, 0, 0 , - 2823, 682, 5890 ,6444, 5238, 3147 ,0, 0, 0 , - 2823, 5890, 7586 ,6444, 3147, 5262 ,0, 0, 0 , - 2789, 654, 5892 ,713, 712, 3146 ,0, 0, 0 , - 2789, 5892, 7587 ,713, 3146, 5265 ,0, 0, 0 , - 5892, 730, 2882 ,3146, 6492, 785 ,0, 0, 0 , - 5892, 2882, 7587 ,3146, 785, 5265 ,0, 0, 0 , - 2882, 729, 5961 ,785, 784, 5263 ,0, 0, 0 , - 2882, 5961, 7587 ,785, 5263, 5265 ,0, 0, 0 , - 2791, 656, 5943 ,5267, 6432, 7694 ,0, 0, 0 , - 2791, 5943, 7588 ,5267, 7694, 5268 ,0, 0, 0 , - 5943, 659, 2794 ,7694, 6433, 717 ,0, 0, 0 , - 5943, 2794, 7588 ,7694, 717, 5268 ,0, 0, 0 , - 2794, 658, 5888 ,717, 716, 3143 ,0, 0, 0 , - 2794, 5888, 7588 ,717, 3143, 5268 ,0, 0, 0 , - 2780, 647, 5917 ,705, 704, 7684 ,0, 0, 0 , - 2780, 5917, 7589 ,705, 7684, 5271 ,0, 0, 0 , - 5917, 714, 2866 ,7684, 768, 767 ,0, 0, 0 , - 5917, 2866, 7589 ,7684, 767, 5271 ,0, 0, 0 , - 2866, 717, 5996 ,767, 6480, 5269 ,0, 0, 0 , - 2866, 5996, 7589 ,767, 5269, 5271 ,0, 0, 0 , - 2781, 648, 5995 ,5274, 5270, 3222 ,0, 0, 0 , - 2781, 5995, 7590 ,5274, 3222, 5275 ,0, 0, 0 , - 5995, 651, 2784 ,3222, 3221, 709 ,0, 0, 0 , - 5995, 2784, 7590 ,3222, 709, 5275 ,0, 0, 0 , - 2784, 650, 5895 ,709, 708, 5272 ,0, 0, 0 , - 2784, 5895, 7590 ,709, 5272, 5275 ,0, 0, 0 , - 2778, 646, 5918 ,699, 6427, 7685 ,0, 0, 0 , - 2778, 5918, 7591 ,699, 7685, 5276 ,0, 0, 0 , - 5918, 647, 2782 ,7685, 704, 703 ,0, 0, 0 , - 5918, 2782, 7591 ,7685, 703, 5276 ,0, 0, 0 , - 2782, 649, 5894 ,703, 5273, 3150 ,0, 0, 0 , - 2782, 5894, 7591 ,703, 3150, 5276 ,0, 0, 0 , - 2774, 643, 5896 ,695, 5282, 7678 ,0, 0, 0 , - 2774, 5896, 7592 ,695, 7678, 5278 ,0, 0, 0 , - 5896, 650, 2787 ,7678, 708, 707 ,0, 0, 0 , - 5896, 2787, 7592 ,7678, 707, 5278 ,0, 0, 0 , - 2787, 653, 6007 ,707, 6430, 5277 ,0, 0, 0 , - 2787, 6007, 7592 ,707, 5277, 5278 ,0, 0, 0 , - 2772, 641, 6006 ,697, 696, 7713 ,0, 0, 0 , - 2772, 6006, 7593 ,697, 7713, 5281 ,0, 0, 0 , - 6006, 708, 2854 ,7713, 6471, 6470 ,0, 0, 0 , - 6006, 2854, 7593 ,7713, 6470, 5281 ,0, 0, 0 , - 2854, 707, 5906 ,6470, 6469, 5279 ,0, 0, 0 , - 2854, 5906, 7593 ,6470, 5279, 5281 ,0, 0, 0 , - 2773, 642, 5905 ,5283, 5280, 7680 ,0, 0, 0 , - 2773, 5905, 7594 ,5283, 7680, 5284 ,0, 0, 0 , - 5905, 645, 2776 ,7680, 6425, 701 ,0, 0, 0 , - 5905, 2776, 7594 ,7680, 701, 5284 ,0, 0, 0 , - 2776, 644, 5897 ,701, 700, 3149 ,0, 0, 0 , - 2776, 5897, 7594 ,701, 3149, 5284 ,0, 0, 0 , - 2767, 637, 5919 ,693, 692, 7686 ,0, 0, 0 , - 2767, 5919, 7595 ,693, 7686, 5285 ,0, 0, 0 , - 5919, 646, 2777 ,7686, 6427, 6426 ,0, 0, 0 , - 5919, 2777, 7595 ,7686, 6426, 5285 ,0, 0, 0 , - 2777, 645, 5904 ,6426, 6425, 3158 ,0, 0, 0 , - 2777, 5904, 7595 ,6426, 3158, 5285 ,0, 0, 0 , - 2768, 638, 5907 ,5286, 3157, 3156 ,0, 0, 0 , - 2768, 5907, 7596 ,5286, 3156, 5287 ,0, 0, 0 , - 5907, 707, 2853 ,3156, 6469, 761 ,0, 0, 0 , - 5907, 2853, 7596 ,3156, 761, 5287 ,0, 0, 0 , - 2853, 706, 5899 ,761, 760, 3154 ,0, 0, 0 , - 2853, 5899, 7596 ,761, 3154, 5287 ,0, 0, 0 , - 2769, 639, 5902 ,5288, 3153, 3152 ,0, 0, 0 , - 2769, 5902, 7597 ,5288, 3152, 5289 ,0, 0, 0 , - 5902, 712, 2859 ,3152, 6476, 6475 ,0, 0, 0 , - 5902, 2859, 7597 ,3152, 6475, 5289 ,0, 0, 0 , - 2859, 711, 5909 ,6475, 6474, 3162 ,0, 0, 0 , - 2859, 5909, 7597 ,6475, 3162, 5289 ,0, 0, 0 , - 2765, 636, 5912 ,687, 5293, 7683 ,0, 0, 0 , - 2765, 5912, 7598 ,687, 7683, 5290 ,0, 0, 0 , - 5912, 668, 2805 ,7683, 6441, 6440 ,0, 0, 0 , - 5912, 2805, 7598 ,7683, 6440, 5290 ,0, 0, 0 , - 2805, 667, 5922 ,6440, 6439, 3169 ,0, 0, 0 , - 2805, 5922, 7598 ,6440, 3169, 5290 ,0, 0, 0 , - 2763, 634, 5929 ,5291, 6424, 7689 ,0, 0, 0 , - 2763, 5929, 7599 ,5291, 7689, 5292 ,0, 0, 0 , - 5929, 699, 2843 ,7689, 6460, 753 ,0, 0, 0 , - 5929, 2843, 7599 ,7689, 753, 5292 ,0, 0, 0 , - 2843, 698, 5915 ,753, 752, 3166 ,0, 0, 0 , - 2843, 5915, 7599 ,753, 3166, 5292 ,0, 0, 0 , - 2764, 635, 5920 ,5294, 3165, 3164 ,0, 0, 0 , - 2764, 5920, 7600 ,5294, 3164, 5295 ,0, 0, 0 , - 5920, 637, 2770 ,3164, 692, 691 ,0, 0, 0 , - 5920, 2770, 7600 ,3164, 691, 5295 ,0, 0, 0 , - 2770, 640, 5913 ,691, 3161, 3160 ,0, 0, 0 , - 2770, 5913, 7600 ,691, 3160, 5295 ,0, 0, 0 , - 2760, 632, 5924 ,683, 5299, 7688 ,0, 0, 0 , - 2760, 5924, 7601 ,683, 7688, 5296 ,0, 0, 0 , - 5924, 664, 2800 ,7688, 6438, 6437 ,0, 0, 0 , - 5924, 2800, 7601 ,7688, 6437, 5296 ,0, 0, 0 , - 2800, 663, 5932 ,6437, 6436, 3176 ,0, 0, 0 , - 2800, 5932, 7601 ,6437, 3176, 5296 ,0, 0, 0 , - 2758, 630, 5939 ,5297, 6423, 7693 ,0, 0, 0 , - 2758, 5939, 7602 ,5297, 7693, 5298 ,0, 0, 0 , - 5939, 692, 2834 ,7693, 6454, 6453 ,0, 0, 0 , - 5939, 2834, 7602 ,7693, 6453, 5298 ,0, 0, 0 , - 2834, 691, 5927 ,6453, 5207, 3173 ,0, 0, 0 , - 2834, 5927, 7602 ,6453, 3173, 5298 ,0, 0, 0 , - 2759, 631, 5930 ,5300, 3172, 3171 ,0, 0, 0 , - 2759, 5930, 7603 ,5300, 3171, 5301 ,0, 0, 0 , - 5930, 634, 2762 ,3171, 6424, 689 ,0, 0, 0 , - 5930, 2762, 7603 ,3171, 689, 5301 ,0, 0, 0 , - 2762, 633, 5925 ,689, 688, 3168 ,0, 0, 0 , - 2762, 5925, 7603 ,689, 3168, 5301 ,0, 0, 0 , - 2755, 628, 5934 ,679, 5305, 7691 ,0, 0, 0 , - 2755, 5934, 7604 ,679, 7691, 5302 ,0, 0, 0 , - 5934, 660, 2795 ,7691, 6435, 6434 ,0, 0, 0 , - 5934, 2795, 7604 ,7691, 6434, 5302 ,0, 0, 0 , - 2795, 659, 5942 ,6434, 6433, 3183 ,0, 0, 0 , - 2795, 5942, 7604 ,6434, 3183, 5302 ,0, 0, 0 , - 2753, 626, 5949 ,5303, 6422, 7697 ,0, 0, 0 , - 2753, 5949, 7605 ,5303, 7697, 5304 ,0, 0, 0 , - 5949, 697, 2840 ,7697, 6459, 6458 ,0, 0, 0 , - 5949, 2840, 7605 ,7697, 6458, 5304 ,0, 0, 0 , - 2840, 696, 5937 ,6458, 6457, 3180 ,0, 0, 0 , - 2840, 5937, 7605 ,6458, 3180, 5304 ,0, 0, 0 , - 2754, 627, 5940 ,5306, 3179, 3178 ,0, 0, 0 , - 2754, 5940, 7606 ,5306, 3178, 5307 ,0, 0, 0 , - 5940, 630, 2757 ,3178, 6423, 685 ,0, 0, 0 , - 5940, 2757, 7606 ,3178, 685, 5307 ,0, 0, 0 , - 2757, 629, 5935 ,685, 684, 3175 ,0, 0, 0 , - 2757, 5935, 7606 ,685, 3175, 5307 ,0, 0, 0 , - 2750, 624, 5944 ,675, 5312, 7695 ,0, 0, 0 , - 2750, 5944, 7607 ,675, 7695, 5309 ,0, 0, 0 , - 5944, 656, 2790 ,7695, 6432, 6431 ,0, 0, 0 , - 5944, 2790, 7607 ,7695, 6431, 5309 ,0, 0, 0 , - 2790, 655, 5960 ,6431, 5264, 5308 ,0, 0, 0 , - 2790, 5960, 7607 ,6431, 5308, 5309 ,0, 0, 0 , - 2748, 622, 6013 ,5310, 6421, 7716 ,0, 0, 0 , - 2748, 6013, 7608 ,5310, 7716, 5311 ,0, 0, 0 , - 6013, 704, 2849 ,7716, 6467, 6466 ,0, 0, 0 , - 6013, 2849, 7608 ,7716, 6466, 5311 ,0, 0, 0 , - 2849, 703, 5947 ,6466, 6465, 3187 ,0, 0, 0 , - 2849, 5947, 7608 ,6466, 3187, 5311 ,0, 0, 0 , - 2749, 623, 5950 ,5313, 3186, 3185 ,0, 0, 0 , - 2749, 5950, 7609 ,5313, 3185, 5314 ,0, 0, 0 , - 5950, 626, 2752 ,3185, 6422, 681 ,0, 0, 0 , - 5950, 2752, 7609 ,3185, 681, 5314 ,0, 0, 0 , - 2752, 625, 5945 ,681, 680, 3182 ,0, 0, 0 , - 2752, 5945, 7609 ,681, 3182, 5314 ,0, 0, 0 , - 2745, 620, 5956 ,671, 5318, 7701 ,0, 0, 0 , - 2745, 5956, 7610 ,671, 7701, 5315 ,0, 0, 0 , - 5956, 709, 2855 ,7701, 6473, 6472 ,0, 0, 0 , - 5956, 2855, 7610 ,7701, 6472, 5315 ,0, 0, 0 , - 2855, 708, 6005 ,6472, 6471, 3229 ,0, 0, 0 , - 2855, 6005, 7610 ,6472, 3229, 5315 ,0, 0, 0 , - 2743, 618, 6014 ,5316, 6420, 7717 ,0, 0, 0 , - 2743, 6014, 7611 ,5316, 7717, 5317 ,0, 0, 0 , - 6014, 622, 2747 ,7717, 6421, 677 ,0, 0, 0 , - 6014, 2747, 7611 ,7717, 677, 5317 ,0, 0, 0 , - 2747, 621, 5959 ,677, 676, 3195 ,0, 0, 0 , - 2747, 5959, 7611 ,677, 3195, 5317 ,0, 0, 0 , - 2744, 619, 5962 ,5319, 3194, 3193 ,0, 0, 0 , - 2744, 5962, 7612 ,5319, 3193, 5320 ,0, 0, 0 , - 5962, 729, 2885 ,3193, 784, 783 ,0, 0, 0 , - 5962, 2885, 7612 ,3193, 783, 5320 ,0, 0, 0 , - 2885, 732, 5957 ,783, 3190, 3189 ,0, 0, 0 , - 2885, 5957, 7612 ,783, 3189, 5320 ,0, 0, 0 , - 2730, 608, 5969 ,5321, 6417, 7703 ,0, 0, 0 , - 2730, 5969, 7613 ,5321, 7703, 5322 ,0, 0, 0 , - 5969, 1370, 3770 ,7703, 1543, 1542 ,0, 0, 0 , - 5969, 3770, 7613 ,7703, 1542, 5322 ,0, 0, 0 , - 3770, 1373, 5964 ,1542, 6895, 3199 ,0, 0, 0 , - 3770, 5964, 7613 ,1542, 3199, 5322 ,0, 0, 0 , - 2731, 609, 5966 ,5325, 3198, 3197 ,0, 0, 0 , - 2731, 5966, 7614 ,5325, 3197, 5326 ,0, 0, 0 , - 5966, 612, 2734 ,3197, 1539, 665 ,0, 0, 0 , - 5966, 2734, 7614 ,3197, 665, 5326 ,0, 0, 0 , - 2734, 611, 5981 ,665, 664, 5323 ,0, 0, 0 , - 2734, 5981, 7614 ,665, 5323, 5326 ,0, 0, 0 , - 2726, 605, 5970 ,5329, 3202, 3201 ,0, 0, 0 , - 2726, 5970, 7615 ,5329, 3201, 5330 ,0, 0, 0 , - 5970, 608, 2729 ,3201, 6417, 661 ,0, 0, 0 , - 5970, 2729, 7615 ,3201, 661, 5330 ,0, 0, 0 , - 2729, 607, 5976 ,661, 660, 5327 ,0, 0, 0 , - 2729, 5976, 7615 ,661, 5327, 5330 ,0, 0, 0 , - 2723, 603, 5972 ,651, 5333, 7704 ,0, 0, 0 , - 2723, 5972, 7616 ,651, 7704, 5331 ,0, 0, 0 , - 5972, 604, 2727 ,7704, 656, 655 ,0, 0, 0 , - 5972, 2727, 7616 ,7704, 655, 5331 ,0, 0, 0 , - 2727, 606, 5975 ,655, 5328, 3208 ,0, 0, 0 , - 2727, 5975, 7616 ,655, 3208, 5331 ,0, 0, 0 , - 2722, 602, 5985 ,5334, 6416, 3215 ,0, 0, 0 , - 2722, 5985, 7617 ,5334, 3215, 5335 ,0, 0, 0 , - 5985, 616, 2739 ,3215, 3214, 6419 ,0, 0, 0 , - 5985, 2739, 7617 ,3215, 6419, 5335 ,0, 0, 0 , - 2739, 615, 6292 ,6419, 6418, 5332 ,0, 0, 0 , - 2739, 6292, 7617 ,6419, 5332, 5335 ,0, 0, 0 , - 2719, 600, 5977 ,647, 5337, 7705 ,0, 0, 0 , - 2719, 5977, 7618 ,647, 7705, 5336 ,0, 0, 0 , - 5977, 607, 2732 ,7705, 660, 659 ,0, 0, 0 , - 5977, 2732, 7618 ,7705, 659, 5336 ,0, 0, 0 , - 2732, 610, 5980 ,659, 5324, 3211 ,0, 0, 0 , - 2732, 5980, 7618 ,659, 3211, 5336 ,0, 0, 0 , - 2718, 599, 5986 ,5338, 6415, 7707 ,0, 0, 0 , - 2718, 5986, 7619 ,5338, 7707, 5339 ,0, 0, 0 , - 5986, 602, 2721 ,7707, 6416, 653 ,0, 0, 0 , - 5986, 2721, 7619 ,7707, 653, 5339 ,0, 0, 0 , - 2721, 601, 5978 ,653, 652, 3207 ,0, 0, 0 , - 2721, 5978, 7619 ,653, 3207, 5339 ,0, 0, 0 , - 2714, 596, 5982 ,643, 5342, 7706 ,0, 0, 0 , - 2714, 5982, 7620 ,643, 7706, 5341 ,0, 0, 0 , - 5982, 611, 2736 ,7706, 664, 663 ,0, 0, 0 , - 5982, 2736, 7620 ,7706, 663, 5341 ,0, 0, 0 , - 2736, 613, 6063 ,663, 4559, 5340 ,0, 0, 0 , - 2736, 6063, 7620 ,663, 5340, 5341 ,0, 0, 0 , - 2713, 595, 5991 ,5343, 6412, 7709 ,0, 0, 0 , - 2713, 5991, 7621 ,5343, 7709, 5344 ,0, 0, 0 , - 5991, 598, 2716 ,7709, 6413, 649 ,0, 0, 0 , - 5991, 2716, 7621 ,7709, 649, 5344 ,0, 0, 0 , - 2716, 597, 5983 ,649, 648, 3210 ,0, 0, 0 , - 2716, 5983, 7621 ,649, 3210, 5344 ,0, 0, 0 , - 2709, 592, 5987 ,639, 5346, 7708 ,0, 0, 0 , - 2709, 5987, 7622 ,639, 7708, 5345 ,0, 0, 0 , - 5987, 599, 2717 ,7708, 6415, 6414 ,0, 0, 0 , - 5987, 2717, 7622 ,7708, 6414, 5345 ,0, 0, 0 , - 2717, 598, 5990 ,6414, 6413, 3218 ,0, 0, 0 , - 2717, 5990, 7622 ,6414, 3218, 5345 ,0, 0, 0 , - 2708, 591, 6297 ,5347, 6409, 7794 ,0, 0, 0 , - 2708, 6297, 7623 ,5347, 7794, 5348 ,0, 0, 0 , - 6297, 614, 2740 ,7794, 668, 667 ,0, 0, 0 , - 6297, 2740, 7623 ,7794, 667, 5348 ,0, 0, 0 , - 2740, 616, 5988 ,667, 3214, 3213 ,0, 0, 0 , - 2740, 5988, 7623 ,667, 3213, 5348 ,0, 0, 0 , - 2704, 588, 5992 ,635, 5351, 7710 ,0, 0, 0 , - 2704, 5992, 7624 ,635, 7710, 5350 ,0, 0, 0 , - 5992, 595, 2712 ,7710, 6412, 6411 ,0, 0, 0 , - 5992, 2712, 7624 ,7710, 6411, 5350 ,0, 0, 0 , - 2712, 594, 6051 ,6411, 6410, 5349 ,0, 0, 0 , - 2712, 6051, 7624 ,6411, 5349, 5350 ,0, 0, 0 , - 2703, 587, 6302 ,5352, 6406, 7796 ,0, 0, 0 , - 2703, 6302, 7625 ,5352, 7796, 5353 ,0, 0, 0 , - 6302, 590, 2706 ,7796, 6407, 641 ,0, 0, 0 , - 6302, 2706, 7625 ,7796, 641, 5353 ,0, 0, 0 , - 2706, 589, 5993 ,641, 640, 3217 ,0, 0, 0 , - 2706, 5993, 7625 ,641, 3217, 5353 ,0, 0, 0 , - 2699, 584, 6307 ,631, 6403, 7798 ,0, 0, 0 , - 2699, 6307, 7626 ,631, 7798, 5354 ,0, 0, 0 , - 6307, 586, 2701 ,7798, 6404, 637 ,0, 0, 0 , - 6307, 2701, 7626 ,7798, 637, 5354 ,0, 0, 0 , - 2701, 585, 6050 ,637, 636, 3256 ,0, 0, 0 , - 2701, 6050, 7626 ,637, 3256, 5354 ,0, 0, 0 , - 2679, 568, 5997 ,615, 5361, 7711 ,0, 0, 0 , - 2679, 5997, 7627 ,615, 7711, 5356 ,0, 0, 0 , - 5997, 717, 2865 ,7711, 6480, 6479 ,0, 0, 0 , - 5997, 2865, 7627 ,7711, 6479, 5356 ,0, 0, 0 , - 2865, 716, 6104 ,6479, 6478, 5355 ,0, 0, 0 , - 2865, 6104, 7627 ,6479, 5355, 5356 ,0, 0, 0 , - 2677, 566, 6035 ,5359, 6384, 7721 ,0, 0, 0 , - 2677, 6035, 7628 ,5359, 7721, 5360 ,0, 0, 0 , - 6035, 570, 2681 ,7721, 6385, 621 ,0, 0, 0 , - 6035, 2681, 7628 ,7721, 621, 5360 ,0, 0, 0 , - 2681, 569, 6001 ,621, 620, 5357 ,0, 0, 0 , - 2681, 6001, 7628 ,621, 5357, 5360 ,0, 0, 0 , - 2678, 567, 6000 ,5362, 5358, 3226 ,0, 0, 0 , - 2678, 6000, 7629 ,5362, 3226, 5363 ,0, 0, 0 , - 6000, 652, 2785 ,3226, 3225, 6428 ,0, 0, 0 , - 6000, 2785, 7629 ,3226, 6428, 5363 ,0, 0, 0 , - 2785, 651, 5998 ,6428, 3221, 3220 ,0, 0, 0 , - 2785, 5998, 7629 ,6428, 3220, 5363 ,0, 0, 0 , - 2674, 564, 6002 ,611, 5366, 7712 ,0, 0, 0 , - 2674, 6002, 7630 ,611, 7712, 5365 ,0, 0, 0 , - 6002, 569, 2684 ,7712, 620, 619 ,0, 0, 0 , - 6002, 2684, 7630 ,7712, 619, 5365 ,0, 0, 0 , - 2684, 572, 6019 ,619, 6389, 5364 ,0, 0, 0 , - 2684, 6019, 7630 ,619, 5364, 5365 ,0, 0, 0 , - 2673, 563, 6008 ,5367, 6383, 7714 ,0, 0, 0 , - 2673, 6008, 7631 ,5367, 7714, 5368 ,0, 0, 0 , - 6008, 653, 2786 ,7714, 6430, 6429 ,0, 0, 0 , - 6008, 2786, 7631 ,7714, 6429, 5368 ,0, 0, 0 , - 2786, 652, 6003 ,6429, 3225, 3224 ,0, 0, 0 , - 2786, 6003, 7631 ,6429, 3224, 5368 ,0, 0, 0 , - 2670, 561, 6009 ,607, 5372, 7715 ,0, 0, 0 , - 2670, 6009, 7632 ,607, 7715, 5370 ,0, 0, 0 , - 6009, 563, 2672 ,7715, 6383, 613 ,0, 0, 0 , - 6009, 2672, 7632 ,7715, 613, 5370 ,0, 0, 0 , - 2672, 562, 6018 ,613, 612, 5369 ,0, 0, 0 , - 2672, 6018, 7632 ,613, 5369, 5370 ,0, 0, 0 , - 2668, 559, 6017 ,609, 608, 3237 ,0, 0, 0 , - 2668, 6017, 7633 ,609, 3237, 5371 ,0, 0, 0 , - 6017, 705, 2850 ,3237, 3236, 6468 ,0, 0, 0 , - 6017, 2850, 7633 ,3237, 6468, 5371 ,0, 0, 0 , - 2850, 704, 6012 ,6468, 6467, 3233 ,0, 0, 0 , - 2850, 6012, 7633 ,6468, 3233, 5371 ,0, 0, 0 , - 2669, 560, 6015 ,5373, 3232, 3231 ,0, 0, 0 , - 2669, 6015, 7634 ,5373, 3231, 5374 ,0, 0, 0 , - 6015, 618, 2742 ,3231, 6420, 673 ,0, 0, 0 , - 6015, 2742, 7634 ,3231, 673, 5374 ,0, 0, 0 , - 2742, 617, 6010 ,673, 672, 3228 ,0, 0, 0 , - 2742, 6010, 7634 ,673, 3228, 5374 ,0, 0, 0 , - 2666, 558, 6020 ,603, 5377, 7718 ,0, 0, 0 , - 2666, 6020, 7635 ,603, 7718, 5376 ,0, 0, 0 , - 6020, 572, 2683 ,7718, 6389, 6388 ,0, 0, 0 , - 6020, 2683, 7635 ,7718, 6388, 5376 ,0, 0, 0 , - 2683, 571, 6025 ,6388, 6387, 5375 ,0, 0, 0 , - 2683, 6025, 7635 ,6388, 5375, 5376 ,0, 0, 0 , - 2665, 557, 6045 ,5378, 6382, 7725 ,0, 0, 0 , - 2665, 6045, 7636 ,5378, 7725, 5379 ,0, 0, 0 , - 6045, 702, 2851 ,7725, 756, 755 ,0, 0, 0 , - 6045, 2851, 7636 ,7725, 755, 5379 ,0, 0, 0 , - 2851, 705, 6021 ,755, 3236, 3235 ,0, 0, 0 , - 2851, 6021, 7636 ,755, 3235, 5379 ,0, 0, 0 , - 2658, 551, 6040 ,601, 600, 7723 ,0, 0, 0 , - 2658, 6040, 7637 ,601, 7723, 5382 ,0, 0, 0 , - 6040, 556, 2663 ,7723, 6380, 605 ,0, 0, 0 , - 6040, 2663, 7637 ,7723, 605, 5382 ,0, 0, 0 , - 2663, 555, 6024 ,605, 604, 5380 ,0, 0, 0 , - 2663, 6024, 7637 ,605, 5380, 5382 ,0, 0, 0 , - 2656, 550, 6319 ,595, 5388, 7802 ,0, 0, 0 , - 2656, 6319, 7638 ,595, 7802, 5383 ,0, 0, 0 , - 6319, 553, 2659 ,7802, 6377, 6376 ,0, 0, 0 , - 6319, 2659, 7638 ,7802, 6376, 5383 ,0, 0, 0 , - 2659, 552, 6023 ,6376, 5381, 3240 ,0, 0, 0 , - 2659, 6023, 7638 ,6376, 3240, 5383 ,0, 0, 0 , - 2653, 547, 6026 ,597, 596, 3239 ,0, 0, 0 , - 2653, 6026, 7639 ,597, 3239, 5386 ,0, 0, 0 , - 6026, 571, 2682 ,3239, 6387, 6386 ,0, 0, 0 , - 6026, 2682, 7639 ,3239, 6386, 5386 ,0, 0, 0 , - 2682, 570, 6034 ,6386, 6385, 5384 ,0, 0, 0 , - 2682, 6034, 7639 ,6386, 5384, 5386 ,0, 0, 0 , - 2655, 549, 6029 ,5389, 6375, 7719 ,0, 0, 0 , - 2655, 6029, 7640 ,5389, 7719, 5390 ,0, 0, 0 , - 6029, 573, 2689 ,7719, 624, 623 ,0, 0, 0 , - 6029, 2689, 7640 ,7719, 623, 5390 ,0, 0, 0 , - 2689, 576, 6320 ,623, 6394, 5387 ,0, 0, 0 , - 2689, 6320, 7640 ,623, 5387, 5390 ,0, 0, 0 , - 2651, 546, 6236 ,591, 5393, 7777 ,0, 0, 0 , - 2651, 6236, 7641 ,591, 7777, 5391 ,0, 0, 0 , - 6236, 574, 2686 ,7777, 6390, 625 ,0, 0, 0 , - 6236, 2686, 7641 ,7777, 625, 5391 ,0, 0, 0 , - 2686, 573, 6028 ,625, 624, 3243 ,0, 0, 0 , - 2686, 6028, 7641 ,625, 3243, 5391 ,0, 0, 0 , - 2650, 545, 6229 ,5394, 6373, 7773 ,0, 0, 0 , - 2650, 6229, 7642 ,5394, 7773, 5395 ,0, 0, 0 , - 6229, 579, 2692 ,7773, 6397, 6396 ,0, 0, 0 , - 6229, 2692, 7642 ,7773, 6396, 5395 ,0, 0, 0 , - 2692, 578, 6237 ,6396, 6395, 5392 ,0, 0, 0 , - 2692, 6237, 7642 ,6396, 5392, 5395 ,0, 0, 0 , - 2647, 543, 6030 ,587, 5397, 7720 ,0, 0, 0 , - 2647, 6030, 7643 ,587, 7720, 5396 ,0, 0, 0 , - 6030, 549, 2654 ,7720, 6375, 6374 ,0, 0, 0 , - 6030, 2654, 7643 ,7720, 6374, 5396 ,0, 0, 0 , - 2654, 548, 6033 ,6374, 5385, 3246 ,0, 0, 0 , - 2654, 6033, 7643 ,6374, 3246, 5396 ,0, 0, 0 , - 2646, 542, 6230 ,5398, 6372, 7774 ,0, 0, 0 , - 2646, 6230, 7644 ,5398, 7774, 5399 ,0, 0, 0 , - 6230, 545, 2649 ,7774, 6373, 593 ,0, 0, 0 , - 6230, 2649, 7644 ,7774, 593, 5399 ,0, 0, 0 , - 2649, 544, 6031 ,593, 592, 3242 ,0, 0, 0 , - 2649, 6031, 7644 ,593, 3242, 5399 ,0, 0, 0 , - 2643, 540, 6036 ,583, 5402, 7722 ,0, 0, 0 , - 2643, 6036, 7645 ,583, 7722, 5401 ,0, 0, 0 , - 6036, 566, 2676 ,7722, 6384, 617 ,0, 0, 0 , - 6036, 2676, 7645 ,7722, 617, 5401 ,0, 0, 0 , - 2676, 565, 6103 ,617, 616, 5400 ,0, 0, 0 , - 2676, 6103, 7645 ,617, 5400, 5401 ,0, 0, 0 , - 2642, 539, 6231 ,5403, 6371, 7775 ,0, 0, 0 , - 2642, 6231, 7646 ,5403, 7775, 5404 ,0, 0, 0 , - 6231, 542, 2645 ,7775, 6372, 589 ,0, 0, 0 , - 6231, 2645, 7646 ,7775, 589, 5404 ,0, 0, 0 , - 2645, 541, 6037 ,589, 588, 3245 ,0, 0, 0 , - 2645, 6037, 7646 ,589, 3245, 5404 ,0, 0, 0 , - 2638, 536, 6066 ,579, 6369, 7729 ,0, 0, 0 , - 2638, 6066, 7647 ,579, 7729, 5405 ,0, 0, 0 , - 6066, 1444, 3861 ,7729, 6946, 6945 ,0, 0, 0 , - 6066, 3861, 7647 ,7729, 6945, 5405 ,0, 0, 0 , - 3861, 1443, 6091 ,6945, 4467, 3286 ,0, 0, 0 , - 3861, 6091, 7647 ,6945, 3286, 5405 ,0, 0, 0 , - 2636, 534, 6097 ,5408, 6367, 7737 ,0, 0, 0 , - 2636, 6097, 7648 ,5408, 7737, 5409 ,0, 0, 0 , - 6097, 701, 2845 ,7737, 6464, 6463 ,0, 0, 0 , - 6097, 2845, 7648 ,7737, 6463, 5409 ,0, 0, 0 , - 2845, 700, 6087 ,6463, 6462, 5406 ,0, 0, 0 , - 2845, 6087, 7648 ,6463, 5406, 5409 ,0, 0, 0 , - 2633, 532, 6313 ,575, 5413, 7800 ,0, 0, 0 , - 2633, 6313, 7649 ,575, 7800, 5411 ,0, 0, 0 , - 6313, 583, 2697 ,7800, 6401, 6400 ,0, 0, 0 , - 6313, 2697, 7649 ,7800, 6400, 5411 ,0, 0, 0 , - 2697, 582, 6058 ,6400, 6399, 5410 ,0, 0, 0 , - 2697, 6058, 7649 ,6400, 5410, 5411 ,0, 0, 0 , - 2632, 531, 6041 ,5414, 6366, 7724 ,0, 0, 0 , - 2632, 6041, 7650 ,5414, 7724, 5415 ,0, 0, 0 , - 6041, 551, 2661 ,7724, 600, 599 ,0, 0, 0 , - 6041, 2661, 7650 ,7724, 599, 5415 ,0, 0, 0 , - 2661, 554, 6314 ,599, 6379, 5412 ,0, 0, 0 , - 2661, 6314, 7650 ,599, 5412, 5415 ,0, 0, 0 , - 2627, 527, 6046 ,573, 572, 7726 ,0, 0, 0 , - 2627, 6046, 7651 ,573, 7726, 5416 ,0, 0, 0 , - 6046, 557, 2664 ,7726, 6382, 6381 ,0, 0, 0 , - 6046, 2664, 7651 ,7726, 6381, 5416 ,0, 0, 0 , - 2664, 556, 6039 ,6381, 6380, 3250 ,0, 0, 0 , - 2664, 6039, 7651 ,6381, 3250, 5416 ,0, 0, 0 , - 2628, 528, 6042 ,5419, 3249, 3248 ,0, 0, 0 , - 2628, 6042, 7652 ,5419, 3248, 5420 ,0, 0, 0 , - 6042, 531, 2631 ,3248, 6366, 577 ,0, 0, 0 , - 6042, 2631, 7652 ,3248, 577, 5420 ,0, 0, 0 , - 2631, 530, 6057 ,577, 576, 5417 ,0, 0, 0 , - 2631, 6057, 7652 ,577, 5417, 5420 ,0, 0, 0 , - 2625, 526, 6047 ,567, 5423, 7727 ,0, 0, 0 , - 2625, 6047, 7653 ,567, 7727, 5422 ,0, 0, 0 , - 6047, 527, 2629 ,7727, 572, 571 ,0, 0, 0 , - 6047, 2629, 7653 ,7727, 571, 5422 ,0, 0, 0 , - 2629, 529, 6056 ,571, 5418, 5421 ,0, 0, 0 , - 2629, 6056, 7653 ,571, 5421, 5422 ,0, 0, 0 , - 2624, 525, 6082 ,5424, 6365, 7734 ,0, 0, 0 , - 2624, 6082, 7654 ,5424, 7734, 5425 ,0, 0, 0 , - 6082, 695, 2838 ,7734, 6455, 749 ,0, 0, 0 , - 6082, 2838, 7654 ,7734, 749, 5425 ,0, 0, 0 , - 2838, 694, 6048 ,749, 748, 3252 ,0, 0, 0 , - 2838, 6048, 7654 ,749, 3252, 5425 ,0, 0, 0 , - 2620, 522, 6052 ,563, 5430, 7728 ,0, 0, 0 , - 2620, 6052, 7655 ,563, 7728, 5427 ,0, 0, 0 , - 6052, 594, 2711 ,7728, 6410, 645 ,0, 0, 0 , - 6052, 2711, 7655 ,7728, 645, 5427 ,0, 0, 0 , - 2711, 593, 6062 ,645, 644, 5426 ,0, 0, 0 , - 2711, 6062, 7655 ,645, 5426, 5427 ,0, 0, 0 , - 2618, 520, 6074 ,5428, 6363, 3276 ,0, 0, 0 , - 2618, 6074, 7656 ,5428, 3276, 5429 ,0, 0, 0 , - 6074, 524, 2622 ,3276, 3275, 569 ,0, 0, 0 , - 6074, 2622, 7656 ,3276, 569, 5429 ,0, 0, 0 , - 2622, 523, 6055 ,569, 568, 3260 ,0, 0, 0 , - 2622, 6055, 7656 ,569, 3260, 5429 ,0, 0, 0 , - 2619, 521, 6059 ,5431, 3259, 3258 ,0, 0, 0 , - 2619, 6059, 7657 ,5431, 3258, 5432 ,0, 0, 0 , - 6059, 582, 2696 ,3258, 6399, 633 ,0, 0, 0 , - 6059, 2696, 7657 ,3258, 633, 5432 ,0, 0, 0 , - 2696, 581, 6053 ,633, 632, 3255 ,0, 0, 0 , - 2696, 6053, 7657 ,633, 3255, 5432 ,0, 0, 0 , - 2614, 517, 6075 ,5433, 6362, 7731 ,0, 0, 0 , - 2614, 6075, 7658 ,5433, 7731, 5434 ,0, 0, 0 , - 6075, 520, 2617 ,7731, 6363, 565 ,0, 0, 0 , - 6075, 2617, 7658 ,7731, 565, 5434 ,0, 0, 0 , - 2617, 519, 6061 ,565, 564, 3264 ,0, 0, 0 , - 2617, 6061, 7658 ,565, 3264, 5434 ,0, 0, 0 , - 2611, 515, 6067 ,555, 5439, 7730 ,0, 0, 0 , - 2611, 6067, 7659 ,555, 7730, 5436 ,0, 0, 0 , - 6067, 536, 2637 ,7730, 6369, 6368 ,0, 0, 0 , - 6067, 2637, 7659 ,7730, 6368, 5436 ,0, 0, 0 , - 2637, 535, 6086 ,6368, 5407, 5435 ,0, 0, 0 , - 2637, 6086, 7659 ,6368, 5435, 5436 ,0, 0, 0 , - 2609, 513, 6076 ,5437, 6361, 7732 ,0, 0, 0 , - 2609, 6076, 7660 ,5437, 7732, 5438 ,0, 0, 0 , - 6076, 517, 2613 ,7732, 6362, 561 ,0, 0, 0 , - 6076, 2613, 7660 ,7732, 561, 5438 ,0, 0, 0 , - 2613, 516, 6070 ,561, 560, 3272 ,0, 0, 0 , - 2613, 6070, 7660 ,561, 3272, 5438 ,0, 0, 0 , - 2610, 514, 6072 ,5440, 3271, 3270 ,0, 0, 0 , - 2610, 6072, 7661 ,5440, 3270, 5441 ,0, 0, 0 , - 6072, 1464, 3888 ,3270, 6962, 6961 ,0, 0, 0 , - 6072, 3888, 7661 ,3270, 6961, 5441 ,0, 0, 0 , - 3888, 1463, 6068 ,6961, 3267, 3266 ,0, 0, 0 , - 3888, 6068, 7661 ,6961, 3266, 5441 ,0, 0, 0 , - 2606, 511, 6077 ,551, 5444, 7733 ,0, 0, 0 , - 2606, 6077, 7662 ,551, 7733, 5442 ,0, 0, 0 , - 6077, 513, 2608 ,7733, 6361, 557 ,0, 0, 0 , - 6077, 2608, 7662 ,7733, 557, 5442 ,0, 0, 0 , - 2608, 512, 6085 ,557, 556, 3283 ,0, 0, 0 , - 2608, 6085, 7662 ,557, 3283, 5442 ,0, 0, 0 , - 2604, 509, 6089 ,553, 552, 3282 ,0, 0, 0 , - 2604, 6089, 7663 ,553, 3282, 5443 ,0, 0, 0 , - 6089, 690, 2836 ,3282, 744, 743 ,0, 0, 0 , - 6089, 2836, 7663 ,3282, 743, 5443 ,0, 0, 0 , - 2836, 693, 6080 ,743, 5210, 3280 ,0, 0, 0 , - 2836, 6080, 7663 ,743, 3280, 5443 ,0, 0, 0 , - 2605, 510, 6083 ,5445, 3279, 3278 ,0, 0, 0 , - 2605, 6083, 7664 ,5445, 3278, 5446 ,0, 0, 0 , - 6083, 525, 2623 ,3278, 6365, 6364 ,0, 0, 0 , - 6083, 2623, 7664 ,3278, 6364, 5446 ,0, 0, 0 , - 2623, 524, 6078 ,6364, 3275, 3274 ,0, 0, 0 , - 2623, 6078, 7664 ,6364, 3274, 5446 ,0, 0, 0 , - 2602, 508, 6093 ,547, 5449, 7736 ,0, 0, 0 , - 2602, 6093, 7665 ,547, 7736, 5448 ,0, 0, 0 , - 6093, 1469, 3895 ,7736, 6966, 1654 ,0, 0, 0 , - 6093, 3895, 7665 ,7736, 1654, 5448 ,0, 0, 0 , - 3895, 1468, 6108 ,1654, 1653, 5447 ,0, 0, 0 , - 3895, 6108, 7665 ,1654, 5447, 5448 ,0, 0, 0 , - 2601, 507, 6098 ,5450, 6360, 7738 ,0, 0, 0 , - 2601, 6098, 7666 ,5450, 7738, 5451 ,0, 0, 0 , - 6098, 534, 2635 ,7738, 6367, 581 ,0, 0, 0 , - 6098, 2635, 7666 ,7738, 581, 5451 ,0, 0, 0 , - 2635, 533, 6094 ,581, 580, 3285 ,0, 0, 0 , - 2635, 6094, 7666 ,581, 3285, 5451 ,0, 0, 0 , - 2598, 505, 6099 ,543, 5455, 7739 ,0, 0, 0 , - 2598, 6099, 7667 ,543, 7739, 5452 ,0, 0, 0 , - 6099, 507, 2600 ,7739, 6360, 549 ,0, 0, 0 , - 6099, 2600, 7667 ,7739, 549, 5452 ,0, 0, 0 , - 2600, 506, 6107 ,549, 548, 3297 ,0, 0, 0 , - 2600, 6107, 7667 ,549, 3297, 5452 ,0, 0, 0 , - 2596, 503, 6212 ,5453, 6359, 3366 ,0, 0, 0 , - 2596, 6212, 7668 ,5453, 3366, 5454 ,0, 0, 0 , - 6212, 538, 2640 ,3366, 3365, 585 ,0, 0, 0 , - 6212, 2640, 7668 ,3366, 585, 5454 ,0, 0, 0 , - 2640, 537, 6102 ,585, 584, 3294 ,0, 0, 0 , - 2640, 6102, 7668 ,585, 3294, 5454 ,0, 0, 0 , - 2597, 504, 6105 ,5456, 3293, 3292 ,0, 0, 0 , - 2597, 6105, 7669 ,5456, 3292, 5457 ,0, 0, 0 , - 6105, 716, 2864 ,3292, 6478, 6477 ,0, 0, 0 , - 6105, 2864, 7669 ,3292, 6477, 5457 ,0, 0, 0 , - 2864, 715, 6100 ,6477, 3289, 3288 ,0, 0, 0 , - 2864, 6100, 7669 ,6477, 3288, 5457 ,0, 0, 0 , - 2593, 501, 6111 ,539, 5459, 7740 ,0, 0, 0 , - 2593, 6111, 7670 ,539, 7740, 5458 ,0, 0, 0 , - 6111, 1477, 3905 ,7740, 6974, 6973 ,0, 0, 0 , - 6111, 3905, 7670 ,7740, 6973, 5458 ,0, 0, 0 , - 3905, 1476, 6114 ,6973, 4455, 3300 ,0, 0, 0 , - 3905, 6114, 7670 ,6973, 3300, 5458 ,0, 0, 0 , - 2592, 500, 6213 ,5460, 6358, 7767 ,0, 0, 0 , - 2592, 6213, 7671 ,5460, 7767, 5461 ,0, 0, 0 , - 6213, 503, 2595 ,7767, 6359, 545 ,0, 0, 0 , - 6213, 2595, 7671 ,7767, 545, 5461 ,0, 0, 0 , - 2595, 502, 6112 ,545, 544, 3296 ,0, 0, 0 , - 2595, 6112, 7671 ,545, 3296, 5461 ,0, 0, 0 , - 2588, 497, 6116 ,535, 5463, 7741 ,0, 0, 0 , - 2588, 6116, 7672 ,535, 7741, 5462 ,0, 0, 0 , - 6116, 1481, 3910 ,7741, 6978, 6977 ,0, 0, 0 , - 6116, 3910, 7672 ,7741, 6977, 5462 ,0, 0, 0 , - 3910, 1480, 6119 ,6977, 4450, 3303 ,0, 0, 0 , - 3910, 6119, 7672 ,6977, 3303, 5462 ,0, 0, 0 , - 2587, 496, 6218 ,5464, 6355, 7769 ,0, 0, 0 , - 2587, 6218, 7673 ,5464, 7769, 5465 ,0, 0, 0 , - 6218, 499, 2590 ,7769, 6356, 541 ,0, 0, 0 , - 6218, 2590, 7673 ,7769, 541, 5465 ,0, 0, 0 , - 2590, 498, 6117 ,541, 540, 3299 ,0, 0, 0 , - 2590, 6117, 7673 ,541, 3299, 5465 ,0, 0, 0 , - 2583, 493, 6121 ,531, 5471, 7742 ,0, 0, 0 , - 2583, 6121, 7674 ,531, 7742, 5466 ,0, 0, 0 , - 6121, 1485, 3915 ,7742, 6982, 6981 ,0, 0, 0 , - 6121, 3915, 7674 ,7742, 6981, 5466 ,0, 0, 0 , - 3915, 1484, 6124 ,6981, 4446, 3306 ,0, 0, 0 , - 3915, 6124, 7674 ,6981, 3306, 5466 ,0, 0, 0 , - 2581, 491, 6131 ,5469, 6352, 7744 ,0, 0, 0 , - 2581, 6131, 7675 ,5469, 7744, 5470 ,0, 0, 0 , - 6131, 814, 2990 ,7744, 6544, 6543 ,0, 0, 0 , - 6131, 2990, 7675 ,7744, 6543, 5470 ,0, 0, 0 , - 2990, 813, 6208 ,6543, 6542, 5467 ,0, 0, 0 , - 2990, 6208, 7675 ,6543, 5467, 5470 ,0, 0, 0 , - 2582, 492, 6207 ,5472, 5468, 7765 ,0, 0, 0 , - 2582, 6207, 7676 ,5472, 7765, 5473 ,0, 0, 0 , - 6207, 495, 2585 ,7765, 6353, 537 ,0, 0, 0 , - 6207, 2585, 7676 ,7765, 537, 5473 ,0, 0, 0 , - 2585, 494, 6122 ,537, 536, 3302 ,0, 0, 0 , - 2585, 6122, 7676 ,537, 3302, 5473 ,0, 0, 0 , - 2578, 489, 6126 ,527, 5477, 7743 ,0, 0, 0 , - 2578, 6126, 7677 ,527, 7743, 5474 ,0, 0, 0 , - 6126, 1489, 3920 ,7743, 6986, 6985 ,0, 0, 0 , - 6126, 3920, 7677 ,7743, 6985, 5474 ,0, 0, 0 , - 3920, 1488, 6134 ,6985, 4442, 3313 ,0, 0, 0 , - 3920, 6134, 7677 ,6985, 3313, 5474 ,0, 0, 0 , - 2576, 487, 6141 ,5475, 6351, 7746 ,0, 0, 0 , - 2576, 6141, 7678 ,5475, 7746, 5476 ,0, 0, 0 , - 6141, 808, 2983 ,7746, 6538, 873 ,0, 0, 0 , - 6141, 2983, 7678 ,7746, 873, 5476 ,0, 0, 0 , - 2983, 807, 6129 ,873, 872, 3310 ,0, 0, 0 , - 2983, 6129, 7678 ,873, 3310, 5476 ,0, 0, 0 , - 2577, 488, 6132 ,5478, 3309, 3308 ,0, 0, 0 , - 2577, 6132, 7679 ,5478, 3308, 5479 ,0, 0, 0 , - 6132, 491, 2580 ,3308, 6352, 533 ,0, 0, 0 , - 6132, 2580, 7679 ,3308, 533, 5479 ,0, 0, 0 , - 2580, 490, 6127 ,533, 532, 3305 ,0, 0, 0 , - 2580, 6127, 7679 ,533, 3305, 5479 ,0, 0, 0 , - 2573, 485, 6136 ,523, 5483, 7745 ,0, 0, 0 , - 2573, 6136, 7680 ,523, 7745, 5480 ,0, 0, 0 , - 6136, 1493, 3925 ,7745, 6990, 6989 ,0, 0, 0 , - 6136, 3925, 7680 ,7745, 6989, 5480 ,0, 0, 0 , - 3925, 1492, 6144 ,6989, 4439, 3320 ,0, 0, 0 , - 3925, 6144, 7680 ,6989, 3320, 5480 ,0, 0, 0 , - 2571, 483, 6165 ,5481, 6350, 7752 ,0, 0, 0 , - 2571, 6165, 7681 ,5481, 7752, 5482 ,0, 0, 0 , - 6165, 804, 2978 ,7752, 6533, 869 ,0, 0, 0 , - 6165, 2978, 7681 ,7752, 869, 5482 ,0, 0, 0 , - 2978, 803, 6139 ,869, 868, 3317 ,0, 0, 0 , - 2978, 6139, 7681 ,869, 3317, 5482 ,0, 0, 0 , - 2572, 484, 6142 ,5484, 3316, 3315 ,0, 0, 0 , - 2572, 6142, 7682 ,5484, 3315, 5485 ,0, 0, 0 , - 6142, 487, 2575 ,3315, 6351, 529 ,0, 0, 0 , - 6142, 2575, 7682 ,3315, 529, 5485 ,0, 0, 0 , - 2575, 486, 6137 ,529, 528, 3312 ,0, 0, 0 , - 2575, 6137, 7682 ,529, 3312, 5485 ,0, 0, 0 , - 2568, 481, 6146 ,519, 5487, 7747 ,0, 0, 0 , - 2568, 6146, 7683 ,519, 7747, 5486 ,0, 0, 0 , - 6146, 1497, 3930 ,7747, 6994, 6993 ,0, 0, 0 , - 6146, 3930, 7683 ,7747, 6993, 5486 ,0, 0, 0 , - 3930, 1496, 6149 ,6993, 4434, 3323 ,0, 0, 0 , - 3930, 6149, 7683 ,6993, 3323, 5486 ,0, 0, 0 , - 2567, 480, 6166 ,5488, 6349, 7753 ,0, 0, 0 , - 2567, 6166, 7684 ,5488, 7753, 5489 ,0, 0, 0 , - 6166, 483, 2570 ,7753, 6350, 525 ,0, 0, 0 , - 6166, 2570, 7684 ,7753, 525, 5489 ,0, 0, 0 , - 2570, 482, 6147 ,525, 524, 3319 ,0, 0, 0 , - 2570, 6147, 7684 ,525, 3319, 5489 ,0, 0, 0 , - 2563, 477, 6151 ,515, 5494, 7748 ,0, 0, 0 , - 2563, 6151, 7685 ,515, 7748, 5490 ,0, 0, 0 , - 6151, 1501, 3935 ,7748, 6999, 6998 ,0, 0, 0 , - 6151, 3935, 7685 ,7748, 6998, 5490 ,0, 0, 0 , - 3935, 1500, 6154 ,6998, 6997, 3326 ,0, 0, 0 , - 3935, 6154, 7685 ,6998, 3326, 5490 ,0, 0, 0 , - 2560, 474, 6157 ,517, 516, 3325 ,0, 0, 0 , - 2560, 6157, 7686 ,517, 3325, 5493 ,0, 0, 0 , - 6157, 913, 3118 ,3325, 980, 979 ,0, 0, 0 , - 6157, 3118, 7686 ,3325, 979, 5493 ,0, 0, 0 , - 3118, 916, 6181 ,979, 4981, 5491 ,0, 0, 0 , - 3118, 6181, 7686 ,979, 5491, 5493 ,0, 0, 0 , - 2562, 476, 6176 ,5495, 6346, 7756 ,0, 0, 0 , - 2562, 6176, 7687 ,5495, 7756, 5496 ,0, 0, 0 , - 6176, 479, 2565 ,7756, 6347, 521 ,0, 0, 0 , - 6176, 2565, 7687 ,7756, 521, 5496 ,0, 0, 0 , - 2565, 478, 6152 ,521, 520, 3322 ,0, 0, 0 , - 2565, 6152, 7687 ,521, 3322, 5496 ,0, 0, 0 , - 2553, 469, 6256 ,507, 6339, 7781 ,0, 0, 0 , - 2553, 6256, 7688 ,507, 7781, 5497 ,0, 0, 0 , - 6256, 746, 2902 ,7781, 6504, 6503 ,0, 0, 0 , - 6256, 2902, 7688 ,7781, 6503, 5497 ,0, 0, 0 , - 2902, 745, 6159 ,6503, 6502, 3329 ,0, 0, 0 , - 2902, 6159, 7688 ,6503, 3329, 5497 ,0, 0, 0 , - 2551, 467, 6191 ,5500, 6337, 7760 ,0, 0, 0 , - 2551, 6191, 7689 ,5500, 7760, 5501 ,0, 0, 0 , - 6191, 471, 2555 ,7760, 6340, 513 ,0, 0, 0 , - 6191, 2555, 7689 ,7760, 513, 5501 ,0, 0, 0 , - 2555, 470, 6272 ,513, 512, 5498 ,0, 0, 0 , - 2555, 6272, 7689 ,513, 5498, 5501 ,0, 0, 0 , - 2548, 465, 6161 ,503, 5504, 7751 ,0, 0, 0 , - 2548, 6161, 7690 ,503, 7751, 5503 ,0, 0, 0 , - 6161, 739, 2893 ,7751, 6500, 6499 ,0, 0, 0 , - 6161, 2893, 7690 ,7751, 6499, 5503 ,0, 0, 0 , - 2893, 738, 6171 ,6499, 6498, 5502 ,0, 0, 0 , - 2893, 6171, 7690 ,6499, 5502, 5503 ,0, 0, 0 , - 2547, 464, 6192 ,5505, 6336, 7761 ,0, 0, 0 , - 2547, 6192, 7691 ,5505, 7761, 5506 ,0, 0, 0 , - 6192, 467, 2550 ,7761, 6337, 509 ,0, 0, 0 , - 6192, 2550, 7691 ,7761, 509, 5506 ,0, 0, 0 , - 2550, 466, 6162 ,509, 508, 3328 ,0, 0, 0 , - 2550, 6162, 7691 ,509, 3328, 5506 ,0, 0, 0 , - 2543, 461, 6167 ,499, 5510, 7754 ,0, 0, 0 , - 2543, 6167, 7692 ,499, 7754, 5507 ,0, 0, 0 , - 6167, 480, 2566 ,7754, 6349, 6348 ,0, 0, 0 , - 6167, 2566, 7692 ,7754, 6348, 5507 ,0, 0, 0 , - 2566, 479, 6175 ,6348, 6347, 3340 ,0, 0, 0 , - 2566, 6175, 7692 ,6348, 3340, 5507 ,0, 0, 0 , - 2541, 459, 6186 ,5508, 6333, 7758 ,0, 0, 0 , - 2541, 6186, 7693 ,5508, 7758, 5509 ,0, 0, 0 , - 6186, 463, 2545 ,7758, 6334, 505 ,0, 0, 0 , - 6186, 2545, 7693 ,7758, 505, 5509 ,0, 0, 0 , - 2545, 462, 6170 ,505, 504, 3337 ,0, 0, 0 , - 2545, 6170, 7693 ,505, 3337, 5509 ,0, 0, 0 , - 2542, 460, 6173 ,5511, 3336, 3335 ,0, 0, 0 , - 2542, 6173, 7694 ,5511, 3335, 5512 ,0, 0, 0 , - 6173, 735, 2888 ,3335, 6497, 6496 ,0, 0, 0 , - 6173, 2888, 7694 ,3335, 6496, 5512 ,0, 0, 0 , - 2888, 734, 6168 ,6496, 3332, 3331 ,0, 0, 0 , - 2888, 6168, 7694 ,6496, 3331, 5512 ,0, 0, 0 , - 2538, 457, 6177 ,495, 5517, 7757 ,0, 0, 0 , - 2538, 6177, 7695 ,495, 7757, 5513 ,0, 0, 0 , - 6177, 476, 2561 ,7757, 6346, 6345 ,0, 0, 0 , - 6177, 2561, 7695 ,7757, 6345, 5513 ,0, 0, 0 , - 2561, 475, 6180 ,6345, 5492, 3343 ,0, 0, 0 , - 2561, 6180, 7695 ,6345, 3343, 5513 ,0, 0, 0 , - 2535, 454, 6183 ,497, 496, 3342 ,0, 0, 0 , - 2535, 6183, 7696 ,497, 3342, 5516 ,0, 0, 0 , - 6183, 936, 3143 ,3342, 6632, 6631 ,0, 0, 0 , - 6183, 3143, 7696 ,3342, 6631, 5516 ,0, 0, 0 , - 3143, 935, 6197 ,6631, 6630, 5514 ,0, 0, 0 , - 3143, 6197, 7696 ,6631, 5514, 5516 ,0, 0, 0 , - 2537, 456, 6187 ,5518, 6332, 7759 ,0, 0, 0 , - 2537, 6187, 7697 ,5518, 7759, 5519 ,0, 0, 0 , - 6187, 459, 2540 ,7759, 6333, 501 ,0, 0, 0 , - 6187, 2540, 7697 ,7759, 501, 5519 ,0, 0, 0 , - 2540, 458, 6178 ,501, 500, 3339 ,0, 0, 0 , - 2540, 6178, 7697 ,501, 3339, 5519 ,0, 0, 0 , - 2530, 450, 6282 ,493, 492, 7788 ,0, 0, 0 , - 2530, 6282, 7698 ,493, 7788, 5520 ,0, 0, 0 , - 6282, 472, 2556 ,7788, 6342, 6341 ,0, 0, 0 , - 6282, 2556, 7698 ,7788, 6341, 5520 ,0, 0, 0 , - 2556, 471, 6190 ,6341, 6340, 3351 ,0, 0, 0 , - 2556, 6190, 7698 ,6341, 3351, 5520 ,0, 0, 0 , - 2531, 451, 6193 ,5521, 3350, 3349 ,0, 0, 0 , - 2531, 6193, 7699 ,5521, 3349, 5522 ,0, 0, 0 , - 6193, 464, 2546 ,3349, 6336, 6335 ,0, 0, 0 , - 6193, 2546, 7699 ,3349, 6335, 5522 ,0, 0, 0 , - 2546, 463, 6185 ,6335, 6334, 3347 ,0, 0, 0 , - 2546, 6185, 7699 ,6335, 3347, 5522 ,0, 0, 0 , - 2532, 452, 6188 ,5525, 3346, 3345 ,0, 0, 0 , - 2532, 6188, 7700 ,5525, 3345, 5526 ,0, 0, 0 , - 6188, 456, 2536 ,3345, 6332, 6331 ,0, 0, 0 , - 6188, 2536, 7700 ,3345, 6331, 5526 ,0, 0, 0 , - 2536, 455, 6196 ,6331, 5515, 5523 ,0, 0, 0 , - 2536, 6196, 7700 ,6331, 5523, 5526 ,0, 0, 0 , - 2528, 449, 6283 ,487, 6330, 7789 ,0, 0, 0 , - 2528, 6283, 7701 ,487, 7789, 5527 ,0, 0, 0 , - 6283, 450, 2533 ,7789, 492, 491 ,0, 0, 0 , - 6283, 2533, 7701 ,7789, 491, 5527 ,0, 0, 0 , - 2533, 453, 6195 ,491, 5524, 3354 ,0, 0, 0 , - 2533, 6195, 7701 ,491, 3354, 5527 ,0, 0, 0 , - 2526, 447, 6199 ,489, 488, 3353 ,0, 0, 0 , - 2526, 6199, 7702 ,489, 3353, 5528 ,0, 0, 0 , - 6199, 933, 3139 ,3353, 6629, 6628 ,0, 0, 0 , - 6199, 3139, 7702 ,3353, 6628, 5528 ,0, 0, 0 , - 3139, 932, 6286 ,6628, 6627, 3417 ,0, 0, 0 , - 3139, 6286, 7702 ,6628, 3417, 5528 ,0, 0, 0 , - 2523, 445, 6202 ,5531, 6328, 7763 ,0, 0, 0 , - 2523, 6202, 7703 ,5531, 7763, 5532 ,0, 0, 0 , - 6202, 750, 2907 ,7763, 6509, 6508 ,0, 0, 0 , - 6202, 2907, 7703 ,7763, 6508, 5532 ,0, 0, 0 , - 2907, 749, 6262 ,6508, 6507, 5529 ,0, 0, 0 , - 2907, 6262, 7703 ,6508, 5529, 5532 ,0, 0, 0 , - 2519, 442, 6203 ,479, 5537, 7764 ,0, 0, 0 , - 2519, 6203, 7704 ,479, 7764, 5534 ,0, 0, 0 , - 6203, 445, 2522 ,7764, 6328, 6327 ,0, 0, 0 , - 6203, 2522, 7704 ,7764, 6327, 5534 ,0, 0, 0 , - 2522, 444, 6223 ,6327, 6326, 5533 ,0, 0, 0 , - 2522, 6223, 7704 ,6327, 5533, 5534 ,0, 0, 0 , - 2517, 440, 6219 ,5535, 6325, 7770 ,0, 0, 0 , - 2517, 6219, 7705 ,5535, 7770, 5536 ,0, 0, 0 , - 6219, 496, 2586 ,7770, 6355, 6354 ,0, 0, 0 , - 6219, 2586, 7705 ,7770, 6354, 5536 ,0, 0, 0 , - 2586, 495, 6206 ,6354, 6353, 3362 ,0, 0, 0 , - 2586, 6206, 7705 ,6354, 3362, 5536 ,0, 0, 0 , - 2518, 441, 6210 ,5538, 3361, 3360 ,0, 0, 0 , - 2518, 6210, 7706 ,5538, 3360, 5539 ,0, 0, 0 , - 6210, 752, 2913 ,3360, 808, 807 ,0, 0, 0 , - 6210, 2913, 7706 ,3360, 807, 5539 ,0, 0, 0 , - 2913, 754, 6204 ,807, 3357, 3356 ,0, 0, 0 , - 2913, 6204, 7706 ,807, 3356, 5539 ,0, 0, 0 , - 2514, 438, 6214 ,475, 5542, 7768 ,0, 0, 0 , - 2514, 6214, 7707 ,475, 7768, 5540 ,0, 0, 0 , - 6214, 500, 2591 ,7768, 6358, 6357 ,0, 0, 0 , - 6214, 2591, 7707 ,7768, 6357, 5540 ,0, 0, 0 , - 2591, 499, 6217 ,6357, 6356, 3369 ,0, 0, 0 , - 2591, 6217, 7707 ,6357, 3369, 5540 ,0, 0, 0 , - 2511, 435, 6220 ,477, 476, 3368 ,0, 0, 0 , - 2511, 6220, 7708 ,477, 3368, 5541 ,0, 0, 0 , - 6220, 440, 2516 ,3368, 6325, 481 ,0, 0, 0 , - 6220, 2516, 7708 ,3368, 481, 5541 ,0, 0, 0 , - 2516, 439, 6222 ,481, 480, 3373 ,0, 0, 0 , - 2516, 6222, 7708 ,481, 3373, 5541 ,0, 0, 0 , - 2513, 437, 6232 ,5543, 6324, 7776 ,0, 0, 0 , - 2513, 6232, 7709 ,5543, 7776, 5544 ,0, 0, 0 , - 6232, 539, 2641 ,7776, 6371, 6370 ,0, 0, 0 , - 6232, 2641, 7709 ,7776, 6370, 5544 ,0, 0, 0 , - 2641, 538, 6215 ,6370, 3365, 3364 ,0, 0, 0 , - 2641, 6215, 7709 ,6370, 3364, 5544 ,0, 0, 0 , - 2507, 432, 6224 ,473, 472, 7771 ,0, 0, 0 , - 2507, 6224, 7710 ,473, 7771, 5547 ,0, 0, 0 , - 6224, 444, 2521 ,7771, 6326, 485 ,0, 0, 0 , - 6224, 2521, 7710 ,7771, 485, 5547 ,0, 0, 0 , - 2521, 443, 6251 ,485, 484, 5545 ,0, 0, 0 , - 2521, 6251, 7710 ,485, 5545, 5547 ,0, 0, 0 , - 2505, 431, 6225 ,467, 5551, 7772 ,0, 0, 0 , - 2505, 6225, 7711 ,467, 7772, 5549 ,0, 0, 0 , - 6225, 432, 2509 ,7772, 472, 471 ,0, 0, 0 , - 6225, 2509, 7711 ,7772, 471, 5549 ,0, 0, 0 , - 2509, 434, 6241 ,471, 6322, 5548 ,0, 0, 0 , - 2509, 6241, 7711 ,471, 5548, 5549 ,0, 0, 0 , - 2503, 429, 6240 ,469, 468, 3384 ,0, 0, 0 , - 2503, 6240, 7712 ,469, 3384, 5550 ,0, 0, 0 , - 6240, 580, 2693 ,3384, 3383, 6398 ,0, 0, 0 , - 6240, 2693, 7712 ,3384, 6398, 5550 ,0, 0, 0 , - 2693, 579, 6228 ,6398, 6397, 3377 ,0, 0, 0 , - 2693, 6228, 7712 ,6398, 3377, 5550 ,0, 0, 0 , - 2504, 430, 6233 ,5552, 3376, 3375 ,0, 0, 0 , - 2504, 6233, 7713 ,5552, 3375, 5553 ,0, 0, 0 , - 6233, 437, 2512 ,3375, 6324, 6323 ,0, 0, 0 , - 6233, 2512, 7713 ,3375, 6323, 5553 ,0, 0, 0 , - 2512, 436, 6226 ,6323, 3372, 3371 ,0, 0, 0 , - 2512, 6226, 7713 ,6323, 3371, 5553 ,0, 0, 0 , - 2496, 424, 6326 ,459, 6316, 7804 ,0, 0, 0 , - 2496, 6326, 7714 ,459, 7804, 5554 ,0, 0, 0 , - 6326, 575, 2687 ,7804, 6392, 6391 ,0, 0, 0 , - 6326, 2687, 7714 ,7804, 6391, 5554 ,0, 0, 0 , - 2687, 574, 6235 ,6391, 6390, 3380 ,0, 0, 0 , - 2687, 6235, 7714 ,6391, 3380, 5554 ,0, 0, 0 , - 2493, 421, 6238 ,461, 460, 3379 ,0, 0, 0 , - 2493, 6238, 7715 ,461, 3379, 5557 ,0, 0, 0 , - 6238, 578, 2691 ,3379, 6395, 629 ,0, 0, 0 , - 6238, 2691, 7715 ,3379, 629, 5557 ,0, 0, 0 , - 2691, 577, 6247 ,629, 628, 5555 ,0, 0, 0 , - 2691, 6247, 7715 ,629, 5555, 5557 ,0, 0, 0 , - 2494, 422, 6246 ,5560, 5556, 7779 ,0, 0, 0 , - 2494, 6246, 7716 ,5560, 7779, 5561 ,0, 0, 0 , - 6246, 426, 2498 ,7779, 6317, 465 ,0, 0, 0 , - 6246, 2498, 7716 ,7779, 465, 5561 ,0, 0, 0 , - 2498, 425, 6331 ,465, 464, 5558 ,0, 0, 0 , - 2498, 6331, 7716 ,465, 5558, 5561 ,0, 0, 0 , - 2491, 420, 6242 ,455, 5565, 7778 ,0, 0, 0 , - 2491, 6242, 7717 ,455, 7778, 5562 ,0, 0, 0 , - 6242, 434, 2508 ,7778, 6322, 6321 ,0, 0, 0 , - 6242, 2508, 7717 ,7778, 6321, 5562 ,0, 0, 0 , - 2508, 433, 6250 ,6321, 5546, 3391 ,0, 0, 0 , - 2508, 6250, 7717 ,6321, 3391, 5562 ,0, 0, 0 , - 2489, 418, 6266 ,5563, 6314, 3402 ,0, 0, 0 , - 2489, 6266, 7718 ,5563, 3402, 5564 ,0, 0, 0 , - 6266, 427, 2499 ,3402, 3401, 6318 ,0, 0, 0 , - 6266, 2499, 7718 ,3402, 6318, 5564 ,0, 0, 0 , - 2499, 426, 6245 ,6318, 6317, 3388 ,0, 0, 0 , - 2499, 6245, 7718 ,6318, 3388, 5564 ,0, 0, 0 , - 2490, 419, 6248 ,5566, 3387, 3386 ,0, 0, 0 , - 2490, 6248, 7719 ,5566, 3386, 5567 ,0, 0, 0 , - 6248, 577, 2694 ,3386, 628, 627 ,0, 0, 0 , - 6248, 2694, 7719 ,3386, 627, 5567 ,0, 0, 0 , - 2694, 580, 6243 ,627, 3383, 3382 ,0, 0, 0 , - 2694, 6243, 7719 ,627, 3382, 5567 ,0, 0, 0 , - 2486, 416, 6252 ,451, 5570, 7780 ,0, 0, 0 , - 2486, 6252, 7720 ,451, 7780, 5569 ,0, 0, 0 , - 6252, 443, 2524 ,7780, 484, 483 ,0, 0, 0 , - 6252, 2524, 7720 ,7780, 483, 5569 ,0, 0, 0 , - 2524, 446, 6261 ,483, 5530, 5568 ,0, 0, 0 , - 2524, 6261, 7720 ,483, 5568, 5569 ,0, 0, 0 , - 2485, 415, 6267 ,5571, 6313, 7784 ,0, 0, 0 , - 2485, 6267, 7721 ,5571, 7784, 5572 ,0, 0, 0 , - 6267, 418, 2488 ,7784, 6314, 457 ,0, 0, 0 , - 6267, 2488, 7721 ,7784, 457, 5572 ,0, 0, 0 , - 2488, 417, 6253 ,457, 456, 3390 ,0, 0, 0 , - 2488, 6253, 7721 ,457, 3390, 5572 ,0, 0, 0 , - 2481, 412, 6257 ,447, 5576, 7782 ,0, 0, 0 , - 2481, 6257, 7722 ,447, 7782, 5573 ,0, 0, 0 , - 6257, 469, 2552 ,7782, 6339, 6338 ,0, 0, 0 , - 6257, 2552, 7722 ,7782, 6338, 5573 ,0, 0, 0 , - 2552, 468, 6271 ,6338, 5499, 3405 ,0, 0, 0 , - 2552, 6271, 7722 ,6338, 3405, 5573 ,0, 0, 0 , - 2479, 410, 6278 ,5574, 6310, 7787 ,0, 0, 0 , - 2479, 6278, 7723 ,5574, 7787, 5575 ,0, 0, 0 , - 6278, 414, 2483 ,7787, 6311, 453 ,0, 0, 0 , - 6278, 2483, 7723 ,7787, 453, 5575 ,0, 0, 0 , - 2483, 413, 6260 ,453, 452, 3398 ,0, 0, 0 , - 2483, 6260, 7723 ,453, 3398, 5575 ,0, 0, 0 , - 2480, 411, 6264 ,5577, 3397, 3396 ,0, 0, 0 , - 2480, 6264, 7724 ,5577, 3396, 5578 ,0, 0, 0 , - 6264, 742, 2897 ,3396, 6501, 797 ,0, 0, 0 , - 6264, 2897, 7724 ,3396, 797, 5578 ,0, 0, 0 , - 2897, 741, 6258 ,797, 796, 3393 ,0, 0, 0 , - 2897, 6258, 7724 ,797, 3393, 5578 ,0, 0, 0 , - 2476, 408, 6268 ,443, 5581, 7785 ,0, 0, 0 , - 2476, 6268, 7725 ,443, 7785, 5580 ,0, 0, 0 , - 6268, 415, 2484 ,7785, 6313, 6312 ,0, 0, 0 , - 6268, 2484, 7725 ,7785, 6312, 5580 ,0, 0, 0 , - 2484, 414, 6277 ,6312, 6311, 5579 ,0, 0, 0 , - 2484, 6277, 7725 ,6312, 5579, 5580 ,0, 0, 0 , - 2475, 407, 6336 ,5582, 6309, 7807 ,0, 0, 0 , - 2475, 6336, 7726 ,5582, 7807, 5583 ,0, 0, 0 , - 6336, 428, 2500 ,7807, 6320, 6319 ,0, 0, 0 , - 6336, 2500, 7726 ,7807, 6319, 5583 ,0, 0, 0 , - 2500, 427, 6269 ,6319, 3401, 3400 ,0, 0, 0 , - 2500, 6269, 7726 ,6319, 3400, 5583 ,0, 0, 0 , - 2472, 405, 6273 ,439, 5588, 7786 ,0, 0, 0 , - 2472, 6273, 7727 ,439, 7786, 5585 ,0, 0, 0 , - 6273, 470, 2558 ,7786, 512, 511 ,0, 0, 0 , - 6273, 2558, 7727 ,7786, 511, 5585 ,0, 0, 0 , - 2558, 473, 6342 ,511, 6344, 5584 ,0, 0, 0 , - 2558, 6342, 7727 ,511, 5584, 5585 ,0, 0, 0 , - 2470, 403, 6337 ,5586, 6308, 7808 ,0, 0, 0 , - 2470, 6337, 7728 ,5586, 7808, 5587 ,0, 0, 0 , - 6337, 407, 2474 ,7808, 6309, 445 ,0, 0, 0 , - 6337, 2474, 7728 ,7808, 445, 5587 ,0, 0, 0 , - 2474, 406, 6276 ,445, 444, 3409 ,0, 0, 0 , - 2474, 6276, 7728 ,445, 3409, 5587 ,0, 0, 0 , - 2471, 404, 6279 ,5589, 3408, 3407 ,0, 0, 0 , - 2471, 6279, 7729 ,5589, 3407, 5590 ,0, 0, 0 , - 6279, 410, 2478 ,3407, 6310, 449 ,0, 0, 0 , - 6279, 2478, 7729 ,3407, 449, 5590 ,0, 0, 0 , - 2478, 409, 6274 ,449, 448, 3404 ,0, 0, 0 , - 2478, 6274, 7729 ,449, 3404, 5590 ,0, 0, 0 , - 2467, 401, 6289 ,435, 5594, 7792 ,0, 0, 0 , - 2467, 6289, 7730 ,435, 7792, 5592 ,0, 0, 0 , - 6289, 926, 3130 ,7792, 6621, 6620 ,0, 0, 0 , - 6289, 3130, 7730 ,7792, 6620, 5592 ,0, 0, 0 , - 3130, 925, 6344 ,6620, 4966, 5591 ,0, 0, 0 , - 3130, 6344, 7730 ,6620, 5591, 5592 ,0, 0, 0 , - 2465, 399, 6343 ,437, 436, 7810 ,0, 0, 0 , - 2465, 6343, 7731 ,437, 7810, 5593 ,0, 0, 0 , - 6343, 473, 2557 ,7810, 6344, 6343 ,0, 0, 0 , - 6343, 2557, 7731 ,7810, 6343, 5593 ,0, 0, 0 , - 2557, 472, 6281 ,6343, 6342, 3413 ,0, 0, 0 , - 2557, 6281, 7731 ,6343, 3413, 5593 ,0, 0, 0 , - 2466, 400, 6284 ,5595, 3412, 3411 ,0, 0, 0 , - 2466, 6284, 7732 ,5595, 3411, 5596 ,0, 0, 0 , - 6284, 449, 2527 ,3411, 6330, 6329 ,0, 0, 0 , - 6284, 2527, 7732 ,3411, 6329, 5596 ,0, 0, 0 , - 2527, 448, 6290 ,6329, 3416, 3415 ,0, 0, 0 , - 2527, 6290, 7732 ,6329, 3415, 5596 ,0, 0, 0 , - 2460, 397, 6293 ,427, 5598, 7793 ,0, 0, 0 , - 2460, 6293, 7733 ,427, 7793, 5597 ,0, 0, 0 , - 6293, 615, 2738 ,7793, 6418, 669 ,0, 0, 0 , - 6293, 2738, 7733 ,7793, 669, 5597 ,0, 0, 0 , - 2738, 614, 6296 ,669, 668, 3422 ,0, 0, 0 , - 2738, 6296, 7733 ,669, 3422, 5597 ,0, 0, 0 , - 2459, 396, 6350 ,5599, 6307, 3449 ,0, 0, 0 , - 2459, 6350, 7734 ,5599, 3449, 5600 ,0, 0, 0 , - 6350, 355, 2462 ,3449, 384, 433 ,0, 0, 0 , - 6350, 2462, 7734 ,3449, 433, 5600 ,0, 0, 0 , - 2462, 398, 6294 ,433, 432, 3419 ,0, 0, 0 , - 2462, 6294, 7734 ,433, 3419, 5600 ,0, 0, 0 , - 2455, 393, 6298 ,423, 5602, 7795 ,0, 0, 0 , - 2455, 6298, 7735 ,423, 7795, 5601 ,0, 0, 0 , - 6298, 591, 2707 ,7795, 6409, 6408 ,0, 0, 0 , - 6298, 2707, 7735 ,7795, 6408, 5601 ,0, 0, 0 , - 2707, 590, 6301 ,6408, 6407, 3425 ,0, 0, 0 , - 2707, 6301, 7735 ,6408, 3425, 5601 ,0, 0, 0 , - 2454, 392, 6355 ,5603, 6304, 7813 ,0, 0, 0 , - 2454, 6355, 7736 ,5603, 7813, 5604 ,0, 0, 0 , - 6355, 395, 2457 ,7813, 6305, 429 ,0, 0, 0 , - 6355, 2457, 7736 ,7813, 429, 5604 ,0, 0, 0 , - 2457, 394, 6299 ,429, 428, 3421 ,0, 0, 0 , - 2457, 6299, 7736 ,429, 3421, 5604 ,0, 0, 0 , - 2450, 389, 6303 ,419, 5606, 7797 ,0, 0, 0 , - 2450, 6303, 7737 ,419, 7797, 5605 ,0, 0, 0 , - 6303, 587, 2702 ,7797, 6406, 6405 ,0, 0, 0 , - 6303, 2702, 7737 ,7797, 6405, 5605 ,0, 0, 0 , - 2702, 586, 6306 ,6405, 6404, 3428 ,0, 0, 0 , - 2702, 6306, 7737 ,6405, 3428, 5605 ,0, 0, 0 , - 2449, 388, 6360 ,5607, 6301, 7815 ,0, 0, 0 , - 2449, 6360, 7738 ,5607, 7815, 5608 ,0, 0, 0 , - 6360, 391, 2452 ,7815, 6302, 425 ,0, 0, 0 , - 6360, 2452, 7738 ,7815, 425, 5608 ,0, 0, 0 , - 2452, 390, 6304 ,425, 424, 3424 ,0, 0, 0 , - 2452, 6304, 7738 ,425, 3424, 5608 ,0, 0, 0 , - 2445, 385, 6308 ,415, 5611, 7799 ,0, 0, 0 , - 2445, 6308, 7739 ,415, 7799, 5610 ,0, 0, 0 , - 6308, 584, 2698 ,7799, 6403, 6402 ,0, 0, 0 , - 6308, 2698, 7739 ,7799, 6402, 5610 ,0, 0, 0 , - 2698, 583, 6312 ,6402, 6401, 5609 ,0, 0, 0 , - 2698, 6312, 7739 ,6402, 5609, 5610 ,0, 0, 0 , - 2444, 384, 6365 ,5612, 6298, 7817 ,0, 0, 0 , - 2444, 6365, 7740 ,5612, 7817, 5613 ,0, 0, 0 , - 6365, 387, 2447 ,7817, 6299, 421 ,0, 0, 0 , - 6365, 2447, 7740 ,7817, 421, 5613 ,0, 0, 0 , - 2447, 386, 6309 ,421, 420, 3427 ,0, 0, 0 , - 2447, 6309, 7740 ,421, 3427, 5613 ,0, 0, 0 , - 2441, 382, 6366 ,411, 6297, 7818 ,0, 0, 0 , - 2441, 6366, 7741 ,411, 7818, 5614 ,0, 0, 0 , - 6366, 384, 2443 ,7818, 6298, 417 ,0, 0, 0 , - 6366, 2443, 7741 ,7818, 417, 5614 ,0, 0, 0 , - 2443, 383, 6311 ,417, 416, 3431 ,0, 0, 0 , - 2443, 6311, 7741 ,417, 3431, 5614 ,0, 0, 0 , - 2437, 379, 6315 ,407, 5616, 7801 ,0, 0, 0 , - 2437, 6315, 7742 ,407, 7801, 5615 ,0, 0, 0 , - 6315, 554, 2660 ,7801, 6379, 6378 ,0, 0, 0 , - 6315, 2660, 7742 ,7801, 6378, 5615 ,0, 0, 0 , - 2660, 553, 6318 ,6378, 6377, 3434 ,0, 0, 0 , - 2660, 6318, 7742 ,6378, 3434, 5615 ,0, 0, 0 , - 2436, 378, 6375 ,5617, 6294, 7821 ,0, 0, 0 , - 2436, 6375, 7743 ,5617, 7821, 5618 ,0, 0, 0 , - 6375, 381, 2439 ,7821, 6295, 413 ,0, 0, 0 , - 6375, 2439, 7743 ,7821, 413, 5618 ,0, 0, 0 , - 2439, 380, 6316 ,413, 412, 3430 ,0, 0, 0 , - 2439, 6316, 7743 ,413, 3430, 5618 ,0, 0, 0 , - 2433, 376, 6321 ,403, 5621, 7803 ,0, 0, 0 , - 2433, 6321, 7744 ,403, 7803, 5620 ,0, 0, 0 , - 6321, 576, 2688 ,7803, 6394, 6393 ,0, 0, 0 , - 6321, 2688, 7744 ,7803, 6393, 5620 ,0, 0, 0 , - 2688, 575, 6325 ,6393, 6392, 5619 ,0, 0, 0 , - 2688, 6325, 7744 ,6393, 5619, 5620 ,0, 0, 0 , - 2432, 375, 6376 ,5622, 6293, 7822 ,0, 0, 0 , - 2432, 6376, 7745 ,5622, 7822, 5623 ,0, 0, 0 , - 6376, 378, 2435 ,7822, 6294, 409 ,0, 0, 0 , - 6376, 2435, 7745 ,7822, 409, 5623 ,0, 0, 0 , - 2435, 377, 6322 ,409, 408, 3433 ,0, 0, 0 , - 2435, 6322, 7745 ,409, 3433, 5623 ,0, 0, 0 , - 2428, 372, 6386 ,399, 6290, 7826 ,0, 0, 0 , - 2428, 6386, 7746 ,399, 7826, 5624 ,0, 0, 0 , - 6386, 374, 2430 ,7826, 6291, 405 ,0, 0, 0 , - 6386, 2430, 7746 ,7826, 405, 5624 ,0, 0, 0 , - 2430, 373, 6324 ,405, 404, 3437 ,0, 0, 0 , - 2430, 6324, 7746 ,405, 3437, 5624 ,0, 0, 0 , - 2424, 369, 6327 ,395, 5626, 7805 ,0, 0, 0 , - 2424, 6327, 7747 ,395, 7805, 5625 ,0, 0, 0 , - 6327, 424, 2495 ,7805, 6316, 6315 ,0, 0, 0 , - 6327, 2495, 7747 ,7805, 6315, 5625 ,0, 0, 0 , - 2495, 423, 6330 ,6315, 5559, 3440 ,0, 0, 0 , - 2495, 6330, 7747 ,6315, 3440, 5625 ,0, 0, 0 , - 2423, 368, 6396 ,5627, 6287, 7830 ,0, 0, 0 , - 2423, 6396, 7748 ,5627, 7830, 5628 ,0, 0, 0 , - 6396, 371, 2426 ,7830, 6288, 401 ,0, 0, 0 , - 6396, 2426, 7748 ,7830, 401, 5628 ,0, 0, 0 , - 2426, 370, 6328 ,401, 400, 3436 ,0, 0, 0 , - 2426, 6328, 7748 ,401, 3436, 5628 ,0, 0, 0 , - 2419, 365, 6332 ,391, 5630, 7806 ,0, 0, 0 , - 2419, 6332, 7749 ,391, 7806, 5629 ,0, 0, 0 , - 6332, 425, 2501 ,7806, 464, 463 ,0, 0, 0 , - 6332, 2501, 7749 ,7806, 463, 5629 ,0, 0, 0 , - 2501, 428, 6335 ,463, 6320, 3443 ,0, 0, 0 , - 2501, 6335, 7749 ,463, 3443, 5629 ,0, 0, 0 , - 2418, 364, 6406 ,5631, 6284, 7834 ,0, 0, 0 , - 2418, 6406, 7750 ,5631, 7834, 5632 ,0, 0, 0 , - 6406, 367, 2421 ,7834, 6285, 397 ,0, 0, 0 , - 6406, 2421, 7750 ,7834, 397, 5632 ,0, 0, 0 , - 2421, 366, 6333 ,397, 396, 3439 ,0, 0, 0 , - 2421, 6333, 7750 ,397, 3439, 5632 ,0, 0, 0 , - 2414, 361, 6338 ,387, 5637, 7809 ,0, 0, 0 , - 2414, 6338, 7751 ,387, 7809, 5633 ,0, 0, 0 , - 6338, 403, 2469 ,7809, 6308, 441 ,0, 0, 0 , - 6338, 2469, 7751 ,7809, 441, 5633 ,0, 0, 0 , - 2469, 402, 6341 ,441, 440, 3446 ,0, 0, 0 , - 2469, 6341, 7751 ,441, 3446, 5633 ,0, 0, 0 , - 2411, 358, 6348 ,389, 388, 3445 ,0, 0, 0 , - 2411, 6348, 7752 ,389, 3445, 5636 ,0, 0, 0 , - 6348, 923, 3126 ,3445, 6619, 6618 ,0, 0, 0 , - 6348, 3126, 7752 ,3445, 6618, 5636 ,0, 0, 0 , - 3126, 922, 6426 ,6618, 4971, 5634 ,0, 0, 0 , - 3126, 6426, 7752 ,6618, 5634, 5636 ,0, 0, 0 , - 2413, 360, 6416 ,5638, 6281, 7838 ,0, 0, 0 , - 2413, 6416, 7753 ,5638, 7838, 5639 ,0, 0, 0 , - 6416, 363, 2416 ,7838, 6282, 393 ,0, 0, 0 , - 6416, 2416, 7753 ,7838, 393, 5639 ,0, 0, 0 , - 2416, 362, 6339 ,393, 392, 3442 ,0, 0, 0 , - 2416, 6339, 7753 ,393, 3442, 5639 ,0, 0, 0 , - 2405, 354, 6351 ,379, 5641, 7812 ,0, 0, 0 , - 2405, 6351, 7754 ,379, 7812, 5640 ,0, 0, 0 , - 6351, 396, 2458 ,7812, 6307, 6306 ,0, 0, 0 , - 6351, 2458, 7754 ,7812, 6306, 5640 ,0, 0, 0 , - 2458, 395, 6354 ,6306, 6305, 3452 ,0, 0, 0 , - 2458, 6354, 7754 ,6306, 3452, 5640 ,0, 0, 0 , - 2404, 353, 7131 ,5642, 6276, 7964 ,0, 0, 0 , - 2404, 7131, 7755 ,5642, 7964, 5643 ,0, 0, 0 , - 7131, 356, 2407 ,7964, 6277, 385 ,0, 0, 0 , - 7131, 2407, 7755 ,7964, 385, 5643 ,0, 0, 0 , - 2407, 355, 6352 ,385, 384, 3448 ,0, 0, 0 , - 2407, 6352, 7755 ,385, 3448, 5643 ,0, 0, 0 , - 2400, 350, 6356 ,375, 5645, 7814 ,0, 0, 0 , - 2400, 6356, 7756 ,375, 7814, 5644 ,0, 0, 0 , - 6356, 392, 2453 ,7814, 6304, 6303 ,0, 0, 0 , - 6356, 2453, 7756 ,7814, 6303, 5644 ,0, 0, 0 , - 2453, 391, 6359 ,6303, 6302, 3455 ,0, 0, 0 , - 2453, 6359, 7756 ,6303, 3455, 5644 ,0, 0, 0 , - 2399, 349, 7128 ,5646, 6275, 7963 ,0, 0, 0 , - 2399, 7128, 7757 ,5646, 7963, 5647 ,0, 0, 0 , - 7128, 352, 2402 ,7963, 1819, 381 ,0, 0, 0 , - 7128, 2402, 7757 ,7963, 381, 5647 ,0, 0, 0 , - 2402, 351, 6357 ,381, 380, 3451 ,0, 0, 0 , - 2402, 6357, 7757 ,381, 3451, 5647 ,0, 0, 0 , - 2395, 346, 6361 ,371, 5649, 7816 ,0, 0, 0 , - 2395, 6361, 7758 ,371, 7816, 5648 ,0, 0, 0 , - 6361, 388, 2448 ,7816, 6301, 6300 ,0, 0, 0 , - 6361, 2448, 7758 ,7816, 6300, 5648 ,0, 0, 0 , - 2448, 387, 6364 ,6300, 6299, 3458 ,0, 0, 0 , - 2448, 6364, 7758 ,6300, 3458, 5648 ,0, 0, 0 , - 2394, 345, 7125 ,5650, 6274, 7962 ,0, 0, 0 , - 2394, 7125, 7759 ,5650, 7962, 5651 ,0, 0, 0 , - 7125, 348, 2397 ,7962, 1823, 377 ,0, 0, 0 , - 7125, 2397, 7759 ,7962, 377, 5651 ,0, 0, 0 , - 2397, 347, 6362 ,377, 376, 3454 ,0, 0, 0 , - 2397, 6362, 7759 ,377, 3454, 5651 ,0, 0, 0 , - 2390, 342, 6367 ,367, 5655, 7819 ,0, 0, 0 , - 2390, 6367, 7760 ,367, 7819, 5652 ,0, 0, 0 , - 6367, 382, 2440 ,7819, 6297, 6296 ,0, 0, 0 , - 6367, 2440, 7760 ,7819, 6296, 5652 ,0, 0, 0 , - 2440, 381, 6374 ,6296, 6295, 3465 ,0, 0, 0 , - 2440, 6374, 7760 ,6296, 3465, 5652 ,0, 0, 0 , - 2388, 340, 6382 ,5653, 6273, 7825 ,0, 0, 0 , - 2388, 6382, 7761 ,5653, 7825, 5654 ,0, 0, 0 , - 6382, 1625, 4105 ,7825, 1831, 1830 ,0, 0, 0 , - 6382, 4105, 7761 ,7825, 1830, 5654 ,0, 0, 0 , - 4105, 1628, 6370 ,1830, 7109, 3462 ,0, 0, 0 , - 4105, 6370, 7761 ,1830, 3462, 5654 ,0, 0, 0 , - 2389, 341, 6372 ,5656, 3461, 3460 ,0, 0, 0 , - 2389, 6372, 7762 ,5656, 3460, 5657 ,0, 0, 0 , - 6372, 344, 2392 ,3460, 1827, 373 ,0, 0, 0 , - 6372, 2392, 7762 ,3460, 373, 5657 ,0, 0, 0 , - 2392, 343, 6368 ,373, 372, 3457 ,0, 0, 0 , - 2392, 6368, 7762 ,373, 3457, 5657 ,0, 0, 0 , - 2385, 338, 6377 ,363, 5661, 7823 ,0, 0, 0 , - 2385, 6377, 7763 ,363, 7823, 5658 ,0, 0, 0 , - 6377, 375, 2431 ,7823, 6293, 6292 ,0, 0, 0 , - 6377, 2431, 7763 ,7823, 6292, 5658 ,0, 0, 0 , - 2431, 374, 6385 ,6292, 6291, 3472 ,0, 0, 0 , - 2431, 6385, 7763 ,6292, 3472, 5658 ,0, 0, 0 , - 2383, 336, 6392 ,5659, 6272, 7829 ,0, 0, 0 , - 2383, 6392, 7764 ,5659, 7829, 5660 ,0, 0, 0 , - 6392, 1629, 4110 ,7829, 1835, 1834 ,0, 0, 0 , - 6392, 4110, 7764 ,7829, 1834, 5660 ,0, 0, 0 , - 4110, 1632, 6380 ,1834, 7113, 3469 ,0, 0, 0 , - 4110, 6380, 7764 ,1834, 3469, 5660 ,0, 0, 0 , - 2384, 337, 6383 ,5662, 3468, 3467 ,0, 0, 0 , - 2384, 6383, 7765 ,5662, 3467, 5663 ,0, 0, 0 , - 6383, 340, 2387 ,3467, 6273, 369 ,0, 0, 0 , - 6383, 2387, 7765 ,3467, 369, 5663 ,0, 0, 0 , - 2387, 339, 6378 ,369, 368, 3464 ,0, 0, 0 , - 2387, 6378, 7765 ,369, 3464, 5663 ,0, 0, 0 , - 2380, 334, 6387 ,359, 5667, 7827 ,0, 0, 0 , - 2380, 6387, 7766 ,359, 7827, 5664 ,0, 0, 0 , - 6387, 372, 2427 ,7827, 6290, 6289 ,0, 0, 0 , - 6387, 2427, 7766 ,7827, 6289, 5664 ,0, 0, 0 , - 2427, 371, 6395 ,6289, 6288, 3479 ,0, 0, 0 , - 2427, 6395, 7766 ,6289, 3479, 5664 ,0, 0, 0 , - 2378, 332, 6402 ,5665, 6271, 7833 ,0, 0, 0 , - 2378, 6402, 7767 ,5665, 7833, 5666 ,0, 0, 0 , - 6402, 1633, 4115 ,7833, 1839, 1838 ,0, 0, 0 , - 6402, 4115, 7767 ,7833, 1838, 5666 ,0, 0, 0 , - 4115, 1636, 6390 ,1838, 7117, 3476 ,0, 0, 0 , - 4115, 6390, 7767 ,1838, 3476, 5666 ,0, 0, 0 , - 2379, 333, 6393 ,5668, 3475, 3474 ,0, 0, 0 , - 2379, 6393, 7768 ,5668, 3474, 5669 ,0, 0, 0 , - 6393, 336, 2382 ,3474, 6272, 365 ,0, 0, 0 , - 6393, 2382, 7768 ,3474, 365, 5669 ,0, 0, 0 , - 2382, 335, 6388 ,365, 364, 3471 ,0, 0, 0 , - 2382, 6388, 7768 ,365, 3471, 5669 ,0, 0, 0 , - 2375, 330, 6397 ,355, 5673, 7831 ,0, 0, 0 , - 2375, 6397, 7769 ,355, 7831, 5670 ,0, 0, 0 , - 6397, 368, 2422 ,7831, 6287, 6286 ,0, 0, 0 , - 6397, 2422, 7769 ,7831, 6286, 5670 ,0, 0, 0 , - 2422, 367, 6405 ,6286, 6285, 3486 ,0, 0, 0 , - 2422, 6405, 7769 ,6286, 3486, 5670 ,0, 0, 0 , - 2373, 328, 6412 ,5671, 6270, 7837 ,0, 0, 0 , - 2373, 6412, 7770 ,5671, 7837, 5672 ,0, 0, 0 , - 6412, 1637, 4120 ,7837, 1843, 1842 ,0, 0, 0 , - 6412, 4120, 7770 ,7837, 1842, 5672 ,0, 0, 0 , - 4120, 1640, 6400 ,1842, 7121, 3483 ,0, 0, 0 , - 4120, 6400, 7770 ,1842, 3483, 5672 ,0, 0, 0 , - 2374, 329, 6403 ,5674, 3482, 3481 ,0, 0, 0 , - 2374, 6403, 7771 ,5674, 3481, 5675 ,0, 0, 0 , - 6403, 332, 2377 ,3481, 6271, 361 ,0, 0, 0 , - 6403, 2377, 7771 ,3481, 361, 5675 ,0, 0, 0 , - 2377, 331, 6398 ,361, 360, 3478 ,0, 0, 0 , - 2377, 6398, 7771 ,361, 3478, 5675 ,0, 0, 0 , - 2370, 326, 6407 ,351, 5679, 7835 ,0, 0, 0 , - 2370, 6407, 7772 ,351, 7835, 5676 ,0, 0, 0 , - 6407, 364, 2417 ,7835, 6284, 6283 ,0, 0, 0 , - 6407, 2417, 7772 ,7835, 6283, 5676 ,0, 0, 0 , - 2417, 363, 6415 ,6283, 6282, 3493 ,0, 0, 0 , - 2417, 6415, 7772 ,6283, 3493, 5676 ,0, 0, 0 , - 2368, 324, 6422 ,5677, 6269, 7841 ,0, 0, 0 , - 2368, 6422, 7773 ,5677, 7841, 5678 ,0, 0, 0 , - 6422, 1641, 4125 ,7841, 1847, 1846 ,0, 0, 0 , - 6422, 4125, 7773 ,7841, 1846, 5678 ,0, 0, 0 , - 4125, 1644, 6410 ,1846, 7125, 3490 ,0, 0, 0 , - 4125, 6410, 7773 ,1846, 3490, 5678 ,0, 0, 0 , - 2369, 325, 6413 ,5680, 3489, 3488 ,0, 0, 0 , - 2369, 6413, 7774 ,5680, 3488, 5681 ,0, 0, 0 , - 6413, 328, 2372 ,3488, 6270, 357 ,0, 0, 0 , - 6413, 2372, 7774 ,3488, 357, 5681 ,0, 0, 0 , - 2372, 327, 6408 ,357, 356, 3485 ,0, 0, 0 , - 2372, 6408, 7774 ,357, 3485, 5681 ,0, 0, 0 , - 2365, 322, 6417 ,347, 5686, 7839 ,0, 0, 0 , - 2365, 6417, 7775 ,347, 7839, 5682 ,0, 0, 0 , - 6417, 360, 2412 ,7839, 6281, 6280 ,0, 0, 0 , - 6417, 2412, 7775 ,7839, 6280, 5682 ,0, 0, 0 , - 2412, 359, 6425 ,6280, 5635, 3500 ,0, 0, 0 , - 2412, 6425, 7775 ,6280, 3500, 5682 ,0, 0, 0 , - 2362, 319, 6430 ,349, 348, 3499 ,0, 0, 0 , - 2362, 6430, 7776 ,349, 3499, 5683 ,0, 0, 0 , - 6430, 949, 3160 ,3499, 6644, 6643 ,0, 0, 0 , - 6430, 3160, 7776 ,3499, 6643, 5683 ,0, 0, 0 , - 3160, 948, 6432 ,6643, 6642, 3504 ,0, 0, 0 , - 3160, 6432, 7776 ,6643, 3504, 5683 ,0, 0, 0 , - 2363, 320, 6435 ,5684, 3503, 3502 ,0, 0, 0 , - 2363, 6435, 7777 ,5684, 3502, 5685 ,0, 0, 0 , - 6435, 1645, 4130 ,3502, 1851, 1850 ,0, 0, 0 , - 6435, 4130, 7777 ,3502, 1850, 5685 ,0, 0, 0 , - 4130, 1648, 6420 ,1850, 7130, 3497 ,0, 0, 0 , - 4130, 6420, 7777 ,1850, 3497, 5685 ,0, 0, 0 , - 2364, 321, 6423 ,5687, 3496, 3495 ,0, 0, 0 , - 2364, 6423, 7778 ,5687, 3495, 5688 ,0, 0, 0 , - 6423, 324, 2367 ,3495, 6269, 353 ,0, 0, 0 , - 6423, 2367, 7778 ,3495, 353, 5688 ,0, 0, 0 , - 2367, 323, 6418 ,353, 352, 3492 ,0, 0, 0 , - 2367, 6418, 7778 ,353, 3492, 5688 ,0, 0, 0 , - 3209, 968, 6462 ,5691, 6669, 7857 ,0, 0, 0 , - 3209, 6462, 7779 ,5691, 7857, 5692 ,0, 0, 0 , - 6462, 964, 3201 ,7857, 6664, 1058 ,0, 0, 0 , - 6462, 3201, 7779 ,7857, 1058, 5692 ,0, 0, 0 , - 3201, 311, 6575 ,1058, 1055, 5689 ,0, 0, 0 , - 3201, 6575, 7779 ,1058, 5689, 5692 ,0, 0, 0 , - 2350, 305, 6482 ,5695, 6261, 7861 ,0, 0, 0 , - 2350, 6482, 7780 ,5695, 7861, 5696 ,0, 0, 0 , - 6482, 941, 3150 ,7861, 6634, 1013 ,0, 0, 0 , - 6482, 3150, 7780 ,7861, 1013, 5696 ,0, 0, 0 , - 3150, 940, 6497 ,1013, 1012, 5693 ,0, 0, 0 , - 3150, 6497, 7780 ,1013, 5693, 5696 ,0, 0, 0 , - 3181, 955, 6485 ,5699, 6655, 3540 ,0, 0, 0 , - 3181, 6485, 7781 ,5699, 3540, 5700 ,0, 0, 0 , - 6485, 304, 2348 ,3540, 3539, 337 ,0, 0, 0 , - 6485, 2348, 7781 ,3540, 337, 5700 ,0, 0, 0 , - 2348, 303, 6493 ,337, 336, 5697 ,0, 0, 0 , - 2348, 6493, 7781 ,337, 5697, 5700 ,0, 0, 0 , - 3185, 958, 6593 ,5703, 6656, 7884 ,0, 0, 0 , - 3185, 6593, 7782 ,5703, 7884, 5704 ,0, 0, 0 , - 6593, 962, 3196 ,7884, 6659, 6663 ,0, 0, 0 , - 6593, 3196, 7782 ,7884, 6663, 5704 ,0, 0, 0 , - 3196, 963, 6487 ,6663, 6662, 5701 ,0, 0, 0 , - 3196, 6487, 7782 ,6663, 5701, 5704 ,0, 0, 0 , - 3165, 951, 6502 ,1023, 6647, 7866 ,0, 0, 0 , - 3165, 6502, 7783 ,1023, 7866, 5706 ,0, 0, 0 , - 6502, 315, 2355 ,7866, 6266, 6265 ,0, 0, 0 , - 6502, 2355, 7783 ,7866, 6265, 5706 ,0, 0, 0 , - 2355, 314, 6618 ,6265, 6264, 5705 ,0, 0, 0 , - 2355, 6618, 7783 ,6265, 5705, 5706 ,0, 0, 0 , - 2346, 298, 6453 ,331, 6259, 7855 ,0, 0, 0 , - 2346, 6453, 7784 ,331, 7855, 5707 ,0, 0, 0 , - 6453, 972, 3217 ,7855, 6673, 6672 ,0, 0, 0 , - 6453, 3217, 7784 ,7855, 6672, 5707 ,0, 0, 0 , - 3217, 971, 6437 ,6672, 6671, 3507 ,0, 0, 0 , - 3217, 6437, 7784 ,6672, 3507, 5707 ,0, 0, 0 , - 2343, 295, 6442 ,333, 332, 3506 ,0, 0, 0 , - 2343, 6442, 7785 ,333, 3506, 5708 ,0, 0, 0 , - 6442, 1662, 4146 ,3506, 7133, 1868 ,0, 0, 0 , - 6442, 4146, 7785 ,3506, 1868, 5708 ,0, 0, 0 , - 4146, 1661, 6444 ,1868, 1867, 3511 ,0, 0, 0 , - 4146, 6444, 7785 ,1868, 3511, 5708 ,0, 0, 0 , - 2344, 296, 6447 ,5711, 3510, 3509 ,0, 0, 0 , - 2344, 6447, 7786 ,5711, 3509, 5712 ,0, 0, 0 , - 6447, 947, 3158 ,3509, 6640, 1021 ,0, 0, 0 , - 6447, 3158, 7786 ,3509, 1021, 5712 ,0, 0, 0 , - 3158, 946, 6457 ,1021, 1020, 5709 ,0, 0, 0 , - 3158, 6457, 7786 ,1021, 5709, 5712 ,0, 0, 0 , - 2341, 294, 6463 ,327, 6257, 7858 ,0, 0, 0 , - 2341, 6463, 7787 ,327, 7858, 5713 ,0, 0, 0 , - 6463, 967, 3212 ,7858, 1065, 6670 ,0, 0, 0 , - 6463, 3212, 7787 ,7858, 6670, 5713 ,0, 0, 0 , - 3212, 966, 6449 ,6670, 6668, 3514 ,0, 0, 0 , - 3212, 6449, 7787 ,6670, 3514, 5713 ,0, 0, 0 , - 2338, 291, 6454 ,329, 328, 3513 ,0, 0, 0 , - 2338, 6454, 7788 ,329, 3513, 5714 ,0, 0, 0 , - 6454, 298, 2345 ,3513, 6259, 6258 ,0, 0, 0 , - 6454, 2345, 7788 ,3513, 6258, 5714 ,0, 0, 0 , - 2345, 297, 6456 ,6258, 5710, 3518 ,0, 0, 0 , - 2345, 6456, 7788 ,6258, 3518, 5714 ,0, 0, 0 , - 2339, 292, 6459 ,5717, 3517, 3516 ,0, 0, 0 , - 2339, 6459, 7789 ,5717, 3516, 5718 ,0, 0, 0 , - 6459, 918, 3120 ,3516, 6616, 985 ,0, 0, 0 , - 6459, 3120, 7789 ,3516, 985, 5718 ,0, 0, 0 , - 3120, 917, 6467 ,985, 984, 5715 ,0, 0, 0 , - 3120, 6467, 7789 ,985, 5715, 5718 ,0, 0, 0 , - 2336, 290, 6472 ,323, 6255, 7859 ,0, 0, 0 , - 2336, 6472, 7790 ,323, 7859, 5719 ,0, 0, 0 , - 6472, 307, 3202 ,7859, 1049, 6665 ,0, 0, 0 , - 6472, 3202, 7790 ,7859, 6665, 5719 ,0, 0, 0 , - 3202, 964, 6461 ,6665, 6664, 3521 ,0, 0, 0 , - 3202, 6461, 7790 ,6665, 3521, 5719 ,0, 0, 0 , - 2333, 287, 6464 ,325, 324, 3520 ,0, 0, 0 , - 2333, 6464, 7791 ,325, 3520, 5720 ,0, 0, 0 , - 6464, 294, 2340 ,3520, 6257, 6256 ,0, 0, 0 , - 6464, 2340, 7791 ,3520, 6256, 5720 ,0, 0, 0 , - 2340, 293, 6466 ,6256, 5716, 3525 ,0, 0, 0 , - 2340, 6466, 7791 ,6256, 3525, 5720 ,0, 0, 0 , - 2334, 288, 6469 ,5723, 3524, 3523 ,0, 0, 0 , - 2334, 6469, 7792 ,5723, 3523, 5724 ,0, 0, 0 , - 6469, 944, 3154 ,3523, 6637, 1017 ,0, 0, 0 , - 6469, 3154, 7792 ,3523, 1017, 5724 ,0, 0, 0 , - 3154, 943, 6476 ,1017, 1016, 5721 ,0, 0, 0 , - 3154, 6476, 7792 ,1017, 5721, 5724 ,0, 0, 0 , - 2331, 286, 6488 ,319, 5729, 7863 ,0, 0, 0 , - 2331, 6488, 7793 ,319, 7863, 5725 ,0, 0, 0 , - 6488, 963, 3195 ,7863, 6662, 1052 ,0, 0, 0 , - 6488, 3195, 7793 ,7863, 1052, 5725 ,0, 0, 0 , - 3195, 307, 6471 ,1052, 1049, 3528 ,0, 0, 0 , - 3195, 6471, 7793 ,1052, 3528, 5725 ,0, 0, 0 , - 2328, 283, 6473 ,321, 320, 3527 ,0, 0, 0 , - 2328, 6473, 7794 ,321, 3527, 5726 ,0, 0, 0 , - 6473, 290, 2335 ,3527, 6255, 6254 ,0, 0, 0 , - 6473, 2335, 7794 ,3527, 6254, 5726 ,0, 0, 0 , - 2335, 289, 6475 ,6254, 5722, 3532 ,0, 0, 0 , - 2335, 6475, 7794 ,6254, 3532, 5726 ,0, 0, 0 , - 2329, 284, 6478 ,5727, 3531, 3530 ,0, 0, 0 , - 2329, 6478, 7795 ,5727, 3530, 5728 ,0, 0, 0 , - 6478, 921, 3124 ,3530, 6617, 989 ,0, 0, 0 , - 6478, 3124, 7795 ,3530, 989, 5728 ,0, 0, 0 , - 3124, 920, 6480 ,989, 988, 3536 ,0, 0, 0 , - 3124, 6480, 7795 ,989, 3536, 5728 ,0, 0, 0 , - 2330, 285, 6483 ,5730, 3535, 3534 ,0, 0, 0 , - 2330, 6483, 7796 ,5730, 3534, 5731 ,0, 0, 0 , - 6483, 305, 2349 ,3534, 6261, 6260 ,0, 0, 0 , - 6483, 2349, 7796 ,3534, 6260, 5731 ,0, 0, 0 , - 2349, 304, 6489 ,6260, 3539, 3538 ,0, 0, 0 , - 2349, 6489, 7796 ,6260, 3538, 5731 ,0, 0, 0 , - 2326, 282, 6507 ,315, 6253, 7868 ,0, 0, 0 , - 2326, 6507, 7797 ,315, 7868, 5732 ,0, 0, 0 , - 6507, 301, 6491 ,7868, 6650, 3543 ,0, 0, 0 , - 6507, 6491, 7797 ,7868, 3543, 5732 ,0, 0, 0 , - 2323, 279, 6494 ,317, 316, 3542 ,0, 0, 0 , - 2323, 6494, 7798 ,317, 3542, 5733 ,0, 0, 0 , - 6494, 303, 2351 ,3542, 336, 335 ,0, 0, 0 , - 6494, 2351, 7798 ,3542, 335, 5733 ,0, 0, 0 , - 2351, 306, 6496 ,335, 5694, 3547 ,0, 0, 0 , - 2351, 6496, 7798 ,335, 3547, 5733 ,0, 0, 0 , - 2324, 280, 6499 ,5736, 3546, 3545 ,0, 0, 0 , - 2324, 6499, 7799 ,5736, 3545, 5737 ,0, 0, 0 , - 6499, 938, 3146 ,3545, 6633, 1009 ,0, 0, 0 , - 6499, 3146, 7799 ,3545, 1009, 5737 ,0, 0, 0 , - 3146, 937, 6511 ,1009, 1008, 5734 ,0, 0, 0 , - 3146, 6511, 7799 ,1009, 5734, 5737 ,0, 0, 0 , - 2321, 278, 6685 ,311, 5743, 7902 ,0, 0, 0 , - 2321, 6685, 7800 ,311, 7902, 5738 ,0, 0, 0 , - 6685, 312, 2356 ,7902, 340, 339 ,0, 0, 0 , - 6685, 2356, 7800 ,7902, 339, 5738 ,0, 0, 0 , - 2356, 315, 6501 ,339, 6266, 3550 ,0, 0, 0 , - 2356, 6501, 7800 ,339, 3550, 5738 ,0, 0, 0 , - 2318, 275, 6504 ,313, 312, 3549 ,0, 0, 0 , - 2318, 6504, 7801 ,313, 3549, 5739 ,0, 0, 0 , - 6504, 954, 3177 ,3549, 6654, 6653 ,0, 0, 0 , - 6504, 3177, 7801 ,3549, 6653, 5739 ,0, 0, 0 , - 3177, 301, 6506 ,6653, 6650, 3554 ,0, 0, 0 , - 3177, 6506, 7801 ,6653, 3554, 5739 ,0, 0, 0 , - 2319, 276, 6508 ,5740, 3553, 3552 ,0, 0, 0 , - 2319, 6508, 7802 ,5740, 3552, 5741 ,0, 0, 0 , - 6508, 282, 2325 ,3552, 6253, 6252 ,0, 0, 0 , - 6508, 2325, 7802 ,3552, 6252, 5741 ,0, 0, 0 , - 2325, 281, 6510 ,6252, 5735, 3558 ,0, 0, 0 , - 2325, 6510, 7802 ,6252, 3558, 5741 ,0, 0, 0 , - 2320, 277, 6514 ,5744, 3557, 3556 ,0, 0, 0 , - 2320, 6514, 7803 ,5744, 3556, 5745 ,0, 0, 0 , - 6514, 928, 3133 ,3556, 6622, 997 ,0, 0, 0 , - 6514, 3133, 7803 ,3556, 997, 5745 ,0, 0, 0 , - 3133, 927, 6686 ,997, 996, 5742 ,0, 0, 0 , - 3133, 6686, 7803 ,997, 5742, 5745 ,0, 0, 0 , - 2316, 274, 6623 ,307, 6251, 7888 ,0, 0, 0 , - 2316, 6623, 7804 ,307, 7888, 5747 ,0, 0, 0 , - 6623, 313, 2353 ,7888, 6262, 341 ,0, 0, 0 , - 6623, 2353, 7804 ,7888, 341, 5747 ,0, 0, 0 , - 2353, 312, 6684 ,341, 340, 5746 ,0, 0, 0 , - 2353, 6684, 7804 ,341, 5746, 5747 ,0, 0, 0 , - 2303, 265, 6518 ,299, 298, 3560 ,0, 0, 0 , - 2303, 6518, 7805 ,299, 3560, 5750 ,0, 0, 0 , - 6518, 318, 2359 ,3560, 3567, 6268 ,0, 0, 0 , - 6518, 2359, 7805 ,3560, 6268, 5750 ,0, 0, 0 , - 2359, 317, 6527 ,6268, 6267, 5748 ,0, 0, 0 , - 2359, 6527, 7805 ,6268, 5748, 5750 ,0, 0, 0 , - 2304, 266, 6526 ,5753, 5749, 3572 ,0, 0, 0 , - 2304, 6526, 7806 ,5753, 3572, 5754 ,0, 0, 0 , - 6526, 270, 2308 ,3572, 3571, 302 ,0, 0, 0 , - 6526, 2308, 7806 ,3572, 302, 5754 ,0, 0, 0 , - 2308, 240, 6532 ,302, 268, 5751 ,0, 0, 0 , - 2308, 6532, 7806 ,302, 5751, 5754 ,0, 0, 0 , - 2300, 261, 6521 ,295, 292, 3563 ,0, 0, 0 , - 2300, 6521, 7807 ,295, 3563, 5757 ,0, 0, 0 , - 6521, 265, 2306 ,3563, 298, 297 ,0, 0, 0 , - 6521, 2306, 7807 ,3563, 297, 5757 ,0, 0, 0 , - 2306, 268, 6670 ,297, 6247, 5755 ,0, 0, 0 , - 2306, 6670, 7807 ,297, 5755, 5757 ,0, 0, 0 , - 2294, 260, 6523 ,287, 5760, 7871 ,0, 0, 0 , - 2294, 6523, 7808 ,287, 7871, 5759 ,0, 0, 0 , - 6523, 261, 2298 ,7871, 292, 291 ,0, 0, 0 , - 6523, 2298, 7808 ,7871, 291, 5759 ,0, 0, 0 , - 2298, 263, 6536 ,291, 6244, 5758 ,0, 0, 0 , - 2298, 6536, 7808 ,291, 5758, 5759 ,0, 0, 0 , - 2293, 259, 6541 ,5761, 6241, 7874 ,0, 0, 0 , - 2293, 6541, 7809 ,5761, 7874, 5762 ,0, 0, 0 , - 6541, 316, 2360 ,7874, 344, 343 ,0, 0, 0 , - 6541, 2360, 7809 ,7874, 343, 5762 ,0, 0, 0 , - 2360, 318, 6524 ,343, 3567, 3566 ,0, 0, 0 , - 2360, 6524, 7809 ,343, 3566, 5762 ,0, 0, 0 , - 2290, 257, 6528 ,283, 5764, 7872 ,0, 0, 0 , - 2290, 6528, 7810 ,283, 7872, 5763 ,0, 0, 0 , - 6528, 317, 2358 ,7872, 6267, 345 ,0, 0, 0 , - 6528, 2358, 7810 ,7872, 345, 5763 ,0, 0, 0 , - 2358, 316, 6540 ,345, 344, 3581 ,0, 0, 0 , - 2358, 6540, 7810 ,345, 3581, 5763 ,0, 0, 0 , - 2289, 256, 6713 ,5765, 6240, 7908 ,0, 0, 0 , - 2289, 6713, 7811 ,5765, 7908, 5766 ,0, 0, 0 , - 6713, 271, 2309 ,7908, 304, 6248 ,0, 0, 0 , - 6713, 2309, 7811 ,7908, 6248, 5766 ,0, 0, 0 , - 2309, 270, 6529 ,6248, 3571, 3570 ,0, 0, 0 , - 2309, 6529, 7811 ,6248, 3570, 5766 ,0, 0, 0 , - 2285, 253, 6671 ,279, 6237, 7900 ,0, 0, 0 , - 2285, 6671, 7812 ,279, 7900, 5767 ,0, 0, 0 , - 6671, 268, 2305 ,7900, 6247, 6246 ,0, 0, 0 , - 6671, 2305, 7812 ,7900, 6246, 5767 ,0, 0, 0 , - 2305, 267, 6531 ,6246, 5752, 3575 ,0, 0, 0 , - 2305, 6531, 7812 ,6246, 3575, 5767 ,0, 0, 0 , - 2281, 250, 6537 ,275, 6234, 7873 ,0, 0, 0 , - 2281, 6537, 7813 ,275, 7873, 5768 ,0, 0, 0 , - 6537, 263, 2297 ,7873, 6244, 6243 ,0, 0, 0 , - 6537, 2297, 7813 ,7873, 6243, 5768 ,0, 0, 0 , - 2297, 262, 6679 ,6243, 6242, 3686 ,0, 0, 0 , - 2297, 6679, 7813 ,6243, 3686, 5768 ,0, 0, 0 , - 2276, 246, 6542 ,271, 5773, 7875 ,0, 0, 0 , - 2276, 6542, 7814 ,271, 7875, 5769 ,0, 0, 0 , - 6542, 259, 2292 ,7875, 6241, 289 ,0, 0, 0 , - 6542, 2292, 7814 ,7875, 289, 5769 ,0, 0, 0 , - 2292, 258, 6535 ,289, 288, 3578 ,0, 0, 0 , - 2292, 6535, 7814 ,289, 3578, 5769 ,0, 0, 0 , - 2273, 243, 6538 ,273, 272, 3577 ,0, 0, 0 , - 2273, 6538, 7815 ,273, 3577, 5772 ,0, 0, 0 , - 6538, 250, 2280 ,3577, 6234, 6233 ,0, 0, 0 , - 6538, 2280, 7815 ,3577, 6233, 5772 ,0, 0, 0 , - 2280, 249, 6724 ,6233, 6232, 5770 ,0, 0, 0 , - 2280, 6724, 7815 ,6233, 5770, 5772 ,0, 0, 0 , - 2275, 245, 6720 ,5774, 6229, 7912 ,0, 0, 0 , - 2275, 6720, 7816 ,5774, 7912, 5775 ,0, 0, 0 , - 6720, 255, 2287 ,7912, 6238, 285 ,0, 0, 0 , - 6720, 2287, 7816 ,7912, 285, 5775 ,0, 0, 0 , - 2287, 254, 6543 ,285, 284, 3580 ,0, 0, 0 , - 2287, 6543, 7816 ,285, 3580, 5775 ,0, 0, 0 , - 2270, 241, 6699 ,5778, 6227, 7906 ,0, 0, 0 , - 2270, 6699, 7817 ,5778, 7906, 5779 ,0, 0, 0 , - 6699, 1688, 4223 ,7906, 1895, 1934 ,0, 0, 0 , - 6699, 4223, 7817 ,7906, 1934, 5779 ,0, 0, 0 , - 4223, 1720, 6644 ,1934, 4082, 5776 ,0, 0, 0 , - 4223, 6644, 7817 ,1934, 5776, 5779 ,0, 0, 0 , - 2265, 237, 6650 ,5782, 6224, 7895 ,0, 0, 0 , - 2265, 6650, 7818 ,5782, 7895, 5783 ,0, 0, 0 , - 6650, 1721, 4228 ,7895, 1937, 1936 ,0, 0, 0 , - 6650, 4228, 7818 ,7895, 1936, 5783 ,0, 0, 0 , - 4228, 1724, 6546 ,1936, 4160, 5780 ,0, 0, 0 , - 4228, 6546, 7818 ,1936, 5780, 5783 ,0, 0, 0 , - 2254, 228, 6587 ,5786, 6214, 7882 ,0, 0, 0 , - 2254, 6587, 7819 ,5786, 7882, 5787 ,0, 0, 0 , - 6587, 233, 2259 ,7882, 6219, 6218 ,0, 0, 0 , - 6587, 2259, 7819 ,7882, 6218, 5787 ,0, 0, 0 , - 2259, 232, 6659 ,6218, 6217, 5784 ,0, 0, 0 , - 2259, 6659, 7819 ,6218, 5784, 5787 ,0, 0, 0 , - 2250, 225, 6568 ,251, 6211, 7878 ,0, 0, 0 , - 2250, 6568, 7820 ,251, 7878, 5789 ,0, 0, 0 , - 6568, 226, 2256 ,7878, 256, 255 ,0, 0, 0 , - 6568, 2256, 7820 ,7878, 255, 5789 ,0, 0, 0 , - 2256, 230, 6655 ,255, 6216, 5788 ,0, 0, 0 , - 2256, 6655, 7820 ,255, 5788, 5789 ,0, 0, 0 , - 2246, 221, 6654 ,253, 252, 7896 ,0, 0, 0 , - 2246, 6654, 7821 ,253, 7896, 5790 ,0, 0, 0 , - 6654, 239, 2266 ,7896, 6226, 6225 ,0, 0, 0 , - 6654, 2266, 7821 ,7896, 6225, 5790 ,0, 0, 0 , - 2266, 238, 6545 ,6225, 5781, 3585 ,0, 0, 0 , - 2266, 6545, 7821 ,6225, 3585, 5790 ,0, 0, 0 , - 2247, 222, 6548 ,5793, 3584, 3583 ,0, 0, 0 , - 2247, 6548, 7822 ,5793, 3583, 5794 ,0, 0, 0 , - 6548, 1736, 4242 ,3583, 7174, 1950 ,0, 0, 0 , - 6548, 4242, 7822 ,3583, 1950, 5794 ,0, 0, 0 , - 4242, 1735, 6551 ,1950, 1949, 5791 ,0, 0, 0 , - 4242, 6551, 7822 ,1950, 5791, 5794 ,0, 0, 0 , - 2244, 220, 6560 ,247, 6207, 7877 ,0, 0, 0 , - 2244, 6560, 7823 ,247, 7877, 5795 ,0, 0, 0 , - 6560, 224, 2248 ,7877, 6209, 6208 ,0, 0, 0 , - 6560, 2248, 7823 ,7877, 6208, 5795 ,0, 0, 0 , - 2248, 223, 6550 ,6208, 5792, 3588 ,0, 0, 0 , - 2248, 6550, 7823 ,6208, 3588, 5795 ,0, 0, 0 , - 2241, 217, 6553 ,249, 248, 3587 ,0, 0, 0 , - 2241, 6553, 7824 ,249, 3587, 5796 ,0, 0, 0 , - 6553, 1741, 4248 ,3587, 7178, 1954 ,0, 0, 0 , - 6553, 4248, 7824 ,3587, 1954, 5796 ,0, 0, 0 , - 4248, 1740, 6555 ,1954, 1953, 3592 ,0, 0, 0 , - 4248, 6555, 7824 ,1954, 3592, 5796 ,0, 0, 0 , - 2242, 218, 6557 ,5799, 3591, 3590 ,0, 0, 0 , - 2242, 6557, 7825 ,5799, 3590, 5800 ,0, 0, 0 , - 6557, 971, 3217 ,3590, 6671, 6672 ,0, 0, 0 , - 6557, 3217, 7825 ,3590, 6672, 5800 ,0, 0, 0 , - 3217, 972, 6564 ,6672, 6673, 5797 ,0, 0, 0 , - 3217, 6564, 7825 ,6672, 5797, 5800 ,0, 0, 0 , - 2239, 216, 6569 ,243, 6205, 7879 ,0, 0, 0 , - 2239, 6569, 7826 ,243, 7879, 5801 ,0, 0, 0 , - 6569, 225, 2249 ,7879, 6211, 6210 ,0, 0, 0 , - 6569, 2249, 7826 ,7879, 6210, 5801 ,0, 0, 0 , - 2249, 224, 6559 ,6210, 6209, 3595 ,0, 0, 0 , - 2249, 6559, 7826 ,6210, 3595, 5801 ,0, 0, 0 , - 2236, 213, 6561 ,245, 244, 3594 ,0, 0, 0 , - 2236, 6561, 7827 ,245, 3594, 5802 ,0, 0, 0 , - 6561, 220, 2243 ,3594, 6207, 6206 ,0, 0, 0 , - 6561, 2243, 7827 ,3594, 6206, 5802 ,0, 0, 0 , - 2243, 219, 6563 ,6206, 5798, 3599 ,0, 0, 0 , - 2243, 6563, 7827 ,6206, 3599, 5802 ,0, 0, 0 , - 2237, 214, 6565 ,5805, 3598, 3597 ,0, 0, 0 , - 2237, 6565, 7828 ,5805, 3597, 5806 ,0, 0, 0 , - 6565, 966, 3205 ,3597, 6668, 6667 ,0, 0, 0 , - 6565, 3205, 7828 ,3597, 6667, 5806 ,0, 0, 0 , - 3205, 965, 6573 ,6667, 6666, 5803 ,0, 0, 0 , - 3205, 6573, 7828 ,6667, 5803, 5806 ,0, 0, 0 , - 2234, 212, 6579 ,239, 6203, 7881 ,0, 0, 0 , - 2234, 6579, 7829 ,239, 7881, 5807 ,0, 0, 0 , - 6579, 227, 2252 ,7881, 6212, 257 ,0, 0, 0 , - 6579, 2252, 7829 ,7881, 257, 5807 ,0, 0, 0 , - 2252, 226, 6567 ,257, 256, 3602 ,0, 0, 0 , - 2252, 6567, 7829 ,257, 3602, 5807 ,0, 0, 0 , - 2231, 209, 6570 ,241, 240, 3601 ,0, 0, 0 , - 2231, 6570, 7830 ,241, 3601, 5808 ,0, 0, 0 , - 6570, 216, 2238 ,3601, 6205, 6204 ,0, 0, 0 , - 6570, 2238, 7830 ,3601, 6204, 5808 ,0, 0, 0 , - 2238, 215, 6572 ,6204, 5804, 3606 ,0, 0, 0 , - 2238, 6572, 7830 ,6204, 3606, 5808 ,0, 0, 0 , - 2232, 210, 6576 ,5811, 3605, 3604 ,0, 0, 0 , - 2232, 6576, 7831 ,5811, 3604, 5812 ,0, 0, 0 , - 6576, 311, 3199 ,3604, 1055, 1054 ,0, 0, 0 , - 6576, 3199, 7831 ,3604, 1054, 5812 ,0, 0, 0 , - 3199, 961, 6583 ,1054, 6661, 5809 ,0, 0, 0 , - 3199, 6583, 7831 ,1054, 5809, 5812 ,0, 0, 0 , - 2229, 208, 6588 ,235, 6201, 7883 ,0, 0, 0 , - 2229, 6588, 7832 ,235, 7883, 5813 ,0, 0, 0 , - 6588, 228, 2253 ,7883, 6214, 6213 ,0, 0, 0 , - 6588, 2253, 7832 ,7883, 6213, 5813 ,0, 0, 0 , - 2253, 227, 6578 ,6213, 6212, 3609 ,0, 0, 0 , - 2253, 6578, 7832 ,6213, 3609, 5813 ,0, 0, 0 , - 2226, 205, 6580 ,237, 236, 3608 ,0, 0, 0 , - 2226, 6580, 7833 ,237, 3608, 5814 ,0, 0, 0 , - 6580, 212, 2233 ,3608, 6203, 6202 ,0, 0, 0 , - 6580, 2233, 7833 ,3608, 6202, 5814 ,0, 0, 0 , - 2233, 211, 6582 ,6202, 5810, 3613 ,0, 0, 0 , - 2233, 6582, 7833 ,6202, 3613, 5814 ,0, 0, 0 , - 2227, 206, 6584 ,5817, 3612, 3611 ,0, 0, 0 , - 2227, 6584, 7834 ,5817, 3611, 5818 ,0, 0, 0 , - 6584, 961, 3192 ,3611, 6661, 6660 ,0, 0, 0 , - 6584, 3192, 7834 ,3611, 6660, 5818 ,0, 0, 0 , - 3192, 962, 6592 ,6660, 6659, 5815 ,0, 0, 0 , - 3192, 6592, 7834 ,6660, 5815, 5818 ,0, 0, 0 , - 2224, 204, 6598 ,231, 6199, 7886 ,0, 0, 0 , - 2224, 6598, 7835 ,231, 7886, 5819 ,0, 0, 0 , - 6598, 234, 2260 ,7886, 6221, 6220 ,0, 0, 0 , - 6598, 2260, 7835 ,7886, 6220, 5819 ,0, 0, 0 , - 2260, 233, 6586 ,6220, 6219, 3616 ,0, 0, 0 , - 2260, 6586, 7835 ,6220, 3616, 5819 ,0, 0, 0 , - 2221, 201, 6589 ,233, 232, 3615 ,0, 0, 0 , - 2221, 6589, 7836 ,233, 3615, 5820 ,0, 0, 0 , - 6589, 208, 2228 ,3615, 6201, 6200 ,0, 0, 0 , - 6589, 2228, 7836 ,3615, 6200, 5820 ,0, 0, 0 , - 2228, 207, 6591 ,6200, 5816, 3620 ,0, 0, 0 , - 2228, 6591, 7836 ,6200, 3620, 5820 ,0, 0, 0 , - 2222, 202, 6595 ,5823, 3619, 3618 ,0, 0, 0 , - 2222, 6595, 7837 ,5823, 3618, 5824 ,0, 0, 0 , - 6595, 960, 3188 ,3618, 6658, 6657 ,0, 0, 0 , - 6595, 3188, 7837 ,3618, 6657, 5824 ,0, 0, 0 , - 3188, 956, 6602 ,6657, 5698, 5821 ,0, 0, 0 , - 3188, 6602, 7837 ,6657, 5821, 5824 ,0, 0, 0 , - 2219, 200, 6627 ,227, 6197, 7889 ,0, 0, 0 , - 2219, 6627, 7838 ,227, 7889, 5825 ,0, 0, 0 , - 6627, 235, 2261 ,7889, 6223, 6222 ,0, 0, 0 , - 6627, 2261, 7838 ,7889, 6222, 5825 ,0, 0, 0 , - 2261, 234, 6597 ,6222, 6221, 3623 ,0, 0, 0 , - 2261, 6597, 7838 ,6222, 3623, 5825 ,0, 0, 0 , - 2216, 197, 6599 ,229, 228, 3622 ,0, 0, 0 , - 2216, 6599, 7839 ,229, 3622, 5826 ,0, 0, 0 , - 6599, 204, 2223 ,3622, 6199, 6198 ,0, 0, 0 , - 6599, 2223, 7839 ,3622, 6198, 5826 ,0, 0, 0 , - 2223, 203, 6601 ,6198, 5822, 3627 ,0, 0, 0 , - 2223, 6601, 7839 ,6198, 3627, 5826 ,0, 0, 0 , - 2217, 198, 6603 ,5829, 3626, 3625 ,0, 0, 0 , - 2217, 6603, 7840 ,5829, 3625, 5830 ,0, 0, 0 , - 6603, 301, 3168 ,3625, 6650, 6649 ,0, 0, 0 , - 6603, 3168, 7840 ,3625, 6649, 5830 ,0, 0, 0 , - 3168, 952, 6606 ,6649, 6648, 5827 ,0, 0, 0 , - 3168, 6606, 7840 ,6649, 5827, 5830 ,0, 0, 0 , - 2212, 194, 6628 ,5831, 6195, 7890 ,0, 0, 0 , - 2212, 6628, 7841 ,5831, 7890, 5832 ,0, 0, 0 , - 6628, 200, 2218 ,7890, 6197, 6196 ,0, 0, 0 , - 6628, 2218, 7841 ,7890, 6196, 5832 ,0, 0, 0 , - 2218, 199, 6605 ,6196, 5828, 3631 ,0, 0, 0 , - 2218, 6605, 7841 ,6196, 3631, 5832 ,0, 0, 0 , - 2213, 195, 6608 ,5835, 3630, 3629 ,0, 0, 0 , - 2213, 6608, 7842 ,5835, 3629, 5836 ,0, 0, 0 , - 6608, 953, 3172 ,3629, 6652, 6651 ,0, 0, 0 , - 6608, 3172, 7842 ,3629, 6651, 5836 ,0, 0, 0 , - 3172, 950, 6611 ,6651, 6645, 5833 ,0, 0, 0 , - 3172, 6611, 7842 ,6651, 5833, 5836 ,0, 0, 0 , - 2209, 192, 6632 ,219, 6194, 7891 ,0, 0, 0 , - 2209, 6632, 7843 ,219, 7891, 5837 ,0, 0, 0 , - 6632, 193, 2214 ,7891, 224, 223 ,0, 0, 0 , - 6632, 2214, 7843 ,7891, 223, 5837 ,0, 0, 0 , - 2214, 196, 6610 ,223, 5834, 3634 ,0, 0, 0 , - 2214, 6610, 7843 ,223, 3634, 5837 ,0, 0, 0 , - 2206, 189, 6612 ,221, 220, 3633 ,0, 0, 0 , - 2206, 6612, 7844 ,221, 3633, 5840 ,0, 0, 0 , - 6612, 950, 3163 ,3633, 6645, 1025 ,0, 0, 0 , - 6612, 3163, 7844 ,3633, 1025, 5840 ,0, 0, 0 , - 3163, 299, 6615 ,1025, 1024, 5838 ,0, 0, 0 , - 3163, 6615, 7844 ,1025, 5838, 5840 ,0, 0, 0 , - 2204, 188, 6636 ,215, 6190, 7892 ,0, 0, 0 , - 2204, 6636, 7845 ,215, 7892, 5841 ,0, 0, 0 , - 6636, 191, 2207 ,7892, 6192, 6191 ,0, 0, 0 , - 6636, 2207, 7845 ,7892, 6191, 5841 ,0, 0, 0 , - 2207, 190, 6614 ,6191, 5839, 3637 ,0, 0, 0 , - 2207, 6614, 7845 ,6191, 3637, 5841 ,0, 0, 0 , - 2202, 186, 6619 ,217, 216, 3639 ,0, 0, 0 , - 2202, 6619, 7846 ,217, 3639, 5844 ,0, 0, 0 , - 6619, 314, 2354 ,3639, 6264, 6263 ,0, 0, 0 , - 6619, 2354, 7846 ,3639, 6263, 5844 ,0, 0, 0 , - 2354, 313, 6622 ,6263, 6262, 5842 ,0, 0, 0 , - 2354, 6622, 7846 ,6263, 5842, 5844 ,0, 0, 0 , - 2197, 182, 6637 ,213, 212, 7893 ,0, 0, 0 , - 2197, 6637, 7847 ,213, 7893, 5845 ,0, 0, 0 , - 6637, 188, 2203 ,7893, 6190, 6189 ,0, 0, 0 , - 6637, 2203, 7847 ,7893, 6189, 5845 ,0, 0, 0 , - 2203, 187, 6621 ,6189, 5843, 3643 ,0, 0, 0 , - 2203, 6621, 7847 ,6189, 3643, 5845 ,0, 0, 0 , - 2198, 183, 6624 ,5848, 3642, 3641 ,0, 0, 0 , - 2198, 6624, 7848 ,5848, 3641, 5849 ,0, 0, 0 , - 6624, 274, 2315 ,3641, 6251, 6250 ,0, 0, 0 , - 6624, 2315, 7848 ,3641, 6250, 5849 ,0, 0, 0 , - 2315, 273, 6692 ,6250, 6249, 5846 ,0, 0, 0 , - 2315, 6692, 7848 ,6250, 5846, 5849 ,0, 0, 0 , - 2195, 181, 6735 ,207, 6186, 7915 ,0, 0, 0 , - 2195, 6735, 7849 ,207, 7915, 5850 ,0, 0, 0 , - 6735, 231, 2262 ,7915, 260, 259 ,0, 0, 0 , - 6735, 2262, 7849 ,7915, 259, 5850 ,0, 0, 0 , - 2262, 235, 6626 ,259, 6223, 3646 ,0, 0, 0 , - 2262, 6626, 7849 ,259, 3646, 5850 ,0, 0, 0 , - 2191, 177, 6629 ,209, 208, 3645 ,0, 0, 0 , - 2191, 6629, 7850 ,209, 3645, 5851 ,0, 0, 0 , - 6629, 194, 2211 ,3645, 6195, 225 ,0, 0, 0 , - 6629, 2211, 7850 ,3645, 225, 5851 ,0, 0, 0 , - 2211, 193, 6631 ,225, 224, 3650 ,0, 0, 0 , - 2211, 6631, 7850 ,225, 3650, 5851 ,0, 0, 0 , - 2192, 178, 6633 ,5852, 3649, 3648 ,0, 0, 0 , - 2192, 6633, 7851 ,5852, 3648, 5853 ,0, 0, 0 , - 6633, 192, 2208 ,3648, 6194, 6193 ,0, 0, 0 , - 6633, 2208, 7851 ,3648, 6193, 5853 ,0, 0, 0 , - 2208, 191, 6635 ,6193, 6192, 3654 ,0, 0, 0 , - 2208, 6635, 7851 ,6193, 3654, 5853 ,0, 0, 0 , - 2193, 179, 6638 ,5856, 3653, 3652 ,0, 0, 0 , - 2193, 6638, 7852 ,5856, 3652, 5857 ,0, 0, 0 , - 6638, 182, 2200 ,3652, 212, 211 ,0, 0, 0 , - 6638, 2200, 7852 ,3652, 211, 5857 ,0, 0, 0 , - 2200, 185, 6740 ,211, 6188, 5854 ,0, 0, 0 , - 2200, 6740, 7852 ,211, 5854, 5857 ,0, 0, 0 , - 2189, 176, 6725 ,203, 6184, 7913 ,0, 0, 0 , - 2189, 6725, 7853 ,203, 7913, 5859 ,0, 0, 0 , - 6725, 249, 2279 ,7913, 6232, 6231 ,0, 0, 0 , - 6725, 2279, 7853 ,7913, 6231, 5859 ,0, 0, 0 , - 2279, 248, 6676 ,6231, 6230, 5858 ,0, 0, 0 , - 2279, 6676, 7853 ,6231, 5858, 5859 ,0, 0, 0 , - 2187, 174, 6660 ,5862, 6182, 7897 ,0, 0, 0 , - 2187, 6660, 7854 ,5862, 7897, 5863 ,0, 0, 0 , - 6660, 232, 2258 ,7897, 6217, 261 ,0, 0, 0 , - 6660, 2258, 7854 ,7897, 261, 5863 ,0, 0, 0 , - 2258, 231, 6734 ,261, 260, 5860 ,0, 0, 0 , - 2258, 6734, 7854 ,261, 5860, 5863 ,0, 0, 0 , - 2184, 171, 6664 ,199, 5869, 7898 ,0, 0, 0 , - 2184, 6664, 7855 ,199, 7898, 5864 ,0, 0, 0 , - 6664, 252, 2283 ,7898, 6235, 281 ,0, 0, 0 , - 6664, 2283, 7855 ,7898, 281, 5864 ,0, 0, 0 , - 2283, 251, 6640 ,281, 280, 3657 ,0, 0, 0 , - 2283, 6640, 7855 ,281, 3657, 5864 ,0, 0, 0 , - 2181, 168, 6641 ,201, 200, 3656 ,0, 0, 0 , - 2181, 6641, 7856 ,201, 3656, 5865 ,0, 0, 0 , - 6641, 240, 2271 ,3656, 268, 267 ,0, 0, 0 , - 6641, 2271, 7856 ,3656, 267, 5865 ,0, 0, 0 , - 2271, 242, 6643 ,267, 5777, 3661 ,0, 0, 0 , - 2271, 6643, 7856 ,267, 3661, 5865 ,0, 0, 0 , - 2182, 169, 6646 ,5866, 3660, 3659 ,0, 0, 0 , - 2182, 6646, 7857 ,5866, 3659, 5867 ,0, 0, 0 , - 6646, 1792, 4311 ,3659, 2001, 2000 ,0, 0, 0 , - 6646, 4311, 7857 ,3659, 2000, 5867 ,0, 0, 0 , - 4311, 1795, 6648 ,2000, 7214, 3665 ,0, 0, 0 , - 4311, 6648, 7857 ,2000, 3665, 5867 ,0, 0, 0 , - 2183, 170, 6651 ,5870, 3664, 3663 ,0, 0, 0 , - 2183, 6651, 7858 ,5870, 3663, 5871 ,0, 0, 0 , - 6651, 237, 2264 ,3663, 6224, 265 ,0, 0, 0 , - 6651, 2264, 7858 ,3663, 265, 5871 ,0, 0, 0 , - 2264, 236, 6665 ,265, 264, 5868 ,0, 0, 0 , - 2264, 6665, 7858 ,265, 5868, 5871 ,0, 0, 0 , - 2179, 167, 6666 ,195, 5878, 7899 ,0, 0, 0 , - 2179, 6666, 7859 ,195, 7899, 5872 ,0, 0, 0 , - 6666, 236, 2267 ,7899, 264, 263 ,0, 0, 0 , - 6666, 2267, 7859 ,7899, 263, 5872 ,0, 0, 0 , - 2267, 239, 6653 ,263, 6226, 3668 ,0, 0, 0 , - 2267, 6653, 7859 ,263, 3668, 5872 ,0, 0, 0 , - 2176, 164, 6656 ,197, 196, 3667 ,0, 0, 0 , - 2176, 6656, 7860 ,197, 3667, 5873 ,0, 0, 0 , - 6656, 230, 2255 ,3667, 6216, 6215 ,0, 0, 0 , - 6656, 2255, 7860 ,3667, 6215, 5873 ,0, 0, 0 , - 2255, 229, 6658 ,6215, 5785, 3672 ,0, 0, 0 , - 2255, 6658, 7860 ,6215, 3672, 5873 ,0, 0, 0 , - 2177, 165, 6661 ,5876, 3671, 3670 ,0, 0, 0 , - 2177, 6661, 7861 ,5876, 3670, 5877 ,0, 0, 0 , - 6661, 174, 2186 ,3670, 6182, 205 ,0, 0, 0 , - 6661, 2186, 7861 ,3670, 205, 5877 ,0, 0, 0 , - 2186, 173, 6675 ,205, 204, 5874 ,0, 0, 0 , - 2186, 6675, 7861 ,205, 5874, 5877 ,0, 0, 0 , - 2178, 166, 6674 ,5879, 5875, 3683 ,0, 0, 0 , - 2178, 6674, 7862 ,5879, 3683, 5880 ,0, 0, 0 , - 6674, 162, 2172 ,3683, 3682, 6181 ,0, 0, 0 , - 6674, 2172, 7862 ,3683, 6181, 5880 ,0, 0, 0 , - 2172, 161, 6667 ,6181, 3675, 3674 ,0, 0, 0 , - 2172, 6667, 7862 ,6181, 3674, 5880 ,0, 0, 0 , - 2174, 163, 6680 ,191, 5883, 7901 ,0, 0, 0 , - 2174, 6680, 7863 ,191, 7901, 5881 ,0, 0, 0 , - 6680, 262, 2301 ,7901, 6242, 6245 ,0, 0, 0 , - 6680, 2301, 7863 ,7901, 6245, 5881 ,0, 0, 0 , - 2301, 264, 6669 ,6245, 5756, 3679 ,0, 0, 0 , - 2301, 6669, 7863 ,6245, 3679, 5881 ,0, 0, 0 , - 2171, 160, 6672 ,193, 192, 3678 ,0, 0, 0 , - 2171, 6672, 7864 ,193, 3678, 5882 ,0, 0, 0 , - 6672, 253, 2284 ,3678, 6237, 6236 ,0, 0, 0 , - 6672, 2284, 7864 ,3678, 6236, 5882 ,0, 0, 0 , - 2284, 252, 6663 ,6236, 6235, 3676 ,0, 0, 0 , - 2284, 6663, 7864 ,6236, 3676, 5882 ,0, 0, 0 , - 2173, 162, 6677 ,5884, 3682, 3681 ,0, 0, 0 , - 2173, 6677, 7865 ,5884, 3681, 5885 ,0, 0, 0 , - 6677, 248, 2278 ,3681, 6230, 277 ,0, 0, 0 , - 6677, 2278, 7865 ,3681, 277, 5885 ,0, 0, 0 , - 2278, 247, 6681 ,277, 276, 3685 ,0, 0, 0 , - 2278, 6681, 7865 ,277, 3685, 5885 ,0, 0, 0 , - 2167, 157, 6688 ,189, 188, 7903 ,0, 0, 0 , - 2167, 6688, 7866 ,189, 7903, 5888 ,0, 0, 0 , - 6688, 931, 3137 ,7903, 6625, 1001 ,0, 0, 0 , - 6688, 3137, 7866 ,7903, 1001, 5888 ,0, 0, 0 , - 3137, 930, 6932 ,1001, 1000, 5886 ,0, 0, 0 , - 3137, 6932, 7866 ,1001, 5886, 5888 ,0, 0, 0 , - 2160, 152, 6693 ,179, 5894, 7904 ,0, 0, 0 , - 2160, 6693, 7867 ,179, 7904, 5889 ,0, 0, 0 , - 6693, 273, 2314 ,7904, 6249, 309 ,0, 0, 0 , - 6693, 2314, 7867 ,7904, 309, 5889 ,0, 0, 0 , - 2314, 272, 6683 ,309, 308, 3689 ,0, 0, 0 , - 2314, 6683, 7867 ,309, 3689, 5889 ,0, 0, 0 , - 2158, 150, 6689 ,181, 180, 3688 ,0, 0, 0 , - 2158, 6689, 7868 ,181, 3688, 5892 ,0, 0, 0 , - 6689, 157, 2169 ,3688, 188, 187 ,0, 0, 0 , - 6689, 2169, 7868 ,3688, 187, 5892 ,0, 0, 0 , - 2169, 159, 6853 ,187, 6180, 5890 ,0, 0, 0 , - 2169, 6853, 7868 ,187, 5890, 5892 ,0, 0, 0 , - 2159, 151, 6852 ,5895, 5891, 7941 ,0, 0, 0 , - 2159, 6852, 7869 ,5895, 7941, 5896 ,0, 0, 0 , - 6852, 156, 2164 ,7941, 6178, 6177 ,0, 0, 0 , - 6852, 2164, 7869 ,7941, 6177, 5896 ,0, 0, 0 , - 2164, 155, 6694 ,6177, 6176, 5893 ,0, 0, 0 , - 2164, 6694, 7869 ,6177, 5893, 5896 ,0, 0, 0 , - 2156, 149, 6741 ,175, 6173, 7916 ,0, 0, 0 , - 2156, 6741, 7870 ,175, 7916, 5897 ,0, 0, 0 , - 6741, 185, 2199 ,7916, 6188, 6187 ,0, 0, 0 , - 6741, 2199, 7870 ,7916, 6187, 5897 ,0, 0, 0 , - 2199, 184, 6691 ,6187, 5847, 3692 ,0, 0, 0 , - 2199, 6691, 7870 ,6187, 3692, 5897 ,0, 0, 0 , - 2153, 146, 6695 ,177, 176, 3691 ,0, 0, 0 , - 2153, 6695, 7871 ,177, 3691, 5900 ,0, 0, 0 , - 6695, 155, 2163 ,3691, 6176, 6175 ,0, 0, 0 , - 6695, 2163, 7871 ,3691, 6175, 5900 ,0, 0, 0 , - 2163, 154, 6848 ,6175, 6174, 5898 ,0, 0, 0 , - 2163, 6848, 7871 ,6175, 5898, 5900 ,0, 0, 0 , - 2141, 136, 7873 ,166, 165, 5907 ,0, 0, 0 , - 2141, 7873, 7872 ,166, 5907, 5903 ,0, 0, 0 , - 7873, 144, 2147 ,5907, 172, 6167 ,0, 0, 0 , - 7873, 2147, 7872 ,5907, 6167, 5903 ,0, 0, 0 , - 2147, 143, 6745 ,6167, 6166, 5901 ,0, 0, 0 , - 2147, 6745, 7872 ,6167, 5901, 5903 ,0, 0, 0 , - 2139, 138, 7875 ,162, 159, 5905 ,0, 0, 0 , - 2139, 7875, 7874 ,162, 5905, 5904 ,0, 0, 0 , - 7875, 141, 2143 ,5905, 6165, 6164 ,0, 0, 0 , - 7875, 2143, 7874 ,5905, 6164, 5904 ,0, 0, 0 , - 2143, 140, 6750 ,6164, 6163, 3730 ,0, 0, 0 , - 2143, 6750, 7874 ,6164, 3730, 5904 ,0, 0, 0 , - 2137, 128, 6703 ,158, 6155, 7907 ,0, 0, 0 , - 2137, 6703, 7876 ,158, 7907, 5906 ,0, 0, 0 , - 6703, 136, 2144 ,7907, 165, 164 ,0, 0, 0 , - 6703, 2144, 7876 ,7907, 164, 5906 ,0, 0, 0 , - 2144, 141, 7875 ,164, 6165, 5905 ,0, 0, 0 , - 2144, 7875, 7876 ,164, 5905, 5906 ,0, 0, 0 , - 7878, 137, 6717 ,5908, 7910, 7909 ,0, 0, 0 , - 7878, 6717, 7877 ,5908, 7909, 5909 ,0, 0, 0 , - 6717, 145, 2150 ,7909, 6168, 173 ,0, 0, 0 , - 6717, 2150, 7877 ,7909, 173, 5909 ,0, 0, 0 , - 2150, 144, 7873 ,173, 172, 5907 ,0, 0, 0 , - 2150, 7873, 7877 ,173, 5907, 5909 ,0, 0, 0 , - 2134, 135, 6757 ,154, 6161, 7922 ,0, 0, 0 , - 2134, 6757, 7879 ,154, 7922, 5910 ,0, 0, 0 , - 6757, 1829, 4361 ,7922, 7235, 7234 ,0, 0, 0 , - 6757, 4361, 7879 ,7922, 7234, 5910 ,0, 0, 0 , - 4361, 1828, 6697 ,7234, 7233, 3695 ,0, 0, 0 , - 4361, 6697, 7879 ,7234, 3695, 5910 ,0, 0, 0 , - 2131, 132, 6700 ,156, 155, 3694 ,0, 0, 0 , - 2131, 6700, 7880 ,156, 3694, 5913 ,0, 0, 0 , - 6700, 241, 2312 ,3694, 6227, 305 ,0, 0, 0 , - 6700, 2312, 7880 ,3694, 305, 5913 ,0, 0, 0 , - 2312, 271, 6712 ,305, 304, 5911 ,0, 0, 0 , - 2312, 6712, 7880 ,305, 5911, 5913 ,0, 0, 0 , - 2127, 129, 6758 ,152, 151, 7923 ,0, 0, 0 , - 2127, 6758, 7881 ,152, 7923, 5916 ,0, 0, 0 , - 6758, 135, 2133 ,7923, 6161, 6160 ,0, 0, 0 , - 6758, 2133, 7881 ,7923, 6160, 5916 ,0, 0, 0 , - 2133, 134, 6708 ,6160, 6159, 5914 ,0, 0, 0 , - 2133, 6708, 7881 ,6160, 5914, 5916 ,0, 0, 0 , - 2123, 107, 6827 ,148, 147, 7937 ,0, 0, 0 , - 2123, 6827, 7882 ,148, 7937, 5919 ,0, 0, 0 , - 6827, 131, 2128 ,7937, 6157, 6156 ,0, 0, 0 , - 6827, 2128, 7882 ,7937, 6156, 5919 ,0, 0, 0 , - 2128, 130, 6707 ,6156, 5915, 5917 ,0, 0, 0 , - 2128, 6707, 7882 ,6156, 5917, 5919 ,0, 0, 0 , - 2121, 126, 6718 ,142, 5925, 7911 ,0, 0, 0 , - 2121, 6718, 7883 ,142, 7911, 5920 ,0, 0, 0 , - 6718, 137, 7878 ,7911, 7910, 5908 ,0, 0, 0 , - 6718, 7878, 7883 ,7911, 5908, 5920 ,0, 0, 0 , - 7878, 136, 6702 ,5908, 165, 3698 ,0, 0, 0 , - 7878, 6702, 7883 ,5908, 3698, 5920 ,0, 0, 0 , - 2118, 123, 6704 ,144, 143, 3697 ,0, 0, 0 , - 2118, 6704, 7884 ,144, 3697, 5921 ,0, 0, 0 , - 6704, 128, 2124 ,3697, 6155, 6154 ,0, 0, 0 , - 6704, 2124, 7884 ,3697, 6154, 5921 ,0, 0, 0 , - 2124, 127, 6706 ,6154, 5918, 3702 ,0, 0, 0 , - 2124, 6706, 7884 ,6154, 3702, 5921 ,0, 0, 0 , - 2119, 124, 6709 ,5922, 3701, 3700 ,0, 0, 0 , - 2119, 6709, 7885 ,5922, 3700, 5923 ,0, 0, 0 , - 6709, 134, 2132 ,3700, 6159, 6158 ,0, 0, 0 , - 6709, 2132, 7885 ,3700, 6158, 5923 ,0, 0, 0 , - 2132, 133, 6711 ,6158, 5912, 3706 ,0, 0, 0 , - 2132, 6711, 7885 ,6158, 3706, 5923 ,0, 0, 0 , - 2120, 125, 6714 ,5926, 3705, 3704 ,0, 0, 0 , - 2120, 6714, 7886 ,5926, 3704, 5927 ,0, 0, 0 , - 6714, 256, 2288 ,3704, 6240, 6239 ,0, 0, 0 , - 6714, 2288, 7886 ,3704, 6239, 5927 ,0, 0, 0 , - 2288, 255, 6719 ,6239, 6238, 5924 ,0, 0, 0 , - 2288, 6719, 7886 ,6239, 5924, 5927 ,0, 0, 0 , - 2116, 122, 6729 ,138, 6153, 7914 ,0, 0, 0 , - 2116, 6729, 7887 ,138, 7914, 5928 ,0, 0, 0 , - 6729, 142, 2151 ,7914, 169, 6169 ,0, 0, 0 , - 6729, 2151, 7887 ,7914, 6169, 5928 ,0, 0, 0 , - 2151, 145, 6716 ,6169, 6168, 3709 ,0, 0, 0 , - 2151, 6716, 7887 ,6169, 3709, 5928 ,0, 0, 0 , - 2113, 119, 6721 ,140, 139, 3708 ,0, 0, 0 , - 2113, 6721, 7888 ,140, 3708, 5929 ,0, 0, 0 , - 6721, 245, 2274 ,3708, 6229, 6228 ,0, 0, 0 , - 6721, 2274, 7888 ,3708, 6228, 5929 ,0, 0, 0 , - 2274, 244, 6723 ,6228, 5771, 3713 ,0, 0, 0 , - 2274, 6723, 7888 ,6228, 3713, 5929 ,0, 0, 0 , - 2114, 120, 6726 ,5932, 3712, 3711 ,0, 0, 0 , - 2114, 6726, 7889 ,5932, 3711, 5933 ,0, 0, 0 , - 6726, 176, 2188 ,3711, 6184, 6183 ,0, 0, 0 , - 6726, 2188, 7889 ,3711, 6183, 5933 ,0, 0, 0 , - 2188, 175, 6733 ,6183, 5861, 5930 ,0, 0, 0 , - 2188, 6733, 7889 ,6183, 5930, 5933 ,0, 0, 0 , - 2108, 115, 6746 ,136, 135, 7917 ,0, 0, 0 , - 2108, 6746, 7890 ,136, 7917, 5934 ,0, 0, 0 , - 6746, 143, 2146 ,7917, 6166, 170 ,0, 0, 0 , - 6746, 2146, 7890 ,7917, 170, 5934 ,0, 0, 0 , - 2146, 142, 6728 ,170, 169, 3717 ,0, 0, 0 , - 2146, 6728, 7890 ,170, 3717, 5934 ,0, 0, 0 , - 2109, 116, 6730 ,5935, 3716, 3715 ,0, 0, 0 , - 2109, 6730, 7891 ,5935, 3715, 5936 ,0, 0, 0 , - 6730, 122, 2115 ,3715, 6153, 6152 ,0, 0, 0 , - 6730, 2115, 7891 ,3715, 6152, 5936 ,0, 0, 0 , - 2115, 121, 6732 ,6152, 5931, 3721 ,0, 0, 0 , - 2115, 6732, 7891 ,6152, 3721, 5936 ,0, 0, 0 , - 2110, 117, 6736 ,5939, 3720, 3719 ,0, 0, 0 , - 2110, 6736, 7892 ,5939, 3719, 5940 ,0, 0, 0 , - 6736, 181, 2194 ,3719, 6186, 6185 ,0, 0, 0 , - 6736, 2194, 7892 ,3719, 6185, 5940 ,0, 0, 0 , - 2194, 180, 6739 ,6185, 5855, 5937 ,0, 0, 0 , - 2194, 6739, 7892 ,6185, 5937, 5940 ,0, 0, 0 , - 2106, 114, 6747 ,130, 6151, 7918 ,0, 0, 0 , - 2106, 6747, 7893 ,130, 7918, 5941 ,0, 0, 0 , - 6747, 115, 2111 ,7918, 135, 134 ,0, 0, 0 , - 6747, 2111, 7893 ,7918, 134, 5941 ,0, 0, 0 , - 2111, 118, 6738 ,134, 5938, 3724 ,0, 0, 0 , - 2111, 6738, 7893 ,134, 3724, 5941 ,0, 0, 0 , - 2104, 112, 6742 ,132, 131, 3723 ,0, 0, 0 , - 2104, 6742, 7894 ,132, 3723, 5944 ,0, 0, 0 , - 6742, 149, 2155 ,3723, 6173, 6172 ,0, 0, 0 , - 6742, 2155, 7894 ,3723, 6172, 5944 ,0, 0, 0 , - 2155, 148, 6837 ,6172, 6171, 5942 ,0, 0, 0 , - 2155, 6837, 7894 ,6172, 5942, 5944 ,0, 0, 0 , - 2102, 111, 6751 ,126, 6149, 7919 ,0, 0, 0 , - 2102, 6751, 7895 ,126, 7919, 5945 ,0, 0, 0 , - 6751, 140, 2142 ,7919, 6163, 6162 ,0, 0, 0 , - 6751, 2142, 7895 ,7919, 6162, 5945 ,0, 0, 0 , - 2142, 139, 6744 ,6162, 5902, 3727 ,0, 0, 0 , - 2142, 6744, 7895 ,6162, 3727, 5945 ,0, 0, 0 , - 2099, 108, 6748 ,128, 127, 3726 ,0, 0, 0 , - 2099, 6748, 7896 ,128, 3726, 5948 ,0, 0, 0 , - 6748, 114, 2105 ,3726, 6151, 6150 ,0, 0, 0 , - 6748, 2105, 7896 ,3726, 6150, 5948 ,0, 0, 0 , - 2105, 113, 6836 ,6150, 5943, 5946 ,0, 0, 0 , - 2105, 6836, 7896 ,6150, 5946, 5948 ,0, 0, 0 , - 2095, 105, 6752 ,124, 123, 3729 ,0, 0, 0 , - 2095, 6752, 7897 ,124, 3729, 5951 ,0, 0, 0 , - 6752, 111, 2101 ,3729, 6149, 6148 ,0, 0, 0 , - 6752, 2101, 7897 ,3729, 6148, 5951 ,0, 0, 0 , - 2101, 110, 6832 ,6148, 6147, 5949 ,0, 0, 0 , - 2101, 6832, 7897 ,6148, 5949, 5951 ,0, 0, 0 , - 2091, 102, 7899 ,5954, 6142, 5983 ,0, 0, 0 , - 2091, 7899, 7898 ,5954, 5983, 5955 ,0, 0, 0 , - 7899, 59, 6768 ,5983, 61, 5952 ,0, 0, 0 , - 7899, 6768, 7898 ,5983, 5952, 5955 ,0, 0, 0 , - 2088, 100, 6763 ,114, 6141, 7926 ,0, 0, 0 , - 2088, 6763, 7900 ,114, 7926, 5956 ,0, 0, 0 , - 6763, 1861, 4405 ,7926, 7253, 7252 ,0, 0, 0 , - 6763, 4405, 7900 ,7926, 7252, 5956 ,0, 0, 0 , - 4405, 1860, 6754 ,7252, 7251, 3733 ,0, 0, 0 , - 4405, 6754, 7900 ,7252, 3733, 5956 ,0, 0, 0 , - 2085, 97, 6759 ,116, 115, 3732 ,0, 0, 0 , - 2085, 6759, 7901 ,116, 3732, 5959 ,0, 0, 0 , - 6759, 129, 2129 ,3732, 151, 150 ,0, 0, 0 , - 6759, 2129, 7901 ,3732, 150, 5959 ,0, 0, 0 , - 2129, 131, 6826 ,150, 6157, 5957 ,0, 0, 0 , - 2129, 6826, 7901 ,150, 5957, 5959 ,0, 0, 0 , - 2086, 98, 6825 ,5962, 5958, 7936 ,0, 0, 0 , - 2086, 6825, 7902 ,5962, 7936, 5963 ,0, 0, 0 , - 6825, 104, 2092 ,7936, 6144, 6143 ,0, 0, 0 , - 6825, 2092, 7902 ,7936, 6143, 5963 ,0, 0, 0 , - 2092, 103, 6767 ,6143, 5953, 5960 ,0, 0, 0 , - 2092, 6767, 7902 ,6143, 5960, 5963 ,0, 0, 0 , - 7904, 95, 6764 ,5964, 3736, 3735 ,0, 0, 0 , - 7904, 6764, 7903 ,5964, 3735, 5965 ,0, 0, 0 , - 6764, 100, 2087 ,3735, 6141, 6140 ,0, 0, 0 , - 6764, 2087, 7903 ,3735, 6140, 5965 ,0, 0, 0 , - 2087, 99, 6766 ,6140, 5961, 3741 ,0, 0, 0 , - 2087, 6766, 7903 ,6140, 3741, 5965 ,0, 0, 0 , - 2083, 90, 7906 ,110, 103, 5971 ,0, 0, 0 , - 2083, 7906, 7905 ,110, 5971, 5966 ,0, 0, 0 , - 7906, 1866, 4409 ,5971, 2096, 2089 ,0, 0, 0 , - 7906, 4409, 7905 ,5971, 2089, 5966 ,0, 0, 0 , - 4409, 1865, 6771 ,2089, 2088, 3744 ,0, 0, 0 , - 4409, 6771, 7905 ,2089, 3744, 5966 ,0, 0, 0 , - 2082, 94, 6773 ,112, 111, 3743 ,0, 0, 0 , - 2082, 6773, 7907 ,112, 3743, 5967 ,0, 0, 0 , - 6773, 95, 7904 ,3743, 3736, 5964 ,0, 0, 0 , - 6773, 7904, 7907 ,3743, 5964, 5967 ,0, 0, 0 , - 7904, 96, 6775 ,5964, 3740, 3747 ,0, 0, 0 , - 7904, 6775, 7907 ,5964, 3747, 5967 ,0, 0, 0 , - 2079, 93, 6776 ,108, 107, 3746 ,0, 0, 0 , - 2079, 6776, 7908 ,108, 3746, 5970 ,0, 0, 0 , - 6776, 59, 7909 ,3746, 61, 7965 ,0, 0, 0 , - 6776, 7909, 7908 ,3746, 7965, 5970 ,0, 0, 0 , - 7909, 172, 6784 ,7965, 7930, 5968 ,0, 0, 0 , - 7909, 6784, 7908 ,7965, 5968, 5970 ,0, 0, 0 , - 2077, 92, 6780 ,102, 6139, 7929 ,0, 0, 0 , - 2077, 6780, 7910 ,102, 7929, 5972 ,0, 0, 0 , - 6780, 1869, 4416 ,7929, 7254, 2097 ,0, 0, 0 , - 6780, 4416, 7910 ,7929, 2097, 5972 ,0, 0, 0 , - 4416, 1866, 7906 ,2097, 2096, 5971 ,0, 0, 0 , - 4416, 7906, 7910 ,2097, 5971, 5972 ,0, 0, 0 , - 2071, 87, 6781 ,100, 99, 3749 ,0, 0, 0 , - 2071, 6781, 7911 ,100, 3749, 5973 ,0, 0, 0 , - 6781, 92, 2076 ,3749, 6139, 6138 ,0, 0, 0 , - 6781, 2076, 7911 ,3749, 6138, 5973 ,0, 0, 0 , - 2076, 91, 6783 ,6138, 5969, 3754 ,0, 0, 0 , - 2076, 6783, 7911 ,6138, 3754, 5973 ,0, 0, 0 , - 2072, 88, 6785 ,5976, 3753, 3752 ,0, 0, 0 , - 2072, 6785, 7912 ,5976, 3752, 5977 ,0, 0, 0 , - 6785, 172, 7909 ,3752, 7930, 7965 ,0, 0, 0 , - 6785, 7909, 7912 ,3752, 7965, 5977 ,0, 0, 0 , - 7909, 59, 6792 ,7965, 61, 5974 ,0, 0, 0 , - 7909, 6792, 7912 ,7965, 5974, 5977 ,0, 0, 0 , - 2063, 83, 6894 ,88, 6133, 7950 ,0, 0, 0 , - 2063, 6894, 7913 ,88, 7950, 5979 ,0, 0, 0 , - 6894, 1877, 4430 ,7950, 7256, 5978 ,0, 0, 0 , - 6894, 4430, 7913 ,7950, 5978, 5979 ,0, 0, 0 , - 2055, 78, 6895 ,80, 6128, 7951 ,0, 0, 0 , - 2055, 6895, 7914 ,80, 7951, 5981 ,0, 0, 0 , - 6895, 83, 2062 ,7951, 6133, 6132 ,0, 0, 0 , - 6895, 2062, 7914 ,7951, 6132, 5981 ,0, 0, 0 , - 2062, 68, 6801 ,6132, 92, 5980 ,0, 0, 0 , - 2062, 6801, 7914 ,6132, 5980, 5981 ,0, 0, 0 , - 7899, 102, 2090 ,5983, 6142, 120 ,0, 0, 0 , - 7899, 2090, 7915 ,5983, 120, 5984 ,0, 0, 0 , - 2090, 101, 6821 ,120, 119, 5982 ,0, 0, 0 , - 2090, 6821, 7915 ,120, 5982, 5984 ,0, 0, 0 , - 2050, 74, 6797 ,76, 6124, 7933 ,0, 0, 0 , - 2050, 6797, 7916 ,76, 7933, 5985 ,0, 0, 0 , - 6797, 1892, 4444 ,7933, 7263, 7262 ,0, 0, 0 , - 6797, 4444, 7916 ,7933, 7262, 5985 ,0, 0, 0 , - 4444, 1891, 6787 ,7262, 7261, 3757 ,0, 0, 0 , - 4444, 6787, 7916 ,7262, 3757, 5985 ,0, 0, 0 , - 2046, 70, 6789 ,78, 77, 3756 ,0, 0, 0 , - 2046, 6789, 7917 ,78, 3756, 5986 ,0, 0, 0 , - 6789, 87, 2073 ,3756, 99, 98 ,0, 0, 0 , - 6789, 2073, 7917 ,3756, 98, 5986 ,0, 0, 0 , - 2073, 89, 6791 ,98, 5975, 3761 ,0, 0, 0 , - 2073, 6791, 7917 ,98, 3761, 5986 ,0, 0, 0 , - 2047, 71, 6793 ,5989, 3760, 3759 ,0, 0, 0 , - 2047, 6793, 7918 ,5989, 3759, 5990 ,0, 0, 0 , - 6793, 59, 6809 ,3759, 61, 5987 ,0, 0, 0 , - 6793, 6809, 7918 ,3759, 5987, 5990 ,0, 0, 0 , - 2044, 66, 4448 ,72, 69, 2127 ,0, 0, 0 , - 2044, 4448, 7919 ,72, 2127, 5991 ,0, 0, 0 , - 4448, 1894, 6795 ,2127, 2126, 3764 ,0, 0, 0 , - 4448, 6795, 7919 ,2127, 3764, 5991 ,0, 0, 0 , - 2043, 69, 6798 ,74, 73, 3763 ,0, 0, 0 , - 2043, 6798, 7920 ,74, 3763, 5994 ,0, 0, 0 , - 6798, 74, 2049 ,3763, 6124, 6123 ,0, 0, 0 , - 6798, 2049, 7920 ,3763, 6123, 5994 ,0, 0, 0 , - 2049, 73, 6805 ,6123, 6122, 5992 ,0, 0, 0 , - 2049, 6805, 7920 ,6123, 5992, 5994 ,0, 0, 0 , - 2037, 65, 6813 ,64, 6119, 7934 ,0, 0, 0 , - 2037, 6813, 7921 ,64, 7934, 5995 ,0, 0, 0 , - 6813, 76, 2052 ,7934, 3836, 82 ,0, 0, 0 , - 6813, 2052, 7921 ,7934, 82, 5995 ,0, 0, 0 , - 2052, 75, 6800 ,82, 81, 3767 ,0, 0, 0 , - 2052, 6800, 7921 ,82, 3767, 5995 ,0, 0, 0 , - 2034, 62, 6802 ,66, 65, 3766 ,0, 0, 0 , - 2034, 6802, 7922 ,66, 3766, 5996 ,0, 0, 0 , - 6802, 68, 2040 ,3766, 92, 6120 ,0, 0, 0 , - 6802, 2040, 7922 ,3766, 6120, 5996 ,0, 0, 0 , - 2040, 67, 6804 ,6120, 5993, 3771 ,0, 0, 0 , - 2040, 6804, 7922 ,6120, 3771, 5996 ,0, 0, 0 , - 2035, 63, 6806 ,5997, 3770, 3769 ,0, 0, 0 , - 2035, 6806, 7923 ,5997, 3769, 5998 ,0, 0, 0 , - 6806, 73, 2048 ,3769, 6122, 6121 ,0, 0, 0 , - 6806, 2048, 7923 ,3769, 6121, 5998 ,0, 0, 0 , - 2048, 72, 6808 ,6121, 5988, 3775 ,0, 0, 0 , - 2048, 6808, 7923 ,6121, 3775, 5998 ,0, 0, 0 , - 2032, 61, 6814 ,60, 3778, 3777 ,0, 0, 0 , - 2032, 6814, 7924 ,60, 3777, 5999 ,0, 0, 0 , - 6814, 65, 2036 ,3777, 6119, 6118 ,0, 0, 0 , - 6814, 2036, 7924 ,3777, 6118, 5999 ,0, 0, 0 , - 2036, 64, 6810 ,6118, 3774, 3773 ,0, 0, 0 , - 2036, 6810, 7924 ,6118, 3773, 5999 ,0, 0, 0 , - 2028, 58, 6841 ,56, 6115, 7938 ,0, 0, 0 , - 2028, 6841, 7925 ,56, 7938, 6001 ,0, 0, 0 , - 6841, 81, 2058 ,7938, 6131, 6130 ,0, 0, 0 , - 6841, 2058, 7925 ,7938, 6130, 6001 ,0, 0, 0 , - 2058, 79, 6876 ,6130, 6129, 6000 ,0, 0, 0 , - 2058, 6876, 7925 ,6130, 6000, 6001 ,0, 0, 0 , - 2024, 55, 6842 ,52, 6112, 7939 ,0, 0, 0 , - 2024, 6842, 7926 ,52, 7939, 6002 ,0, 0, 0 , - 6842, 58, 2027 ,7939, 6115, 6114 ,0, 0, 0 , - 6842, 2027, 7926 ,7939, 6114, 6002 ,0, 0, 0 , - 2027, 57, 6816 ,6114, 6113, 3782 ,0, 0, 0 , - 2027, 6816, 7926 ,6114, 3782, 6002 ,0, 0, 0 , - 2019, 50, 6818 ,54, 53, 3781 ,0, 0, 0 , - 2019, 6818, 7927 ,54, 3781, 6005 ,0, 0, 0 , - 6818, 60, 2030 ,3781, 6116, 62 ,0, 0, 0 , - 6818, 2030, 7927 ,3781, 62, 6005 ,0, 0, 0 , - 2030, 59, 7928 ,62, 61, 6003 ,0, 0, 0 , - 2030, 7928, 7927 ,62, 6003, 6005 ,0, 0, 0 , - 2020, 51, 7928 ,6006, 6004, 6003 ,0, 0, 0 , - 2020, 7928, 7929 ,6006, 6003, 6007 ,0, 0, 0 , - 7928, 59, 6820 ,6003, 61, 3786 ,0, 0, 0 , - 7928, 6820, 7929 ,6003, 3786, 6007 ,0, 0, 0 , - 2021, 52, 6822 ,6008, 3785, 3784 ,0, 0, 0 , - 2021, 6822, 7930 ,6008, 3784, 6009 ,0, 0, 0 , - 6822, 101, 2093 ,3784, 119, 118 ,0, 0, 0 , - 6822, 2093, 7930 ,3784, 118, 6009 ,0, 0, 0 , - 2093, 104, 6824 ,118, 6144, 3790 ,0, 0, 0 , - 2093, 6824, 7930 ,118, 3790, 6009 ,0, 0, 0 , - 2022, 53, 6828 ,6012, 3789, 3788 ,0, 0, 0 , - 2022, 6828, 7931 ,6012, 3788, 6013 ,0, 0, 0 , - 6828, 107, 2096 ,3788, 147, 6145 ,0, 0, 0 , - 6828, 2096, 7931 ,3788, 6145, 6013 ,0, 0, 0 , - 2096, 106, 6831 ,6145, 5950, 6010 ,0, 0, 0 , - 2096, 6831, 7931 ,6145, 6010, 6013 ,0, 0, 0 , - 2017, 49, 6843 ,48, 6110, 7940 ,0, 0, 0 , - 2017, 6843, 7932 ,48, 7940, 6014 ,0, 0, 0 , - 6843, 55, 2023 ,7940, 6112, 6111 ,0, 0, 0 , - 6843, 2023, 7932 ,7940, 6111, 6014 ,0, 0, 0 , - 2023, 54, 6830 ,6111, 6011, 3793 ,0, 0, 0 , - 2023, 6830, 7932 ,6111, 3793, 6014 ,0, 0, 0 , - 2014, 46, 6833 ,50, 49, 3792 ,0, 0, 0 , - 2014, 6833, 7933 ,50, 3792, 6015 ,0, 0, 0 , - 6833, 110, 2100 ,3792, 6147, 6146 ,0, 0, 0 , - 6833, 2100, 7933 ,3792, 6146, 6015 ,0, 0, 0 , - 2100, 109, 6835 ,6146, 5947, 3797 ,0, 0, 0 , - 2100, 6835, 7933 ,6146, 3797, 6015 ,0, 0, 0 , - 2015, 47, 6838 ,6018, 3796, 3795 ,0, 0, 0 , - 2015, 6838, 7934 ,6018, 3795, 6019 ,0, 0, 0 , - 6838, 148, 2154 ,3795, 6171, 6170 ,0, 0, 0 , - 6838, 2154, 7934 ,3795, 6170, 6019 ,0, 0, 0 , - 2154, 147, 6847 ,6170, 5899, 6016 ,0, 0, 0 , - 2154, 6847, 7934 ,6170, 6016, 6019 ,0, 0, 0 , - 2012, 45, 6863 ,44, 6108, 7943 ,0, 0, 0 , - 2012, 6863, 7935 ,44, 7943, 6020 ,0, 0, 0 , - 6863, 80, 2059 ,7943, 85, 84 ,0, 0, 0 , - 6863, 2059, 7935 ,7943, 84, 6020 ,0, 0, 0 , - 2059, 81, 6840 ,84, 6131, 3800 ,0, 0, 0 , - 2059, 6840, 7935 ,84, 3800, 6020 ,0, 0, 0 , - 2009, 42, 6844 ,46, 45, 3799 ,0, 0, 0 , - 2009, 6844, 7936 ,46, 3799, 6021 ,0, 0, 0 , - 6844, 49, 2016 ,3799, 6110, 6109 ,0, 0, 0 , - 6844, 2016, 7936 ,3799, 6109, 6021 ,0, 0, 0 , - 2016, 48, 6846 ,6109, 6017, 3804 ,0, 0, 0 , - 2016, 6846, 7936 ,6109, 3804, 6021 ,0, 0, 0 , - 2010, 43, 6849 ,6024, 3803, 3802 ,0, 0, 0 , - 2010, 6849, 7937 ,6024, 3802, 6025 ,0, 0, 0 , - 6849, 154, 2162 ,3802, 6174, 185 ,0, 0, 0 , - 6849, 2162, 7937 ,3802, 185, 6025 ,0, 0, 0 , - 2162, 153, 6867 ,185, 184, 6022 ,0, 0, 0 , - 2162, 6867, 7937 ,185, 6022, 6025 ,0, 0, 0 , - 2003, 38, 6930 ,36, 6029, 7959 ,0, 0, 0 , - 2003, 6930, 7938 ,36, 7959, 6027 ,0, 0, 0 , - 6930, 39, 2007 ,7959, 41, 40 ,0, 0, 0 , - 6930, 2007, 7938 ,7959, 40, 6027 ,0, 0, 0 , - 2007, 41, 6859 ,40, 6106, 6026 ,0, 0, 0 , - 2007, 6859, 7938 ,40, 6026, 6027 ,0, 0, 0 , - 2002, 37, 6854 ,6030, 6103, 7942 ,0, 0, 0 , - 2002, 6854, 7939 ,6030, 7942, 6031 ,0, 0, 0 , - 6854, 159, 2168 ,7942, 6180, 6179 ,0, 0, 0 , - 6854, 2168, 7939 ,7942, 6179, 6031 ,0, 0, 0 , - 2168, 158, 6931 ,6179, 5887, 6028 ,0, 0, 0 , - 2168, 6931, 7939 ,6179, 6028, 6031 ,0, 0, 0 , - 1996, 32, 6868 ,34, 33, 7944 ,0, 0, 0 , - 1996, 6868, 7940 ,34, 7944, 6032 ,0, 0, 0 , - 6868, 153, 2165 ,7944, 184, 183 ,0, 0, 0 , - 6868, 2165, 7940 ,7944, 183, 6032 ,0, 0, 0 , - 2165, 156, 6851 ,183, 6178, 3808 ,0, 0, 0 , - 2165, 6851, 7940 ,183, 3808, 6032 ,0, 0, 0 , - 1997, 33, 6855 ,6035, 3807, 3806 ,0, 0, 0 , - 1997, 6855, 7941 ,6035, 3806, 6036 ,0, 0, 0 , - 6855, 37, 2001 ,3806, 6103, 38 ,0, 0, 0 , - 6855, 2001, 7941 ,3806, 38, 6036 ,0, 0, 0 , - 2001, 36, 6858 ,38, 37, 6033 ,0, 0, 0 , - 2001, 6858, 7941 ,38, 6033, 6036 ,0, 0, 0 , - 1991, 28, 6872 ,30, 29, 7945 ,0, 0, 0 , - 1991, 6872, 7942 ,30, 7945, 6037 ,0, 0, 0 , - 6872, 35, 1998 ,7945, 6102, 6101 ,0, 0, 0 , - 6872, 1998, 7942 ,7945, 6101, 6037 ,0, 0, 0 , - 1998, 34, 6857 ,6101, 6034, 3812 ,0, 0, 0 , - 1998, 6857, 7942 ,6101, 3812, 6037 ,0, 0, 0 , - 1992, 29, 6860 ,6040, 3811, 3810 ,0, 0, 0 , - 1992, 6860, 7943 ,6040, 3810, 6041 ,0, 0, 0 , - 6860, 41, 2006 ,3810, 6106, 6105 ,0, 0, 0 , - 6860, 2006, 7943 ,3810, 6105, 6041 ,0, 0, 0 , - 2006, 40, 6926 ,6105, 6104, 6038 ,0, 0, 0 , - 2006, 6926, 7943 ,6105, 6038, 6041 ,0, 0, 0 , - 1993, 30, 6925 ,6044, 6039, 7958 ,0, 0, 0 , - 1993, 6925, 7944 ,6044, 7958, 6045 ,0, 0, 0 , - 6925, 85, 2067 ,7958, 6135, 96 ,0, 0, 0 , - 6925, 2067, 7944 ,7958, 96, 6045 ,0, 0, 0 , - 2067, 84, 6882 ,96, 95, 6042 ,0, 0, 0 , - 2067, 6882, 7944 ,96, 6042, 6045 ,0, 0, 0 , - 1989, 27, 6877 ,24, 6100, 7946 ,0, 0, 0 , - 1989, 6877, 7945 ,24, 7946, 6046 ,0, 0, 0 , - 6877, 79, 2057 ,7946, 6129, 86 ,0, 0, 0 , - 6877, 2057, 7945 ,7946, 86, 6046 ,0, 0, 0 , - 2057, 80, 6862 ,86, 85, 3815 ,0, 0, 0 , - 2057, 6862, 7945 ,86, 3815, 6046 ,0, 0, 0 , - 1985, 23, 6864 ,26, 25, 3814 ,0, 0, 0 , - 1985, 6864, 7946 ,26, 3814, 6047 ,0, 0, 0 , - 6864, 45, 2011 ,3814, 6108, 6107 ,0, 0, 0 , - 6864, 2011, 7946 ,3814, 6107, 6047 ,0, 0, 0 , - 2011, 44, 6866 ,6107, 6023, 3819 ,0, 0, 0 , - 2011, 6866, 7946 ,6107, 3819, 6047 ,0, 0, 0 , - 1986, 24, 6869 ,6048, 3818, 3817 ,0, 0, 0 , - 1986, 6869, 7947 ,6048, 3817, 6049 ,0, 0, 0 , - 6869, 32, 1999 ,3817, 33, 32 ,0, 0, 0 , - 6869, 1999, 7947 ,3817, 32, 6049 ,0, 0, 0 , - 1999, 35, 6871 ,32, 6102, 3823 ,0, 0, 0 , - 1999, 6871, 7947 ,32, 3823, 6049 ,0, 0, 0 , - 1987, 25, 6873 ,6052, 3822, 3821 ,0, 0, 0 , - 1987, 6873, 7948 ,6052, 3821, 6053 ,0, 0, 0 , - 6873, 28, 1994 ,3821, 29, 28 ,0, 0, 0 , - 6873, 1994, 7948 ,3821, 28, 6053 ,0, 0, 0 , - 1994, 31, 6881 ,28, 6043, 6050 ,0, 0, 0 , - 1994, 6881, 7948 ,28, 6050, 6053 ,0, 0, 0 , - 1983, 22, 6886 ,20, 6098, 7947 ,0, 0, 0 , - 1983, 6886, 7949 ,20, 7947, 6054 ,0, 0, 0 , - 6886, 57, 2026 ,7947, 6113, 58 ,0, 0, 0 , - 6886, 2026, 7949 ,7947, 58, 6054 ,0, 0, 0 , - 2026, 56, 6875 ,58, 57, 3826 ,0, 0, 0 , - 2026, 6875, 7949 ,58, 3826, 6054 ,0, 0, 0 , - 1980, 19, 6878 ,22, 21, 3825 ,0, 0, 0 , - 1980, 6878, 7950 ,22, 3825, 6055 ,0, 0, 0 , - 6878, 27, 1988 ,3825, 6100, 6099 ,0, 0, 0 , - 6878, 1988, 7950 ,3825, 6099, 6055 ,0, 0, 0 , - 1988, 26, 6880 ,6099, 6051, 3830 ,0, 0, 0 , - 1988, 6880, 7950 ,6099, 3830, 6055 ,0, 0, 0 , - 1981, 20, 6883 ,6058, 3829, 3828 ,0, 0, 0 , - 1981, 6883, 7951 ,6058, 3828, 6059 ,0, 0, 0 , - 6883, 84, 2069 ,3828, 95, 94 ,0, 0, 0 , - 6883, 2069, 7951 ,3828, 94, 6059 ,0, 0, 0 , - 2069, 86, 6915 ,94, 6137, 6056 ,0, 0, 0 , - 2069, 6915, 7951 ,94, 6056, 6059 ,0, 0, 0 , - 1978, 18, 6889 ,16, 6064, 7948 ,0, 0, 0 , - 1978, 6889, 7952 ,16, 7948, 6060 ,0, 0, 0 , - 6889, 61, 2031 ,7948, 3778, 6117 ,0, 0, 0 , - 6889, 2031, 7952 ,7948, 6117, 6060 ,0, 0, 0 , - 2031, 60, 6885 ,6117, 6116, 3833 ,0, 0, 0 , - 2031, 6885, 7952 ,6117, 3833, 6060 ,0, 0, 0 , - 1975, 15, 6887 ,18, 17, 3832 ,0, 0, 0 , - 1975, 6887, 7953 ,18, 3832, 6063 ,0, 0, 0 , - 6887, 22, 1982 ,3832, 6098, 6097 ,0, 0, 0 , - 6887, 1982, 7953 ,3832, 6097, 6063 ,0, 0, 0 , - 1982, 21, 6914 ,6097, 6057, 6061 ,0, 0, 0 , - 1982, 6914, 7953 ,6097, 6061, 6063 ,0, 0, 0 , - 1977, 17, 6904 ,6065, 6096, 7953 ,0, 0, 0 , - 1977, 6904, 7954 ,6065, 7953, 6066 ,0, 0, 0 , - 6904, 77, 2053 ,7953, 6126, 6125 ,0, 0, 0 , - 6904, 2053, 7954 ,7953, 6125, 6066 ,0, 0, 0 , - 2053, 76, 6890 ,6125, 3836, 3835 ,0, 0, 0 , - 2053, 6890, 7954 ,6125, 3835, 6066 ,0, 0, 0 , - 1971, 12, 6896 ,14, 13, 3838 ,0, 0, 0 , - 1971, 6896, 7955 ,14, 3838, 6069 ,0, 0, 0 , - 6896, 78, 2054 ,3838, 6128, 6127 ,0, 0, 0 , - 6896, 2054, 7955 ,3838, 6127, 6069 ,0, 0, 0 , - 2054, 77, 6903 ,6127, 6126, 6067 ,0, 0, 0 , - 2054, 6903, 7955 ,6127, 6067, 6069 ,0, 0, 0 , - 1969, 11, 6909 ,8, 6092, 7955 ,0, 0, 0 , - 1969, 6909, 7956 ,8, 7955, 6070 ,0, 0, 0 , - 6909, 1945, 4522 ,7955, 7305, 7304 ,0, 0, 0 , - 6909, 4522, 7956 ,7955, 7304, 6070 ,0, 0, 0 , - 4522, 1944, 6898 ,7304, 7303, 3842 ,0, 0, 0 , - 4522, 6898, 7956 ,7304, 3842, 6070 ,0, 0, 0 , - 1966, 8, 6900 ,10, 9, 3841 ,0, 0, 0 , - 1966, 6900, 7957 ,10, 3841, 6071 ,0, 0, 0 , - 6900, 14, 1972 ,3841, 6094, 6093 ,0, 0, 0 , - 6900, 1972, 7957 ,3841, 6093, 6071 ,0, 0, 0 , - 1972, 13, 6902 ,6093, 6068, 3846 ,0, 0, 0 , - 1972, 6902, 7957 ,6093, 3846, 6071 ,0, 0, 0 , - 1967, 9, 6905 ,6074, 3845, 3844 ,0, 0, 0 , - 1967, 6905, 7958 ,6074, 3844, 6075 ,0, 0, 0 , - 6905, 17, 1976 ,3844, 6096, 6095 ,0, 0, 0 , - 6905, 1976, 7958 ,3844, 6095, 6075 ,0, 0, 0 , - 1976, 16, 6913 ,6095, 6062, 6072 ,0, 0, 0 , - 1976, 6913, 7958 ,6095, 6072, 6075 ,0, 0, 0 , - 1964, 7, 6920 ,4, 6090, 7957 ,0, 0, 0 , - 1964, 6920, 7959 ,4, 7957, 6076 ,0, 0, 0 , - 6920, 1949, 4527 ,7957, 7308, 7307 ,0, 0, 0 , - 6920, 4527, 7959 ,7957, 7307, 6076 ,0, 0, 0 , - 4527, 1948, 6907 ,7307, 7306, 3849 ,0, 0, 0 , - 4527, 6907, 7959 ,7307, 3849, 6076 ,0, 0, 0 , - 1961, 4, 6910 ,6, 5, 3848 ,0, 0, 0 , - 1961, 6910, 7960 ,6, 3848, 6077 ,0, 0, 0 , - 6910, 11, 1968 ,3848, 6092, 6091 ,0, 0, 0 , - 6910, 1968, 7960 ,3848, 6091, 6077 ,0, 0, 0 , - 1968, 10, 6912 ,6091, 6073, 3853 ,0, 0, 0 , - 1968, 6912, 7960 ,6091, 3853, 6077 ,0, 0, 0 , - 1962, 5, 6916 ,6080, 3852, 3851 ,0, 0, 0 , - 1962, 6916, 7961 ,6080, 3851, 6081 ,0, 0, 0 , - 6916, 86, 2068 ,3851, 6137, 6136 ,0, 0, 0 , - 6916, 2068, 7961 ,3851, 6136, 6081 ,0, 0, 0 , - 2068, 85, 6924 ,6136, 6135, 6078 ,0, 0, 0 , - 2068, 6924, 7961 ,6136, 6078, 6081 ,0, 0, 0 , - 1959, 3, 6939 ,0, 6086, 7961 ,0, 0, 0 , - 1959, 6939, 7962 ,0, 7961, 6082 ,0, 0, 0 , - 6939, 1953, 4532 ,7961, 7311, 7310 ,0, 0, 0 , - 6939, 4532, 7962 ,7961, 7310, 6082 ,0, 0, 0 , - 4532, 1952, 6918 ,7310, 7309, 3856 ,0, 0, 0 , - 4532, 6918, 7962 ,7310, 3856, 6082 ,0, 0, 0 , - 1956, 0, 6921 ,2, 1, 3855 ,0, 0, 0 , - 1956, 6921, 7963 ,2, 3855, 6083 ,0, 0, 0 , - 6921, 7, 1963 ,3855, 6090, 6089 ,0, 0, 0 , - 6921, 1963, 7963 ,3855, 6089, 6083 ,0, 0, 0 , - 1963, 6, 6923 ,6089, 6079, 3860 ,0, 0, 0 , - 1963, 6923, 7963 ,6089, 3860, 6083 ,0, 0, 0 , - 1957, 1, 6927 ,6084, 3859, 3858 ,0, 0, 0 , - 1957, 6927, 7964 ,6084, 3858, 6085 ,0, 0, 0 , - 6927, 40, 2005 ,3858, 6104, 42 ,0, 0, 0 , - 6927, 2005, 7964 ,3858, 42, 6085 ,0, 0, 0 , - 2005, 39, 6929 ,42, 41, 3864 ,0, 0, 0 , - 2005, 6929, 7964 ,42, 3864, 6085 ,0, 0, 0 , - 1958, 2, 6935 ,6087, 3863, 3862 ,0, 0, 0 , - 1958, 6935, 7965 ,6087, 3862, 6088 ,0, 0, 0 , - 6935, 915, 3116 ,3862, 6615, 6614 ,0, 0, 0 , - 6935, 3116, 7965 ,3862, 6614, 6088 ,0, 0, 0 , - 3116, 914, 6940 ,6614, 3867, 3866 ,0, 0, 0 , - 3116, 6940, 7965 ,6614, 3866, 6088 ,0, 0, 0 diff --git a/src/demos/es1/RedSquare.java b/src/demos/es1/RedSquare.java deleted file mode 100755 index 81713ea..0000000 --- a/src/demos/es1/RedSquare.java +++ /dev/null @@ -1,151 +0,0 @@ -package demos.es1; - -import java.nio.*; -import javax.media.opengl.*; -import javax.media.opengl.util.*; -import javax.media.opengl.glu.*; - -import com.sun.javafx.newt.*; - -public class RedSquare implements MouseListener { - - public boolean quit = false; - public boolean toggleFS = false; - - public void mouseClicked(MouseEvent e) { - switch(e.getClickCount()) { - case 1: - toggleFS=true; - break; - default: - quit=true; - break; - } - } - public void mouseEntered(MouseEvent e) { - } - public void mouseExited(MouseEvent e) { - } - public void mousePressed(MouseEvent e) { - } - public void mouseReleased(MouseEvent e) { - } - public void mouseMoved(MouseEvent e) { - } - public void mouseDragged(MouseEvent e) { - } - - public static void main(String[] args) { - System.out.println("RedSquare.main()"); - GLProfile.setProfileGL2ES1(); - try { - Display display = NewtFactory.createDisplay(null); // local display - Screen screen = NewtFactory.createScreen(display, 0); // screen 0 - Window window = NewtFactory.createWindow(screen, 0); // dummy VisualID - - RedSquare ml = new RedSquare(); - window.addMouseListener(ml); - - // Size OpenGL to Video Surface - int width = 800; - int height = 480; - window.setSize(width, height); - window.setFullscreen(true); - - // Hook this into EGL - GLDrawableFactory factory = GLDrawableFactory.getFactory(window); - GLCapabilities caps = new GLCapabilities(); - // For emulation library, use 16 bpp - caps.setRedBits(5); - caps.setGreenBits(6); - caps.setBlueBits(5); - caps.setDepthBits(16); - GLDrawable drawable = factory.createGLDrawable(window, caps, null); - window.setVisible(true); - drawable.setRealized(true); - GLContext context = drawable.createContext(null); - context.makeCurrent(); - - GL2ES1 gl = context.getGL().getGL2ES1(); - GLU glu = GLU.createGLU(gl); - - //---------------------------------------------------------------------- - // Code for GLEventListener.init() - // - - System.out.println("Entering initialization"); - System.out.println("GL_VERSION=" + gl.glGetString(GL2ES1.GL_VERSION)); - System.out.println("GL_EXTENSIONS:"); - System.out.println(" " + gl.glGetString(GL2ES1.GL_EXTENSIONS)); - - // Allocate vertex arrays - FloatBuffer colors = BufferUtil.newFloatBuffer(16); - FloatBuffer vertices = BufferUtil.newFloatBuffer(12); - // Fill them up - colors.put( 0, 1); colors.put( 1, 0); colors.put( 2, 0); colors.put( 3, 1); - colors.put( 4, 1); colors.put( 5, 0); colors.put( 6, 0); colors.put( 7, 1); - colors.put( 8, 1); colors.put( 9, 0); colors.put(10, 0); colors.put(11, 1); - colors.put(12, 1); colors.put(13, 0); colors.put(14, 0); colors.put(15, 1); - vertices.put(0, -2); vertices.put( 1, 2); vertices.put( 2, 0); - vertices.put(3, 2); vertices.put( 4, 2); vertices.put( 5, 0); - vertices.put(6, -2); vertices.put( 7, -2); vertices.put( 8, 0); - vertices.put(9, 2); vertices.put(10, -2); vertices.put(11, 0); - - gl.glEnableClientState(GL2ES1.GL_VERTEX_ARRAY); - gl.glVertexPointer(3, GL2ES1.GL_FLOAT, 0, vertices); - gl.glEnableClientState(GL2ES1.GL_COLOR_ARRAY); - gl.glColorPointer(4, GL2ES1.GL_FLOAT, 0, colors); - - // OpenGL Render Settings - gl.glClearColor(0, 0, 0, 1); - gl.glEnable(GL2ES1.GL_DEPTH_TEST); - - //---------------------------------------------------------------------- - // Code for GLEventListener.display() - // - - long startTime = System.currentTimeMillis(); - long curTime; - while (!ml.quit && ((curTime = System.currentTimeMillis()) - startTime) < 20000) { - gl.glClear(GL2ES1.GL_COLOR_BUFFER_BIT | GL2ES1.GL_DEPTH_BUFFER_BIT); - - // Set location in front of camera - width = window.getWidth(); - height = window.getHeight(); - gl.glViewport(0, 0, width, height); - gl.glMatrixMode(GL2ES1.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluPerspective(45.0f, (float)width / (float)height, 1.0f, 100.0f); - gl.glMatrixMode(GL2ES1.GL_MODELVIEW); - gl.glLoadIdentity(); - gl.glTranslatef(0, 0, -10); - // One rotation every four seconds - float ang = (((float) (curTime - startTime)) * 360.0f) / 4000.0f; - gl.glRotatef(ang, 0, 0, 1); - - // Draw a square - gl.glDrawArrays(GL2ES1.GL_TRIANGLE_STRIP, 0, 4); - - drawable.swapBuffers(); - - if(ml.toggleFS) { - window.setFullscreen(!window.isFullscreen()); - ml.toggleFS=false; - } - - window.pumpMessages(); - } - - // Shut things down cooperatively - context.release(); - context.destroy(); - drawable.destroy(); - factory.shutdown(); - System.out.println("RedSquare shut down cleanly."); - } catch (Throwable t) { - t.printStackTrace(); - } - - System.exit(0); - } -} diff --git a/src/demos/es1/angeles/Angeles.java b/src/demos/es1/angeles/Angeles.java deleted file mode 100755 index e793be2..0000000 --- a/src/demos/es1/angeles/Angeles.java +++ /dev/null @@ -1,855 +0,0 @@ -/* San Angeles Observation OpenGL ES version example - * Copyright 2004-2005 Jetro Lauha - * All rights reserved. - * Web: http://iki.fi/jetro/ - * - * This source is free software; you can redistribute it and/or - * modify it under the terms of EITHER: - * (1) The GNU Lesser General Public License as published by the Free - * Software Foundation; either version 2.1 of the License, or (at - * your option) any later version. The text of the GNU Lesser - * General Public License is included with this source in the - * file LICENSE-LGPL.txt. - * (2) The BSD-style license that is included with this source in - * the file LICENSE-BSD.txt. - * - * This source 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 files - * LICENSE-LGPL.txt and LICENSE-BSD.txt for more details. - * - * $Id$ - * $Revision$ - */ - -package demos.es1.angeles; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import java.nio.*; - -public class Angeles /* implements GLEventListener */ { - - public Angeles() { - quadVertices = BufferUtil.newIntBuffer(12); - quadVertices.put(new int[]{ - -0x10000, -0x10000, - 0x10000, -0x10000, - -0x10000, 0x10000, - 0x10000, -0x10000, - 0x10000, 0x10000, - -0x10000, 0x10000 - }); - quadVertices.rewind(); - - light0Position=BufferUtil.newIntBuffer(4); - light0Diffuse=BufferUtil.newIntBuffer(4); - light1Position=BufferUtil.newIntBuffer(4); - light1Diffuse=BufferUtil.newIntBuffer(4); - light2Position=BufferUtil.newIntBuffer(4); - light2Diffuse=BufferUtil.newIntBuffer(4); - materialSpecular=BufferUtil.newIntBuffer(4); - - light0Position.put(new int[] { -0x40000, 0x10000, 0x10000, 0 }); - light0Diffuse.put(new int[] { 0x10000, 0x6666, 0, 0x10000 }); - light1Position.put(new int[] { 0x10000, -0x20000, -0x10000, 0 }); - light1Diffuse.put(new int[] { 0x11eb, 0x23d7, 0x5999, 0x10000 }); - light2Position.put(new int[] { -0x10000, 0, -0x40000, 0 }); - light2Diffuse.put(new int[] { 0x11eb, 0x2b85, 0x23d7, 0x10000 }); - materialSpecular.put(new int[] { 0x10000, 0x10000, 0x10000, 0x10000 }); - - light0Position.rewind(); - light0Diffuse.rewind(); - light1Position.rewind(); - light1Diffuse.rewind(); - light2Position.rewind(); - light2Diffuse.rewind(); - materialSpecular.rewind(); - - seedRandom(15); - - width=0; - height=0; - x=0; - y=0; - } - - public void init(GL gl) { - // FIXME: gl.setSwapInterval(1); - - this.gl = gl; - gl.glEnable(gl.GL_NORMALIZE); - gl.glEnable(gl.GL_DEPTH_TEST); - gl.glDisable(gl.GL_CULL_FACE); - gl.glShadeModel(gl.GL_FLAT); - - gl.glEnable(gl.GL_LIGHTING); - gl.glEnable(gl.GL_LIGHT0); - gl.glEnable(gl.GL_LIGHT1); - gl.glEnable(gl.GL_LIGHT2); - - gl.glEnableClientState(gl.GL_VERTEX_ARRAY); - gl.glEnableClientState(gl.GL_COLOR_ARRAY); - - for (int a = 0; a < SuperShape.COUNT; ++a) - { - sSuperShapeObjects[a] = createSuperShape(SuperShape.sParams[a]); - } - sGroundPlane = createGroundPlane(); - - gAppAlive = 1; - - sStartTick = System.currentTimeMillis(); - frames=0; - } - - public void reshape(GL gl, int x, int y, int width, int height) { - this.width = width; - this.height=height; - this.x = x; - this.y = y; - - this.gl = gl; - - gl.glMatrixMode(gl.GL_MODELVIEW); - gl.glLoadIdentity(); - - gl.glClearColorx((int)(0.1f * 65536), - (int)(0.2f * 65536), - (int)(0.3f * 65536), 0x10000); - - gl.glCullFace(GL.GL_FRONT); - - gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_FASTEST); - - //gl.glShadeModel(GL.GL_SMOOTH); - gl.glShadeModel(GL.GL_FLAT); - gl.glDisable(GL.GL_DITHER); - - //gl.glMatrixMode(gl.GL_PROJECTION); - //gl.glLoadIdentity(); - //gluPerspective(45.0f, (float)width / (float)height, 0.5f, 150.0f); - - System.out.println("reshape .."); - } - - public void display(GL gl) { - long tick = System.currentTimeMillis(); - - if (gAppAlive==0) - return; - - this.gl = gl; - - // Actual tick value is "blurred" a little bit. - sTick = (sTick + tick - sStartTick) >> 1; - - // Terminate application after running through the demonstration once. - if (sTick >= RUN_LENGTH) - { - gAppAlive = 0; - return; - } - - gl.glClear(gl.GL_DEPTH_BUFFER_BIT | gl.GL_COLOR_BUFFER_BIT); - - gl.glMatrixMode(gl.GL_PROJECTION); - gl.glLoadIdentity(); - gluPerspective(45.0f, (float)width / (float)height, 0.5f, 150.0f); - - // Update the camera position and set the lookat. - camTrack(); - - // Configure environment. - configureLightAndMaterial(); - - // Draw the reflection by drawing models with negated Z-axis. - gl.glPushMatrix(); - drawModels(-1); - gl.glPopMatrix(); - - // Blend the ground plane to the window. - drawGroundPlane(); - - // Draw all the models normally. - drawModels(1); - - // Draw fade quad over whole window (when changing cameras). - drawFadeQuad(); - - frames++; - tick = System.currentTimeMillis(); - long dT = tick - sStartTick; - // System.out.println(frames+"f, "+dT+"ms "+ (frames*1000)/dT +"fps"); - } - - public void displayChanged(GL gl, boolean modeChanged, boolean deviceChanged) { - } - - private GL gl; - - // Total run length is 20 * camera track base unit length (see cams.h). - private int RUN_LENGTH = (20 * CamTrack.CAMTRACK_LEN) ; - private int RANDOM_UINT_MAX = 65535 ; - - private long sRandomSeed = 0; - -void seedRandom(long seed) -{ - sRandomSeed = seed; -} - -int randomUInt() -{ - sRandomSeed = sRandomSeed * 0x343fd + 0x269ec3; - return Math.abs((int) (sRandomSeed >> 16)); -} - - -// Capped conversion from float to fixed. -int FIXED(float value) -{ - if (value < -32768) value = -32768; - if (value > 32767) value = 32767; - return (int)(value * 65536); -} - -// Definition of one GL object in this demo. -public class GLObject { - /* Vertex array and color array are enabled for all objects, so their - * pointers must always be valid and non-null. Normal array is not - * used by the ground plane, so when its pointer is null then normal - * array usage is disabled. - * - * Vertex array is supposed to use gl.GL_FIXED datatype and stride 0 - * (i.e. tightly packed array). Color array is supposed to have 4 - * components per color with gl.GL_UNSIGNED_BYTE datatype and stride 0. - * Normal array is supposed to use gl.GL_FIXED datatype and stride 0. - */ - IntBuffer vertexArray; - ByteBuffer colorArray; - IntBuffer normalArray; - int vertexComponents; - int count; - int vbo[]; - - public GLObject(int vertices, int vertexComponents, - boolean useNormalArray) { - this.count = vertices; - this.vertexComponents = vertexComponents; - this.vertexArray = BufferUtil.newIntBuffer( vertices * vertexComponents ); - this.colorArray = BufferUtil.newByteBuffer (vertices * 4 ); - if (useNormalArray) - { - this.normalArray = BufferUtil.newIntBuffer (vertices * 3 ); - } else { - this.normalArray = null; - } - } - - void seal() - { - flip(); - vbo = new int[3]; - gl.glGenBuffers(3, vbo, 0); - - gl.glBindBuffer(GL.GL_ARRAY_BUFFER, vbo[0]); - gl.glBufferData(GL.GL_ARRAY_BUFFER, vertexArray.capacity() * BufferUtil.SIZEOF_INT, vertexArray, GL.GL_STATIC_DRAW); - gl.glVertexPointer(vertexComponents, gl.GL_FLOAT, 0, 0); - - gl.glBindBuffer(GL.GL_ARRAY_BUFFER, vbo[1]); - gl.glBufferData(GL.GL_ARRAY_BUFFER, colorArray.capacity() * BufferUtil.SIZEOF_BYTE, colorArray, GL.GL_STATIC_DRAW); - gl.glColorPointer(4, gl.GL_UNSIGNED_BYTE, 0, 0); - - if (null!=normalArray) - { - gl.glEnableClientState(gl.GL_NORMAL_ARRAY); - gl.glBindBuffer(GL.GL_ARRAY_BUFFER, vbo[2]); - gl.glBufferData(GL.GL_ARRAY_BUFFER, normalArray.capacity() * BufferUtil.SIZEOF_INT, normalArray, GL.GL_STATIC_DRAW); - gl.glNormalPointer(gl.GL_FLOAT, 0, 0); - } else { - gl.glDisableClientState(gl.GL_NORMAL_ARRAY); - } - } - - void draw() - { - gl.glBindBuffer(GL.GL_ARRAY_BUFFER, vbo[0]); - gl.glVertexPointer(vertexComponents, gl.GL_FIXED, 0, 0); - gl.glBindBuffer(GL.GL_ARRAY_BUFFER, vbo[1]); - gl.glColorPointer(4, gl.GL_UNSIGNED_BYTE, 0, 0); - - if (null!=normalArray) - { - gl.glEnableClientState(gl.GL_NORMAL_ARRAY); - gl.glBindBuffer(GL.GL_ARRAY_BUFFER, vbo[2]); - gl.glNormalPointer(gl.GL_FIXED, 0, 0); - } - else - gl.glDisableClientState(gl.GL_NORMAL_ARRAY); - gl.glDrawArrays(gl.GL_TRIANGLES, 0, count); - } - - void rewind() { - vertexArray.rewind(); - colorArray.rewind(); - if (normalArray != null) { - normalArray.rewind(); - } - } - void flip() { - vertexArray.flip(); - colorArray.flip(); - if (normalArray != null) { - normalArray.flip(); - } - } -} - -long sStartTick = 0; -long sTick = 0; - -int sCurrentCamTrack = 0; -long sCurrentCamTrackStartTick = 0; -long sNextCamTrackStartTick = 0x7fffffff; - -GLObject sSuperShapeObjects[] = new GLObject[SuperShape.COUNT]; -GLObject sGroundPlane; - - -public class VECTOR3 { - float x, y, z; - - public VECTOR3() { - x=0f; y=0f; z=0f; - } - public VECTOR3(float x, float y, float z) { - this.x=x; - this.y=y; - this.z=z; - } -} - - - -static void vector3Sub(VECTOR3 dest, VECTOR3 v1, VECTOR3 v2) -{ - dest.x = v1.x - v2.x; - dest.y = v1.y - v2.y; - dest.z = v1.z - v2.z; -} - - -static void superShapeMap(VECTOR3 point, float r1, float r2, float t, float p) -{ - // sphere-mapping of supershape parameters - point.x = (float)(Math.cos(t) * Math.cos(p) / r1 / r2); - point.y = (float)(Math.sin(t) * Math.cos(p) / r1 / r2); - point.z = (float)(Math.sin(p) / r2); -} - - -float ssFunc(final float t, final float p[]) -{ - return ssFunc(t, p, 0); -} - -float ssFunc(final float t, final float p[], int pOff) -{ - return (float)(Math.pow(Math.pow(Math.abs(Math.cos(p[0+pOff] * t / 4)) / p[1+pOff], p[4+pOff]) + - Math.pow(Math.abs(Math.sin(p[0+pOff] * t / 4)) / p[2+pOff], p[5+pOff]), 1 / p[3+pOff])); -} - - -// Creates and returns a supershape object. -// Based on Paul Bourke's POV-Ray implementation. -// http://astronomy.swin.edu.au/~pbourke/povray/supershape/ -GLObject createSuperShape(final float params[]) -{ - final int resol1 = (int)params[SuperShape.PARAMS - 3]; - final int resol2 = (int)params[SuperShape.PARAMS - 2]; - // latitude 0 to pi/2 for no mirrored bottom - // (latitudeBegin==0 for -pi/2 to pi/2 originally) - final int latitudeBegin = resol2 / 4; - final int latitudeEnd = resol2 / 2; // non-inclusive - final int longitudeCount = resol1; - final int latitudeCount = latitudeEnd - latitudeBegin; - final int triangleCount = longitudeCount * latitudeCount * 2; - final int vertices = triangleCount * 3; - GLObject result; - float baseColor[] = new float[3]; - int a, longitude, latitude; - int currentVertex, currentQuad; - - result = new GLObject(vertices, 3, true); - if (result == null) - return null; - - for (a = 0; a < 3; ++a) - baseColor[a] = ((randomUInt() % 155) + 100) / 255.f; - - currentQuad = 0; - currentVertex = 0; - - // longitude -pi to pi - for (longitude = 0; longitude < longitudeCount; ++longitude) - { - - // latitude 0 to pi/2 - for (latitude = latitudeBegin; latitude < latitudeEnd; ++latitude) - { - float t1 = (float) ( -Math.PI + longitude * 2 * Math.PI / resol1 ); - float t2 = (float) ( -Math.PI + (longitude + 1) * 2 * Math.PI / resol1 ); - float p1 = (float) ( -Math.PI / 2 + latitude * 2 * Math.PI / resol2 ); - float p2 = (float) ( -Math.PI / 2 + (latitude + 1) * 2 * Math.PI / resol2 ); - float r0, r1, r2, r3; - - r0 = ssFunc(t1, params); - r1 = ssFunc(p1, params, 6); - r2 = ssFunc(t2, params); - r3 = ssFunc(p2, params, 6); - - if (r0 != 0 && r1 != 0 && r2 != 0 && r3 != 0) - { - VECTOR3 pa=new VECTOR3(), pb=new VECTOR3(), pc=new VECTOR3(), pd=new VECTOR3(); - VECTOR3 v1=new VECTOR3(), v2=new VECTOR3(), n=new VECTOR3(); - float ca; - int i; - //float lenSq, invLenSq; - - superShapeMap(pa, r0, r1, t1, p1); - superShapeMap(pb, r2, r1, t2, p1); - superShapeMap(pc, r2, r3, t2, p2); - superShapeMap(pd, r0, r3, t1, p2); - - // kludge to set lower edge of the object to fixed level - if (latitude == latitudeBegin + 1) - pa.z = pb.z = 0; - - vector3Sub(v1, pb, pa); - vector3Sub(v2, pd, pa); - - // Calculate normal with cross product. - /* i j k i j - * v1.x v1.y v1.z | v1.x v1.y - * v2.x v2.y v2.z | v2.x v2.y - */ - - n.x = v1.y * v2.z - v1.z * v2.y; - n.y = v1.z * v2.x - v1.x * v2.z; - n.z = v1.x * v2.y - v1.y * v2.x; - - /* Pre-normalization of the normals is disabled here because - * they will be normalized anyway later due to automatic - * normalization (gl.GL_NORMALIZE). It is enabled because the - * objects are scaled with glScale. - */ - /* - lenSq = n.x * n.x + n.y * n.y + n.z * n.z; - invLenSq = (float)(1 / sqrt(lenSq)); - n.x *= invLenSq; - n.y *= invLenSq; - n.z *= invLenSq; - */ - - ca = pa.z + 0.5f; - - for (i = currentVertex * 3; - i < (currentVertex + 6) * 3; - i += 3) - { - result.normalArray.put(i , FIXED(n.x)); - result.normalArray.put(i + 1, FIXED(n.y)); - result.normalArray.put(i + 2, FIXED(n.z)); - } - for (i = currentVertex * 4; - i < (currentVertex + 6) * 4; - i += 4) - { - int j, color[] = new int[3]; - for (j = 0; j < 3; ++j) - { - color[j] = (int)(ca * baseColor[j] * 255); - if (color[j] > 255) color[j] = 255; - } - result.colorArray.put(i , (byte)color[0]); - result.colorArray.put(i + 1, (byte)color[1]); - result.colorArray.put(i + 2, (byte)color[2]); - result.colorArray.put(i + 3, (byte)0); - } - result.vertexArray.put(currentVertex * 3, FIXED(pa.x)); - result.vertexArray.put(currentVertex * 3 + 1, FIXED(pa.y)); - result.vertexArray.put(currentVertex * 3 + 2, FIXED(pa.z)); - ++currentVertex; - result.vertexArray.put(currentVertex * 3, FIXED(pb.x)); - result.vertexArray.put(currentVertex * 3 + 1, FIXED(pb.y)); - result.vertexArray.put(currentVertex * 3 + 2, FIXED(pb.z)); - ++currentVertex; - result.vertexArray.put(currentVertex * 3, FIXED(pd.x)); - result.vertexArray.put(currentVertex * 3 + 1, FIXED(pd.y)); - result.vertexArray.put(currentVertex * 3 + 2, FIXED(pd.z)); - ++currentVertex; - result.vertexArray.put(currentVertex * 3, FIXED(pb.x)); - result.vertexArray.put(currentVertex * 3 + 1, FIXED(pb.y)); - result.vertexArray.put(currentVertex * 3 + 2, FIXED(pb.z)); - ++currentVertex; - result.vertexArray.put(currentVertex * 3, FIXED(pc.x)); - result.vertexArray.put(currentVertex * 3 + 1, FIXED(pc.y)); - result.vertexArray.put(currentVertex * 3 + 2, FIXED(pc.z)); - ++currentVertex; - result.vertexArray.put(currentVertex * 3, FIXED(pd.x)); - result.vertexArray.put(currentVertex * 3 + 1, FIXED(pd.y)); - result.vertexArray.put(currentVertex * 3 + 2, FIXED(pd.z)); - ++currentVertex; - } // r0 && r1 && r2 && r3 - ++currentQuad; - } // latitude - } // longitude - - // Set number of vertices in object to the actual amount created. - result.count = currentVertex; - result.seal(); - return result; -} - - -GLObject createGroundPlane() -{ - final int scale = 4; - final int yBegin = -15, yEnd = 15; // ends are non-inclusive - final int xBegin = -15, xEnd = 15; - final int triangleCount = (yEnd - yBegin) * (xEnd - xBegin) * 2; - final int vertices = triangleCount * 3; - GLObject result; - int x, y; - int currentVertex, currentQuad; - - result = new GLObject(vertices, 2, false); - if (result == null) - return null; - - currentQuad = 0; - currentVertex = 0; - - for (y = yBegin; y < yEnd; ++y) - { - for (x = xBegin; x < xEnd; ++x) - { - byte color; - int i, a; - color = (byte)((randomUInt() & 0x5f) + 81); // 101 1111 - for (i = currentVertex * 4; i < (currentVertex + 6) * 4; i += 4) - { - result.colorArray.put(i, color); - result.colorArray.put(i + 1, color); - result.colorArray.put(i + 2, color); - result.colorArray.put(i + 3, (byte)0); - } - - // Axis bits for quad triangles: - // x: 011100 (0x1c), y: 110001 (0x31) (clockwise) - // x: 001110 (0x0e), y: 100011 (0x23) (counter-clockwise) - for (a = 0; a < 6; ++a) - { - final int xm = x + ((0x1c >> a) & 1); - final int ym = y + ((0x31 >> a) & 1); - final float m = (float)(Math.cos(xm * 2) * Math.sin(ym * 4) * 0.75f); - result.vertexArray.put(currentVertex * 2, FIXED(xm * scale + m)); - result.vertexArray.put(currentVertex * 2 + 1, FIXED(ym * scale + m)); - ++currentVertex; - } - ++currentQuad; - } - } - result.seal(); - return result; -} - - -void drawGroundPlane() -{ - gl.glDisable(gl.GL_CULL_FACE); - gl.glDisable(gl.GL_DEPTH_TEST); - gl.glEnable(gl.GL_BLEND); - gl.glBlendFunc(gl.GL_ZERO, gl.GL_SRC_COLOR); - gl.glDisable(gl.GL_LIGHTING); - - sGroundPlane.draw(); - - gl.glEnable(gl.GL_LIGHTING); - gl.glDisable(gl.GL_BLEND); - gl.glEnable(gl.GL_DEPTH_TEST); -} - -void drawFadeQuad() -{ - final int beginFade = (int) (sTick - sCurrentCamTrackStartTick); - final int endFade = (int) (sNextCamTrackStartTick - sTick); - final int minFade = beginFade < endFade ? beginFade : endFade; - - if (minFade < 1024) - { - final int fadeColor = minFade << 7; - gl.glColor4x(fadeColor, fadeColor, fadeColor, 0); - - gl.glDisable(gl.GL_DEPTH_TEST); - gl.glEnable(gl.GL_BLEND); - gl.glBlendFunc(gl.GL_ZERO, gl.GL_SRC_COLOR); - gl.glDisable(gl.GL_LIGHTING); - - gl.glMatrixMode(gl.GL_MODELVIEW); - gl.glLoadIdentity(); - - gl.glMatrixMode(gl.GL_PROJECTION); - gl.glLoadIdentity(); - - gl.glBindBuffer(GL.GL_ARRAY_BUFFER, 0); - gl.glDisableClientState(gl.GL_COLOR_ARRAY); - gl.glDisableClientState(gl.GL_NORMAL_ARRAY); - gl.glVertexPointer(2, gl.GL_FIXED, 0, quadVertices); - gl.glDrawArrays(gl.GL_TRIANGLES, 0, 6); - - gl.glEnableClientState(gl.GL_COLOR_ARRAY); - - gl.glMatrixMode(gl.GL_MODELVIEW); - - gl.glEnable(gl.GL_LIGHTING); - gl.glDisable(gl.GL_BLEND); - gl.glEnable(gl.GL_DEPTH_TEST); - } -} - -IntBuffer quadVertices; -IntBuffer light0Position; -IntBuffer light0Diffuse; -IntBuffer light1Position; -IntBuffer light1Diffuse; -IntBuffer light2Position; -IntBuffer light2Diffuse; -IntBuffer materialSpecular; - -void configureLightAndMaterial() -{ - gl.glLightxv(gl.GL_LIGHT0, gl.GL_POSITION, light0Position); - gl.glLightxv(gl.GL_LIGHT0, gl.GL_DIFFUSE, light0Diffuse); - gl.glLightxv(gl.GL_LIGHT1, gl.GL_POSITION, light1Position); - gl.glLightxv(gl.GL_LIGHT1, gl.GL_DIFFUSE, light1Diffuse); - gl.glLightxv(gl.GL_LIGHT2, gl.GL_POSITION, light2Position); - gl.glLightxv(gl.GL_LIGHT2, gl.GL_DIFFUSE, light2Diffuse); - gl.glMaterialxv(gl.GL_FRONT_AND_BACK, gl.GL_SPECULAR, materialSpecular); - - gl.glMaterialx(gl.GL_FRONT_AND_BACK, gl.GL_SHININESS, 60 << 16); - gl.glEnable(gl.GL_COLOR_MATERIAL); -} - - -void drawModels(float zScale) -{ - final int translationScale = 9; - int x, y; - - seedRandom(9); - - gl.glScalex(1 << 16, 1 << 16, (int)(zScale * 65536)); - - for (y = -5; y <= 5; ++y) - { - for (x = -5; x <= 5; ++x) - { - float buildingScale; - int fixedScale; - - int curShape = randomUInt() % SuperShape.COUNT; - buildingScale = SuperShape.sParams[curShape][SuperShape.PARAMS - 1]; - fixedScale = (int)(buildingScale * 65536); - - gl.glPushMatrix(); - gl.glTranslatex((x * translationScale) * 65536, - (y * translationScale) * 65536, - 0); - gl.glRotatex((int)((randomUInt() % 360) << 16), 0, 0, 1 << 16); - gl.glScalex(fixedScale, fixedScale, fixedScale); - - sSuperShapeObjects[curShape].draw(); - gl.glPopMatrix(); - } - } - - for (x = -2; x <= 2; ++x) - { - final int shipScale100 = translationScale * 500; - final int offs100 = x * shipScale100 + (int)(sTick % shipScale100); - float offs = offs100 * 0.01f; - int fixedOffs = (int)(offs * 65536); - gl.glPushMatrix(); - gl.glTranslatex(fixedOffs, -4 * 65536, 2 << 16); - sSuperShapeObjects[SuperShape.COUNT - 1].draw(); - gl.glPopMatrix(); - gl.glPushMatrix(); - gl.glTranslatex(-4 * 65536, fixedOffs, 4 << 16); - gl.glRotatex(90 << 16, 0, 0, 1 << 16); - sSuperShapeObjects[SuperShape.COUNT - 1].draw(); - gl.glPopMatrix(); - } -} - - -void camTrack() -{ - float lerp[]= new float[5]; - float eX, eY, eZ, cX, cY, cZ; - float trackPos; - CamTrack cam; - long currentCamTick; - int a; - - if (sNextCamTrackStartTick <= sTick) - { - ++sCurrentCamTrack; - sCurrentCamTrackStartTick = sNextCamTrackStartTick; - } - sNextCamTrackStartTick = sCurrentCamTrackStartTick + - CamTrack.sCamTracks[sCurrentCamTrack].len * CamTrack.CAMTRACK_LEN; - - cam = CamTrack.sCamTracks[sCurrentCamTrack]; - currentCamTick = sTick - sCurrentCamTrackStartTick; - trackPos = (float)currentCamTick / (CamTrack.CAMTRACK_LEN * cam.len); - - for (a = 0; a < 5; ++a) - lerp[a] = (cam.src[a] + cam.dest[a] * trackPos) * 0.01f; - - if (cam.dist>0) - { - float dist = cam.dist * 0.1f; - cX = lerp[0]; - cY = lerp[1]; - cZ = lerp[2]; - eX = cX - (float)Math.cos(lerp[3]) * dist; - eY = cY - (float)Math.sin(lerp[3]) * dist; - eZ = cZ - lerp[4]; - } - else - { - eX = lerp[0]; - eY = lerp[1]; - eZ = lerp[2]; - cX = eX + (float)Math.cos(lerp[3]); - cY = eY + (float)Math.sin(lerp[3]); - cZ = eZ + lerp[4]; - } - gluLookAt(eX, eY, eZ, cX, cY, cZ, 0, 0, 1); -} - -private int gAppAlive = 0; -private int width, height, x, y, frames; - -/* Following gluLookAt implementation is adapted from the - * Mesa 3D Graphics library. http://www.mesa3d.org - */ -void gluLookAt(float eyex, float eyey, float eyez, - float centerx, float centery, float centerz, - float upx, float upy, float upz) -{ - float m[] = new float[16]; - float x[] = new float[3], y[] = new float[3], z[] = new float[3]; - float mag; - - /* Make rotation matrix */ - - /* Z vector */ - z[0] = eyex - centerx; - z[1] = eyey - centery; - z[2] = eyez - centerz; - mag = (float)Math.sqrt(z[0] * z[0] + z[1] * z[1] + z[2] * z[2]); - if (mag!=0.0) { /* mpichler, 19950515 */ - z[0] /= mag; - z[1] /= mag; - z[2] /= mag; - } - - /* Y vector */ - y[0] = upx; - y[1] = upy; - y[2] = upz; - - /* X vector = Y cross Z */ - x[0] = y[1] * z[2] - y[2] * z[1]; - x[1] = -y[0] * z[2] + y[2] * z[0]; - x[2] = y[0] * z[1] - y[1] * z[0]; - - /* Recompute Y = Z cross X */ - y[0] = z[1] * x[2] - z[2] * x[1]; - y[1] = -z[0] * x[2] + z[2] * x[0]; - y[2] = z[0] * x[1] - z[1] * x[0]; - - /* mpichler, 19950515 */ - /* cross product gives area of parallelogram, which is < 1.0 for - * non-perpendicular unit-length vectors; so normalize x, y here - */ - - mag = (float)Math.sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]); - if (mag!=0.0) { - x[0] /= mag; - x[1] /= mag; - x[2] /= mag; - } - - mag = (float)Math.sqrt(y[0] * y[0] + y[1] * y[1] + y[2] * y[2]); - if (mag!=0.0) { - y[0] /= mag; - y[1] /= mag; - y[2] /= mag; - } - - m[0 + 0*4] = x[0]; - m[0 + 1*4] = x[1]; - m[0 + 2*4] = x[2]; - m[0 + 3*4] = 0.0f; - m[1 + 0*4] = y[0]; - m[1 + 1*4] = y[1]; - m[1 + 2*4] = y[2]; - m[1 + 3*4] = 0.0f; - m[2 + 0*4] = z[0]; - m[2 + 1*4] = z[1]; - m[2 + 2*4] = z[2]; - m[2 + 3*4] = 0.0f; - m[3 + 0*4] = 0.0f; - m[3 + 1*4] = 0.0f; - m[3 + 2*4] = 0.0f; - m[3 + 3*4] = 1.0f; - { - int a; - int fixedM[] = new int[16]; - for (a = 0; a < 16; ++a) - fixedM[a] = (int)(m[a] * 65536); - - IntBuffer nioM = BufferUtil.newIntBuffer(16); - nioM.put(fixedM); - nioM.rewind(); - gl.glMultMatrixx(nioM); - } - - /* Translate Eye to Origin */ - gl.glTranslatex((int)(-eyex * 65536), - (int)(-eyey * 65536), - (int)(-eyez * 65536)); -} - -void gluPerspective(float fovy, float aspect, - float zNear, float zFar) -{ - float xmin, xmax, ymin, ymax; - - ymax = zNear * (float)Math.tan(fovy * Math.PI / 360.0); - ymin = -ymax; - xmin = ymin * aspect; - xmax = ymax * aspect; - - gl.glFrustumx((int)(xmin * 65536), (int)(xmax * 65536), - (int)(ymin * 65536), (int)(ymax * 65536), - (int)(zNear * 65536), (int)(zFar * 65536)); -} - - -} - diff --git a/src/demos/es1/angeles/CamTrack.java b/src/demos/es1/angeles/CamTrack.java deleted file mode 100755 index df1678c..0000000 --- a/src/demos/es1/angeles/CamTrack.java +++ /dev/null @@ -1,71 +0,0 @@ -/* San Angeles Observation OpenGL ES version example - * Copyright 2004-2005 Jetro Lauha - * All rights reserved. - * Web: http://iki.fi/jetro/ - * - * This source is free software; you can redistribute it and/or - * modify it under the terms of EITHER: - * (1) The GNU Lesser General Public License as published by the Free - * Software Foundation; either version 2.1 of the License, or (at - * your option) any later version. The text of the GNU Lesser - * General Public License is included with this source in the - * file LICENSE-LGPL.txt. - * (2) The BSD-style license that is included with this source in - * the file LICENSE-BSD.txt. - * - * This source 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 files - * LICENSE-LGPL.txt and LICENSE-BSD.txt for more details. - * - * $Id$ - * $Revision$ - */ - -package demos.es1.angeles; - -// Camera track definition for one camera trucking shot. -public class CamTrack -{ - /* Length in milliseconds of one camera track base unit. - * The value originates from the music synchronization. - */ - static final int CAMTRACK_LEN = 5442; - - /* Five parameters of src[5] and dest[5]: - * eyeX, eyeY, eyeZ, viewAngle, viewHeightOffs - */ - short src[], dest[]; - int dist; // if >0, cam rotates around eye xy on dist * 0.1 - int len; // length multiplier - - public CamTrack() { - src = new short[5]; - dest = new short[5]; - } - public CamTrack(short s[], short d[], int dx, int l) { - src=s; - dest=d; - dist=dx; - len=l; - } - -static CamTrack sCamTracks[] = - { new CamTrack( new short[]{ 4500, 2700, 100, 70, -30 }, new short[]{ 50, 50, -90, -100, 0 }, 20, 1 ), - new CamTrack( new short[]{ -1448, 4294, 25, 363, 0 }, new short[]{ -136, 202, 125, -98, 100 }, 0, 1 ), - new CamTrack( new short[]{ 1437, 4930, 200, -275, -20 }, new short[]{ 1684, 0, 0, 9, 0 }, 0, 1 ), - new CamTrack( new short[]{ 1800, 3609, 200, 0, 675 }, new short[]{ 0, 0, 0, 300, 0 }, 0, 1 ), - new CamTrack( new short[]{ 923, 996, 50, 2336, -80 }, new short[]{ 0, -20, -50, 0, 170 }, 0, 1 ), - new CamTrack( new short[]{ -1663, -43, 600, 2170, 0 }, new short[]{ 20, 0, -600, 0, 100 }, 0, 1 ), - new CamTrack( new short[]{ 1049, -1420, 175, 2111, -17 }, new short[]{ 0, 0, 0, -334, 0 }, 0, 2 ), - new CamTrack( new short[]{ 0, 0, 50, 300, 25 }, new short[]{ 0, 0, 0, 300, 0 }, 70, 2 ), - new CamTrack( new short[]{ -473, -953, 3500, -353, -350 }, new short[]{ 0, 0, -2800, 0, 0 }, 0, 2 ), - new CamTrack( new short[]{ 191, 1938, 35, 1139, -17 }, new short[]{ 1205, -2909, 0, 0, 0 }, 0, 2 ), - new CamTrack( new short[]{ -1449, -2700, 150, 0, 0 }, new short[]{ 0, 2000, 0, 0, 0 }, 0, 2 ), - new CamTrack( new short[]{ 5273, 4992, 650, 373, -50 }, new short[]{ -4598, -3072, 0, 0, 0 }, 0, 2 ), - new CamTrack( new short[]{ 3223, -3282, 1075, -393, -25 }, new short[]{ 1649, -1649, 0, 0, 0 }, 0, 2 ) }; - -static final int CAMTRACK_COUNT = 13; - -} - diff --git a/src/demos/es1/angeles/Main.java b/src/demos/es1/angeles/Main.java deleted file mode 100755 index 563e554..0000000 --- a/src/demos/es1/angeles/Main.java +++ /dev/null @@ -1,115 +0,0 @@ -package demos.es1.angeles; - -import java.nio.*; -import javax.media.opengl.*; -import com.sun.javafx.newt.*; - -public class Main implements MouseListener { - - public boolean quit = false; - public boolean toggleFS = false; - - public void mouseClicked(MouseEvent e) { - switch(e.getClickCount()) { - case 1: - toggleFS=true; - break; - default: - quit=true; - break; - } - } - public void mouseEntered(MouseEvent e) { - } - public void mouseExited(MouseEvent e) { - } - public void mousePressed(MouseEvent e) { - } - public void mouseReleased(MouseEvent e) { - } - public void mouseMoved(MouseEvent e) { - } - public void mouseDragged(MouseEvent e) { - } - - public static void main(String[] args) { - System.out.println("Angeles Main"); - try { - Display display = NewtFactory.createDisplay(null); // local display - Screen screen = NewtFactory.createScreen(display, 0); // screen 0 - Window window = NewtFactory.createWindow(screen, 0); // dummy VisualID - - Main ml = new Main(); - window.addMouseListener(ml); - - // Size OpenGL to Video Surface - int width = 800; - int height = 480; - window.setSize(width, height); - window.setFullscreen(true); - - // Hook this into EGL - GLDrawableFactory factory = GLDrawableFactory.getFactory(GLDrawableFactory.PROFILE_GLES1, window); - GLCapabilities caps = new GLCapabilities(); - // For emulation library, use 16 bpp - caps.setRedBits(5); - caps.setGreenBits(6); - caps.setBlueBits(5); - caps.setDepthBits(16); - GLDrawable drawable = factory.createGLDrawable(window, caps, null); - window.setVisible(true); - drawable.setRealized(true); - GLContext context = drawable.createContext(null); - context.makeCurrent(); - - GL gl = context.getGL(); - - Angeles angel = new Angeles(); - angel.init(gl); - angel.reshape(gl, 0, 0, window.getWidth(), window.getHeight()); - - long startTime = System.currentTimeMillis(); - long lastTime = startTime, curTime = 0, dt0, dt1; - int totalFrames = 0, lastFrames = 0; - - do { - angel.display(gl); - drawable.swapBuffers(); - - totalFrames++; lastFrames++; - curTime = System.currentTimeMillis(); - dt0 = curTime-lastTime; - if ( (curTime-lastTime) > 5000 ) { - dt1 = curTime-startTime; - System.out.println(dt1/1000+"s, 5s: "+ (lastFrames*1000)/dt0 + " fps, "+ - "total: "+ (totalFrames*1000)/dt1 + " fps"); - lastTime=curTime; - lastFrames=0; - } - - if(ml.toggleFS) { - window.setFullscreen(!window.isFullscreen()); - ml.toggleFS=false; - } - - window.pumpMessages(); - - // Thread.yield(); - - // try{ - // Thread.sleep(10); - // } catch(InterruptedException ie) {} - } while (!ml.quit && (curTime - startTime) < 215000); - - // Shut things down cooperatively - context.release(); - context.destroy(); - drawable.destroy(); - factory.shutdown(); - System.out.println("Angeles shut down cleanly."); - } catch (GLException e) { - e.printStackTrace(); - } - System.exit(0); - } -} diff --git a/src/demos/es1/angeles/SuperShape.java b/src/demos/es1/angeles/SuperShape.java deleted file mode 100755 index 5f419d6..0000000 --- a/src/demos/es1/angeles/SuperShape.java +++ /dev/null @@ -1,57 +0,0 @@ -/* San Angeles Observation OpenGL ES version example - * Copyright 2004-2005 Jetro Lauha - * All rights reserved. - * Web: http://iki.fi/jetro/ - * - * This source is free software; you can redistribute it and/or - * modify it under the terms of EITHER: - * (1) The GNU Lesser General Public License as published by the Free - * Software Foundation; either version 2.1 of the License, or (at - * your option) any later version. The text of the GNU Lesser - * General Public License is included with this source in the - * file LICENSE-LGPL.txt. - * (2) The BSD-style license that is included with this source in - * the file LICENSE-BSD.txt. - * - * This source 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 files - * LICENSE-LGPL.txt and LICENSE-BSD.txt for more details. - * - * $Id$ - * $Revision$ - */ - -package demos.es1.angeles; - -public class SuperShape { - -public static final int PARAMS = 15 ; - -public static final float sParams[][/*SUPERSHAPE_PARAMS*/] = -{ - // m a b n1 n2 n3 m a b n1 n2 n3 res1 res2 scale (org.res1,res2) - new float[]{ 10, 1, 2, 90, 1, -45, 8, 1, 1, -1, 1, -0.4f, 20, 30, 2 }, // 40, 60 - new float[]{ 10, 1, 2, 90, 1, -45, 4, 1, 1, 10, 1, -0.4f, 20, 20, 4 }, // 40, 40 - new float[]{ 10, 1, 2, 60, 1, -10, 4, 1, 1, -1, -2, -0.4f, 41, 41, 1 }, // 82, 82 - new float[]{ 6, 1, 1, 60, 1, -70, 8, 1, 1, 0.4f, 3, 0.25f, 20, 20, 1 }, // 40, 40 - new float[]{ 4, 1, 1, 30, 1, 20, 12, 1, 1, 0.4f, 3, 0.25f, 10, 30, 1 }, // 20, 60 - new float[]{ 8, 1, 1, 30, 1, -4, 8, 2, 1, -1, 5, 0.5f, 25, 26, 1 }, // 60, 60 - new float[]{ 13, 1, 1, 30, 1, -4, 13, 1, 1, 1, 5, 1, 30, 30, 6 }, // 60, 60 - new float[]{ 10, 1, 1.1f, -0.5f, 0.1f, 70, 60, 1, 1, -90, 0, -0.25f, 20, 60, 8 }, // 60, 180 - new float[]{ 7, 1, 1, 20, -0.3f, -3.5f, 6, 1, 1, -1, 4.5f, 0.5f, 10, 20, 4 }, // 60, 80 - new float[]{ 4, 1, 1, 10, 10, 10, 4, 1, 1, 10, 10, 10, 10, 20, 1 }, // 20, 40 - new float[]{ 4, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 10, 10, 2 }, // 10, 10 - new float[]{ 1, 1, 1, 38, -0.25f, 19, 4, 1, 1, 10, 10, 10, 10, 15, 2 }, // 20, 40 - new float[]{ 2, 1, 1, 0.7f, 0.3f, 0.2f, 3, 1, 1, 100, 100, 100, 10, 25, 2 }, // 20, 50 - new float[]{ 6, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 30, 30, 2 }, // 60, 60 - new float[]{ 3, 1, 1, 1, 1, 1, 6, 1, 1, 2, 1, 1, 10, 20, 2 }, // 20, 40 - new float[]{ 6, 1, 1, 6, 5.5f, 100, 6, 1, 1, 25, 10, 10, 30, 20, 2 }, // 60, 40 - new float[]{ 3, 1, 1, 0.5f, 1.7f, 1.7f, 2, 1, 1, 10, 10, 10, 20, 20, 2 }, // 40, 40 - new float[]{ 5, 1, 1, 0.1f, 1.7f, 1.7f, 1, 1, 1, 0.3f, 0.5f, 0.5f, 20, 20, 4 }, // 40, 40 - new float[]{ 2, 1, 1, 6, 5.5f, 100, 6, 1, 1, 4, 10, 10, 10, 22, 1 }, // 40, 40 - new float[]{ 6, 1, 1, -1, 70, 0.1f, 9, 1, 0.5f, -98, 0.05f, -45, 20, 30, 4 }, // 60, 91 - new float[]{ 6, 1, 1, -1, 90, -0.1f, 7, 1, 1, 90, 1.3f, 34, 13, 16, 1 }, // 32, 60 -}; - public static final int COUNT = 21; -} diff --git a/src/demos/es1/cubefbo/CubeObject.java b/src/demos/es1/cubefbo/CubeObject.java deleted file mode 100755 index 8eb9c7f..0000000 --- a/src/demos/es1/cubefbo/CubeObject.java +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.es1.cubefbo; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import java.nio.*; - -class CubeObject { - public CubeObject (boolean useTexCoords) { - // Initialize data Buffers - this.cubeVertices = BufferUtil.newShortBuffer(s_cubeVertices.length); - cubeVertices.put(s_cubeVertices); - cubeVertices.rewind(); - - this.cubeColors = BufferUtil.newByteBuffer(s_cubeColors.length); - cubeColors.put(s_cubeColors); - cubeColors.rewind(); - - this.cubeNormals = BufferUtil.newByteBuffer(s_cubeNormals.length); - cubeNormals.put(s_cubeNormals); - cubeNormals.rewind(); - - this.cubeIndices = BufferUtil.newByteBuffer(s_cubeIndices.length); - cubeIndices.put(s_cubeIndices); - cubeIndices.rewind(); - - if (useTexCoords) { - this.cubeTexCoords = BufferUtil.newShortBuffer(s_cubeTexCoords.length); - cubeTexCoords.put(s_cubeTexCoords); - cubeTexCoords.rewind(); - } - } - - private void perspective(GL gl, float fovy, float aspect, float zNear, float zFar) { - float xmin; - float xmax; - float ymin; - float ymax; - - ymax = zNear * (float)Math.tan((fovy * Math.PI) / 360.0); - ymin = -ymax; - xmin = ymin * aspect; - xmax = ymax * aspect; - - gl.glFrustumf(xmin, xmax, ymin, ymax, zNear, zFar); - } - - static final float[] light_position = { -50.f, 50.f, 50.f, 0.f }; - static final float[] light_ambient = { 0.125f, 0.125f, 0.125f, 1.f }; - static final float[] light_diffuse = { 1.0f, 1.0f, 1.0f, 1.f }; - static final float[] material_spec = { 1.0f, 1.0f, 1.0f, 0.f }; - static final float[] zero_vec4 = { 0.0f, 0.0f, 0.0f, 0.f }; - - public void reshape(GL gl, int x, int y, int width, int height) { - float aspect = (height != 0) ? ((float)width / (float)height) : 1.0f; - - gl.glViewport(0, 0, width, height); - gl.glScissor(0, 0, width, height); - - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, light_position, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, light_ambient, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, light_diffuse, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_SPECULAR, zero_vec4, 0); - gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_SPECULAR, material_spec, 0); - - gl.glEnable(GL.GL_NORMALIZE); - gl.glEnable(GL.GL_LIGHTING); - gl.glEnable(GL.GL_LIGHT0); - gl.glEnable(GL.GL_COLOR_MATERIAL); - gl.glEnable(GL.GL_CULL_FACE); - - gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_FASTEST); - - gl.glShadeModel(GL.GL_SMOOTH); - gl.glDisable(GL.GL_DITHER); - - gl.glClearColor(0.0f, 0.1f, 0.0f, 1.0f); - - gl.glEnableClientState(GL.GL_VERTEX_ARRAY); - gl.glEnableClientState(GL.GL_NORMAL_ARRAY); - gl.glEnableClientState(GL.GL_COLOR_ARRAY); - if (cubeTexCoords != null) { - gl.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY); - } else { - gl.glDisableClientState(GL.GL_TEXTURE_COORD_ARRAY); - } - - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - - float fovy = 55.f; - if (aspect < 1) { - // Compute this as fovx instead - float fovx = fovy; - fovy = (float) Math.toDegrees(Math.atan(Math.tan(Math.toRadians(fovx)) / aspect)); - } - - perspective(gl, fovy, aspect, 0.1f, 100.f); - gl.glCullFace(GL.GL_BACK); - } - - public void display(GL gl, float xRot, float yRot) { - // System.out.println("CubeObject .. p1: "+this); - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - - gl.glTranslatef(0.f, 0.f, -30.f); - // gl.glTranslatef(0.f, 0.f, -30.f); - // gl.glRotatef((float)(time * 29.77f), 1.0f, 2.0f, 0.0f); - // gl.glRotatef((float)(time * 22.311f), -0.1f, 0.0f, -5.0f); - gl.glRotatef(yRot, 0, 1, 0); - gl.glRotatef(xRot, 1, 0, 0); - - gl.glVertexPointer(3, GL.GL_SHORT, 0, cubeVertices); - gl.glColorPointer(4, GL.GL_UNSIGNED_BYTE, 0, cubeColors); - gl.glNormalPointer(GL.GL_BYTE, 0, cubeNormals); - if (cubeTexCoords != null) { - gl.glTexCoordPointer(2, GL.GL_SHORT, 0, cubeTexCoords); - gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_REPLACE); - } - - // System.out.println("CubeObject .. p8: "+this); - gl.glDrawElements(GL.GL_TRIANGLES, 6 * 6, GL.GL_UNSIGNED_BYTE, cubeIndices); - // System.out.println("CubeObject .. p9: "+this); - - // time += 0.01f; - } - - boolean initialized = false; - // float time = 0.0f; - - ShortBuffer cubeVertices; - ShortBuffer cubeTexCoords; - ByteBuffer cubeColors; - ByteBuffer cubeNormals; - ByteBuffer cubeIndices; - - private static final short[] s_cubeVertices = - { - -10, 10, 10, 10, -10, 10, 10, 10, 10, -10, -10, 10, - - -10, 10, -10, 10, -10, -10, 10, 10, -10, -10, -10, -10, - - -10, -10, 10, 10, -10, -10, 10, -10, 10, -10, -10, -10, - - -10, 10, 10, 10, 10, -10, 10, 10, 10, -10, 10, -10, - - 10, -10, 10, 10, 10, -10, 10, 10, 10, 10, -10, -10, - - -10, -10, 10, -10, 10, -10, -10, 10, 10, -10, -10, -10 - }; - - private static final short[] s_cubeTexCoords = - { - 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0, - - 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0, - - 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0, - - 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0, - - 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0, - - 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0, - }; - - private static final byte[] s_cubeColors = - { - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255, - (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255 - }; - - private static final byte[] s_cubeIndices = - { - 0, 3, 1, 2, 0, 1, /* front */ - 6, 5, 4, 5, 7, 4, /* back */ - 8, 11, 9, 10, 8, 9, /* top */ - 15, 12, 13, 12, 14, 13, /* bottom */ - 16, 19, 17, 18, 16, 17, /* right */ - 23, 20, 21, 20, 22, 21 /* left */ - }; - private static final byte[] s_cubeNormals = - { - 0, 0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127, - - 0, 0, -128, 0, 0, -128, 0, 0, -128, 0, 0, -128, - - 0, -128, 0, 0, -128, 0, 0, -128, 0, 0, -128, 0, - - 0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127, 0, - - 127, 0, 0, 127, 0, 0, 127, 0, 0, 127, 0, 0, - - -128, 0, 0, -128, 0, 0, -128, 0, 0, -128, 0, 0 - }; -} - diff --git a/src/demos/es1/cubefbo/FBCubes.java b/src/demos/es1/cubefbo/FBCubes.java deleted file mode 100755 index 724b798..0000000 --- a/src/demos/es1/cubefbo/FBCubes.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.es1.cubefbo; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import java.nio.*; - -class FBCubes { - private static final int FBO_SIZE = 128; - - public FBCubes () { - cubeInner = new CubeObject(false); - cubeMiddle = new CubeObject(true); - cubeOuter = new CubeObject(true); - - // cubeOuter = new CubeObject(false); - - fbo1 = new FBObject(FBO_SIZE, FBO_SIZE); - fbo2 = new FBObject(FBO_SIZE, FBO_SIZE); - } - - public void init(GL gl) { - fbo1.init(gl); - fbo2.init(gl); - } - - public void reshape(GL gl, int x, int y, int width, int height) { - cubeOuter.reshape(gl, x, y, width, height); - } - - public void display(GL gl, float xRot, float yRot) { - - fbo1.bind(gl); - cubeInner.reshape(gl, 0, 0, FBO_SIZE, FBO_SIZE); - cubeInner.display(gl, xRot, yRot); - fbo1.unbind(gl); - - FBObject tex = fbo1; - FBObject rend = fbo2; - - int MAX_ITER = 1; - - for (int i = 0; i < MAX_ITER; i++) { - rend.bind(gl); - gl.glEnable (GL.GL_TEXTURE_2D); - gl.glBindTexture(GL.GL_TEXTURE_2D, tex.getTextureName()); // to use it .. - cubeMiddle.reshape(gl, 0, 0, FBO_SIZE, FBO_SIZE); - cubeMiddle.display(gl, xRot, yRot); - gl.glBindTexture(GL.GL_TEXTURE_2D, 0); - gl.glDisable (GL.GL_TEXTURE_2D); - rend.unbind(gl); - FBObject tmp = tex; - tex = rend; - rend = tmp; - } - - // System.out.println("display .. p6"); - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - gl.glClearColor(0, 0, 0, 1); - - gl.glEnable (GL.GL_TEXTURE_2D); - gl.glBindTexture(GL.GL_TEXTURE_2D, tex.getTextureName()); // to use it .. - cubeOuter.display(gl, xRot, yRot); - // System.out.println("display .. p7"); - gl.glBindTexture(GL.GL_TEXTURE_2D, 0); - gl.glDisable (GL.GL_TEXTURE_2D); - } - - public void displayChanged(GL gl, boolean modeChanged, boolean deviceChanged) { - } - - float time = 0.0f; - CubeObject cubeInner; - CubeObject cubeMiddle; - CubeObject cubeOuter; - FBObject fbo1; - FBObject fbo2; -} - diff --git a/src/demos/es1/cubefbo/FBObject.java b/src/demos/es1/cubefbo/FBObject.java deleted file mode 100755 index 13d5b01..0000000 --- a/src/demos/es1/cubefbo/FBObject.java +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.es1.cubefbo; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import java.nio.*; - -class FBObject { - private int fb, fbo_tex, depth_rb, stencil_rb, width, height; - - public FBObject(int width, int height) { - this.width = width; - this.height = height; - } - - public void init(GL gl) { - // generate fbo .. - int name[] = new int[1]; - - gl.glGenTextures(1, name, 0); - fbo_tex = name[0]; - System.out.println("fbo_tex: "+fbo_tex); - - gl.glBindTexture(GL.GL_TEXTURE_2D, fbo_tex); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); - gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGB8_OES, width, height, 0, - GL.GL_RGB, GL.GL_UNSIGNED_BYTE, null); - - gl.glGenRenderbuffersOES(1, name, 0); - depth_rb = name[0]; - System.out.println("depth_rb: "+depth_rb); - - // Initialize the depth buffer: - gl.glBindRenderbufferOES(GL.GL_RENDERBUFFER_OES, depth_rb); - gl.glRenderbufferStorageOES(GL.GL_RENDERBUFFER_OES, - GL.GL_DEPTH_COMPONENT16_OES, width, height); - - // gl.glGenRenderbuffersOES(1, name, 0); - // stencil_rb = name[0]; - stencil_rb = 0; - System.out.println("stencil_rb: "+stencil_rb); - - gl.glGenFramebuffersOES(1, name, 0); - fb = name[0]; - System.out.println("fb: "+fb); - - // bind fbo .. - gl.glBindFramebufferOES(GL.GL_FRAMEBUFFER_OES, fb); - - // Set up the color buffer for use as a renderable texture: - gl.glFramebufferTexture2DOES(GL.GL_FRAMEBUFFER_OES, - GL.GL_COLOR_ATTACHMENT0_OES, - GL.GL_TEXTURE_2D, fbo_tex, 0); - - // Set up the depth buffer attachment: - gl.glFramebufferRenderbufferOES(GL.GL_FRAMEBUFFER_OES, - GL.GL_DEPTH_ATTACHMENT_OES, - GL.GL_RENDERBUFFER_OES, depth_rb); - - // bind fbo .. - gl.glBindFramebufferOES(GL.GL_FRAMEBUFFER_OES, fb); - - // Setup the color buffer for use as a renderable texture: - gl.glBindTexture(GL.GL_TEXTURE_2D, fbo_tex); - - gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGB8_OES, width, height, 0, - GL.GL_RGB, GL.GL_UNSIGNED_BYTE, null); - - gl.glFramebufferTexture2DOES(GL.GL_FRAMEBUFFER_OES, - GL.GL_COLOR_ATTACHMENT0_OES, - GL.GL_TEXTURE_2D, fbo_tex, 0); - - // Initialize the depth buffer: - gl.glBindRenderbufferOES(GL.GL_RENDERBUFFER_OES, depth_rb); - - gl.glRenderbufferStorageOES(GL.GL_RENDERBUFFER_OES, - GL.GL_DEPTH_COMPONENT16_OES, width, height); - - gl.glFramebufferRenderbufferOES(GL.GL_FRAMEBUFFER_OES, - GL.GL_DEPTH_ATTACHMENT_OES, - GL.GL_RENDERBUFFER_OES, depth_rb); - - if(stencil_rb!=0) { - // Initialize the stencil buffer: - gl.glBindRenderbufferOES(GL.GL_RENDERBUFFER_OES, stencil_rb); - - gl.glRenderbufferStorageOES(GL.GL_RENDERBUFFER_OES, - GL.GL_STENCIL_INDEX8_OES, width, height); - - gl.glFramebufferRenderbufferOES(GL.GL_FRAMEBUFFER_OES, - GL.GL_STENCIL_ATTACHMENT_OES, - GL.GL_RENDERBUFFER_OES, stencil_rb); - } - - // Check the FBO for completeness - int res = gl.glCheckFramebufferStatusOES(fb); - if (res == GL.GL_FRAMEBUFFER_COMPLETE_OES) { - System.out.println("Framebuffer " + fb + " is complete"); - } else { - System.out.println("Framebuffer " + fb + " is incomplete: status = 0x" + Integer.toHexString(res)); - } - } - - public void bind(GL gl) { - gl.glBindFramebufferOES(GL.GL_FRAMEBUFFER_OES, fb); - } - - public void unbind(GL gl) { - gl.glBindFramebufferOES(GL.GL_FRAMEBUFFER_OES, 0); - } - - public int getFBName() { - return fb; - } - public int getTextureName() { - return fbo_tex; - } -} diff --git a/src/demos/es1/cubefbo/Main.java b/src/demos/es1/cubefbo/Main.java deleted file mode 100755 index 857f183..0000000 --- a/src/demos/es1/cubefbo/Main.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.es1.cubefbo; - -import java.nio.*; -import javax.media.opengl.*; -import com.sun.javafx.newt.*; - -public class Main implements MouseListener { - - private boolean quit = false; - private boolean toggleFS = false; - private Window window; - - private boolean dragging; - private int lastDragX; - private int lastDragY; - private float motionIncr; - private float xRot, yRot; - - public void mouseClicked(MouseEvent e) { - switch(e.getClickCount()) { - case 1: - toggleFS=true; - break; - default: - quit=true; - break; - } - } - public void mouseEntered(MouseEvent e) { - } - public void mouseExited(MouseEvent e) { - } - public void mousePressed(MouseEvent e) { - } - public void mouseReleased(MouseEvent e) { - dragging = false; - } - public void mouseMoved(MouseEvent e) { - } - public void mouseDragged(MouseEvent e) { - if (!dragging) { - dragging = true; - lastDragX = e.getX(); - lastDragY = e.getY(); - } else { - yRot += (e.getX() - lastDragX) * motionIncr; - xRot += (e.getY() - lastDragY) * motionIncr; - lastDragX = e.getX(); - lastDragY = e.getY(); - } - } - - public void run() { - System.out.println("CubeFBO Main"); - try { - Display display = NewtFactory.createDisplay(null); // local display - Screen screen = NewtFactory.createScreen(display, 0); // screen 0 - window = NewtFactory.createWindow(screen, 0); // dummy VisualID - - window.addMouseListener(this); - - // Size OpenGL to Video Surface - int width = 800; - int height = 480; - window.setSize(width, height); - window.setFullscreen(true); - - // Hook this into EGL - GLDrawableFactory factory = GLDrawableFactory.getFactory(GLDrawableFactory.PROFILE_GLES1, window); - GLCapabilities caps = new GLCapabilities(); - // For emulation library, use 16 bpp - caps.setRedBits(5); - caps.setGreenBits(6); - caps.setBlueBits(5); - caps.setDepthBits(16); - GLDrawable drawable = factory.createGLDrawable(window, caps, null); - window.setVisible(true); - drawable.setRealized(true); - GLContext context = drawable.createContext(null); - context.makeCurrent(); - - GL gl = context.getGL(); - - motionIncr = 180.f / Math.max(window.getWidth(), window.getHeight()); - FBCubes cubes = new FBCubes(); - cubes.init(gl); - - long startTime = System.currentTimeMillis(); - long lastTime = startTime, curTime = 0, dt0, dt1; - int totalFrames = 0, lastFrames = 0; - - do { - cubes.reshape(gl, 0, 0, window.getWidth(), window.getHeight()); - cubes.display(gl, xRot, yRot); - drawable.swapBuffers(); - totalFrames++; lastFrames++; - curTime = System.currentTimeMillis(); - dt0 = curTime-lastTime; - if ( (curTime-lastTime) > 5000 ) { - dt1 = curTime-startTime; - System.out.println(dt1/1000+"s, 5s: "+ (lastFrames*1000)/dt0 + " fps, "+ - "total: "+ (totalFrames*1000)/dt1 + " fps"); - lastTime=curTime; - lastFrames=0; - } - if(toggleFS) { - window.setFullscreen(!window.isFullscreen()); - toggleFS=false; - } - - window.pumpMessages(); - - // Thread.yield(); - - // try{ - // Thread.sleep(10); - // } catch(InterruptedException ie) {} - } while (!quit && (curTime - startTime) < 215000); - - // Shut things down cooperatively - context.release(); - context.destroy(); - drawable.destroy(); - factory.shutdown(); - System.out.println("CubeFBO shut down cleanly."); - } catch (GLException e) { - e.printStackTrace(); - } - } - - - public static void main(String[] args) { - new Main().run(); - System.exit(0); - } -} diff --git a/src/demos/es2/Basic.java b/src/demos/es2/Basic.java deleted file mode 100755 index d951d3b..0000000 --- a/src/demos/es2/Basic.java +++ /dev/null @@ -1,147 +0,0 @@ -package demos.es2; - -import java.nio.*; -import javax.media.opengl.*; -import com.sun.opengl.impl.egl.*; - -public class Basic { - public static void main(String[] args) { - System.out.println("Basic.main()"); - try { - System.out.println("GLDrawableFactory.getFactory()"); - EGLDrawableFactory factory = (EGLDrawableFactory) GLDrawableFactory.getFactory(); - - System.out.println("EGLDrawableFactory.initialize()"); - factory.initialize(); - System.out.println("factory.createExternalGLContext()"); - GLContext context = factory.createExternalGLContext(); - // OpenGL context is current at this point - - // The following is a no-op that is only needed to get the - // Java-level GLContext object set up in thread-local storage - System.out.println("context.makeCurrent()"); - context.makeCurrent(); - context.setGL(new DebugGL(context.getGL())); - - GL gl = context.getGL(); - - Shader shader = Shader.createBinaryProgram(data_vert, GL.GL_NVIDIA_PLATFORM_BINARY_NV, - data_frag, GL.GL_NVIDIA_PLATFORM_BINARY_NV); - shader.setAttribByName("pos_attr", 2, GL.GL_FLOAT, false, 0, FloatBuffer.wrap(vert)); - shader.setAttribByName("col_attr", 4, GL.GL_FLOAT, false, 0, FloatBuffer.wrap(col)); - - float angle = 0; - - long startTime = System.currentTimeMillis(); - long curTime = 0; - - do { - angle += 0.15f; - gl.glClear(GL.GL_COLOR_BUFFER_BIT); - // we only need to pass cos and sin to the shader. - float rad = (float) Math.toRadians(angle); - gl.glUniform2f(shader.getUniformLocation("rot"), - (float) Math.cos(rad), - (float) Math.sin(rad)); - - gl.glDrawElements(GL.GL_TRIANGLES, 3, GL.GL_UNSIGNED_BYTE, indices); - - // FIXME -- need an external GLDrawable - factory.swapBuffers(); - - // Process events - factory.processEvents(); - - curTime = System.currentTimeMillis(); - } while ((curTime - startTime) < 15000); - } catch (GLException e) { - e.printStackTrace(); - } - - System.exit(0); - } - - static ByteBuffer indices = ByteBuffer.wrap(new byte[] { 0, 1, 2 }); - static final float ROOT_3_OVER_2 = 0.8660254f; - static final float ROOT_3_OVER_6 = (ROOT_3_OVER_2/3.0f); - static float[] vert = { 0.5f, -ROOT_3_OVER_6, - -0.5f, -ROOT_3_OVER_6, - 0.0f, ROOT_3_OVER_2 - ROOT_3_OVER_6 }; - static float[] col = { 1.0f, 0.0f, 0.0f, 1.0f, - 0.0f, 1.0f, 0.0f, 1.0f, - 0.0f, 0.0f, 1.0f, 1.0f}; - - static byte[] data_vert = { - (byte) 0x6a, (byte) 0xbe, (byte) 0x3a, (byte) 0x95, (byte) 0x1f, (byte) 0x6d, (byte) 0x83, (byte) 0x26, (byte) 0x05, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x05, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x11, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x49, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x1e, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x20, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x51, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x18, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x03, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x57, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x10, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x05, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x5b, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x08, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x5b, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x1c, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x0d, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x62, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x08, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x10, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x64, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x20, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x11, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x6c, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x12, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x6c, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x20, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x13, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x74, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x58, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x58, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x6d, (byte) 0x61, (byte) 0x6e, (byte) 0x46, (byte) 0x49, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x63, (byte) 0x6f, (byte) 0x6c, (byte) 0x5f, (byte) 0x61, (byte) 0x74, (byte) 0x74, (byte) 0x72, (byte) 0x00, (byte) 0x70, (byte) 0x6f, (byte) 0x73, - (byte) 0x5f, (byte) 0x61, (byte) 0x74, (byte) 0x74, (byte) 0x72, (byte) 0x00, (byte) 0x63, (byte) 0x6f, (byte) 0x6c, (byte) 0x5f, (byte) 0x76, (byte) 0x61, (byte) 0x72, (byte) 0x00, (byte) 0x72, (byte) 0x6f, - (byte) 0x74, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x52, (byte) 0x8b, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x09, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x50, (byte) 0x8b, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x12, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x04, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x1a, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x50, (byte) 0x8b, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x04, (byte) 0x10, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x08, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x03, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x81, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x05, (byte) 0x42, (byte) 0x14, (byte) 0x00, (byte) 0x06, (byte) 0x22, (byte) 0x6c, (byte) 0x9c, (byte) 0x1f, (byte) 0x40, (byte) 0x0d, (byte) 0x01, (byte) 0x40, (byte) 0x00, - (byte) 0x83, (byte) 0xc0, (byte) 0x06, (byte) 0x81, (byte) 0x9c, (byte) 0xff, (byte) 0x41, (byte) 0x60, (byte) 0x6c, (byte) 0x1c, (byte) 0x00, (byte) 0x00, (byte) 0x2a, (byte) 0x00, (byte) 0x80, (byte) 0x00, - (byte) 0xc3, (byte) 0x00, (byte) 0x04, (byte) 0x81, (byte) 0xfc, (byte) 0x9f, (byte) 0x41, (byte) 0x60, (byte) 0x6c, (byte) 0x9c, (byte) 0x1f, (byte) 0x40, (byte) 0x00, (byte) 0x10, (byte) 0x40, (byte) 0x00, - (byte) 0x83, (byte) 0xc0, (byte) 0x86, (byte) 0x01, (byte) 0x80, (byte) 0x5f, (byte) 0x40, (byte) 0x60, (byte) 0x6c, (byte) 0x9c, (byte) 0x1f, (byte) 0x40, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, - (byte) 0xc0, (byte) 0x40, (byte) 0x15, (byte) 0x01, (byte) 0x80, (byte) 0x9f, (byte) 0x20, (byte) 0x00, (byte) 0x6c, (byte) 0x9c, (byte) 0x1f, (byte) 0x40, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, - (byte) 0xea, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x81, (byte) 0x1f, (byte) 0x21, (byte) 0xa0 - }; - - static byte[] data_frag = { - (byte) 0x62, (byte) 0x45, (byte) 0xed, (byte) 0x02, (byte) 0x2f, (byte) 0x6d, (byte) 0x83, (byte) 0x26, (byte) 0x05, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x05, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x11, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x49, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x08, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x08, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x4b, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x04, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x4b, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x14, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x06, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x50, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x07, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x50, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x08, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x50, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x0d, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x50, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x0e, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x50, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x16, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x50, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x08, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x20, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x17, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x58, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x04, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x0f, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x59, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x4c, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x11, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x6c, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x12, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x6c, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x13, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x6c, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x54, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x54, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x14, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x6c, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x15, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x6c, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x6d, (byte) 0x61, (byte) 0x6e, (byte) 0x46, (byte) 0x49, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x63, (byte) 0x6f, (byte) 0x6c, (byte) 0x5f, (byte) 0x76, (byte) 0x61, (byte) 0x72, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x04, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x84, (byte) 0x95, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xf1, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xf0, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xf0, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x07, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x15, (byte) 0x20, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x41, (byte) 0x52, (byte) 0x32, (byte) 0x30, (byte) 0x2d, (byte) 0x42, (byte) 0x49, (byte) 0x4e, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x01, (byte) 0x00, (byte) 0x41, (byte) 0x25, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x15, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0x01, (byte) 0x00, (byte) 0x01, (byte) 0x26, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0x00, (byte) 0x04, (byte) 0x26, (byte) 0xba, (byte) 0x51, (byte) 0x4e, (byte) 0x10, - (byte) 0x04, (byte) 0x02, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x01, (byte) 0x27, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x01, (byte) 0x28, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x06, (byte) 0x28, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x01, (byte) 0x29, - (byte) 0x05, (byte) 0x00, (byte) 0x02, (byte) 0x00 - }; -} diff --git a/src/demos/es2/Shader.java b/src/demos/es2/Shader.java deleted file mode 100755 index 0222bfe..0000000 --- a/src/demos/es2/Shader.java +++ /dev/null @@ -1,189 +0,0 @@ -package demos.es2; - -import java.io.UnsupportedEncodingException; -import java.nio.*; -import javax.media.opengl.*; -import javax.media.opengl.glu.*; - -public class Shader { - private int program; - private int vertexShader; - private int fragmentShader; - - private Shader() { - } - - public static Shader createBinaryProgram(byte[] vertexShaderCode, int vertexShaderFormat, - byte[] fragmentShaderCode, int fragmentShaderFormat) throws GLException { - Shader shader = new Shader(); - shader.createBinaryProgramImpl(vertexShaderCode, vertexShaderFormat, - fragmentShaderCode, fragmentShaderFormat); - shader.useProgram(); - return shader; - } - - public void setAttribByName(String name, int size, int type, boolean normalized, int stride, Buffer pointer) { - GL gl = GLU.getCurrentGL(); - int index = gl.glGetAttribLocation(program, name); - gl.glVertexAttribPointer(index, size, type, normalized, stride, pointer); - gl.glEnableVertexAttribArray(index); - // FIXME - // trackAttribLocation(index); - } - - public int getUniformLocation(String name) { - GL gl = GLU.getCurrentGL(); - return gl.glGetUniformLocation(program, name); - } - - public void useProgram() { - GL gl = GLU.getCurrentGL(); - gl.glUseProgram(program); - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private void createBinaryProgramImpl(byte[] vertexShaderCode, int vertexShaderFormat, - byte[] fragmentShaderCode, int fragmentShaderFormat) throws GLException { - allocProgram(); - int[] numBinaryFormats = new int[1]; - GL gl = GLU.getCurrentGL(); - gl.glGetIntegerv(GL.GL_NUM_SHADER_BINARY_FORMATS, numBinaryFormats, 0); - if (numBinaryFormats[0] > 0) { - int[] binaryFormats = new int[numBinaryFormats[0]]; - gl.glGetIntegerv(GL.GL_SHADER_BINARY_FORMATS, binaryFormats, 0); - boolean gotVertexFormat = false; - boolean gotFragmentFormat = false; - - for (int i = 0; i < binaryFormats.length && (!gotVertexFormat || !gotFragmentFormat); i++) { - if (!gotVertexFormat) { - gotVertexFormat = (binaryFormats[i] == vertexShaderFormat); - } - if (!gotFragmentFormat) { - gotFragmentFormat = (binaryFormats[i] == fragmentShaderFormat); - } - } - - if (!gotVertexFormat) { - throw new RuntimeException("Binary vertex program format 0x" + Integer.toHexString(vertexShaderFormat) + - " not available"); - } - - if (!gotFragmentFormat) { - throw new RuntimeException("Binary fragment program format 0x" + Integer.toHexString(fragmentShaderFormat) + - " not available"); - } - } - // Set up the shaders - setupBinaryShader(vertexShader, vertexShaderCode, vertexShaderFormat); - setupBinaryShader(fragmentShader, fragmentShaderCode, fragmentShaderFormat); - - // Set up the shader program - gl.glLinkProgram(program); - if (!glslLog(program, GL.GL_LINK_STATUS, "link")) { - throw new GLException("Error linking program"); - } - } - - private void allocProgram() { - GL gl = GLU.getCurrentGL(); - vertexShader = gl.glCreateShader(GL.GL_VERTEX_SHADER); - fragmentShader = gl.glCreateShader(GL.GL_FRAGMENT_SHADER); - program = gl.glCreateProgram(); - gl.glAttachShader(program, vertexShader); - gl.glAttachShader(program, fragmentShader); - } - - private void setupBinaryShader(int shader, - byte[] shaderData, - int binaryFormat) { - ByteBuffer buf = ByteBuffer.wrap(shaderData); - int[] tmp = new int[1]; - tmp[0] = shader; - GL gl = GLU.getCurrentGL(); - gl.glShaderBinary(1, tmp, 0, binaryFormat, buf, shaderData.length); - } - - private boolean glslLog(int obj, int checkCompile, String op) { - boolean success = false; - - GL gl = GLU.getCurrentGL(); - - // log output. - String str = null; - if (checkCompile == GL.GL_COMPILE_STATUS) { - int[] len = new int[1]; - gl.glGetShaderiv(obj, GL.GL_INFO_LOG_LENGTH, len, 0); - if (len[0] > 0) { - byte[] buf = new byte[len[0]]; - gl.glGetShaderInfoLog(obj, len[0], null, 0, buf, 0); - try { - str = new String(buf, 0, buf.length, "US-ASCII"); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - } - } else { - // LINK or VALIDATE - int[] len = new int[1]; - gl.glGetProgramiv(obj, GL.GL_INFO_LOG_LENGTH, len, 0); - if (len[0] > 0) { - byte[] buf = new byte[len[0]]; - gl.glGetProgramInfoLog(obj, len[0], null, 0, buf, 0); - try { - str = new String(buf, 0, buf.length, "US-ASCII"); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - } - } - - if (str != null) { - System.out.println("--- "); - System.out.println(op); - System.out.println(" log ---"); - System.out.println(str); - } - - // check the compile / link status. - if (checkCompile == GL.GL_COMPILE_STATUS) { - int[] status = new int[1]; - - gl.glGetShaderiv(obj, checkCompile, status, 0); - success = (status[0] != 0); - if (!success) { - int[] len = new int[1]; - gl.glGetShaderiv(obj, GL.GL_SHADER_SOURCE_LENGTH, len, 0); - if (len[0] > 0) { - byte[] buf = new byte[len[0]]; - gl.glGetShaderSource(obj, len[0], null, 0, buf, 0); - try { - str = new String(buf, 0, buf.length, "US-ASCII"); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - if (str != null) { - System.out.println("--- "); - System.out.println(op); - System.out.println(" code ---"); - System.out.println(str); - } - } - } - } else { // LINK or VALIDATE - int[] status = new int[1]; - gl.glGetProgramiv(obj, checkCompile, status, 0); - success = (status[0] != 0); - } - - if (!success) { - System.out.println("--- "); - System.out.println(op); - System.out.println(" failed"); - } - - return success; - } -} diff --git a/src/demos/fullscreen/FullscreenWorkaround.java b/src/demos/fullscreen/FullscreenWorkaround.java deleted file mode 100755 index 39c689c..0000000 --- a/src/demos/fullscreen/FullscreenWorkaround.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.fullscreen; - -import java.awt.*; -import javax.swing.*; - -import javax.media.opengl.*; - -/** Class which implements workaround for full-screen bugs on Windows - when <code>-Dsun.java2d.noddraw=true</code> is specified as well - as a similar bug on Mac OS X. This code currently expects that the - GLAutoDrawable will be placed in a containing Frame. */ - -public class FullscreenWorkaround implements GLEventListener { - private int width; - private int height; - - /** Creates a full-screen workaround with the specified width and - height to set the full-screen window to later. */ - public FullscreenWorkaround(int width, int height) { - this.width = width; - this.height = height; - } - - public void init(GLAutoDrawable drawable) { - // Find parent frame if any - final Frame frame = getParentFrame((Component) drawable); - if (frame != null) { - EventQueue.invokeLater(new Runnable() { - public void run() { - frame.setVisible(false); - frame.setBounds(0, 0, width, height); - frame.setVisible(true); - frame.toFront(); - } - }); - } - } - - public void display(GLAutoDrawable drawable) {} - public void reshape(GLAutoDrawable drawable, int x, int y, int w, int h) {} - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private static Frame getParentFrame(Component c) { - while (c != null && - (!(c instanceof Frame))) { - c = c.getParent(); - } - return (Frame) c; - } -} diff --git a/src/demos/fullscreen/GearsFullscreen.java b/src/demos/fullscreen/GearsFullscreen.java deleted file mode 100755 index f71dd77..0000000 --- a/src/demos/fullscreen/GearsFullscreen.java +++ /dev/null @@ -1,128 +0,0 @@ -package demos.fullscreen; - -import java.awt.*; -import java.awt.event.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import demos.gears.Gears; -import demos.util.*; - -/** - * GearsFullscreen.java <BR> - * author: Brian Paul (converted to Java by Ron Cemer and Sven Goethel) <P> - * - * This version is equal to Brian Paul's version 1.2 1999/10/21 <P> - * - * Illustrates simple usage of GLCanvas in full-screen mode. On - * Windows this demo should be run with the system property - * -Dsun.java2d.noddraw=true specified to prevent Java2D from using - * DirectDraw, which is incompatible with OpenGL at the driver level. - */ - -public class GearsFullscreen { - private GraphicsDevice dev; - private DisplayMode origMode; - private boolean fullScreen; - private Frame frame; - private Animator animator; - private int initWidth = 300; - private int initHeight = 300; - - public static void main(String[] args) { - new GearsFullscreen().run(args); - } - - public void run(String[] args) { - dev = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); - origMode = dev.getDisplayMode(); - DisplayMode newMode = null; - - if (dev.isFullScreenSupported()) { - newMode = ScreenResSelector.showSelectionDialog(); - if (newMode != null) { - initWidth = newMode.getWidth(); - initHeight = newMode.getHeight(); - } - } else { - System.err.println("NOTE: full-screen mode not supported; running in window instead"); - } - - frame = new Frame("Gear Demo"); - if (newMode != null) { - frame.setUndecorated(true); - } - final GLCanvas canvas = new GLCanvas(); - - canvas.addGLEventListener(new Gears()); - canvas.addGLEventListener(new FullscreenWorkaround(initWidth, initHeight)); - - frame.add(canvas); - frame.setSize(initWidth, initHeight); - animator = new Animator(canvas); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - runExit(); - } - }); - frame.setVisible(true); - - if (dev.isFullScreenSupported() && (newMode != null)) { - dev.setFullScreenWindow(frame); - if (dev.isDisplayChangeSupported()) { - dev.setDisplayMode(newMode); - fullScreen = true; - } else { - // Not much point in having a full-screen window in this case - dev.setFullScreenWindow(null); - final Frame f2 = frame; - try { - EventQueue.invokeAndWait(new Runnable() { - public void run() { - f2.setVisible(false); - f2.setUndecorated(false); - f2.setVisible(true); - f2.setSize(initWidth, initHeight); - } - }); - } catch (Exception e) { - e.printStackTrace(); - } - System.err.println("NOTE: was not able to change display mode; full-screen disabled"); - } - } - - animator.start(); - } - - public void runExit() { - // Run this on another thread than the AWT event queue to - // make sure the call to Animator.stop() completes before - // exiting - new Thread(new Runnable() { - public void run() { - animator.stop(); - try { - EventQueue.invokeAndWait(new Runnable() { - public void run() { - if (fullScreen) { - try { - dev.setDisplayMode(origMode); - } catch (Exception e1) { - } - try { - dev.setFullScreenWindow(null); - } catch (Exception e2) { - } - fullScreen = false; - } - } - }); - } catch (Exception e) { - e.printStackTrace(); - } - System.exit(0); - } - }).start(); - } -} diff --git a/src/demos/fullscreen/GearsFullscreen2.java b/src/demos/fullscreen/GearsFullscreen2.java deleted file mode 100755 index eea7869..0000000 --- a/src/demos/fullscreen/GearsFullscreen2.java +++ /dev/null @@ -1,148 +0,0 @@ -package demos.fullscreen; - -import java.awt.*; -import java.awt.event.*; -import javax.swing.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import demos.gears.Gears; -import demos.util.*; - -/** - * GearsFullscreen2.java <BR> - * author: Brian Paul (converted to Java by Ron Cemer and Sven Goethel) <P> - * - * This version is equal to Brian Paul's version 1.2 1999/10/21 <P> - * - * Illustrates more complex usage of GLCanvas in full-screen mode. On - * Windows this demo should be run with the system property - * -Dsun.java2d.noddraw=true specified to prevent Java2D from using - * DirectDraw, which is incompatible with OpenGL at the driver level. - */ - -public class GearsFullscreen2 { - private GraphicsDevice dev; - private DisplayMode origMode; - private boolean fullScreen; - private JFrame frame; - private Animator animator; - private int initWidth = 300; - private int initHeight = 300; - - public static void main(String[] args) { - new GearsFullscreen2().run(args); - } - - public void run(String[] args) { - dev = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); - origMode = dev.getDisplayMode(); - DisplayMode newMode = null; - - if (dev.isFullScreenSupported()) { - newMode = ScreenResSelector.showSelectionDialog(); - if (newMode != null) { - initWidth = newMode.getWidth(); - initHeight = newMode.getHeight(); - } - } else { - System.err.println("NOTE: full-screen mode not supported; running in window instead"); - } - - frame = new JFrame("Gear Demo"); - if (newMode != null) { - frame.setUndecorated(true); - } - GLCanvas canvas = new GLCanvas(); - - canvas.addGLEventListener(new Gears()); - canvas.addGLEventListener(new FullscreenWorkaround(initWidth, initHeight)); - frame.getContentPane().setLayout(new BorderLayout()); - - ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false); - - JButton button = new JButton("West"); - button.setToolTipText("West ToolTip"); - frame.getContentPane().add(button, BorderLayout.WEST); - - button = new JButton("East"); - button.setToolTipText("East ToolTip"); - frame.getContentPane().add(button, BorderLayout.EAST); - - button = new JButton("North"); - button.setToolTipText("North ToolTip"); - frame.getContentPane().add(button, BorderLayout.NORTH); - - button = new JButton("South"); - button.setToolTipText("South ToolTip"); - frame.getContentPane().add(button, BorderLayout.SOUTH); - - frame.getContentPane().add(canvas, BorderLayout.CENTER); - frame.setSize(initWidth, initHeight); - animator = new Animator(canvas); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - runExit(); - } - }); - frame.setVisible(true); - - if (dev.isFullScreenSupported() && (newMode != null)) { - dev.setFullScreenWindow(frame); - if (dev.isDisplayChangeSupported()) { - dev.setDisplayMode(newMode); - fullScreen = true; - } else { - // Not much point in having a full-screen window in this case - dev.setFullScreenWindow(null); - final Frame f2 = frame; - try { - EventQueue.invokeAndWait(new Runnable() { - public void run() { - f2.setVisible(false); - f2.setUndecorated(false); - f2.setVisible(true); - f2.setSize(initWidth, initHeight); - } - }); - } catch (Exception e) { - e.printStackTrace(); - } - System.err.println("NOTE: was not able to change display mode; full-screen disabled"); - } - } - - animator.start(); - } - - public void runExit() { - // Run this on another thread than the AWT event queue to - // make sure the call to Animator.stop() completes before - // exiting - new Thread(new Runnable() { - public void run() { - animator.stop(); - try { - EventQueue.invokeAndWait(new Runnable() { - public void run() { - if (fullScreen) { - try { - dev.setDisplayMode(origMode); - } catch (Exception e1) { - } - try { - dev.setFullScreenWindow(null); - } catch (Exception e2) { - } - fullScreen = false; - } - } - }); - } catch (Exception e) { - e.printStackTrace(); - } - System.exit(0); - } - }).start(); - } -} diff --git a/src/demos/fullscreen/JGearsFullscreen.java b/src/demos/fullscreen/JGearsFullscreen.java deleted file mode 100755 index 465c566..0000000 --- a/src/demos/fullscreen/JGearsFullscreen.java +++ /dev/null @@ -1,145 +0,0 @@ -package demos.fullscreen; - -import java.awt.*; -import java.awt.event.*; -import javax.swing.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import demos.jgears.JGears; -import demos.util.*; - -/** - * JGearsFullscreen.java <BR> - * author: Brian Paul (converted to Java by Ron Cemer and Sven Goethel) <P> - * - * This version is equal to Brian Paul's version 1.2 1999/10/21 <P> - * - * Illustrates usage of GLJPanel in full-screen mode. On Windows this - * demo should be run with the system property - * -Dsun.java2d.noddraw=true specified to prevent Java2D from using - * DirectDraw, which is incompatible with OpenGL at the driver level. - */ - -public class JGearsFullscreen { - private GraphicsDevice dev; - private DisplayMode origMode; - private boolean fullScreen; - private JFrame frame; - private Animator animator; - private int initWidth = 300; - private int initHeight = 300; - - public static void main(String[] args) { - new JGearsFullscreen().run(args); - } - - public void run(String[] args) { - dev = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); - origMode = dev.getDisplayMode(); - DisplayMode newMode = null; - - if (dev.isFullScreenSupported()) { - newMode = ScreenResSelector.showSelectionDialog(); - if (newMode != null) { - initWidth = newMode.getWidth(); - initHeight = newMode.getHeight(); - } - } else { - System.err.println("NOTE: full-screen mode not supported; running in window instead"); - } - - frame = new JFrame("Gear Demo"); - if (newMode != null) { - frame.setUndecorated(true); - } - GLJPanel drawable = new JGears(); - drawable.addGLEventListener(new FullscreenWorkaround(initWidth, initHeight)); - - frame.getContentPane().setLayout(new BorderLayout()); - - JButton button = new JButton("West"); - button.setToolTipText("West ToolTip"); - frame.getContentPane().add(button, BorderLayout.WEST); - - button = new JButton("East"); - button.setToolTipText("East ToolTip"); - frame.getContentPane().add(button, BorderLayout.EAST); - - button = new JButton("North"); - button.setToolTipText("North ToolTip"); - frame.getContentPane().add(button, BorderLayout.NORTH); - - button = new JButton("South"); - button.setToolTipText("South ToolTip"); - frame.getContentPane().add(button, BorderLayout.SOUTH); - - frame.getContentPane().add(drawable, BorderLayout.CENTER); - frame.setSize(initWidth, initHeight); - animator = new Animator(drawable); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - runExit(); - } - }); - frame.setVisible(true); - - if (dev.isFullScreenSupported() && (newMode != null)) { - dev.setFullScreenWindow(frame); - if (dev.isDisplayChangeSupported()) { - dev.setDisplayMode(newMode); - fullScreen = true; - } else { - // Not much point in having a full-screen window in this case - dev.setFullScreenWindow(null); - final Frame f2 = frame; - try { - EventQueue.invokeAndWait(new Runnable() { - public void run() { - f2.setVisible(false); - f2.setUndecorated(false); - f2.setVisible(true); - f2.setSize(initWidth, initHeight); - } - }); - } catch (Exception e) { - e.printStackTrace(); - } - System.err.println("NOTE: was not able to change display mode; full-screen disabled"); - } - } - - animator.start(); - } - - public void runExit() { - // Run this on another thread than the AWT event queue to - // make sure the call to Animator.stop() completes before - // exiting - new Thread(new Runnable() { - public void run() { - animator.stop(); - try { - EventQueue.invokeAndWait(new Runnable() { - public void run() { - if (fullScreen) { - try { - dev.setDisplayMode(origMode); - } catch (Exception e1) { - } - try { - dev.setFullScreenWindow(null); - } catch (Exception e2) { - } - fullScreen = false; - } - } - }); - } catch (Exception e) { - e.printStackTrace(); - } - System.exit(0); - } - }).start(); - } -} diff --git a/src/demos/gamma/TestGamma.java b/src/demos/gamma/TestGamma.java deleted file mode 100755 index 17fb365..0000000 --- a/src/demos/gamma/TestGamma.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.gamma; - -import java.awt.*; -import java.awt.event.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; - -import demos.gears.*; - -public class TestGamma { - private static void usage() { - System.out.println("Usage: java TestGamma [gamma value] [brightness value] [contrast value]"); - System.exit(1); - } - - public static void main(String[] args) { - if (args.length != 3) { - usage(); - } - - float gamma = 1.0f; - float brightness = 0.0f; - float contrast = 0.0f; - try { - gamma = Float.parseFloat(args[0]); - brightness = Float.parseFloat(args[1]); - contrast = Float.parseFloat(args[2]); - } catch (NumberFormatException e) { - usage(); - } - - Frame frame = new Frame("Gear and Gamma Demo"); - GLCanvas canvas = new GLCanvas(); - canvas.addGLEventListener(new Gears()); - frame.add(canvas); - frame.setSize(300, 300); - final Animator animator = new Animator(canvas); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - // Run this on another thread than the AWT event queue to - // make sure the call to Animator.stop() completes before - // exiting - new Thread(new Runnable() { - public void run() { - animator.stop(); - Gamma.resetDisplayGamma(); - System.exit(0); - } - }).start(); - } - }); - frame.show(); - animator.start(); - - if (!Gamma.setDisplayGamma(gamma, brightness, contrast)) { - System.err.println("Unable to change display gamma, brightness, and contrast"); - } - } -} diff --git a/src/demos/gears/Gears.java b/src/demos/gears/Gears.java deleted file mode 100644 index 4ae780e..0000000 --- a/src/demos/gears/Gears.java +++ /dev/null @@ -1,320 +0,0 @@ -package demos.gears; - -import java.awt.*; -import java.awt.event.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; - -/** - * Gears.java <BR> - * author: Brian Paul (converted to Java by Ron Cemer and Sven Goethel) <P> - * - * This version is equal to Brian Paul's version 1.2 1999/10/21 - */ - -public class Gears implements GLEventListener, MouseListener, MouseMotionListener { - public static void main(String[] args) { - Frame frame = new Frame("Gear Demo"); - GLCanvas canvas = new GLCanvas(); - - canvas.addGLEventListener(new Gears()); - frame.add(canvas); - frame.setSize(300, 300); - final Animator animator = new Animator(canvas); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - // Run this on another thread than the AWT event queue to - // make sure the call to Animator.stop() completes before - // exiting - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } - }); - frame.show(); - animator.start(); - } - - private float view_rotx = 20.0f, view_roty = 30.0f, view_rotz = 0.0f; - private int gear1, gear2, gear3; - private float angle = 0.0f; - - private int prevMouseX, prevMouseY; - private boolean mouseRButtonDown = false; - - public void init(GLAutoDrawable drawable) { - // Use debug pipeline - // drawable.setGL(new DebugGL(drawable.getGL())); - - GL gl = drawable.getGL(); - - System.err.println("INIT GL IS: " + gl.getClass().getName()); - - System.err.println("Chosen GLCapabilities: " + drawable.getChosenGLCapabilities()); - - gl.setSwapInterval(1); - - float pos[] = { 5.0f, 5.0f, 10.0f, 0.0f }; - float red[] = { 0.8f, 0.1f, 0.0f, 1.0f }; - float green[] = { 0.0f, 0.8f, 0.2f, 1.0f }; - float blue[] = { 0.2f, 0.2f, 1.0f, 1.0f }; - - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, pos, 0); - gl.glEnable(GL.GL_CULL_FACE); - gl.glEnable(GL.GL_LIGHTING); - gl.glEnable(GL.GL_LIGHT0); - gl.glEnable(GL.GL_DEPTH_TEST); - - /* make the gears */ - gear1 = gl.glGenLists(1); - gl.glNewList(gear1, GL.GL_COMPILE); - gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE, red, 0); - gear(gl, 1.0f, 4.0f, 1.0f, 20, 0.7f); - gl.glEndList(); - - gear2 = gl.glGenLists(1); - gl.glNewList(gear2, GL.GL_COMPILE); - gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE, green, 0); - gear(gl, 0.5f, 2.0f, 2.0f, 10, 0.7f); - gl.glEndList(); - - gear3 = gl.glGenLists(1); - gl.glNewList(gear3, GL.GL_COMPILE); - gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE, blue, 0); - gear(gl, 1.3f, 2.0f, 0.5f, 10, 0.7f); - gl.glEndList(); - - gl.glEnable(GL.GL_NORMALIZE); - - drawable.addMouseListener(this); - drawable.addMouseMotionListener(this); - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { - GL gl = drawable.getGL(); - - float h = (float)height / (float)width; - - gl.glMatrixMode(GL.GL_PROJECTION); - - System.err.println("GL_VENDOR: " + gl.glGetString(GL.GL_VENDOR)); - System.err.println("GL_RENDERER: " + gl.glGetString(GL.GL_RENDERER)); - System.err.println("GL_VERSION: " + gl.glGetString(GL.GL_VERSION)); - gl.glLoadIdentity(); - gl.glFrustum(-1.0f, 1.0f, -h, h, 5.0f, 60.0f); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - gl.glTranslatef(0.0f, 0.0f, -40.0f); - } - - public void display(GLAutoDrawable drawable) { - // Turn the gears' teeth - angle += 2.0f; - - // Get the GL corresponding to the drawable we are animating - GL gl = drawable.getGL(); - - // Special handling for the case where the GLJPanel is translucent - // and wants to be composited with other Java 2D content - if ((drawable instanceof GLJPanel) && - !((GLJPanel) drawable).isOpaque() && - ((GLJPanel) drawable).shouldPreserveColorBufferIfTranslucent()) { - gl.glClear(GL.GL_DEPTH_BUFFER_BIT); - } else { - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - } - - // Rotate the entire assembly of gears based on how the user - // dragged the mouse around - gl.glPushMatrix(); - gl.glRotatef(view_rotx, 1.0f, 0.0f, 0.0f); - gl.glRotatef(view_roty, 0.0f, 1.0f, 0.0f); - gl.glRotatef(view_rotz, 0.0f, 0.0f, 1.0f); - - // Place the first gear and call its display list - gl.glPushMatrix(); - gl.glTranslatef(-3.0f, -2.0f, 0.0f); - gl.glRotatef(angle, 0.0f, 0.0f, 1.0f); - gl.glCallList(gear1); - gl.glPopMatrix(); - - // Place the second gear and call its display list - gl.glPushMatrix(); - gl.glTranslatef(3.1f, -2.0f, 0.0f); - gl.glRotatef(-2.0f * angle - 9.0f, 0.0f, 0.0f, 1.0f); - gl.glCallList(gear2); - gl.glPopMatrix(); - - // Place the third gear and call its display list - gl.glPushMatrix(); - gl.glTranslatef(-3.1f, 4.2f, 0.0f); - gl.glRotatef(-2.0f * angle - 25.0f, 0.0f, 0.0f, 1.0f); - gl.glCallList(gear3); - gl.glPopMatrix(); - - // Remember that every push needs a pop; this one is paired with - // rotating the entire gear assembly - gl.glPopMatrix(); - } - - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - - public static void gear(GL gl, - float inner_radius, - float outer_radius, - float width, - int teeth, - float tooth_depth) - { - int i; - float r0, r1, r2; - float angle, da; - float u, v, len; - - r0 = inner_radius; - r1 = outer_radius - tooth_depth / 2.0f; - r2 = outer_radius + tooth_depth / 2.0f; - - da = 2.0f * (float) Math.PI / teeth / 4.0f; - - gl.glShadeModel(GL.GL_FLAT); - - gl.glNormal3f(0.0f, 0.0f, 1.0f); - - /* draw front face */ - gl.glBegin(GL.GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) - { - angle = i * 2.0f * (float) Math.PI / teeth; - gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), width * 0.5f); - if(i < teeth) - { - gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle + 3.0f * da), r1 * (float)Math.sin(angle + 3.0f * da), width * 0.5f); - } - } - gl.glEnd(); - - /* draw front sides of teeth */ - gl.glBegin(GL.GL_QUADS); - for (i = 0; i < teeth; i++) - { - angle = i * 2.0f * (float) Math.PI / teeth; - gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), width * 0.5f); - gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), width * 0.5f); - gl.glVertex3f(r2 * (float)Math.cos(angle + 2.0f * da), r2 * (float)Math.sin(angle + 2.0f * da), width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle + 3.0f * da), r1 * (float)Math.sin(angle + 3.0f * da), width * 0.5f); - } - gl.glEnd(); - - /* draw back face */ - gl.glBegin(GL.GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) - { - angle = i * 2.0f * (float) Math.PI / teeth; - gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), -width * 0.5f); - gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), -width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), -width * 0.5f); - gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), -width * 0.5f); - } - gl.glEnd(); - - /* draw back sides of teeth */ - gl.glBegin(GL.GL_QUADS); - for (i = 0; i < teeth; i++) - { - angle = i * 2.0f * (float) Math.PI / teeth; - gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), -width * 0.5f); - gl.glVertex3f(r2 * (float)Math.cos(angle + 2 * da), r2 * (float)Math.sin(angle + 2 * da), -width * 0.5f); - gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), -width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), -width * 0.5f); - } - gl.glEnd(); - - /* draw outward faces of teeth */ - gl.glBegin(GL.GL_QUAD_STRIP); - for (i = 0; i < teeth; i++) - { - angle = i * 2.0f * (float) Math.PI / teeth; - gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), -width * 0.5f); - u = r2 * (float)Math.cos(angle + da) - r1 * (float)Math.cos(angle); - v = r2 * (float)Math.sin(angle + da) - r1 * (float)Math.sin(angle); - len = (float)Math.sqrt(u * u + v * v); - u /= len; - v /= len; - gl.glNormal3f(v, -u, 0.0f); - gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), width * 0.5f); - gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), -width * 0.5f); - gl.glNormal3f((float)Math.cos(angle), (float)Math.sin(angle), 0.0f); - gl.glVertex3f(r2 * (float)Math.cos(angle + 2 * da), r2 * (float)Math.sin(angle + 2 * da), width * 0.5f); - gl.glVertex3f(r2 * (float)Math.cos(angle + 2 * da), r2 * (float)Math.sin(angle + 2 * da), -width * 0.5f); - u = r1 * (float)Math.cos(angle + 3 * da) - r2 * (float)Math.cos(angle + 2 * da); - v = r1 * (float)Math.sin(angle + 3 * da) - r2 * (float)Math.sin(angle + 2 * da); - gl.glNormal3f(v, -u, 0.0f); - gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), -width * 0.5f); - gl.glNormal3f((float)Math.cos(angle), (float)Math.sin(angle), 0.0f); - } - gl.glVertex3f(r1 * (float)Math.cos(0), r1 * (float)Math.sin(0), width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(0), r1 * (float)Math.sin(0), -width * 0.5f); - gl.glEnd(); - - gl.glShadeModel(GL.GL_SMOOTH); - - /* draw inside radius cylinder */ - gl.glBegin(GL.GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) - { - angle = i * 2.0f * (float) Math.PI / teeth; - gl.glNormal3f(-(float)Math.cos(angle), -(float)Math.sin(angle), 0.0f); - gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), -width * 0.5f); - gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), width * 0.5f); - } - gl.glEnd(); - } - - // Methods required for the implementation of MouseListener - public void mouseEntered(MouseEvent e) {} - public void mouseExited(MouseEvent e) {} - - public void mousePressed(MouseEvent e) { - prevMouseX = e.getX(); - prevMouseY = e.getY(); - if ((e.getModifiers() & e.BUTTON3_MASK) != 0) { - mouseRButtonDown = true; - } - } - - public void mouseReleased(MouseEvent e) { - if ((e.getModifiers() & e.BUTTON3_MASK) != 0) { - mouseRButtonDown = false; - } - } - - public void mouseClicked(MouseEvent e) {} - - // Methods required for the implementation of MouseMotionListener - public void mouseDragged(MouseEvent e) { - int x = e.getX(); - int y = e.getY(); - Dimension size = e.getComponent().getSize(); - - float thetaY = 360.0f * ( (float)(x-prevMouseX)/(float)size.width); - float thetaX = 360.0f * ( (float)(prevMouseY-y)/(float)size.height); - - prevMouseX = x; - prevMouseY = y; - - view_rotx += thetaX; - view_roty += thetaY; - } - - public void mouseMoved(MouseEvent e) {} -} - diff --git a/src/demos/hdr/ARBFPPipeline.java b/src/demos/hdr/ARBFPPipeline.java deleted file mode 100755 index ca33ddb..0000000 --- a/src/demos/hdr/ARBFPPipeline.java +++ /dev/null @@ -1,171 +0,0 @@ -package demos.hdr; - -import java.io.*; -import java.util.*; - -import javax.media.opengl.*; -import demos.util.*; - -public class ARBFPPipeline implements Pipeline { - private int textureFormat; - public ARBFPPipeline(int textureFormat) { - this.textureFormat = textureFormat; - } - - public void init() { - } - - public void initFloatingPointTexture(GL gl, int textureObject, int w, int h) { - gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject); - gl.glCopyTexImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, textureFormat, 0, 0, w, h, 0); - } - - public void initTexture(GL gl, int textureObject, int w, int h) { - gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject); - gl.glCopyTexImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, GL.GL_RGBA, 0, 0, w, h, 0); - } - - public void copyToTexture(GL gl, int textureObject, int w, int h) { - gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject); - gl.glCopyTexSubImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, 0, 0, 0, 0, w, h); - } - - public void bindTexture(GL gl, int textureObject) { - gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject); - } - - private List programs = new ArrayList(); - public int loadVertexProgram(GL gl, String filename) throws IOException { - return loadProgram(gl, filename, GL.GL_VERTEX_PROGRAM_ARB); - } - - public int loadFragmentProgram(GL gl, String filename) throws IOException { - return loadProgram(gl, filename, GL.GL_FRAGMENT_PROGRAM_ARB); - } - - private int loadProgram(GL gl, String fileName, int profile) throws IOException { - String programBuffer = FileUtils.loadStreamIntoString(getClass().getClassLoader().getResourceAsStream(fileName)); - int[] tmpInt = new int[1]; - gl.glGenProgramsARB(1, tmpInt, 0); - int res = tmpInt[0]; - gl.glBindProgramARB(profile, res); - gl.glProgramStringARB(profile, GL.GL_PROGRAM_FORMAT_ASCII_ARB, programBuffer.length(), programBuffer); - int[] errPos = new int[1]; - gl.glGetIntegerv(GL.GL_PROGRAM_ERROR_POSITION_ARB, errPos, 0); - if (errPos[0] >= 0) { - String kind = "Program"; - if (profile == GL.GL_VERTEX_PROGRAM_ARB) { - kind = "Vertex program"; - } else if (profile == GL.GL_FRAGMENT_PROGRAM_ARB) { - kind = "Fragment program"; - } - System.out.println(kind + " failed to load:"); - String errMsg = gl.glGetString(GL.GL_PROGRAM_ERROR_STRING_ARB); - if (errMsg == null) { - System.out.println("[No error message available]"); - } else { - System.out.println("Error message: \"" + errMsg + "\""); - } - System.out.println("Error occurred at position " + errPos[0] + " in program:"); - int endPos = errPos[0]; - while (endPos < programBuffer.length() && programBuffer.charAt(endPos) != '\n') { - ++endPos; - } - System.out.println(programBuffer.substring(errPos[0], endPos)); - throw new GLException("Error loading " + kind); - } else { - if (profile == GL.GL_FRAGMENT_PROGRAM_ARB) { - int[] isNative = new int[1]; - gl.glGetProgramivARB(GL.GL_FRAGMENT_PROGRAM_ARB, - GL.GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB, - isNative, 0); - if (isNative[0] != 1) { - System.out.println("WARNING: fragment program is over native resource limits"); - Thread.dumpStack(); - } - } - } - return res; - } - - public void enableVertexProgram(GL gl, int program) { - gl.glBindProgramARB(GL.GL_VERTEX_PROGRAM_ARB, program); - gl.glEnable(GL.GL_VERTEX_PROGRAM_ARB); - } - - public void enableFragmentProgram(GL gl, int program) { - gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, program); - gl.glEnable(GL.GL_FRAGMENT_PROGRAM_ARB); - } - - public void disableVertexProgram(GL gl) { - gl.glDisable(GL.GL_VERTEX_PROGRAM_ARB); - } - - public void disableFragmentProgram(GL gl) { - gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB); - } - - public int getNamedParameter(int program, String name) { - throw new RuntimeException("Not supported"); - } - - public void setVertexProgramParameter1f(GL gl, int param, float val) { - if (param < 0) return; - gl.glProgramLocalParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, param, val, 0, 0, 0); - } - - public void setVertexProgramParameter3f(GL gl, int param, float x, float y, float z) { - if (param < 0) return; - gl.glProgramLocalParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, param, x, y, z, 0); - } - - public void setVertexProgramParameter4f(GL gl, int param, float x, float y, float z, float w) { - if (param < 0) return; - gl.glProgramLocalParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, param, x, y, z, w); - } - - public void setFragmentProgramParameter1f(GL gl, int param, float val) { - if (param < 0) return; - gl.glProgramLocalParameter4fARB(GL.GL_FRAGMENT_PROGRAM_ARB, param, val, 0, 0, 0); - } - - public void setFragmentProgramParameter3f(GL gl, int param, float x, float y, float z) { - if (param < 0) return; - gl.glProgramLocalParameter4fARB(GL.GL_FRAGMENT_PROGRAM_ARB, param, x, y, z, 0); - } - - public void setFragmentProgramParameter4f(GL gl, int param, float x, float y, float z, float w) { - if (param < 0) return; - gl.glProgramLocalParameter4fARB(GL.GL_FRAGMENT_PROGRAM_ARB, param, x, y, z, w); - } - - public void trackModelViewProjectionMatrix(GL gl, int param) { - float[] modelView = new float[16]; - float[] projection = new float[16]; - float[] mvp = new float[16]; - - // Get matrices - gl.glGetFloatv(GL.GL_PROJECTION_MATRIX, projection, 0); - gl.glGetFloatv(GL.GL_MODELVIEW_MATRIX, modelView, 0); - // Multiply together - for (int i = 0; i < 4; i++) { - for (int j = 0; j < 4; j++) { - float sum = 0; - for (int k = 0; k < 4; k++) { - sum += modelView[4 * i + k] * projection[4 * k + j]; - } - mvp[4 * i + j] = sum; - } - } - - setMatrixParameterfc(gl, param, mvp); - } - - public void setMatrixParameterfc(GL gl, int param, float[] matrix) { - // Correct for row-major vs. column-major differences - for (int i = 0; i < 4; i++) { - gl.glProgramLocalParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, param + i, matrix[i], matrix[4+i], matrix[8+i], matrix[12+i]); - } - } -} diff --git a/src/demos/hdr/CgPipeline.java b/src/demos/hdr/CgPipeline.java deleted file mode 100755 index 4bc472b..0000000 --- a/src/demos/hdr/CgPipeline.java +++ /dev/null @@ -1,113 +0,0 @@ -package demos.hdr; - -import java.io.*; -import java.util.*; - -import javax.media.opengl.*; -import com.sun.opengl.cg.*; -import demos.util.*; - -public class CgPipeline implements Pipeline { - private CGcontext context; - public void init() { - context = CgGL.cgCreateContext(); - } - - public void initFloatingPointTexture(GL gl, int textureObject, int w, int h) { - gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject); - gl.glCopyTexImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, GL.GL_FLOAT_RGBA16_NV, 0, 0, w, h, 0); - } - - public void initTexture(GL gl, int textureObject, int w, int h) { - gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject); - gl.glCopyTexImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, GL.GL_RGBA, 0, 0, w, h, 0); - } - - public void copyToTexture(GL gl, int textureObject, int w, int h) { - gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject); - gl.glCopyTexSubImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, 0, 0, 0, 0, w, h); - } - - public void bindTexture(GL gl, int textureObject) { - gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject); - } - - private List programs = new ArrayList(); - public int loadVertexProgram(GL gl, String filename) throws IOException { - return loadProgram(filename, CgGL.CG_PROFILE_ARBVP1); - } - - public int loadFragmentProgram(GL gl, String filename) throws IOException { - return loadProgram(filename, CgGL.CG_PROFILE_ARBFP1); - } - - private int loadProgram(String fileName, int profile) throws IOException { - CGprogram prog = CgGL.cgCreateProgramFromFile(context, CgGL.CG_SOURCE, fileName, profile, null, null); - if (prog == null) { - throw new RuntimeException("Error loading program"); - } - CgGL.cgGLLoadProgram(prog); - int res = programs.size(); - programs.add(prog); - return res; - } - - public void enableVertexProgram(GL gl, int program) { - CgGL.cgGLBindProgram((CGprogram) programs.get(program)); - CgGL.cgGLEnableProfile(CgGL.CG_PROFILE_ARBVP1); - } - - public void enableFragmentProgram(GL gl, int program) { - CgGL.cgGLBindProgram((CGprogram) programs.get(program)); - CgGL.cgGLEnableProfile(CgGL.CG_PROFILE_ARBFP1); - } - - public void disableVertexProgram(GL gl) { - CgGL.cgGLDisableProfile(CgGL.CG_PROFILE_ARBVP1); - } - - public void disableFragmentProgram(GL gl) { - CgGL.cgGLDisableProfile(CgGL.CG_PROFILE_ARBFP1); - } - - private List parameters = new ArrayList(); - public int getNamedParameter(int program, String name) { - CGprogram prog = (CGprogram) programs.get(program); - CGparameter param = CgGL.cgGetNamedParameter(prog, name); - int res = parameters.size(); - parameters.add(param); - return res; - } - - public void setVertexProgramParameter1f(GL gl, int param, float val) { - CgGL.cgGLSetParameter1f((CGparameter) parameters.get(param), val); - } - - public void setVertexProgramParameter3f(GL gl, int param, float x, float y, float z) { - CgGL.cgGLSetParameter3f((CGparameter) parameters.get(param), x, y, z); - } - - public void setVertexProgramParameter4f(GL gl, int param, float x, float y, float z, float w) { - CgGL.cgGLSetParameter4f((CGparameter) parameters.get(param), x, y, z, w); - } - - public void setFragmentProgramParameter1f(GL gl, int param, float val) { - CgGL.cgGLSetParameter1f((CGparameter) parameters.get(param), val); - } - - public void setFragmentProgramParameter3f(GL gl, int param, float x, float y, float z) { - CgGL.cgGLSetParameter3f((CGparameter) parameters.get(param), x, y, z); - } - - public void setFragmentProgramParameter4f(GL gl, int param, float x, float y, float z, float w) { - CgGL.cgGLSetParameter4f((CGparameter) parameters.get(param), x, y, z, w); - } - - public void trackModelViewProjectionMatrix(GL gl, int param) { - CgGL.cgGLSetStateMatrixParameter((CGparameter) parameters.get(param), CgGL.CG_GL_MODELVIEW_PROJECTION_MATRIX, CgGL.CG_GL_MATRIX_IDENTITY); - } - - public void setMatrixParameterfc(GL gl, int param, float[] matrix) { - CgGL.cgGLSetMatrixParameterfc((CGparameter) parameters.get(param), matrix, 0); - } -} diff --git a/src/demos/hdr/HDR.java b/src/demos/hdr/HDR.java deleted file mode 100755 index 5bf64dd..0000000 --- a/src/demos/hdr/HDR.java +++ /dev/null @@ -1,1248 +0,0 @@ -package demos.hdr; - -import java.awt.*; -import java.awt.event.*; -import java.io.*; -import java.nio.*; -import java.util.*; -import javax.swing.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; -import demos.common.*; -import demos.util.*; -import gleem.*; -import gleem.linalg.*; - -/** HDR demo by NVidia Corporation - Simon Green, [email protected] <P> - - Ported to Java by Kenneth Russell -*/ - -public class HDR extends Demo { - private static String[] defaultArgs = { - "demos/data/images/stpeters_cross.hdr", - "512", - "384", - "2", - "7", - "3", - "demos/data/models/teapot.obj" - }; - private GLAutoDrawable drawable; - private boolean useCg; - private boolean initComplete; - private HDRTexture hdr; - private String modelFilename; - private ObjReader model; - private Pipeline pipeline; - - private GLUT glut = new GLUT(); - - private boolean[] b = new boolean[256]; - - private ExaminerViewer viewer; - private boolean doViewAll = true; - - private DurationTimer timer = new DurationTimer(); - private boolean firstRender = true; - private int frameCount; - - private Time time = new SystemTime(); - private float animRate = (float) Math.toRadians(-12.0f); // Radians / sec - - private String hdrFilename; - private int win_w; - private int win_h; - private float win_scale; - private int pbuffer_w; - private int pbuffer_h; - private int blurWidth; - private int blur_scale; - private int blur_w; - private int blur_h; - private float blurAmount = 0.5f; - - private int modelno = 4; - private int numModels = 5; - - private boolean hilo = false; - private int hdr_tex; - private int hdr_tex2; - private int gamma_tex; - private int vignette_tex; - - private int textureTarget; // Either GL_TEXTURE_RECTANGLE_NV or GL_TEXTURE_RECTANGLE_EXT/ARB - - private GLPbuffer pbuffer; - private GLPbuffer blur_pbuffer; - private GLPbuffer blur2_pbuffer; - private GLPbuffer tonemap_pbuffer; - // Texture objects for these pbuffers - private int pbuffer_tex; - private int blur_pbuffer_tex; - private int blur2_pbuffer_tex; - private int tonemap_pbuffer_tex; - - // Render passes for blur2_pbuffer - private static final int BLUR2_SHRINK_PASS = 0; - private static final int BLUR2_VERT_BLUR_PASS = 1; - private int blur2Pass; - - private int blurh_fprog, blurv_fprog; - private int skybox_fprog, object_fprog, object_vprog; - private int tonemap_fprog, shrink_fprog; - private int blurAmount_param, windowSize_param, exposure_param; - private int modelViewProj_param, model_param, eyePos_param; - - - private float exposure = 32.0f; - - private float[] identityMatrix = { 1.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 1.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 1.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 1.0f }; - - public static void main(String[] args) { - GLCanvas canvas = new GLCanvas(); - HDR demo = new HDR(); - canvas.addGLEventListener(demo); - - final Animator animator = new Animator(canvas); - demo.setDemoListener(new DemoListener() { - public void shutdownDemo() { - runExit(animator); - } - public void repaint() {} - }); - demo.setup(args); - - Frame frame = new Frame("High Dynamic Range Rendering Demo"); - frame.setLayout(new BorderLayout()); - canvas.setSize(demo.getPreferredWidth(), demo.getPreferredHeight()); - - frame.add(canvas, BorderLayout.CENTER); - frame.pack(); - frame.show(); - canvas.requestFocus(); - - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - runExit(animator); - } - }); - - animator.start(); - } - - public void setup(String[] args) { - if ((args == null) || (args.length == 0)) { - args = defaultArgs; - } - - if (args.length < 6 || args.length > 8) { - usage(); - } - - try { - int argNo = 0; - if (args[argNo].equals("-cg")) { - useCg = true; - ++argNo; - } - hdrFilename = args[argNo++]; - pbuffer_w = Integer.parseInt(args[argNo++]); - pbuffer_h = Integer.parseInt(args[argNo++]); - win_scale = Float.parseFloat(args[argNo++]); - blurWidth = Integer.parseInt(args[argNo++]); - blur_scale = Integer.parseInt(args[argNo++]); - if (argNo < args.length) { - modelFilename = args[argNo++]; - } - - blur_w = pbuffer_w / blur_scale; - blur_h = pbuffer_h / blur_scale; - win_w = (int) (pbuffer_w * win_scale); - win_h = (int) (pbuffer_h * win_scale); - } catch (NumberFormatException e) { - e.printStackTrace(); - usage(); - } - - if (modelFilename != null) { - try { - InputStream in = getClass().getClassLoader().getResourceAsStream(modelFilename); - if (in == null) { - throw new IOException("Unable to open model file " + modelFilename); - } - model = new ObjReader(in); - if (model.getVerticesPerFace() != 3) { - throw new IOException("Sorry, only triangle-based WaveFront OBJ files supported"); - } - model.rescale(1.2f / model.getRadius()); - ++numModels; - modelno = 5; - } catch (IOException e) { - e.printStackTrace(); - System.exit(1); - } - } - - b['f'] = true; // fragment programs - b['g'] = true; // glare - b['l'] = true; - b[' '] = true; // animation - b['n'] = true; // upsampling smoothing - - try { - InputStream in = getClass().getClassLoader().getResourceAsStream(hdrFilename); - if (in == null) { - throw new IOException("Unable to open HDR file " + hdrFilename); - } - hdr = new HDRTexture(in); - hdr.analyze(); - hdr.convert(); - } catch (IOException e) { - e.printStackTrace(); - System.exit(0); - } - - } - - public int getPreferredWidth() { - return win_w; - } - - public int getPreferredHeight() { - return win_h; - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - public void shutdownDemo() { - ManipManager.getManipManager().unregisterWindow(drawable); - drawable.removeGLEventListener(this); - super.shutdownDemo(); - } - - //---------------------------------------------------------------------- - // Listener for main window - // - - private float zNear = 0.1f; - private float zFar = 10.0f; - private boolean wire = false; - private boolean toggleWire = false; - private GLU glu = new GLU(); - - public void init(GLAutoDrawable drawable) { - initComplete = false; - // printThreadName("init for Listener"); - - GL gl = drawable.getGL(); - - checkExtension(gl, "GL_VERSION_1_3"); // For multitexture - checkExtension(gl, "GL_ARB_pbuffer"); - checkExtension(gl, "GL_ARB_vertex_program"); - checkExtension(gl, "GL_ARB_fragment_program"); - if (!gl.isExtensionAvailable("GL_NV_texture_rectangle") && - !gl.isExtensionAvailable("GL_EXT_texture_rectangle") && - !gl.isExtensionAvailable("GL_ARB_texture_rectangle")) { - // NOTE: it turns out the constants associated with these extensions are all identical - unavailableExtension("Texture rectangle extension not available (need one of GL_NV_texture_rectangle, GL_EXT_texture_rectangle or GL_ARB_texture_rectangle"); - } - - if (!gl.isExtensionAvailable("GL_NV_float_buffer") && - !gl.isExtensionAvailable("GL_ATI_texture_float") && - !gl.isExtensionAvailable("GL_APPLE_float_pixels")) { - unavailableExtension("Floating-point textures not available (need one of GL_NV_float_buffer, GL_ATI_texture_float, or GL_APPLE_float_pixels"); - } - - setOrthoProjection(gl, 0, 0, win_w, win_h); - - gamma_tex = createGammaTexture(gl, 1024, 1.0f / 2.2f); - vignette_tex = createVignetteTexture(gl, pbuffer_w, pbuffer_h, 0.25f*pbuffer_w, 0.7f*pbuffer_w); - - int floatBits = 16; - int floatAlphaBits = 0; - // int floatDepthBits = 16; - // Workaround for apparent bug when not using render-to-texture-rectangle - int floatDepthBits = 1; - - GLCapabilities caps = new GLCapabilities(); - caps.setDoubleBuffered(false); - caps.setPbufferFloatingPointBuffers(true); - caps.setRedBits(floatBits); - caps.setGreenBits(floatBits); - caps.setBlueBits(floatBits); - caps.setAlphaBits(floatAlphaBits); - caps.setDepthBits(floatDepthBits); - int[] tmp = new int[1]; - if (!GLDrawableFactory.getFactory().canCreateGLPbuffer()) { - unavailableExtension("Can not create pbuffer"); - } - if (pbuffer != null) { - pbuffer.destroy(); - pbuffer = null; - } - if (blur_pbuffer != null) { - blur_pbuffer.destroy(); - blur_pbuffer = null; - } - if (blur2_pbuffer != null) { - blur2_pbuffer.destroy(); - blur2_pbuffer = null; - } - if (tonemap_pbuffer != null) { - tonemap_pbuffer.destroy(); - tonemap_pbuffer = null; - } - - GLContext parentContext = drawable.getContext(); - pbuffer = GLDrawableFactory.getFactory().createGLPbuffer(caps, null, pbuffer_w, pbuffer_h, parentContext); - pbuffer.addGLEventListener(new PbufferListener()); - gl.glGenTextures(1, tmp, 0); - pbuffer_tex = tmp[0]; - blur_pbuffer = GLDrawableFactory.getFactory().createGLPbuffer(caps, null, blur_w, blur_h, parentContext); - blur_pbuffer.addGLEventListener(new BlurPbufferListener()); - gl.glGenTextures(1, tmp, 0); - blur_pbuffer_tex = tmp[0]; - blur2_pbuffer = GLDrawableFactory.getFactory().createGLPbuffer(caps, null, blur_w, blur_h, parentContext); - blur2_pbuffer.addGLEventListener(new Blur2PbufferListener()); - gl.glGenTextures(1, tmp, 0); - blur2_pbuffer_tex = tmp[0]; - caps.setPbufferFloatingPointBuffers(false); - caps.setRedBits(8); - caps.setGreenBits(8); - caps.setBlueBits(8); - caps.setDepthBits(24); - tonemap_pbuffer = GLDrawableFactory.getFactory().createGLPbuffer(caps, null, pbuffer_w, pbuffer_h, parentContext); - tonemap_pbuffer.addGLEventListener(new TonemapPbufferListener()); - gl.glGenTextures(1, tmp, 0); - tonemap_pbuffer_tex = tmp[0]; - - drawable.addKeyListener(new KeyAdapter() { - public void keyPressed(KeyEvent e) { - dispatchKey(e.getKeyCode(), e.getKeyChar()); - } - }); - - doViewAll = true; - - // Register the window with the ManipManager - ManipManager manager = ManipManager.getManipManager(); - manager.registerWindow(drawable); - this.drawable = drawable; - - viewer = new ExaminerViewer(MouseButtonHelper.numMouseButtons()); - viewer.setAutoRedrawMode(false); - viewer.setNoAltKeyMode(true); - viewer.attach(drawable, new BSphereProvider() { - public BSphere getBoundingSphere() { - return new BSphere(new Vec3f(0, 0, 0), 1.0f); - } - }); - viewer.setZNear(zNear); - viewer.setZFar(zFar); - initComplete = true; - } - - public void display(GLAutoDrawable drawable) { - // printThreadName("display for Listener"); - - if (!initComplete) { - return; - } - - if (!firstRender) { - if (++frameCount == 30) { - timer.stop(); - System.err.println("Frames per second: " + (30.0f / timer.getDurationAsSeconds())); - timer.reset(); - timer.start(); - frameCount = 0; - } - } else { - firstRender = false; - timer.start(); - } - - time.update(); - - GL gl = drawable.getGL(); - - // OK, ready to go - if (b[' ']) { - viewer.rotateAboutFocalPoint(new Rotf(Vec3f.Y_AXIS, (float) (time.deltaT() * animRate))); - } - - pbuffer.display(); - - // FIXME: because of changes in lazy pbuffer instantiation - // behavior the pbuffer might not have been run just now - if (pipeline == null) { - return; - } - - // blur pass - if (b['g']) { - // shrink image - blur2Pass = BLUR2_SHRINK_PASS; - blur2_pbuffer.display(); - } - - // horizontal blur - blur_pbuffer.display(); - - // vertical blur - blur2Pass = BLUR2_VERT_BLUR_PASS; - blur2_pbuffer.display(); - - // tone mapping pass - tonemap_pbuffer.display(); - - // display in window - gl.glEnable(GL.GL_TEXTURE_RECTANGLE_NV); - gl.glActiveTexture(GL.GL_TEXTURE0); - gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, tonemap_pbuffer_tex); - if (b['n']) { - gl.glTexParameteri( GL.GL_TEXTURE_RECTANGLE_NV, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); - } else { - gl.glTexParameteri( GL.GL_TEXTURE_RECTANGLE_NV, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); - } - drawQuadRect4(gl, win_w, win_h, pbuffer_w, pbuffer_h); - gl.glDisable(GL.GL_TEXTURE_RECTANGLE_NV); - - // Try to avoid swamping the CPU on Linux - Thread.yield(); - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { - setOrthoProjection(drawable.getGL(), x, y, width, height); - win_w = width; - win_h = height; - } - - // Unused routines - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - - private void checkExtension(GL gl, String glExtensionName) { - if (!gl.isExtensionAvailable(glExtensionName)) { - unavailableExtension("Unable to initialize " + glExtensionName + " OpenGL extension"); - } - } - - private void unavailableExtension(String message) { - JOptionPane.showMessageDialog(null, message, "Unavailable extension", JOptionPane.ERROR_MESSAGE); - shutdownDemo(); - throw new GLException(message); - } - - private void dispatchKey(int keyCode, char k) { - if (k < 256) - b[k] = !b[k]; - - switch (keyCode) { - case KeyEvent.VK_ESCAPE: - case KeyEvent.VK_Q: - shutdownDemo(); - break; - - case KeyEvent.VK_EQUALS: - exposure *= 2; - break; - - case KeyEvent.VK_MINUS: - exposure *= 0.5f; - break; - - case KeyEvent.VK_PLUS: - exposure += 1.0f; - break; - - case KeyEvent.VK_UNDERSCORE: - exposure -= 1.0f; - break; - - case KeyEvent.VK_PERIOD: - blurAmount += 0.1f; - break; - - case KeyEvent.VK_COMMA: - blurAmount -= 0.1f; - break; - - case KeyEvent.VK_G: - if (b['g']) - blurAmount = 0.5f; - else - blurAmount = 0.0f; - break; - - case KeyEvent.VK_O: - modelno = (modelno + 1) % numModels; - break; - - case KeyEvent.VK_V: - doViewAll = true; - break; - } - } - - // create gamma lookup table texture - private int createGammaTexture(GL gl, int size, float gamma) { - int[] tmp = new int[1]; - gl.glGenTextures(1, tmp, 0); - int texid = tmp[0]; - - int target = GL.GL_TEXTURE_1D; - gl.glBindTexture(target, texid); - gl.glTexParameteri(target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); - gl.glTexParameteri(target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); - gl.glTexParameteri(target, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE); - - gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1); - - float[] img = new float [size]; - - for(int i=0; i<size; i++) { - float x = i / (float) size; - img[i] = (float) Math.pow(x, gamma); - } - - gl.glTexImage1D(target, 0, GL.GL_LUMINANCE, size, 0, GL.GL_LUMINANCE, GL.GL_FLOAT, FloatBuffer.wrap(img)); - - return texid; - } - - // create vignette texture - // based on Debevec's pflare.c - int createVignetteTexture(GL gl, int xsiz, int ysiz, float r0, float r1) { - int[] tmp = new int[1]; - gl.glGenTextures(1, tmp, 0); - int texid = tmp[0]; - - gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, texid); - gl.glTexParameteri(GL.GL_TEXTURE_RECTANGLE_NV, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); - gl.glTexParameteri(GL.GL_TEXTURE_RECTANGLE_NV, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); - gl.glTexParameteri(GL.GL_TEXTURE_RECTANGLE_NV, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE); - gl.glTexParameteri(GL.GL_TEXTURE_RECTANGLE_NV, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE); - - gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1); - - float[] img = new float [xsiz*ysiz]; - - for (int y = 0; y < ysiz; y++) { - for (int x = 0; x < xsiz; x++) { - float radius = (float) Math.sqrt((x-xsiz/2)*(x-xsiz/2) + (y-ysiz/2)*(y-ysiz/2)); - if (radius > r0) { - if (radius < r1) { - float t = 1.0f - (radius-r0)/(r1-r0); - float a = t * 2 - 1; - float reduce = (float) ((0.25 * Math.PI + 0.5 * Math.asin(a) + 0.5 * a * Math.sqrt( 1 - a*a ))/(0.5 * Math.PI)); - img[y*xsiz + x] = reduce; - } else { - img[y*xsiz + x] = 0.0f; - } - } else { - img[y*xsiz + x] = 1.0f; - } - } - } - - gl.glTexImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, GL.GL_LUMINANCE, xsiz, ysiz, 0, GL.GL_LUMINANCE, GL.GL_FLOAT, FloatBuffer.wrap(img)); - - return texid; - } - - //---------------------------------------------------------------------- - // Listeners for pbuffers - // - - class PbufferListener implements GLEventListener { - public void init(GLAutoDrawable drawable) { - // printThreadName("init for PbufferListener"); - - // drawable.setGL(new DebugGL(drawable.getGL())); - - GL gl = drawable.getGL(); - gl.glEnable(GL.GL_DEPTH_TEST); - - // FIXME: what about the ExaminerViewer? - setPerspectiveProjection(gl, pbuffer_w, pbuffer_h); - - GLPbuffer pbuffer = (GLPbuffer) drawable; - int fpmode = pbuffer.getFloatingPointMode(); - int texmode = 0; - switch (fpmode) { - case GLPbuffer.NV_FLOAT: - System.err.println("Creating HILO cubemap"); - hdr_tex = hdr.createCubemapHILO(gl, true); - hdr_tex2 = hdr.createCubemapHILO(gl, false); - texmode = GL.GL_FLOAT_RGBA16_NV; - hilo = true; - break; - case GLPbuffer.APPLE_FLOAT: - System.err.println("Creating FLOAT16_APPLE cubemap"); - hdr_tex = hdr.createCubemap(gl, GL.GL_RGB_FLOAT16_APPLE); - texmode = GL.GL_RGBA_FLOAT16_APPLE; - break; - case GLPbuffer.ATI_FLOAT: - System.err.println("Creating FLOAT16_ATI cubemap"); - hdr_tex = hdr.createCubemap(gl, GL.GL_RGB_FLOAT16_ATI); - texmode = GL.GL_RGBA_FLOAT16_ATI; - break; - default: - throw new RuntimeException("Unexpected floating-point mode " + fpmode); - } - - if (useCg) { - initCg(gl); - } else { - initARBFP(gl, texmode); - } - initBlurCode(gl, blurWidth); - - pipeline.initFloatingPointTexture(gl, pbuffer_tex, pbuffer_w, pbuffer_h); - } - - public void display(GLAutoDrawable drawable) { - // printThreadName("display for PbufferListener"); - - GL gl = drawable.getGL(); - - renderScene(gl); - - // Copy results back to texture - pipeline.copyToTexture(gl, pbuffer_tex, pbuffer_w, pbuffer_h); - } - - // Unused routines - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - - //---------------------------------------------------------------------- - // Internals only below this point - // - - // render scene to float pbuffer - private void renderScene(GL gl) { - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - if (doViewAll) { - viewer.viewAll(gl); - } - - if (b['w']) - gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_LINE); - else - gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_FILL); - - if (b['m']) { - gl.glEnable(GL.GL_MULTISAMPLE); - gl.glHint(GL.GL_MULTISAMPLE_FILTER_HINT_NV, GL.GL_NICEST); - } else { - gl.glDisable(GL.GL_MULTISAMPLE); - } - - if (!b['e']) { - // draw background - pipeline.enableFragmentProgram(gl, skybox_fprog); - gl.glDisable(GL.GL_DEPTH_TEST); - drawSkyBox(gl); - gl.glEnable(GL.GL_DEPTH_TEST); - } - - // draw object - pipeline.enableVertexProgram(gl, object_vprog); - pipeline.enableFragmentProgram(gl, object_fprog); - - gl.glMatrixMode(GL.GL_TEXTURE); - gl.glLoadIdentity(); - viewer.update(); - viewer.updateInverseRotation(gl); - - gl.glMatrixMode( GL.GL_MODELVIEW ); - gl.glLoadIdentity(); - CameraParameters params = viewer.getCameraParameters(); - Mat4f view = params.getModelviewMatrix(); - applyTransform(gl, view); - - pipeline.trackModelViewProjectionMatrix(gl, modelViewProj_param); - - // FIXME: add interation for object separately from camera? - // cgGLSetMatrixParameterfc(model_param, object.get_transform().get_value()); - pipeline.setMatrixParameterfc(gl, model_param, identityMatrix); - - // calculate eye position in cubemap space - Vec3f eyePos_eye = new Vec3f(); - Vec3f eyePos_model = new Vec3f(); - view.invertRigid(); - view.xformPt(eyePos_eye, eyePos_model); - pipeline.setVertexProgramParameter3f(gl, eyePos_param, eyePos_model.x(), eyePos_model.y(), eyePos_model.z()); - - gl.glActiveTexture(GL.GL_TEXTURE0); - gl.glBindTexture(GL.GL_TEXTURE_CUBE_MAP, hdr_tex); - gl.glEnable(GL.GL_TEXTURE_CUBE_MAP); - - boolean linear = b['l']; - if (linear) { - gl.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_LINEAR); - gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); - } else { - // glTexParameteri( GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST_MIPMAP_NEAREST); - gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); - gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); - } - - if (hilo) { - gl.glActiveTexture(GL.GL_TEXTURE1); - gl.glBindTexture(GL.GL_TEXTURE_CUBE_MAP, hdr_tex2); - gl.glEnable(GL.GL_TEXTURE_CUBE_MAP); - - if (linear) { - gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_LINEAR); - gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); - } else { - // glTexParameteri( GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST_MIPMAP_NEAREST); - gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); - gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); - } - } - - gl.glEnable(GL.GL_CULL_FACE); - - switch(modelno) { - case 0: - glut.glutSolidTorus( 0.25, 0.5, 40, 40); - break; - case 1: - glut.glutSolidSphere(0.75f, 40, 40); - break; - case 2: - glut.glutSolidTetrahedron(); - break; - case 3: - glut.glutSolidCube(1.0f); - break; - case 4: - // Something about the teapot's geometry causes bad artifacts - // glut.glutSolidTeapot(gl, 1.0f); - break; - case 5: - gl.glEnableClientState(GL.GL_VERTEX_ARRAY); - gl.glEnableClientState(GL.GL_NORMAL_ARRAY); - gl.glVertexPointer(3, GL.GL_FLOAT, 0, model.getVertices()); - gl.glNormalPointer(GL.GL_FLOAT, 0, model.getVertexNormals()); - int[] indices = model.getFaceIndices(); - gl.glDrawElements(GL.GL_TRIANGLES, indices.length, GL.GL_UNSIGNED_INT, IntBuffer.wrap(indices)); - gl.glDisableClientState(GL.GL_VERTEX_ARRAY); - gl.glDisableClientState(GL.GL_NORMAL_ARRAY); - break; - } - - gl.glDisable(GL.GL_CULL_FACE); - pipeline.disableVertexProgram(gl); - pipeline.disableFragmentProgram(gl); - gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_FILL); - } - } - - class BlurPbufferListener implements GLEventListener { - public void init(GLAutoDrawable drawable) { - // printThreadName("init for BlurPbufferListener"); - - // drawable.setGL(new DebugGL(drawable.getGL())); - - GL gl = drawable.getGL(); - - // FIXME: what about the ExaminerViewer? - setOrthoProjection(gl, 0, 0, blur_w, blur_h); - - pipeline.initFloatingPointTexture(gl, blur_pbuffer_tex, blur_w, blur_h); - } - - public void display(GLAutoDrawable drawable) { - // printThreadName("display for BlurPbufferListener"); - - GL gl = drawable.getGL(); - - // horizontal blur - gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, blurh_fprog); - gl.glActiveTexture(GL.GL_TEXTURE0); - pipeline.bindTexture(gl, blur2_pbuffer_tex); - glowPass(gl); - - pipeline.copyToTexture(gl, blur_pbuffer_tex, blur_w, blur_h); - } - - // Unused routines - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - } - - class Blur2PbufferListener implements GLEventListener { - public void init(GLAutoDrawable drawable) { - // printThreadName("init for Blur2PbufferListener"); - - // drawable.setGL(new DebugGL(drawable.getGL())); - - GL gl = drawable.getGL(); - // FIXME: what about the ExaminerViewer? - setOrthoProjection(gl, 0, 0, blur_w, blur_h); - - pipeline.initFloatingPointTexture(gl, blur2_pbuffer_tex, blur_w, blur_h); - } - - public void display(GLAutoDrawable drawable) { - // printThreadName("display for Blur2PbufferListener"); - - GL gl = drawable.getGL(); - - if (blur2Pass == BLUR2_SHRINK_PASS) { - gl.glClear(GL.GL_COLOR_BUFFER_BIT); - - pipeline.enableFragmentProgram(gl, shrink_fprog); - setOrthoProjection(gl, 0, 0, blur_w, blur_h); - gl.glActiveTexture(GL.GL_TEXTURE0); - gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, pbuffer_tex); - drawQuadRect2(gl, blur_w, blur_h, pbuffer_w, pbuffer_h); - pipeline.disableFragmentProgram(gl); - - } else if (blur2Pass == BLUR2_VERT_BLUR_PASS) { - - // vertical blur - gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, blurv_fprog); - gl.glActiveTexture(GL.GL_TEXTURE0); - pipeline.bindTexture(gl, blur_pbuffer_tex); - glowPass(gl); - - } else { - throw new RuntimeException("Illegal value of blur2Pass: " + blur2Pass); - } - - pipeline.copyToTexture(gl, blur2_pbuffer_tex, blur_w, blur_h); - } - - // Unused routines - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - } - - class TonemapPbufferListener implements GLEventListener { - public void init(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - - setOrthoProjection(gl, 0, 0, pbuffer_w, pbuffer_h); - - pipeline.initTexture(gl, tonemap_pbuffer_tex, pbuffer_w, pbuffer_h); - } - - public void display(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - - toneMappingPass(gl); - - pipeline.copyToTexture(gl, tonemap_pbuffer_tex, pbuffer_w, pbuffer_h); - } - - // Unused routines - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - } - - //---------------------------------------------------------------------- - // Rendering routines - // - - private void setOrthoProjection(GL gl, int x, int y, int w, int h) { - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - gl.glOrtho(0, w, 0, h, -1.0, 1.0); - gl.glMatrixMode(GL.GL_TEXTURE); - gl.glLoadIdentity(); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - gl.glViewport(x, y, w, h); - } - - private void setPerspectiveProjection(GL gl, int w, int h) { - // FIXME: what about ExaminerViewer? - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluPerspective(60.0, (float) w / (float) h, 0.1, 10.0); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - gl.glViewport(0, 0, w, h); - } - - // blur floating point image - private void glowPass(GL gl) { - gl.glDisable(GL.GL_DEPTH_TEST); - gl.glEnable(GL.GL_FRAGMENT_PROGRAM_ARB); - - setOrthoProjection(gl, 0, 0, blur_w, blur_h); - drawQuadRect(gl, blur_w, blur_h); - - gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB); - } - - private void drawQuadRect(GL gl, int w, int h) { - gl.glBegin(GL.GL_QUADS); - gl.glTexCoord2f(0, h); gl.glMultiTexCoord2f(GL.GL_TEXTURE1, 0, h / blur_scale); gl.glVertex3f(0, h, 0); - gl.glTexCoord2f(w, h); gl.glMultiTexCoord2f(GL.GL_TEXTURE1, w / blur_scale, h / blur_scale); gl.glVertex3f(w, h, 0); - gl.glTexCoord2f(w, 0); gl.glMultiTexCoord2f(GL.GL_TEXTURE1, w / blur_scale, 0); gl.glVertex3f(w, 0, 0); - gl.glTexCoord2f(0, 0); gl.glMultiTexCoord2f(GL.GL_TEXTURE1, 0, 0); gl.glVertex3f(0, 0, 0); - gl.glEnd(); - } - - private void drawQuadRect2(GL gl, int w, int h, int tw, int th) { - gl.glBegin(GL.GL_QUADS); - gl.glTexCoord2f(0, th); gl.glVertex3f(0, h, 0); - gl.glTexCoord2f(tw, th); gl.glVertex3f(w, h, 0); - gl.glTexCoord2f(tw, 0); gl.glVertex3f(w, 0, 0); - gl.glTexCoord2f(0, 0); gl.glVertex3f(0, 0, 0); - gl.glEnd(); - } - - private void drawQuadRect4(GL gl, int w, int h, int tw, int th) { - float offset = 0.5f; - gl.glBegin(GL.GL_QUADS); - gl.glTexCoord2f(offset, th - offset); gl.glVertex3f(0, h, 0); - gl.glTexCoord2f(tw - offset, th - offset); gl.glVertex3f(w, h, 0); - gl.glTexCoord2f(tw - offset, offset); gl.glVertex3f(w, 0, 0); - gl.glTexCoord2f(offset, offset); gl.glVertex3f(0, 0, 0); - gl.glEnd(); - } - - private void disableTexGen(GL gl) { - gl.glDisable(GL.GL_TEXTURE_GEN_S); - gl.glDisable(GL.GL_TEXTURE_GEN_T); - gl.glDisable(GL.GL_TEXTURE_GEN_R); - } - - private void enableTexGen(GL gl) { - gl.glEnable(GL.GL_TEXTURE_GEN_S); - gl.glEnable(GL.GL_TEXTURE_GEN_T); - gl.glEnable(GL.GL_TEXTURE_GEN_R); - } - - // draw cubemap background - private void drawSkyBox(GL gl) { - gl.glActiveTexture(GL.GL_TEXTURE0); - gl.glBindTexture(GL.GL_TEXTURE_CUBE_MAP, hdr_tex); - gl.glEnable(GL.GL_TEXTURE_CUBE_MAP); - - if (hilo) { - gl.glActiveTexture(GL.GL_TEXTURE1); - gl.glBindTexture(GL.GL_TEXTURE_CUBE_MAP, hdr_tex2); - gl.glEnable(GL.GL_TEXTURE_CUBE_MAP); - } - - // initialize object linear texgen - gl.glActiveTexture(GL.GL_TEXTURE0); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glPushMatrix(); - gl.glLoadIdentity(); - float[] s_plane = { 1.0f, 0.0f, 0.0f, 0.0f }; - float[] t_plane = { 0.0f, 1.0f, 0.0f, 0.0f }; - float[] r_plane = { 0.0f, 0.0f, 1.0f, 0.0f }; - gl.glTexGenfv(GL.GL_S, GL.GL_OBJECT_PLANE, s_plane, 0); - gl.glTexGenfv(GL.GL_T, GL.GL_OBJECT_PLANE, t_plane, 0); - gl.glTexGenfv(GL.GL_R, GL.GL_OBJECT_PLANE, r_plane, 0); - gl.glPopMatrix(); - gl.glTexGeni(GL.GL_S, GL.GL_TEXTURE_GEN_MODE, GL.GL_OBJECT_LINEAR); - gl.glTexGeni(GL.GL_T, GL.GL_TEXTURE_GEN_MODE, GL.GL_OBJECT_LINEAR); - gl.glTexGeni(GL.GL_R, GL.GL_TEXTURE_GEN_MODE, GL.GL_OBJECT_LINEAR); - enableTexGen(gl); - - gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_REPLACE); - - gl.glMatrixMode(GL.GL_TEXTURE); - gl.glPushMatrix(); - gl.glLoadIdentity(); - viewer.updateInverseRotation(gl); - - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glPushMatrix(); - gl.glLoadIdentity(); - gl.glScalef(10.0f, 10.0f, 10.0f); - glut.glutSolidCube(1.0f); - gl.glPopMatrix(); - - gl.glDisable(GL.GL_TEXTURE_CUBE_MAP); - - gl.glMatrixMode(GL.GL_TEXTURE); - gl.glPopMatrix(); - gl.glMatrixMode(GL.GL_MODELVIEW); - - disableTexGen(gl); - } - - // read from float texture, apply tone mapping, render to regular 8/8/8 display - private void toneMappingPass(GL gl) { - gl.glFinish(); - - gl.glActiveTexture(GL.GL_TEXTURE0); - gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, pbuffer_tex); - - gl.glActiveTexture(GL.GL_TEXTURE1); - if (blur2_pbuffer != null) { - gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, blur2_pbuffer_tex); - } - - gl.glActiveTexture(GL.GL_TEXTURE2); - gl.glBindTexture(GL.GL_TEXTURE_1D, gamma_tex); - - gl.glActiveTexture(GL.GL_TEXTURE3); - pipeline.bindTexture(gl, vignette_tex); - - pipeline.enableFragmentProgram(gl, tonemap_fprog); - - pipeline.setFragmentProgramParameter1f(gl, blurAmount_param, blurAmount); - pipeline.setFragmentProgramParameter4f(gl, windowSize_param, 2.0f/win_w, 2.0f/win_h, -1.0f, -1.0f); - pipeline.setFragmentProgramParameter1f(gl, exposure_param, exposure); - - drawQuadRect(gl, win_w, win_h); - - pipeline.disableFragmentProgram(gl); - } - - //---------------------------------------------------------------------- - // Cg and blur code initialization - // - - private String shaderRoot = "demos/hdr/shaders/"; - private void initCg(GL gl) { - // NOTE: need to instantiate CgPipeline reflectively to avoid - // compile-time dependence (since Cg support might not be present) - try { - Class cgPipelineClass = Class.forName("demos.hdr.CgPipeline"); - pipeline = (Pipeline) cgPipelineClass.newInstance(); - } catch (Exception e) { - throw new GLException(e); - } - pipeline.init(); - - try { - tonemap_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "cg/tonemap.cg"); - blurAmount_param = pipeline.getNamedParameter(tonemap_fprog, "blurAmount"); - windowSize_param = pipeline.getNamedParameter(tonemap_fprog, "windowSize"); - exposure_param = pipeline.getNamedParameter(tonemap_fprog, "exposure"); - - if (hilo) { - skybox_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "cg/skybox_hilo.cg"); - object_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "cg/object_hilo.cg"); - } else { - skybox_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "cg/skybox.cg"); - object_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "cg/object.cg"); - } - - shrink_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "cg/shrink.cg"); - - object_vprog = pipeline.loadVertexProgram(gl, shaderRoot + "cg/object_vp.cg"); - modelViewProj_param = pipeline.getNamedParameter(object_vprog, "modelViewProj"); - model_param = pipeline.getNamedParameter(object_vprog, "model"); - eyePos_param = pipeline.getNamedParameter(object_vprog, "eyePos"); - } catch (IOException e) { - throw new RuntimeException("Error loading shaders", e); - } - } - - private void initARBFP(GL gl, int texmode) { - pipeline = new ARBFPPipeline(texmode); - pipeline.init(); - - try { - // NOTE that the program parameters are hard-coded; in the - // future we can use GLSL but for this demo we desire good - // backward compatibility - tonemap_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "arbfp1/tonemap.arbfp1"); - blurAmount_param = 1; - windowSize_param = -1; // Not used - exposure_param = 2; - - if (hilo) { - skybox_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "arbfp1/skybox_hilo.arbfp1"); - object_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "arbfp1/object_hilo.arbfp1"); - } else { - skybox_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "arbfp1/skybox.arbfp1"); - object_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "arbfp1/object.arbfp1"); - } - - shrink_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "arbfp1/shrink.arbfp1"); - - object_vprog = pipeline.loadVertexProgram(gl, shaderRoot + "arbfp1/object_vp.arbvp1"); - modelViewProj_param = 0; - model_param = 4; - eyePos_param = 8; - } catch (IOException e) { - throw new RuntimeException("Error loading shaders", e); - } - } - - private void initBlurCode(GL gl, int blurWidth) { - // generate blur code - String blurCode = generateBlurCodeFP2(blurWidth, false); - blurh_fprog = loadProgram(gl, GL.GL_FRAGMENT_PROGRAM_ARB, blurCode); - // printf("%s\n", blurCode); - - blurCode = generateBlurCodeFP2(blurWidth, true); - blurv_fprog = loadProgram(gl, GL.GL_FRAGMENT_PROGRAM_ARB, blurCode); - // printf("%s\n", blurCode); - } - - private int loadProgram(GL gl, int target, String code) { - int prog_id; - int[] tmp = new int[1]; - gl.glGenProgramsARB(1, tmp, 0); - prog_id = tmp[0]; - gl.glBindProgramARB(target, prog_id); - int size = code.length(); - gl.glProgramStringARB(target, GL.GL_PROGRAM_FORMAT_ASCII_ARB, code.length(), code); - int[] errPos = new int[1]; - gl.glGetIntegerv(GL.GL_PROGRAM_ERROR_POSITION_ARB, errPos, 0); - if (errPos[0] >= 0) { - String kind = "Program"; - if (target == GL.GL_VERTEX_PROGRAM_ARB) { - kind = "Vertex program"; - } else if (target == GL.GL_FRAGMENT_PROGRAM_ARB) { - kind = "Fragment program"; - } - System.out.println(kind + " failed to load:"); - String errMsg = gl.glGetString(GL.GL_PROGRAM_ERROR_STRING_ARB); - if (errMsg == null) { - System.out.println("[No error message available]"); - } else { - System.out.println("Error message: \"" + errMsg + "\""); - } - System.out.println("Error occurred at position " + errPos[0] + " in program:"); - int endPos = errPos[0]; - while (endPos < code.length() && code.charAt(endPos) != '\n') { - ++endPos; - } - System.out.println(code.substring(errPos[0], endPos)); - throw new GLException("Error loading " + kind); - } else { - if (target == GL.GL_FRAGMENT_PROGRAM_ARB) { - int[] isNative = new int[1]; - gl.glGetProgramivARB(GL.GL_FRAGMENT_PROGRAM_ARB, - GL.GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB, - isNative, 0); - if (isNative[0] != 1) { - System.out.println("WARNING: fragment program is over native resource limits"); - Thread.dumpStack(); - } - } - } - return prog_id; - } - - // 1d Gaussian distribution - private float gaussian(float x, float s) { - return (float) (Math.exp(-x*x/(2*s*s)) / (s*Math.sqrt(2*Math.PI))); - } - - private void dumpWeights(int n) { - float s = n / 3.0f; - float sum = 0.0f; - System.err.println("gaussian weights, s = " + s + ", n = " + n); - for(int x=-n; x<=n; x++) { - float w = gaussian(x, s); - sum += w; - System.err.println("" + x + ": " + w); - } - System.err.println("sum = " + sum); - } - - // optimized version - // pairs texture lookups, uses half precision - private String generateBlurCodeFP2(int n, boolean vertical) { - StringBuffer buf = new StringBuffer(); - - float sum = 0; - for(int i=-n; i<=n; i++) { - float weight = gaussian(3.0f*i / (float) n, 1.0f); - sum += weight; - } - System.err.println("sum = " + sum); - - buf.append("!!ARBfp1.0\n"); - buf.append("TEMP H0, H1, H2;\n"); - for(int i=-n; i<=n; i+=2) { - float weight = gaussian(3.0f*i / (float) n, 1.0f) / sum; - float weight2 = gaussian(3.0f*(i+1) / (float) n, 1.0f) / sum; - - int x_offset, y_offset, x_offset2, y_offset2; - if (vertical) { - x_offset = 0; x_offset2 = 0; - y_offset = i; y_offset2 = i+1; - } else { - x_offset = i; x_offset2 = i+1; - y_offset = 0; y_offset2 = 0; - } - - // calculate texcoords - buf.append("ADD H0, fragment.texcoord[0], {" + x_offset + ", " + y_offset + "};\n"); - if (i+1 <= n) { - buf.append("ADD H1, fragment.texcoord[0], {" + x_offset2 + ", " + y_offset2 + "};\n"); - } - // do texture lookups - buf.append("TEX H0, H0, texture[0], RECT;\n"); - if (i+1 <= n) { - buf.append("TEX H1, H1, texture[0], RECT;\n"); - } - - // accumulate results - if (i==-n) { - // first sample - buf.append("MUL H2, H0, {" + weight + "}.x;\n"); - buf.append("MAD H2, H1, {" + weight2 + "}.x, H2;\n"); - } else { - buf.append("MAD H2, H0, {" + weight + "}.x, H2;\n"); - if (i+1 <= n) { - buf.append("MAD H2, H1, {" + weight2 + "}.x, H2;\n"); - } - } - } - - buf.append( - "MOV result.color, H2;\n" + - "END\n" - ); - - return buf.toString(); - } - - private void applyTransform(GL gl, Mat4f mat) { - float[] data = new float[16]; - mat.getColumnMajorData(data); - gl.glMultMatrixf(data, 0); - } - - private void usage() { - System.err.println("usage: java demos.hdr.HDR [-cg] image.hdr pbuffer_w pbuffer_h window_scale blur_width blur_decimate [obj file]"); - shutdownDemo(); - } - - private void printThreadName(String where) { - System.err.println("In " + where + ": current thread = " + Thread.currentThread().getName()); - } - - private static void runExit(final Animator animator) { - // Note: calling System.exit() synchronously inside the draw, - // reshape or init callbacks can lead to deadlocks on certain - // platforms (in particular, X11) because the JAWT's locking - // routines cause a global AWT lock to be grabbed. Run the - // exit routine in another thread. - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } -} diff --git a/src/demos/hdr/HDRTexture.java b/src/demos/hdr/HDRTexture.java deleted file mode 100755 index bf6bb71..0000000 --- a/src/demos/hdr/HDRTexture.java +++ /dev/null @@ -1,495 +0,0 @@ -package demos.hdr; - -import java.io.*; -import java.nio.*; - -import javax.media.opengl.*; - -public class HDRTexture { - private RGBE.Header header; - private byte[] m_data; - private float[] m_floatdata; - private int m_width, m_height; - private float m_max_r, m_max_g, m_max_b; - private float m_min_r, m_min_g, m_min_b; - private float m_max; - private int m_target; - - public HDRTexture(String filename) throws IOException { - this(new FileInputStream(filename)); - } - - public HDRTexture(InputStream in) throws IOException { - DataInputStream datain = new DataInputStream(new BufferedInputStream(in)); - header = RGBE.readHeader(datain); - m_width = header.getWidth(); - m_height = header.getHeight(); - m_data = new byte[m_width * m_height * 4]; - RGBE.readPixelsRawRLE(datain, m_data, 0, m_width, m_height); - System.err.println("Loaded HDR image " + m_width + " x " + m_height); - } - - public byte[] getData() { return m_data; } - public int getPixelIndex(int x, int y) { - return ((m_width * (m_height - 1 - y)) + x) * 4; - } - public float[] getFloatData() { return m_floatdata; } - public int getPixelFloatIndex(int x, int y) { - return ((m_width * (m_height - 1 - y)) + x) * 3; - } - - public void analyze() { - m_max_r = m_max_g = m_max_b = 0.0f; - m_min_r = m_min_g = m_min_b = 1e10f; - int mine = 255; - int maxe = 0; - - int ptr = 0; - float[] rgb = new float[3]; - for(int i=0; i<m_width*m_height; i++) { - int e = m_data[ptr+3] & 0xFF; - if (e < mine) mine = e; - if (e > maxe) maxe = e; - - RGBE.rgbe2float(rgb, m_data, ptr); - float r = rgb[0]; - float g = rgb[1]; - float b = rgb[2]; - if (r > m_max_r) m_max_r = r; - if (g > m_max_g) m_max_g = g; - if (b > m_max_b) m_max_b = b; - if (r < m_min_r) m_min_r = r; - if (g < m_min_g) m_min_g = g; - if (b < m_min_b) m_min_b = b; - ptr += 4; - } - System.err.println("max intensity: " + m_max_r + " " + m_max_g + " " + m_max_b); - System.err.println("min intensity: " + m_min_r + " " + m_min_g + " " + m_min_b); - System.err.println("max e: " + maxe + " = " + RGBE.ldexp(1.0, maxe-128)); - System.err.println("min e: " + mine + " = " + RGBE.ldexp(1.0, mine-128)); - - m_max = m_max_r; - if (m_max_g > m_max) m_max = m_max_g; - if (m_max_b > m_max) m_max = m_max_b; - System.err.println("max: " + m_max); - } - - /** Converts from RGBE to floating-point RGB data. */ - public void convert() { - m_floatdata = new float [m_width*m_height*3]; - - int src = 0; - int dest = 0; - float[] rgb = new float[3]; - for(int i=0; i<m_width*m_height; i++) { - RGBE.rgbe2float(rgb, m_data, src); - - m_floatdata[dest++] = remap(rgb[0], m_max); - m_floatdata[dest++] = remap(rgb[1], m_max); - m_floatdata[dest++] = remap(rgb[2], m_max); - - src += 4; - } - } - - public int create2DTextureRGBE(GL gl, int targetTextureType) { - m_target = targetTextureType; - int[] tmp = new int[1]; - gl.glGenTextures(1, tmp, 0); - int texid = tmp[1]; - - gl.glBindTexture(m_target, texid); - - gl.glTexParameteri(m_target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); - gl.glTexParameteri(m_target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); - gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE); - gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE); - - gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1); - gl.glTexParameteri(m_target, GL.GL_GENERATE_MIPMAP_SGIS, GL.GL_TRUE); - gl.glTexImage2D(m_target, 0, GL.GL_RGBA, m_width, m_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, ByteBuffer.wrap(m_data)); - - return texid; - } - - public int create2DTextureHILO(GL gl, int targetTextureType, boolean rg) { - m_target = targetTextureType; - int[] tmp = new int[1]; - gl.glGenTextures(1, tmp, 0); - int texid = tmp[0]; - - gl.glBindTexture(m_target, texid); - - gl.glTexParameteri(m_target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); - gl.glTexParameteri(m_target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); - gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE); - gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE); - - gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1); - gl.glTexParameteri(m_target, GL.GL_GENERATE_MIPMAP_SGIS, GL.GL_TRUE); - - float[] img = new float [m_width * m_height * 2]; - int src = 0; - int dest = 0; - for (int j=0; j<m_height; j++) { - for (int i=0; i<m_width; i++) { - if (rg) { - img[dest++] = m_floatdata[src + 0]; - img[dest++] = m_floatdata[src + 1]; - } else { - img[dest++] = m_floatdata[src + 2]; - img[dest++] = 0; - } - src+=3; - } - } - - gl.glTexImage2D(m_target, 0, GL.GL_HILO16_NV, m_width, m_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, FloatBuffer.wrap(img)); - - return texid; - } - - // create a cubemap texture from a 2D image in cross format (thanks to Jonathon McGee) - public int createCubemapRGBE(GL gl) { - // cross is 3 faces wide, 4 faces high - int face_width = m_width / 3; - int face_height = m_height / 4; - byte[] face = new byte[face_width * face_height * 4]; - - m_target = GL.GL_TEXTURE_CUBE_MAP; - int[] tmp = new int[1]; - gl.glGenTextures(1, tmp, 0); - int texid = tmp[0]; - gl.glBindTexture(m_target, texid); - - gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1); - gl.glTexParameteri(m_target, GL.GL_GENERATE_MIPMAP_SGIS, GL.GL_TRUE); - - // gl.glTexParameteri(m_target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); - // gl.glTexParameteri(m_target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_LINEAR); - gl.glTexParameteri(m_target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); - gl.glTexParameteri(m_target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); - gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE); - gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE); - - // extract 6 faces - - // positive Y - int ptr = 0; - for (int j=0; j<face_height; j++) { - for (int i=0; i<face_width; i++) { - int src = getPixelIndex(2 * face_width - (i + 1), 3 * face_height + j); - face[ptr++] = m_data[src++]; - face[ptr++] = m_data[src++]; - face[ptr++] = m_data[src++]; - face[ptr++] = m_data[src++]; - } - } - gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL.GL_RGBA, face_width, face_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, ByteBuffer.wrap(face)); - - // positive X - ptr = 0; - for (int j=0; j<face_height; j++) { - for (int i=0; i<face_width; i++) { - int src = getPixelIndex(i, m_height - (face_height + j + 1)); - face[ptr++] = m_data[src++]; - face[ptr++] = m_data[src++]; - face[ptr++] = m_data[src++]; - face[ptr++] = m_data[src++]; - } - } - gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL.GL_RGBA, face_width, face_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, ByteBuffer.wrap(face)); - - // negative Z - ptr = 0; - for (int j=0; j<face_height; j++) { - for (int i=0; i<face_width; i++) { - int src = getPixelIndex(face_width + i, m_height - (face_height + j + 1)); - face[ptr++] = m_data[src++]; - face[ptr++] = m_data[src++]; - face[ptr++] = m_data[src++]; - face[ptr++] = m_data[src++]; - } - } - gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL.GL_RGBA, face_width, face_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, ByteBuffer.wrap(face)); - - // negative X - ptr = 0; - for (int j=0; j<face_height; j++) { - for (int i=0; i<face_width; i++) { - int src = getPixelIndex(2 * face_width + i, m_height - (face_height + j + 1)); - face[ptr++] = m_data[src++]; - face[ptr++] = m_data[src++]; - face[ptr++] = m_data[src++]; - face[ptr++] = m_data[src++]; - } - } - gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL.GL_RGBA, face_width, face_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, ByteBuffer.wrap(face)); - - // negative Y - ptr = 0; - for (int j=0; j<face_height; j++) { - for (int i=0; i<face_width; i++) { - int src = getPixelIndex(2 * face_width - (i + 1), face_height + j); - face[ptr++] = m_data[src++]; - face[ptr++] = m_data[src++]; - face[ptr++] = m_data[src++]; - face[ptr++] = m_data[src++]; - } - } - gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL.GL_RGBA, face_width, face_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, ByteBuffer.wrap(face)); - - // positive Z - ptr = 0; - for (int j=0; j<face_height; j++) { - for (int i=0; i<face_width; i++) { - int src = getPixelIndex(2 * face_width - (i + 1), j); - face[ptr++] = m_data[src++]; - face[ptr++] = m_data[src++]; - face[ptr++] = m_data[src++]; - face[ptr++] = m_data[src++]; - } - } - gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL.GL_RGBA, face_width, face_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, ByteBuffer.wrap(face)); - - return texid; - } - - public int createCubemapHILO(GL gl, boolean rg) { - // cross is 3 faces wide, 4 faces high - int face_width = m_width / 3; - int face_height = m_height / 4; - float[] face = new float [face_width * face_height * 2]; - - m_target = GL.GL_TEXTURE_CUBE_MAP; - int[] tmp = new int[1]; - gl.glGenTextures(1, tmp, 0); - int texid = tmp[0]; - gl.glBindTexture(m_target, texid); - - gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1); - gl.glTexParameteri(m_target, GL.GL_GENERATE_MIPMAP_SGIS, GL.GL_TRUE); - - gl.glTexParameteri(m_target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); - gl.glTexParameteri(m_target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_LINEAR); - gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE); - gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE); - - // extract 6 faces - - // positive Y - int ptr = 0; - for (int j=0; j<face_height; j++) { - for (int i=0; i<face_width; i++) { - int src = getPixelFloatIndex(2 * face_width - (i + 1), 3 * face_height + j); - if (rg) { - face[ptr++] = m_floatdata[src + 0]; - face[ptr++] = m_floatdata[src + 1]; - } else { - face[ptr++] = m_floatdata[src + 2]; - face[ptr++] = 0; - } - } - } - gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL.GL_HILO16_NV, face_width, face_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, FloatBuffer.wrap(face)); - - // positive X - ptr = 0; - for (int j=0; j<face_height; j++) { - for (int i=0; i<face_width; i++) { - int src = getPixelFloatIndex(i, m_height - (face_height + j + 1)); - if (rg) { - face[ptr++] = m_floatdata[src + 0]; - face[ptr++] = m_floatdata[src + 1]; - } else { - face[ptr++] = m_floatdata[src + 2]; - face[ptr++] = 0; - } - } - } - gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL.GL_HILO16_NV, face_width, face_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, FloatBuffer.wrap(face)); - - // negative Z - ptr = 0; - for (int j=0; j<face_height; j++) { - for (int i=0; i<face_width; i++) { - int src = getPixelFloatIndex(face_width + i, m_height - (face_height + j + 1)); - if (rg) { - face[ptr++] = m_floatdata[src + 0]; - face[ptr++] = m_floatdata[src + 1]; - } else { - face[ptr++] = m_floatdata[src + 2]; - face[ptr++] = 0; - } - } - } - gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL.GL_HILO16_NV, face_width, face_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, FloatBuffer.wrap(face)); - - // negative X - ptr = 0; - for (int j=0; j<face_height; j++) { - for (int i=0; i<face_width; i++) { - int src = getPixelFloatIndex(2 * face_width + i, m_height - (face_height + j + 1)); - if (rg) { - face[ptr++] = m_floatdata[src + 0]; - face[ptr++] = m_floatdata[src + 1]; - } else { - face[ptr++] = m_floatdata[src + 2]; - face[ptr++] = 0; - } - } - } - gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL.GL_HILO16_NV, face_width, face_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, FloatBuffer.wrap(face)); - - // negative Y - ptr = 0; - for (int j=0; j<face_height; j++) { - for (int i=0; i<face_width; i++) { - int src = getPixelFloatIndex(2 * face_width - (i + 1), face_height + j); - if (rg) { - face[ptr++] = m_floatdata[src + 0]; - face[ptr++] = m_floatdata[src + 1]; - } else { - face[ptr++] = m_floatdata[src + 2]; - face[ptr++] = 0; - } - } - } - gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL.GL_HILO16_NV, face_width, face_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, FloatBuffer.wrap(face)); - - // positive Z - ptr = 0; - for (int j=0; j<face_height; j++) { - for (int i=0; i<face_width; i++) { - int src = getPixelFloatIndex(2 * face_width - (i + 1), j); - if (rg) { - face[ptr++] = m_floatdata[src + 0]; - face[ptr++] = m_floatdata[src + 1]; - } else { - face[ptr++] = m_floatdata[src + 2]; - face[ptr++] = 0; - } - } - } - gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL.GL_HILO16_NV, face_width, face_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, FloatBuffer.wrap(face)); - - return texid; - } - - public int createCubemap(GL gl, int format) { - // cross is 3 faces wide, 4 faces high - int face_width = m_width / 3; - int face_height = m_height / 4; - float[] face = new float [face_width * face_height * 3]; - - m_target = GL.GL_TEXTURE_CUBE_MAP; - int[] tmp = new int[1]; - gl.glGenTextures(1, tmp, 0); - int texid = tmp[0]; - gl.glBindTexture(m_target, texid); - - gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1); - gl.glTexParameteri(m_target, GL.GL_GENERATE_MIPMAP_SGIS, GL.GL_TRUE); - - gl.glTexParameteri(m_target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); - gl.glTexParameteri(m_target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_LINEAR); - gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE); - gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE); - - // extract 6 faces - - // positive Y - int ptr = 0; - for (int j=0; j<face_height; j++) { - for (int i=0; i<face_width; i++) { - int src = getPixelFloatIndex(2 * face_width - (i + 1), 3 * face_height + j); - face[ptr++] = m_floatdata[src + 0]; - face[ptr++] = m_floatdata[src + 1]; - face[ptr++] = m_floatdata[src + 2]; - } - } - gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, format, face_width, face_height, 0, GL.GL_RGB, GL.GL_FLOAT, FloatBuffer.wrap(face)); - - // positive X - ptr = 0; - for (int j=0; j<face_height; j++) { - for (int i=0; i<face_width; i++) { - int src = getPixelFloatIndex(i, m_height - (face_height + j + 1)); - face[ptr++] = m_floatdata[src + 0]; - face[ptr++] = m_floatdata[src + 1]; - face[ptr++] = m_floatdata[src + 2]; - } - } - gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, format, face_width, face_height, 0, GL.GL_RGB, GL.GL_FLOAT, FloatBuffer.wrap(face)); - - // negative Z - ptr = 0; - for (int j=0; j<face_height; j++) { - for (int i=0; i<face_width; i++) { - int src = getPixelFloatIndex(face_width + i, m_height - (face_height + j + 1)); - face[ptr++] = m_floatdata[src + 0]; - face[ptr++] = m_floatdata[src + 1]; - face[ptr++] = m_floatdata[src + 2]; - } - } - gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, format, face_width, face_height, 0, GL.GL_RGB, GL.GL_FLOAT, FloatBuffer.wrap(face)); - - // negative X - ptr = 0; - for (int j=0; j<face_height; j++) { - for (int i=0; i<face_width; i++) { - int src = getPixelFloatIndex(2 * face_width + i, m_height - (face_height + j + 1)); - face[ptr++] = m_floatdata[src + 0]; - face[ptr++] = m_floatdata[src + 1]; - face[ptr++] = m_floatdata[src + 2]; - } - } - gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, format, face_width, face_height, 0, GL.GL_RGB, GL.GL_FLOAT, FloatBuffer.wrap(face)); - - // negative Y - ptr = 0; - for (int j=0; j<face_height; j++) { - for (int i=0; i<face_width; i++) { - int src = getPixelFloatIndex(2 * face_width - (i + 1), face_height + j); - face[ptr++] = m_floatdata[src + 0]; - face[ptr++] = m_floatdata[src + 1]; - face[ptr++] = m_floatdata[src + 2]; - } - } - gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, format, face_width, face_height, 0, GL.GL_RGB, GL.GL_FLOAT, FloatBuffer.wrap(face)); - - // positive Z - ptr = 0; - for (int j=0; j<face_height; j++) { - for (int i=0; i<face_width; i++) { - int src = getPixelFloatIndex(2 * face_width - (i + 1), j); - face[ptr++] = m_floatdata[src + 0]; - face[ptr++] = m_floatdata[src + 1]; - face[ptr++] = m_floatdata[src + 2]; - } - } - gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, format, face_width, face_height, 0, GL.GL_RGB, GL.GL_FLOAT, FloatBuffer.wrap(face)); - - return texid; - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private static float remap(float x, float max) { - if (x > max) x = max; - return (float) Math.sqrt(x / max); - } - - public static void main(String[] args) { - for (int i = 0; i < args.length; i++) { - try { - HDRTexture tex = new HDRTexture(args[i]); - tex.analyze(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } -} diff --git a/src/demos/hdr/Pipeline.java b/src/demos/hdr/Pipeline.java deleted file mode 100755 index 91faff4..0000000 --- a/src/demos/hdr/Pipeline.java +++ /dev/null @@ -1,31 +0,0 @@ -package demos.hdr; - -import java.io.*; -import java.util.*; - -import javax.media.opengl.*; -import com.sun.opengl.cg.*; -import demos.util.*; - -public interface Pipeline { - public void init(); - public void initFloatingPointTexture (GL gl, int textureObject, int w, int h); - public void initTexture (GL gl, int textureObject, int w, int h); - public void copyToTexture (GL gl, int textureObject, int w, int h); - public void bindTexture (GL gl, int textureObject); - public int loadVertexProgram (GL gl, String filename) throws IOException; - public int loadFragmentProgram (GL gl, String filename) throws IOException; - public void enableVertexProgram (GL gl, int program); - public void enableFragmentProgram (GL gl, int program); - public void disableVertexProgram (GL gl); - public void disableFragmentProgram (GL gl); - public int getNamedParameter (int program, String name); - public void setVertexProgramParameter1f (GL gl, int param, float val); - public void setVertexProgramParameter3f (GL gl, int param, float x, float y, float z); - public void setVertexProgramParameter4f (GL gl, int param, float x, float y, float z, float w); - public void setFragmentProgramParameter1f (GL gl, int param, float val); - public void setFragmentProgramParameter3f (GL gl, int param, float x, float y, float z); - public void setFragmentProgramParameter4f (GL gl, int param, float x, float y, float z, float w); - public void trackModelViewProjectionMatrix(GL gl, int param); - public void setMatrixParameterfc (GL gl, int param, float[] matrix); -} diff --git a/src/demos/hdr/RGBE.java b/src/demos/hdr/RGBE.java deleted file mode 100755 index 9c83ae6..0000000 --- a/src/demos/hdr/RGBE.java +++ /dev/null @@ -1,452 +0,0 @@ -package demos.hdr; - -import java.io.*; -import java.util.regex.*; - -/** This file contains code to read and write four byte rgbe file format - developed by Greg Ward. It handles the conversions between rgbe and - pixels consisting of floats. The data is assumed to be an array of floats. - By default there are three floats per pixel in the order red, green, blue. - (RGBE_DATA_??? values control this.) Only the mimimal header reading and - writing is implemented. Each routine does error checking and will return - a status value as defined below. This code is intended as a skeleton so - feel free to modify it to suit your needs. <P> - - Ported to Java and restructured by Kenneth Russell. <BR> - posted to http://www.graphics.cornell.edu/~bjw/ <BR> - written by Bruce Walter ([email protected]) 5/26/95 <BR> - based on code written by Greg Ward <BR> -*/ - -public class RGBE { - // Flags indicating which fields in a Header are valid - private static final int VALID_PROGRAMTYPE = 0x01; - private static final int VALID_GAMMA = 0x02; - private static final int VALID_EXPOSURE = 0x04; - - private static final String gammaString = "GAMMA="; - private static final String exposureString = "EXPOSURE="; - - private static final Pattern widthHeightPattern = Pattern.compile("-Y (\\d+) \\+X (\\d+)"); - - public static class Header { - // Indicates which fields are valid - private int valid; - - // Listed at beginning of file to identify it after "#?". - // Defaults to "RGBE" - private String programType; - - // Image has already been gamma corrected with given gamma. - // Defaults to 1.0 (no correction) - private float gamma; - - // A value of 1.0 in an image corresponds to <exposure> - // watts/steradian/m^2. Defaults to 1.0. - private float exposure; - - // Width and height of image - private int width; - private int height; - - private Header(int valid, - String programType, - float gamma, - float exposure, - int width, - int height) { - this.valid = valid; - this.programType = programType; - this.gamma = gamma; - this.exposure = exposure; - this.width = width; - this.height = height; - } - - public boolean isProgramTypeValid() { return ((valid & VALID_PROGRAMTYPE) != 0); } - public boolean isGammaValid() { return ((valid & VALID_GAMMA) != 0); } - public boolean isExposureValid() { return ((valid & VALID_EXPOSURE) != 0); } - - public String getProgramType() { return programType; } - public float getGamma() { return gamma; } - public float getExposure() { return exposure; } - public int getWidth() { return width; } - public int getHeight() { return height; } - - public String toString() { - StringBuffer buf = new StringBuffer(); - if (isProgramTypeValid()) { - buf.append(" Program type: "); - buf.append(getProgramType()); - } - buf.append(" Gamma"); - if (isGammaValid()) { - buf.append(" [valid]"); - } - buf.append(": "); - buf.append(getGamma()); - buf.append(" Exposure"); - if (isExposureValid()) { - buf.append(" [valid]"); - } - buf.append(": "); - buf.append(getExposure()); - buf.append(" Width: "); - buf.append(getWidth()); - buf.append(" Height: "); - buf.append(getHeight()); - return buf.toString(); - } - } - - public static Header readHeader(DataInputStream in) throws IOException { - int valid = 0; - String programType = null; - float gamma = 1.0f; - float exposure = 1.0f; - int width = 0; - int height = 0; - - String buf = in.readLine(); - if (buf == null) { - throw new IOException("Unexpected EOF reading magic token"); - } - if (buf.charAt(0) == '#' && buf.charAt(1) == '?') { - valid |= VALID_PROGRAMTYPE; - programType = buf.substring(2); - buf = in.readLine(); - if (buf == null) { - throw new IOException("Unexpected EOF reading line after magic token"); - } - } - - boolean foundFormat = false; - boolean done = false; - while (!done) { - if (buf.equals("FORMAT=32-bit_rle_rgbe")) { - foundFormat = true; - } else if (buf.startsWith(gammaString)) { - valid |= VALID_GAMMA; - gamma = Float.parseFloat(buf.substring(gammaString.length())); - } else if (buf.startsWith(exposureString)) { - valid |= VALID_EXPOSURE; - exposure = Float.parseFloat(buf.substring(exposureString.length())); - } else { - Matcher m = widthHeightPattern.matcher(buf); - if (m.matches()) { - width = Integer.parseInt(m.group(2)); - height = Integer.parseInt(m.group(1)); - done = true; - } - } - - if (!done) { - buf = in.readLine(); - if (buf == null) { - throw new IOException("Unexpected EOF reading header"); - } - } - } - - if (!foundFormat) { - throw new IOException("No FORMAT specifier found"); - } - - return new Header(valid, programType, gamma, exposure, width, height); - } - - /** Simple read routine. Will not correctly handle run length encoding. */ - public static void readPixels(DataInputStream in, float[] data, int numpixels) throws IOException { - byte[] rgbe = new byte[4]; - float[] rgb = new float[3]; - int offset = 0; - - while(numpixels-- > 0) { - int numRead = in.read(rgbe); - if (numRead < 4) { - throw new IOException("Only able to read " + numRead + " out of expected " + rgbe.length + " bytes"); - } - rgbe2float(rgb, rgbe, 0); - data[offset++] = rgb[0]; - data[offset++] = rgb[1]; - data[offset++] = rgb[2]; - } - } - - public static void readPixelsRaw(DataInputStream in, byte[] data, int offset, int numpixels) throws IOException { - int numExpected = 4 * numpixels; - int numRead = in.read(data, offset, numExpected); - if (numRead < numExpected) - throw new IOException("Error reading raw pixels: got " + numRead + " bytes, expected " + numExpected); - } - - public static void readPixelsRawRLE(DataInputStream in, byte[] data, int offset, - int scanline_width, int num_scanlines) throws IOException { - byte[] rgbe = new byte[4]; - byte[] scanline_buffer = null; - int ptr, ptr_end; - int count; - byte[] buf = new byte[2]; - - if ((scanline_width < 8)||(scanline_width > 0x7fff)) { - /* run length encoding is not allowed so read flat*/ - readPixelsRaw(in, data, offset, scanline_width*num_scanlines); - } - - /* read in each successive scanline */ - while (num_scanlines > 0) { - if (in.read(rgbe) < rgbe.length) { - throw new IOException("Error reading bytes: expected " + rgbe.length); - } - - if ((rgbe[0] != 2)||(rgbe[1] != 2)||((rgbe[2] & 0x80) != 0)) { - /* this file is not run length encoded */ - data[offset++] = rgbe[0]; - data[offset++] = rgbe[1]; - data[offset++] = rgbe[2]; - data[offset++] = rgbe[3]; - readPixelsRaw(in, data, offset, scanline_width*num_scanlines-1); - } - - if ((((rgbe[2] & 0xFF)<<8) | (rgbe[3] & 0xFF)) != scanline_width) { - throw new IOException("Wrong scanline width " + - (((rgbe[2] & 0xFF)<<8) | (rgbe[3] & 0xFF)) + - ", expected " + scanline_width); - } - - if (scanline_buffer == null) { - scanline_buffer = new byte[4*scanline_width]; - } - - ptr = 0; - /* read each of the four channels for the scanline into the buffer */ - for (int i=0; i<4; i++) { - ptr_end = (i+1)*scanline_width; - while(ptr < ptr_end) { - if (in.read(buf) < buf.length) { - throw new IOException("Error reading 2-byte buffer"); - } - if ((buf[0] & 0xFF) > 128) { - /* a run of the same value */ - count = (buf[0] & 0xFF)-128; - if ((count == 0)||(count > ptr_end - ptr)) { - throw new IOException("Bad scanline data"); - } - while(count-- > 0) - scanline_buffer[ptr++] = buf[1]; - } - else { - /* a non-run */ - count = buf[0] & 0xFF; - if ((count == 0)||(count > ptr_end - ptr)) { - throw new IOException("Bad scanline data"); - } - scanline_buffer[ptr++] = buf[1]; - if (--count > 0) { - if (in.read(scanline_buffer, ptr, count) < count) { - throw new IOException("Error reading non-run data"); - } - ptr += count; - } - } - } - } - /* copy byte data to output */ - for(int i = 0; i < scanline_width; i++) { - data[offset++] = scanline_buffer[i]; - data[offset++] = scanline_buffer[i+scanline_width]; - data[offset++] = scanline_buffer[i+2*scanline_width]; - data[offset++] = scanline_buffer[i+3*scanline_width]; - } - num_scanlines--; - } - } - - /** Standard conversion from float pixels to rgbe pixels. */ - public static void float2rgbe(byte[] rgbe, float red, float green, float blue) { - float v; - int e; - - v = red; - if (green > v) v = green; - if (blue > v) v = blue; - if (v < 1e-32f) { - rgbe[0] = rgbe[1] = rgbe[2] = rgbe[3] = 0; - } - else { - FracExp fe = frexp(v); - v = (float) (fe.getFraction() * 256.0 / v); - rgbe[0] = (byte) (red * v); - rgbe[1] = (byte) (green * v); - rgbe[2] = (byte) (blue * v); - rgbe[3] = (byte) (fe.getExponent() + 128); - } - } - - /** Standard conversion from rgbe to float pixels. Note: Ward uses - ldexp(col+0.5,exp-(128+8)). However we wanted pixels in the - range [0,1] to map back into the range [0,1]. */ - public static void rgbe2float(float[] rgb, byte[] rgbe, int startRGBEOffset) { - float f; - - if (rgbe[startRGBEOffset + 3] != 0) { /*nonzero pixel*/ - f = (float) ldexp(1.0,(rgbe[startRGBEOffset + 3] & 0xFF)-(128+8)); - rgb[0] = (rgbe[startRGBEOffset + 0] & 0xFF) * f; - rgb[1] = (rgbe[startRGBEOffset + 1] & 0xFF) * f; - rgb[2] = (rgbe[startRGBEOffset + 2] & 0xFF) * f; - } else { - rgb[0] = 0; - rgb[1] = 0; - rgb[2] = 0; - } - } - - public static double ldexp(double value, int exp) { - if(!finite(value)||value==0.0) return value; - value = scalbn(value,exp); - // No good way to indicate errno (want to avoid throwing - // exceptions because don't know about stability of calculations) - // if(!finite(value)||value==0.0) errno = ERANGE; - return value; - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - //---------------------------------------------------------------------- - // Math routines, some fdlibm-derived - // - - static class FracExp { - private double fraction; - private int exponent; - - public FracExp(double fraction, int exponent) { - this.fraction = fraction; - this.exponent = exponent; - } - - public double getFraction() { return fraction; } - public int getExponent() { return exponent; } - } - - private static final double two54 = 1.80143985094819840000e+16; /* 43500000 00000000 */ - private static final double twom54 = 5.55111512312578270212e-17; /* 0x3C900000 0x00000000 */ - private static final double huge = 1.0e+300; - private static final double tiny = 1.0e-300; - - private static int hi(double x) { - long bits = Double.doubleToRawLongBits(x); - return (int) (bits >>> 32); - } - - private static int lo(double x) { - long bits = Double.doubleToRawLongBits(x); - return (int) bits; - } - - private static double fromhilo(int hi, int lo) { - return Double.longBitsToDouble((((long) hi) << 32) | - (((long) lo) & 0xFFFFFFFFL)); - } - - private static FracExp frexp(double x) { - int hx = hi(x); - int ix = 0x7fffffff&hx; - int lx = lo(x); - int e = 0; - if(ix>=0x7ff00000||((ix|lx)==0)) - return new FracExp(x, e); /* 0,inf,nan */ - if (ix<0x00100000) { /* subnormal */ - x *= two54; - hx = hi(x); - ix = hx&0x7fffffff; - e = -54; - } - e += (ix>>20)-1022; - hx = (hx&0x800fffff)|0x3fe00000; - lx = lo(x); - return new FracExp(fromhilo(hx, lx), e); - } - - private static boolean finite(double x) { - int hx; - hx = hi(x); - return (((hx&0x7fffffff)-0x7ff00000)>>31) != 0; - } - - /** - * copysign(double x, double y) <BR> - * copysign(x,y) returns a value with the magnitude of x and - * with the sign bit of y. - */ - private static double copysign(double x, double y) { - return fromhilo((hi(x)&0x7fffffff)|(hi(y)&0x80000000), lo(x)); - } - - /** - * scalbn (double x, int n) <BR> - * scalbn(x,n) returns x* 2**n computed by exponent - * manipulation rather than by actually performing an - * exponentiation or a multiplication. - */ - private static double scalbn(double x, int n) { - int hx = hi(x); - int lx = lo(x); - int k = (hx&0x7ff00000)>>20; /* extract exponent */ - if (k==0) { /* 0 or subnormal x */ - if ((lx|(hx&0x7fffffff))==0) { - return x; /* +-0 */ - } - x *= two54; - hx = hi(x); - k = ((hx&0x7ff00000)>>20) - 54; - if (n< -50000) { - return tiny*x; /*underflow*/ - } - } - if (k==0x7ff) { - return x+x; /* NaN or Inf */ - } - k = k+n; - if (k > 0x7fe) { - return huge*copysign(huge,x); /* overflow */ - } - if (k > 0) { - /* normal result */ - return fromhilo((hx&0x800fffff)|(k<<20), lo(x)); - } - if (k <= -54) { - if (n > 50000) { - /* in case integer overflow in n+k */ - return huge*copysign(huge,x); /* overflow */ - } else { - return tiny*copysign(tiny,x); /* underflow */ - } - } - k += 54; /* subnormal result */ - x = fromhilo((hx&0x800fffff)|(k<<20), lo(x)); - return x*twom54; - } - - //---------------------------------------------------------------------- - // Test harness - // - - public static void main(String[] args) { - for (int i = 0; i < args.length; i++) { - try { - DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(args[i]))); - Header header = RGBE.readHeader(in); - System.err.println("Header for file \"" + args[i] + "\":"); - System.err.println(" " + header); - byte[] data = new byte[header.getWidth() * header.getHeight() * 4]; - readPixelsRawRLE(in, data, 0, header.getWidth(), header.getHeight()); - in.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } -} diff --git a/src/demos/hdr/readme.txt b/src/demos/hdr/readme.txt deleted file mode 100755 index ebc5a32..0000000 --- a/src/demos/hdr/readme.txt +++ /dev/null @@ -1,3 +0,0 @@ -Run with e.g. - -java -Dsun.java2d.noddraw=true demos.hdr.HDR demos/data/images/stpeters_cross.hdr 512 384 2 7 3 demos/data/models/teapot.obj diff --git a/src/demos/hdr/shaders/arbfp1/object.arbfp1 b/src/demos/hdr/shaders/arbfp1/object.arbfp1 deleted file mode 100755 index 30ee986..0000000 --- a/src/demos/hdr/shaders/arbfp1/object.arbfp1 +++ /dev/null @@ -1,41 +0,0 @@ -!!ARBfp1.0 -# cgc version 1.3.0001, build date Aug 4 2004 10:01:10 -# command line args: -profile arbfp1 -# source file: ../cg/object.cg -# source file: ../cg/hdr.cg -#vendor NVIDIA Corporation -#version 1.0.02 -#profile arbfp1 -#program main -#semantic main.envMap : TEXUNIT0 -#var float4 In.HPosition : : : 0 : 0 -#var float4 In.P : : : 0 : 0 -#var float3 In.N : $vin.TEX1 : TEX1 : 0 : 1 -#var float3 In.I : $vin.TEX2 : TEX2 : 0 : 1 -#var samplerCUBE envMap : TEXUNIT0 : texunit 0 : 1 : 1 -#var half4 main : $vout.COL : COL : -1 : 1 -#const c[0] = 2 1 0 5 -#const c[1] = 0.9799805 0.02000427 -PARAM c[2] = { { 2, 1, 0, 5 }, - { 0.97998047, 0.020004272 } }; -TEMP R0; -TEMP R1; -DP3 R0.y, fragment.texcoord[2], fragment.texcoord[2]; -RSQ R0.w, R0.y; -DP3 R0.x, fragment.texcoord[1], fragment.texcoord[1]; -RSQ R0.x, R0.x; -MUL R1.xyz, R0.w, fragment.texcoord[2]; -MUL R0.xyz, R0.x, fragment.texcoord[1]; -DP3 R0.w, -R1, R0; -ADD R0.w, -R0, c[0].y; -DP3 R1.w, R0, R1; -MAX R0.w, R0, c[0].z; -MUL R0.xyz, R0, R1.w; -POW R0.w, R0.w, c[0].w; -MAD R0.xyz, -R0, c[0].x, R1; -MAD R0.w, R0, c[1].x, c[1].y; -TEX R0.xyz, R0, texture[0], CUBE; -MUL result.color.xyz, R0, R0.w; -MOV result.color.w, c[0].y; -END -# 17 instructions, 2 R-regs diff --git a/src/demos/hdr/shaders/arbfp1/object_hilo.arbfp1 b/src/demos/hdr/shaders/arbfp1/object_hilo.arbfp1 deleted file mode 100755 index c6d5b55..0000000 --- a/src/demos/hdr/shaders/arbfp1/object_hilo.arbfp1 +++ /dev/null @@ -1,45 +0,0 @@ -!!ARBfp1.0 -# cgc version 1.3.0001, build date Aug 4 2004 10:01:10 -# command line args: -profile arbfp1 -# source file: ../cg/object_hilo.cg -# source file: ../cg/hdr.cg -#vendor NVIDIA Corporation -#version 1.0.02 -#profile arbfp1 -#program main -#semantic main.envMap_rg : TEXUNIT0 -#semantic main.envMap_b : TEXUNIT1 -#var float4 In.HPosition : : : 0 : 0 -#var float4 In.P : : : 0 : 0 -#var float3 In.N : $vin.TEX1 : TEX1 : 0 : 1 -#var float3 In.I : $vin.TEX2 : TEX2 : 0 : 1 -#var samplerCUBE envMap_rg : TEXUNIT0 : texunit 0 : 1 : 1 -#var samplerCUBE envMap_b : TEXUNIT1 : texunit 1 : 2 : 1 -#var half4 main : $vout.COL : COL : -1 : 1 -#const c[0] = 2 1 0 5 -#const c[1] = 0.9799805 0.02000427 -PARAM c[2] = { { 2, 1, 0, 5 }, - { 0.97998047, 0.020004272 } }; -TEMP R0; -TEMP R1; -DP3 R0.y, fragment.texcoord[2], fragment.texcoord[2]; -RSQ R0.y, R0.y; -DP3 R0.x, fragment.texcoord[1], fragment.texcoord[1]; -MUL R1.xyz, R0.y, fragment.texcoord[2]; -RSQ R0.x, R0.x; -MUL R0.xyz, R0.x, fragment.texcoord[1]; -DP3 R0.w, -R1, R0; -DP3 R1.w, R0, R1; -MUL R0.xyz, R0, R1.w; -MAD R1.xyz, -R0, c[0].x, R1; -ADD R0.w, -R0, c[0].y; -MAX R0.y, R0.w, c[0].z; -TEX R0.x, R1, texture[1], CUBE; -POW R0.y, R0.y, c[0].w; -MOV R0.z, R0.x; -MAD R0.w, R0.y, c[1].x, c[1].y; -TEX R0.xy, R1, texture[0], CUBE; -MUL result.color.xyz, R0, R0.w; -MOV result.color.w, c[0].y; -END -# 19 instructions, 2 R-regs diff --git a/src/demos/hdr/shaders/arbfp1/object_vp.arbvp1 b/src/demos/hdr/shaders/arbfp1/object_vp.arbvp1 deleted file mode 100755 index 1f2a6fa..0000000 --- a/src/demos/hdr/shaders/arbfp1/object_vp.arbvp1 +++ /dev/null @@ -1,42 +0,0 @@ -!!ARBvp1.0 -# cgc version 1.3.0001, build date Aug 4 2004 10:01:10 -# command line args: -profile arbvp1 -# source file: ../cg/object_vp.cg -# source file: ../cg/hdr.cg -#vendor NVIDIA Corporation -#version 1.0.02 -#profile arbvp1 -#program main -#semantic main.modelViewProj -#semantic main.model -#semantic main.eyePos -#var float4 In.Position : $vin.POSITION : POSITION : 0 : 1 -#var float4 In.Normal : $vin.NORMAL : NORMAL : 0 : 1 -#var float4x4 modelViewProj : : c[0], 4 : 1 : 1 -#var float4x4 model : : c[4], 4 : 2 : 1 -#var float3 eyePos : : c[8] : 3 : 1 -#var float4 main.HPosition : $vout.HPOS : HPOS : -1 : 1 -#var float4 main.P : $vout.TEX0 : TEX0 : -1 : 1 -#var float3 main.N : $vout.TEX1 : TEX1 : -1 : 1 -#var float3 main.I : $vout.TEX2 : TEX2 : -1 : 1 -PARAM c[9] = { program.local[0..8] }; -TEMP R0; -TEMP R1; -DP4 result.position.w, vertex.position, c[3]; -DP4 result.position.z, vertex.position, c[2]; -DP4 result.position.y, vertex.position, c[1]; -DP4 result.position.x, vertex.position, c[0]; -DP4 R0.w, vertex.position, c[7]; -DP4 R0.z, vertex.position, c[6]; -DP4 R0.y, vertex.position, c[5]; -DP3 R1.z, vertex.normal, c[6]; -DP3 R1.y, vertex.normal, c[5]; -DP3 R1.x, vertex.normal, c[4]; -DP4 R0.x, vertex.position, c[4]; -DP3 R1.w, R1, R1; -ADD result.texcoord[2].xyz, R0, -c[8]; -RSQ R1.w, R1.w; -MOV result.texcoord[0], R0; -MUL result.texcoord[1].xyz, R1.w, R1; -END -# 16 instructions, 2 R-regs diff --git a/src/demos/hdr/shaders/arbfp1/recompile.txt b/src/demos/hdr/shaders/arbfp1/recompile.txt deleted file mode 100755 index 48469f3..0000000 --- a/src/demos/hdr/shaders/arbfp1/recompile.txt +++ /dev/null @@ -1,7 +0,0 @@ -cgc -profile arbfp1 -o object.arbfp1 ../cg/object.cg -cgc -profile arbfp1 -o object_hilo.arbfp1 ../cg/object_hilo.cg -cgc -profile arbvp1 -o object_vp.arbvp1 ../cg/object_vp.cg -cgc -profile arbfp1 -o shrink.arbfp1 ../cg/shrink.cg -cgc -profile arbfp1 -o skybox.arbfp1 ../cg/skybox.cg -cgc -profile arbfp1 -o skybox_hilo.arbfp1 ../cg/skybox_hilo.cg -cgc -profile arbfp1 -o tonemap.arbfp1 ../cg/tonemap.cg diff --git a/src/demos/hdr/shaders/arbfp1/shrink.arbfp1 b/src/demos/hdr/shaders/arbfp1/shrink.arbfp1 deleted file mode 100755 index ddf7a4b..0000000 --- a/src/demos/hdr/shaders/arbfp1/shrink.arbfp1 +++ /dev/null @@ -1,34 +0,0 @@ -!!ARBfp1.0 -# cgc version 1.3.0001, build date Aug 4 2004 10:01:10 -# command line args: -profile arbfp1 -# source file: ../cg/shrink.cg -# source file: ../cg/hdr.cg -#vendor NVIDIA Corporation -#version 1.0.02 -#profile arbfp1 -#program main -#semantic main.sceneTex : TEXUNIT0 -#var float4 In.wpos : : : 0 : 0 -#var float3 In.tex0 : $vin.TEX0 : TEX0 : 0 : 1 -#var float3 In.tex1 : : : 0 : 0 -#var float4 In.col0 : : : 0 : 0 -#var samplerRECT sceneTex : TEXUNIT0 : texunit 0 : 1 : 1 -#var half4 main : $vout.COL : COL : -1 : 1 -#const c[0] = 1 0 0.25 -PARAM c[1] = { { 1, 0, 0.25 } }; -TEMP R0; -TEMP R1; -TEMP R2; -ADD R0.xy, fragment.texcoord[0], c[0]; -TEX R1, R0, texture[0], RECT; -TEX R0, fragment.texcoord[0], texture[0], RECT; -ADD R2, R0, R1; -ADD R0.xy, fragment.texcoord[0], c[0].yxzw; -ADD R1.xy, fragment.texcoord[0], c[0].x; -TEX R0, R0, texture[0], RECT; -TEX R1, R1, texture[0], RECT; -ADD R0, R2, R0; -ADD R0, R0, R1; -MUL result.color, R0, c[0].z; -END -# 11 instructions, 3 R-regs diff --git a/src/demos/hdr/shaders/arbfp1/skybox.arbfp1 b/src/demos/hdr/shaders/arbfp1/skybox.arbfp1 deleted file mode 100755 index 8d3d9db..0000000 --- a/src/demos/hdr/shaders/arbfp1/skybox.arbfp1 +++ /dev/null @@ -1,22 +0,0 @@ -!!ARBfp1.0 -# cgc version 1.3.0001, build date Aug 4 2004 10:01:10 -# command line args: -profile arbfp1 -# source file: ../cg/skybox.cg -# source file: ../cg/hdr.cg -#vendor NVIDIA Corporation -#version 1.0.02 -#profile arbfp1 -#program main -#semantic main.envMap : TEXUNIT0 -#var float4 In.wpos : : : 0 : 0 -#var float3 In.tex0 : $vin.TEX0 : TEX0 : 0 : 1 -#var float3 In.tex1 : : : 0 : 0 -#var float4 In.col0 : : : 0 : 0 -#var samplerCUBE envMap : TEXUNIT0 : texunit 0 : 1 : 1 -#var half4 main : $vout.COL : COL : -1 : 1 -#const c[0] = 1 -PARAM c[1] = { { 1 } }; -TEX result.color.xyz, fragment.texcoord[0], texture[0], CUBE; -MOV result.color.w, c[0].x; -END -# 2 instructions, 0 R-regs diff --git a/src/demos/hdr/shaders/arbfp1/skybox_hilo.arbfp1 b/src/demos/hdr/shaders/arbfp1/skybox_hilo.arbfp1 deleted file mode 100755 index fe0d910..0000000 --- a/src/demos/hdr/shaders/arbfp1/skybox_hilo.arbfp1 +++ /dev/null @@ -1,27 +0,0 @@ -!!ARBfp1.0 -# cgc version 1.3.0001, build date Aug 4 2004 10:01:10 -# command line args: -profile arbfp1 -# source file: ../cg/skybox_hilo.cg -# source file: ../cg/hdr.cg -#vendor NVIDIA Corporation -#version 1.0.02 -#profile arbfp1 -#program main -#semantic main.envMap_rg : TEXUNIT0 -#semantic main.envMap_b : TEXUNIT1 -#var float4 In.wpos : : : 0 : 0 -#var float3 In.tex0 : $vin.TEX0 : TEX0 : 0 : 1 -#var float3 In.tex1 : : : 0 : 0 -#var float4 In.col0 : : : 0 : 0 -#var samplerCUBE envMap_rg : TEXUNIT0 : texunit 0 : 1 : 1 -#var samplerCUBE envMap_b : TEXUNIT1 : texunit 1 : 2 : 1 -#var half4 main : $vout.COL : COL : -1 : 1 -#const c[0] = 1 -PARAM c[1] = { { 1 } }; -TEMP R0; -TEX R0.x, fragment.texcoord[0], texture[1], CUBE; -TEX result.color.xy, fragment.texcoord[0], texture[0], CUBE; -MOV result.color.z, R0.x; -MOV result.color.w, c[0].x; -END -# 4 instructions, 1 R-regs diff --git a/src/demos/hdr/shaders/arbfp1/tonemap.arbfp1 b/src/demos/hdr/shaders/arbfp1/tonemap.arbfp1 deleted file mode 100755 index 0dd5a5a..0000000 --- a/src/demos/hdr/shaders/arbfp1/tonemap.arbfp1 +++ /dev/null @@ -1,64 +0,0 @@ -!!ARBfp1.0 -# cgc version 1.3.0001, build date Aug 4 2004 10:01:10 -# command line args: -profile arbfp1 -# source file: ../cg/tonemap.cg -# source file: ../cg/hdr.cg -#vendor NVIDIA Corporation -#version 1.0.02 -#profile arbfp1 -#program main -#semantic main.sceneTex : TEXUNIT0 -#semantic main.blurTex : TEXUNIT1 -#semantic main.gammaTex : TEXUNIT2 -#semantic main.vignetteTex : TEXUNIT3 -#semantic main.blurAmount -#semantic main.windowSize -#semantic main.exposure -#var float4 In.wpos : : : 0 : 0 -#var float3 In.tex0 : $vin.TEX0 : TEX0 : 0 : 1 -#var float3 In.tex1 : $vin.TEX1 : TEX1 : 0 : 1 -#var float4 In.col0 : : : 0 : 0 -#var samplerRECT sceneTex : TEXUNIT0 : texunit 0 : 1 : 1 -#var samplerRECT blurTex : TEXUNIT1 : texunit 1 : 2 : 1 -#var sampler1D gammaTex : TEXUNIT2 : texunit 2 : 3 : 1 -#var samplerRECT vignetteTex : TEXUNIT3 : texunit 3 : 4 : 1 -#var float blurAmount : : c[1] : 5 : 1 -#var float4 windowSize : : : 6 : 0 -#var float exposure : : c[2] : 7 : 1 -#var half4 main : $vout.COL : COL : -1 : 1 -#const c[0] = 1 0 -PARAM c[3] = { { 1, 0 }, - program.local[1..2] }; -TEMP R0; -TEMP R1; -TEMP R2; -TEMP R3; -TEMP R4; -ADD R0.xy, fragment.texcoord[1], c[0].yxzw; -ADD R1.xy, fragment.texcoord[1], c[0].x; -TEX R1.xyz, R1, texture[1], RECT; -TEX R0.xyz, R0, texture[1], RECT; -ADD R3.xyz, R1, -R0; -FRC R4.xy, fragment.texcoord[1]; -ADD R1.xy, fragment.texcoord[1], c[0]; -TEX R2.xyz, fragment.texcoord[1], texture[1], RECT; -TEX R1.xyz, R1, texture[1], RECT; -ADD R1.xyz, R1, -R2; -MAD R1.xyz, R4.x, R1, R2; -MAD R0.xyz, R4.x, R3, R0; -ADD R2.xyz, R0, -R1; -TEX R0.xyz, fragment.texcoord[0], texture[0], RECT; -MAD R1.xyz, R4.y, R2, R1; -ADD R1.xyz, R1, -R0; -MAD R1.xyz, R1, c[1].x, R0; -MUL R1.xyz, R1, c[2].x; -TEX R0.xyz, fragment.texcoord[0], texture[3], RECT; -MUL R0.xyz, R1, R0; -TEX result.color.x, R0, texture[2], 1D; -TEX R0.x, R0.y, texture[2], 1D; -TEX R1.x, R0.z, texture[2], 1D; -MOV result.color.y, R0.x; -MOV result.color.z, R1.x; -MOV result.color.w, c[0].x; -END -# 26 instructions, 5 R-regs diff --git a/src/demos/hdr/shaders/cg/hdr.cg b/src/demos/hdr/shaders/cg/hdr.cg deleted file mode 100755 index 3a0cafd..0000000 --- a/src/demos/hdr/shaders/cg/hdr.cg +++ /dev/null @@ -1,130 +0,0 @@ -/* - Cg functions to decode and filter textures in Radiance (RGBE) high dynamic range format - sgg 2/15/02 - - http://www.graphics.cornell.edu/~bjw/rgbe.html -*/ - -#if 0 -typedef float4 vec4; -typedef float3 vec3; -typedef float2 vec2; -typedef float real; -#define texRECT f4texRECT -#define texCUBE f4texCUBE -#else -typedef half4 vec4; -typedef half3 vec3; -typedef half2 vec2; -typedef half real; -#define texRECT h4texRECT -#define texCUBE h4texCUBE -#endif - -struct fragin -{ - float4 wpos : WPOS; - float3 tex0 : TEXCOORD0; - float3 tex1 : TEXCOORD1; - float4 col0 : COLOR0; -}; - -// Lookup in RGBE-encoded rectangle texture -vec3 texRECT_RGBE(uniform samplerRECT tex, float2 t) -{ - vec4 rgbe = texRECT(tex, t); - real e = (rgbe[3] * 255) - 128; - return rgbe.xyz * exp2(e); -} - -// Lookup in RGBE-encoded cube map texture -vec3 texCUBE_RGBE(uniform samplerCUBE tex, float3 t) -{ - vec4 rgbe = texCUBE(tex, t); - real e = (rgbe[3] * 255) - 128; - return rgbe.xyz * exp2(e); -} - -// Lookup in RGBE-encoded rectangle texture with filtering -vec3 texRECT_RGBE_Bilinear(uniform samplerRECT tex, half2 t) -{ - float2 f = frac(t); - vec3 t0 = texRECT_RGBE(tex, t); - vec3 t1 = texRECT_RGBE(tex, t + half2(1,0) ); - vec3 t2 = lerp(t0, t1, f[0]); - t0 = texRECT_RGBE(tex, t + half2(0,1) ); - t1 = texRECT_RGBE(tex, t + half2(1,1) ); - t0 = lerp(t0, t1, f[0]); - t0 = lerp(t2, t0, f[1]); - return t0; -} - -// Lookup in cubemap encoded as two HILO cube maps -vec3 texCUBE_hilo(uniform samplerCUBE rg_tex : TEXUNIT0, uniform samplerCUBE b_tex : TEXUNIT1, float3 t) -{ - vec3 c; - c.xy = texCUBE(rg_tex, t).xy; - c.z = texCUBE(b_tex, t).x; -// c = c * c; - return c; -} - -// Lookup in rectangle texture encoded as two HILO cube maps -vec3 texRECT_hilo(uniform samplerRECT rg_tex : TEXUNIT0, uniform samplerRECT b_tex : TEXUNIT1, float2 t) -{ - vec3 c; - c.xy = texRECT(rg_tex, t).xy; - c.z = texRECT(b_tex, t).x; - return c; -} - -// bilinear lookup in float texture -vec4 texRECT_bilinear(uniform samplerRECT tex, half2 t) -{ - float2 f = frac(t); - vec4 t0 = texRECT(tex, t); - vec4 t1 = texRECT(tex, t + half2(1,0) ); - vec4 t2 = lerp(t0, t1, f[0]); - t0 = texRECT(tex, t + half2(0,1) ); - t1 = texRECT(tex, t + half2(1,1) ); - t0 = lerp(t0, t1, f[0]); - t0 = lerp(t2, t0, f[1]); - return t0; -} - -// applying vignetting based on window coordinates -void vignette(inout float3 c, float4 wpos, const float2 win_bias, const float2 win_scale) -{ - // convert window coord to [-1, 1] range - wpos.xy = (wpos.xy - win_bias) * win_scale; - // calculate distance from origin - float r = length(wpos.xy); - r = 1.0 - smoothstep(0.8, 1.5, r); - c = c * r; -} - -// refraction function from Renderman spec -// I = incident direction, N = normal, eta = relative index of refraction -half3 my_refract(half3 I, half3 N, half eta) -{ - half IdotN = dot(I,N); - half k = 1 - eta*eta*(1 - IdotN*IdotN); - - return eta*I - (eta*IdotN + sqrt(k))*N; -} - -// fresnel approximation -half my_fresnel(half3 I, half3 N, half power, half scale, half bias) -{ - return bias + (pow(max(0.0, 1.0 - dot(I, N)), power) * scale); -} - -// transform a direction vector by a 4x4 matrix -float3 transform_dir(float4x4 m, float3 v) -{ - float3 o; - o.x = dot(v, m._11_12_13); - o.y = dot(v, m._21_22_23); - o.z = dot(v, m._31_32_33); - return o; -} diff --git a/src/demos/hdr/shaders/cg/object.cg b/src/demos/hdr/shaders/cg/object.cg deleted file mode 100755 index a242bc6..0000000 --- a/src/demos/hdr/shaders/cg/object.cg +++ /dev/null @@ -1,30 +0,0 @@ -// object shader - -#include "hdr.cg" - -struct v2f -{ - float4 HPosition : POSITION; - float4 P : TEXCOORD0; // position - float3 N : TEXCOORD1; // normal - float3 I : TEXCOORD2; // incident vector -}; - -half4 main(v2f In, - uniform samplerCUBE envMap : TEXUNIT0) : COLOR -{ - half3 I = normalize(half3(In.I)); - half3 N = normalize(half3(In.N)); - - half3 R = reflect(I, N); -// half3 T = refract(I, N, 0.9); - half fresnel = my_fresnel(-I, N, 5.0, 0.98, 0.02); - - half3 Creflect = texCUBE(envMap, R).rgb; // lookup reflection in HDR cube map -// half3 Crefract = texCUBE(envMap, T).rgb; // refraction - -// half3 Cout = lerp(Crefract, Creflect, fresnel); -// return half4(Cout, fresnel*0.5 + 0.5); - - return half4(Creflect * fresnel, 1.0); -} diff --git a/src/demos/hdr/shaders/cg/object_hilo.cg b/src/demos/hdr/shaders/cg/object_hilo.cg deleted file mode 100755 index 88a3348..0000000 --- a/src/demos/hdr/shaders/cg/object_hilo.cg +++ /dev/null @@ -1,31 +0,0 @@ -// object shader - -#include "hdr.cg" - -struct v2f -{ - float4 HPosition : POSITION; - float4 P : TEXCOORD0; // position - float3 N : TEXCOORD1; // normal - float3 I : TEXCOORD2; // incident vector -}; - -half4 main(v2f In, - uniform samplerCUBE envMap_rg : TEXUNIT0, - uniform samplerCUBE envMap_b : TEXUNIT1) : COLOR -{ - half3 I = normalize(half3(In.I)); - half3 N = normalize(half3(In.N)); - - half3 R = reflect(I, N); -// half3 T = refract(I, N, 0.9); - half fresnel = my_fresnel(-I, N, 5.0, 0.98, 0.02); - - half3 Creflect = texCUBE_hilo(envMap_rg, envMap_b, R).rgb; // lookup reflection in HDR cube map -// half3 Crefract = texCUBE_hilo(envMap_rg, envMap_b, T).rgb; // refraction - -// half3 Cout = lerp(Crefract, Creflect, fresnel); -// return half4(Cout, 1.0); - - return half4(Creflect * fresnel, 1.0); -} diff --git a/src/demos/hdr/shaders/cg/object_vp.cg b/src/demos/hdr/shaders/cg/object_vp.cg deleted file mode 100755 index 895dc28..0000000 --- a/src/demos/hdr/shaders/cg/object_vp.cg +++ /dev/null @@ -1,43 +0,0 @@ -#include "hdr.cg" - -// application to vertex shader -struct a2v -{ - float4 Position : POSITION; - float4 Normal : NORMAL; -}; - -// vertex shader to fragment shader -struct v2f -{ - float4 HPosition : POSITION; - float4 P : TEXCOORD0; // position - float3 N : TEXCOORD1; // normal - float3 I : TEXCOORD2; // incident vector -}; - -v2f main(a2v In, - uniform float4x4 modelViewProj, - uniform float4x4 model, - uniform float3 eyePos - ) -{ - v2f Out; - - // transform position - float4 P = mul(model, In.Position); - - // transform normal - float3 N = transform_dir(model, In.Normal.xyz); - N = normalize(N); - - // calculate incident vector - float3 I = P.xyz - eyePos; - - Out.P = P; - Out.N = N; - Out.I = I; - - Out.HPosition = mul(modelViewProj, In.Position); - return Out; -} diff --git a/src/demos/hdr/shaders/cg/shrink.cg b/src/demos/hdr/shaders/cg/shrink.cg deleted file mode 100755 index 7e01947..0000000 --- a/src/demos/hdr/shaders/cg/shrink.cg +++ /dev/null @@ -1,17 +0,0 @@ -// downsample float image by half - -#include "hdr.cg" - -half4 main(fragin In, - uniform samplerRECT sceneTex : TEXUNIT0 - ) : COLOR -{ - // should calculate texcoords in vertex shader here: - half4 c; - c = texRECT(sceneTex, In.tex0.xy); - c = c + texRECT(sceneTex, In.tex0.xy + float2(1, 0)); - c = c + texRECT(sceneTex, In.tex0.xy + float2(0, 1)); - c = c + texRECT(sceneTex, In.tex0.xy + float2(1, 1)); - c = c * 0.25; - return c; -} diff --git a/src/demos/hdr/shaders/cg/skybox.cg b/src/demos/hdr/shaders/cg/skybox.cg deleted file mode 100755 index 5ca6e6f..0000000 --- a/src/demos/hdr/shaders/cg/skybox.cg +++ /dev/null @@ -1,8 +0,0 @@ -#include "hdr.cg" - -half4 main(fragin In, - uniform samplerCUBE envMap : TEXUNIT0) : COLOR -{ - half3 c = texCUBE(envMap, In.tex0).rgb; - return half4(c, 1.0); -} diff --git a/src/demos/hdr/shaders/cg/skybox_hilo.cg b/src/demos/hdr/shaders/cg/skybox_hilo.cg deleted file mode 100755 index d7392bf..0000000 --- a/src/demos/hdr/shaders/cg/skybox_hilo.cg +++ /dev/null @@ -1,9 +0,0 @@ -#include "hdr.cg" - -half4 main(fragin In, - uniform samplerCUBE envMap_rg : TEXUNIT0, - uniform samplerCUBE envMap_b : TEXUNIT1) : COLOR -{ - half3 c = texCUBE_hilo(envMap_rg, envMap_b, In.tex0).rgb; - return half4(c, 1.0); -} diff --git a/src/demos/hdr/shaders/cg/tonemap.cg b/src/demos/hdr/shaders/cg/tonemap.cg deleted file mode 100755 index c3d218f..0000000 --- a/src/demos/hdr/shaders/cg/tonemap.cg +++ /dev/null @@ -1,37 +0,0 @@ -// Tone mapping pass - -#include "hdr.cg" - -half4 main(fragin In, - uniform samplerRECT sceneTex : TEXUNIT0, - uniform samplerRECT blurTex : TEXUNIT1, - uniform sampler1D gammaTex : TEXUNIT2, - uniform samplerRECT vignetteTex : TEXUNIT3, - uniform float blurAmount, - uniform float4 windowSize, - uniform float exposure - ) : COLOR -{ - // sum original and blurred image - half3 c = lerp(texRECT(sceneTex, In.tex0.xy), texRECT_bilinear(blurTex, In.tex1.xy), blurAmount).xyz; - - // exposure - c = c * half(exposure); - - // vignette effect (makes brightness drop off with distance from center) -// vignette(c, In.wpos, windowSize.xy, windowSize.zw); - c = c * texRECT(vignetteTex, In.tex0.xy).rgb; - - // gamma correction -#if 0 - // use math - c = pow(c, 1.0 / 2.2); -#else - // use lut - c.r = h1tex1D(gammaTex, c.r); - c.g = h1tex1D(gammaTex, c.g); - c.b = h1tex1D(gammaTex, c.b); -#endif - - return half4(c, 1.0); -} diff --git a/src/demos/hwShadowmapsSimple/HWShadowmapsSimple.java b/src/demos/hwShadowmapsSimple/HWShadowmapsSimple.java deleted file mode 100644 index 50ff3e4..0000000 --- a/src/demos/hwShadowmapsSimple/HWShadowmapsSimple.java +++ /dev/null @@ -1,801 +0,0 @@ -/* - * Portions Copyright (C) 2003-2005 Sun Microsystems, Inc. - * All rights reserved. - */ - -/* - * - * COPYRIGHT NVIDIA CORPORATION 2003. ALL RIGHTS RESERVED. - * BY ACCESSING OR USING THIS SOFTWARE, YOU AGREE TO: - * - * 1) ACKNOWLEDGE NVIDIA'S EXCLUSIVE OWNERSHIP OF ALL RIGHTS - * IN AND TO THE SOFTWARE; - * - * 2) NOT MAKE OR DISTRIBUTE COPIES OF THE SOFTWARE WITHOUT - * INCLUDING THIS NOTICE AND AGREEMENT; - * - * 3) ACKNOWLEDGE THAT TO THE MAXIMUM EXTENT PERMITTED BY - * APPLICABLE LAW, THIS SOFTWARE IS PROVIDED *AS IS* AND - * THAT NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, - * EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED - * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY - * SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES - * WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS - * OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS - * INFORMATION, OR ANY OTHER PECUNIARY LOSS), INCLUDING ATTORNEYS' - * FEES, RELATING TO THE USE OF OR INABILITY TO USE THIS SOFTWARE, - * EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.hwShadowmapsSimple; - -import java.awt.*; -import java.awt.event.*; -import java.awt.image.*; -import java.io.*; -import java.nio.*; -import java.util.*; -import javax.imageio.*; -import javax.swing.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.texture.*; -import demos.common.*; -import demos.util.*; -import gleem.*; -import gleem.linalg.*; - -/** This demo is a simple illustration of ARB_shadow and ARB_depth_texture. <P> - Cass Everitt <BR> - 12-11-00 <P> - - hw_shadowmaps_simple (c) 2001 NVIDIA Corporation <P> - - Ported to Java by Kenneth Russell -*/ - -public class HWShadowmapsSimple extends Demo { - public static void main(String[] args) { - final GLCanvas canvas = new GLCanvas(); - HWShadowmapsSimple demo = new HWShadowmapsSimple(); - canvas.addGLEventListener(demo); - - demo.setDemoListener(new DemoListener() { - public void shutdownDemo() { - runExit(); - } - public void repaint() { - canvas.repaint(); - } - }); - - Frame frame = new Frame("ARB_shadow Shadows"); - frame.setLayout(new BorderLayout()); - canvas.setSize(512, 512); - frame.add(canvas, BorderLayout.CENTER); - frame.pack(); - frame.show(); - canvas.requestFocus(); - - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - runExit(); - } - }); - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - public void shutdownDemo() { - ManipManager.getManipManager().unregisterWindow(drawable); - drawable.removeGLEventListener(this); - super.shutdownDemo(); - } - - private GLPbuffer pbuffer; - - private GLU glu; - private GLUT glut; - - private float[] light_ambient = { 0, 0, 0, 0 }; - private float[] light_intensity = { 1, 1, 1, 1 }; - private float[] light_pos = { 0, 0, 0, 1 }; - - static class Tweak { - String name; - float val; - float incr; - - Tweak(String name, float val, float incr) { - this.name = name; - this.val = val; - this.incr = incr; - } - }; - private java.util.List/*<Tweak>*/ tweaks = new ArrayList(); - private static final int R_COORDINATE_SCALE = 0; - private static final int R_COORDINATE_BIAS = 1; - private static final int POLYGON_OFFSET_SCALE = 2; - private static final int POLYGON_OFFSET_BIAS = 3; - private int curr_tweak; - - // Texture objects - private static final int TEX_SIZE = 1024; - private Texture decal; - private Texture light_image; - private int light_view_depth; - - // Depth buffer format - private int depth_format; - - private boolean fullyInitialized; - - // Display mode - private static final int RENDER_SCENE_FROM_CAMERA_VIEW = 0; - private static final int RENDER_SCENE_FROM_CAMERA_VIEW_SHADOWED = 1; - private static final int RENDER_SCENE_FROM_LIGHT_VIEW = 2; - private static final int NUM_DISPLAY_MODES = 3; - private int displayMode = 1; - - // Display lists - private int quad; - private int wirecube; - private int geometry; - - // Shadowing light - private float lightshaper_fovy = 60.0f; - private float lightshaper_zNear = 0.5f; - private float lightshaper_zFar = 5.0f; - - // Manipulators - private GLAutoDrawable drawable; - private ExaminerViewer viewer; - private boolean doViewAll = true; - // private float zNear = 0.5f; - // private float zFar = 5.0f; - private float zNear = 0.5f; - private float zFar = 50.0f; - private HandleBoxManip object; - private HandleBoxManip spotlight; - private Mat4f cameraPerspective = new Mat4f(); - private Mat4f cameraTransform = new Mat4f(); - private Mat4f cameraInverseTransform = new Mat4f(); - private Mat4f spotlightTransform = new Mat4f(); - private Mat4f spotlightInverseTransform = new Mat4f(); - private Mat4f objectTransform = new Mat4f(); - private int viewportX; - private int viewportY; - - public void init(GLAutoDrawable drawable) { - // Use debug pipeline - // drawable.setGL(new DebugGL(drawable.getGL())); - - GL gl = drawable.getGL(); - glu = new GLU(); - glut = new GLUT(); - - try { - checkExtension(gl, "GL_VERSION_1_3"); // For multitexture - checkExtension(gl, "GL_ARB_depth_texture"); - checkExtension(gl, "GL_ARB_shadow"); - checkExtension(gl, "GL_ARB_pbuffer"); - checkExtension(gl, "GL_ARB_pixel_format"); - } catch (GLException e) { - e.printStackTrace(); - throw(e); - } - - gl.glClearColor(.5f, .5f, .5f, .5f); - - try { - decal = TextureIO.newTexture(getClass().getClassLoader().getResourceAsStream("demos/data/images/decal_image.png"), - true, - TextureIO.PNG); - decal.setTexParameteri(GL.GL_TEXTURE_WRAP_S, GL.GL_REPEAT); - decal.setTexParameteri(GL.GL_TEXTURE_WRAP_T, GL.GL_REPEAT); - light_image = TextureIO.newTexture(getClass().getClassLoader().getResourceAsStream("demos/data/images/nvlogo_spot.png"), - true, - TextureIO.PNG); - } catch (IOException e) { - throw new GLException(e); - } - - quad = gl.glGenLists(1); - gl.glNewList(quad, GL.GL_COMPILE); - gl.glPushMatrix(); - gl.glRotatef(-90, 1, 0, 0); - gl.glScalef(4,4,4); - gl.glBegin(GL.GL_QUADS); - gl.glNormal3f(0, 0, 1); - gl.glVertex2f(-1, -1); - gl.glVertex2f(-1, 1); - gl.glVertex2f( 1, 1); - gl.glVertex2f( 1, -1); - gl.glEnd(); - gl.glPopMatrix(); - gl.glEndList(); - - wirecube = gl.glGenLists(1); - gl.glNewList(wirecube, GL.GL_COMPILE); - glut.glutWireCube(2); - gl.glEndList(); - - geometry = gl.glGenLists(1); - gl.glNewList(geometry, GL.GL_COMPILE); - gl.glPushMatrix(); - glut.glutSolidTeapot(0.8f); - gl.glPopMatrix(); - gl.glEndList(); - - gl.glEnable(GL.GL_LIGHT0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, light_ambient, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, light_intensity, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_SPECULAR, light_intensity, 0); - - gl.glEnable(GL.GL_DEPTH_TEST); - - // init pbuffer - GLCapabilities caps = new GLCapabilities(); - caps.setDoubleBuffered(false); - - if (!GLDrawableFactory.getFactory().canCreateGLPbuffer()) { - unavailableExtension("Can not create pbuffer"); - } - if (pbuffer != null) { - pbuffer.destroy(); - pbuffer = null; - } - pbuffer = GLDrawableFactory.getFactory().createGLPbuffer(caps, null, TEX_SIZE, TEX_SIZE, drawable.getContext()); - pbuffer.addGLEventListener(new PbufferListener()); - - doViewAll = true; - - // Register the window with the ManipManager - ManipManager manager = ManipManager.getManipManager(); - manager.registerWindow(drawable); - this.drawable = drawable; - - object = new HandleBoxManip(); - object.setTranslation(new Vec3f(0, 0.7f, 1.8f)); - object.setGeometryScale(new Vec3f(0.7f, 0.7f, 0.7f)); - manager.showManipInWindow(object, drawable); - - spotlight = new HandleBoxManip(); - spotlight.setScale(new Vec3f(0.5f, 0.5f, 0.5f)); - spotlight.setTranslation(new Vec3f(-0.25f, 2.35f, 5.0f)); - spotlight.setRotation(new Rotf(Vec3f.X_AXIS, (float) Math.toRadians(-30.0f))); - manager.showManipInWindow(spotlight, drawable); - - viewer = new ExaminerViewer(MouseButtonHelper.numMouseButtons()); - viewer.attach(drawable, new BSphereProvider() { - public BSphere getBoundingSphere() { - return new BSphere(object.getTranslation(), 2.0f); - } - }); - viewer.setOrientation(new Rotf(Vec3f.Y_AXIS, (float) Math.toRadians(45.0f)).times - (new Rotf(Vec3f.X_AXIS, (float) Math.toRadians(-15.0f)))); - viewer.setVertFOV((float) Math.toRadians(lightshaper_fovy / 2.0f)); - viewer.setZNear(zNear); - viewer.setZFar(zFar); - - float bias = 1/((float) Math.pow(2.0,16.0)-1); - - tweaks.add(new Tweak("r coordinate scale", 0.5f, bias)); - tweaks.add(new Tweak("r coordinate bias", 0.5f, bias)); - tweaks.add(new Tweak("polygon offset scale", 2.5f, 0.5f)); - tweaks.add(new Tweak("polygon offset bias", 10.0f, 1.0f)); - - drawable.addKeyListener(new KeyAdapter() { - public void keyPressed(KeyEvent e) { - dispatchKey(e.getKeyChar()); - demoListener.repaint(); - } - }); - } - - public void display(GLAutoDrawable drawable) { - viewer.update(); - - // Grab these values once per render to avoid multithreading - // issues with their values being changed by manipulation from - // the AWT thread during the render - CameraParameters params = viewer.getCameraParameters(); - - cameraPerspective.set(params.getProjectionMatrix()); - cameraInverseTransform.set(params.getModelviewMatrix()); - cameraTransform.set(cameraInverseTransform); - cameraTransform.invertRigid(); - spotlightTransform.set(spotlight.getTransform()); - spotlightInverseTransform.set(spotlightTransform); - spotlightInverseTransform.invertRigid(); - objectTransform.set(object.getTransform()); - - if (displayMode == RENDER_SCENE_FROM_CAMERA_VIEW_SHADOWED || !fullyInitialized) { - if (pbuffer != null) { - pbuffer.display(); - } - } - - if (!fullyInitialized) { - // Repaint again later once everything is set up - demoListener.repaint(); - return; - } - - GL gl = drawable.getGL(); - - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - if (doViewAll) { - viewer.viewAll(gl); - doViewAll = false; - // Immediately zap effects - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - // Schedule repaint to clean up first bogus frame - demoListener.repaint(); - } - - switch (displayMode) { - case RENDER_SCENE_FROM_CAMERA_VIEW: render_scene_from_camera_view(gl, drawable, params); break; - case RENDER_SCENE_FROM_CAMERA_VIEW_SHADOWED: render_scene_from_camera_view_shadowed(gl, drawable, params); break; - case RENDER_SCENE_FROM_LIGHT_VIEW: render_scene_from_light_view(gl, drawable, viewportX, viewportY); break; - default: throw new RuntimeException("Illegal display mode " + displayMode); - } - } - - // Unused routines - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { - viewportX = x; - viewportY = y; - } - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - - private void checkExtension(GL gl, String extensionName) { - if (!gl.isExtensionAvailable(extensionName)) { - String message = "Unable to initialize " + extensionName + " OpenGL extension"; - unavailableExtension(message); - } - } - - private void unavailableExtension(String message) { - JOptionPane.showMessageDialog(null, message, "Unavailable extension", JOptionPane.ERROR_MESSAGE); - throw new GLException(message); - } - - private void dispatchKey(char k) { - switch (k) { - case 27: - case 'q': - shutdownDemo(); - break; - - case 'v': - doViewAll = true; - System.err.println("Forcing viewAll()"); - break; - - case ' ': - displayMode = (displayMode + 1) % NUM_DISPLAY_MODES; - System.err.println("Switching to display mode " + displayMode); - break; - - // FIXME: add more key behaviors from original demo - - default: - break; - } - } - - class PbufferListener implements GLEventListener { - public void init(GLAutoDrawable drawable) { - // Use debug pipeline - // drawable.setGL(new DebugGL(drawable.getGL())); - - GL gl = drawable.getGL(); - - gl.glEnable(GL.GL_DEPTH_TEST); - - int[] depth_bits = new int[1]; - gl.glGetIntegerv(GL.GL_DEPTH_BITS, depth_bits, 0); - - if (depth_bits[0] == 16) depth_format = GL.GL_DEPTH_COMPONENT16_ARB; - else depth_format = GL.GL_DEPTH_COMPONENT24_ARB; - - light_view_depth = genTexture(gl); - gl.glBindTexture(GL.GL_TEXTURE_2D, light_view_depth); - gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, depth_format, TEX_SIZE, TEX_SIZE, 0, - GL.GL_DEPTH_COMPONENT, GL.GL_UNSIGNED_INT, null); - set_light_view_texture_parameters(gl); - - fullyInitialized = true; - } - - public void display(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - gl.glPolygonOffset(((Tweak) tweaks.get(POLYGON_OFFSET_SCALE)).val, - ((Tweak) tweaks.get(POLYGON_OFFSET_BIAS)).val); - gl.glEnable(GL.GL_POLYGON_OFFSET_FILL); - - render_scene_from_light_view(gl, drawable, 0, 0); - - gl.glDisable(GL.GL_POLYGON_OFFSET_FILL); - - gl.glBindTexture(GL.GL_TEXTURE_2D, light_view_depth); - - // trying different ways of getting the depth info over - gl.glCopyTexSubImage2D(GL.GL_TEXTURE_2D, 0, 0, 0, 0, 0, TEX_SIZE, TEX_SIZE); - } - - // Unused routines - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - } - - private void set_light_view_texture_parameters(GL gl) { - gl.glBindTexture(GL.GL_TEXTURE_2D, light_view_depth); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_COMPARE_MODE_ARB, GL.GL_COMPARE_R_TO_TEXTURE_ARB); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_COMPARE_FUNC_ARB, GL.GL_LEQUAL); - } - - private int genTexture(GL gl) { - int[] tmp = new int[1]; - gl.glGenTextures(1, tmp, 0); - return tmp[0]; - } - - private void eye_linear_texgen(GL gl) { - Mat4f m = new Mat4f(); - m.makeIdent(); - - set_texgen_planes(gl, GL.GL_EYE_PLANE, m); - gl.glTexGeni(GL.GL_S, GL.GL_TEXTURE_GEN_MODE, GL.GL_EYE_LINEAR); - gl.glTexGeni(GL.GL_T, GL.GL_TEXTURE_GEN_MODE, GL.GL_EYE_LINEAR); - gl.glTexGeni(GL.GL_R, GL.GL_TEXTURE_GEN_MODE, GL.GL_EYE_LINEAR); - gl.glTexGeni(GL.GL_Q, GL.GL_TEXTURE_GEN_MODE, GL.GL_EYE_LINEAR); - } - - private void obj_linear_texgen(GL gl) { - Mat4f m = new Mat4f(); - m.makeIdent(); - - set_texgen_planes(gl, GL.GL_OBJECT_PLANE, m); - gl.glTexGeni(GL.GL_S, GL.GL_TEXTURE_GEN_MODE, GL.GL_OBJECT_LINEAR); - gl.glTexGeni(GL.GL_T, GL.GL_TEXTURE_GEN_MODE, GL.GL_OBJECT_LINEAR); - gl.glTexGeni(GL.GL_R, GL.GL_TEXTURE_GEN_MODE, GL.GL_OBJECT_LINEAR); - gl.glTexGeni(GL.GL_Q, GL.GL_TEXTURE_GEN_MODE, GL.GL_OBJECT_LINEAR); - } - - private void set_texgen_planes(GL gl, int plane_type, Mat4f m) { - int[] coord = {GL.GL_S, GL.GL_T, GL.GL_R, GL.GL_Q}; - float[] row = new float[4]; - for(int i = 0; i < 4; i++) { - getRow(m, i, row); - gl.glTexGenfv(coord[i], plane_type, row, 0); - } - } - - private void texgen(GL gl, boolean enable) { - if(enable) { - gl.glEnable(GL.GL_TEXTURE_GEN_S); - gl.glEnable(GL.GL_TEXTURE_GEN_T); - gl.glEnable(GL.GL_TEXTURE_GEN_R); - gl.glEnable(GL.GL_TEXTURE_GEN_Q); - } else { - gl.glDisable(GL.GL_TEXTURE_GEN_S); - gl.glDisable(GL.GL_TEXTURE_GEN_T); - gl.glDisable(GL.GL_TEXTURE_GEN_R); - gl.glDisable(GL.GL_TEXTURE_GEN_Q); - } - } - - private void render_light_frustum(GL gl) { - gl.glPushMatrix(); - applyTransform(gl, cameraInverseTransform); - applyTransform(gl, spotlightTransform); - applyTransform(gl, perspectiveInverse(lightshaper_fovy, 1, lightshaper_zNear, lightshaper_zFar)); - gl.glDisable(GL.GL_LIGHTING); - gl.glColor3f(1,1,0); - gl.glCallList(wirecube); - gl.glColor3f(1,1,1); - gl.glEnable(GL.GL_LIGHTING); - gl.glPopMatrix(); - } - - private void render_quad(GL gl) { - gl.glActiveTexture(GL.GL_TEXTURE0); - obj_linear_texgen(gl); - texgen(gl, true); - gl.glMatrixMode(GL.GL_TEXTURE); - gl.glLoadIdentity(); - gl.glScalef(4,4,1); - gl.glMatrixMode(GL.GL_MODELVIEW); - - gl.glDisable(GL.GL_LIGHTING); - decal.bind(); - decal.enable(); - gl.glCallList(quad); - decal.disable(); - gl.glEnable(GL.GL_LIGHTING); - - texgen(gl, false); - gl.glMatrixMode(GL.GL_TEXTURE); - gl.glLoadIdentity(); - gl.glMatrixMode(GL.GL_MODELVIEW); - } - - private void render_scene(GL gl, Mat4f view, GLAutoDrawable drawable, CameraParameters params) { - gl.glColor3f(1,1,1); - gl.glPushMatrix(); - Mat4f inverseView = new Mat4f(view); - inverseView.invertRigid(); - applyTransform(gl, inverseView); - - gl.glPushMatrix(); - render_quad(gl); - - applyTransform(gl, objectTransform); - - gl.glEnable(GL.GL_LIGHTING); - gl.glCallList(geometry); - gl.glDisable(GL.GL_LIGHTING); - - gl.glPopMatrix(); - - gl.glPopMatrix(); - } - - private void render_manipulators(GL gl, Mat4f view, GLAutoDrawable drawable, CameraParameters params) { - gl.glColor3f(1,1,1); - gl.glPushMatrix(); - Mat4f inverseView = new Mat4f(view); - inverseView.invertRigid(); - applyTransform(gl, inverseView); - - if (params != null) { - ManipManager.getManipManager().updateCameraParameters(drawable, params); - ManipManager.getManipManager().render(drawable, gl); - } - - gl.glPopMatrix(); - } - - private void render_scene_from_camera_view(GL gl, GLAutoDrawable drawable, CameraParameters params) { - // place light - gl.glPushMatrix(); - gl.glLoadIdentity(); - applyTransform(gl, cameraInverseTransform); - applyTransform(gl, spotlightTransform); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, light_pos, 0); - gl.glPopMatrix(); - - // spot image - gl.glActiveTexture(GL.GL_TEXTURE1); - - gl.glPushMatrix(); - applyTransform(gl, cameraInverseTransform); - eye_linear_texgen(gl); - texgen(gl, true); - gl.glPopMatrix(); - - gl.glMatrixMode(GL.GL_TEXTURE); - gl.glLoadIdentity(); - gl.glTranslatef(.5f, .5f, .5f); - gl.glScalef(.5f, -.5f, .5f); - glu.gluPerspective(lightshaper_fovy, 1, lightshaper_zNear, lightshaper_zFar); - applyTransform(gl, spotlightInverseTransform); - gl.glMatrixMode(GL.GL_MODELVIEW); - - light_image.bind(); - light_image.enable(); - gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_MODULATE); - - gl.glActiveTexture(GL.GL_TEXTURE0); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - gl.glViewport(viewportX, viewportY, drawable.getWidth(), drawable.getHeight()); - applyTransform(gl, cameraPerspective); - gl.glMatrixMode(GL.GL_MODELVIEW); - render_scene(gl, cameraTransform, drawable, params); - - gl.glActiveTexture(GL.GL_TEXTURE1); - light_image.disable(); - gl.glActiveTexture(GL.GL_TEXTURE0); - - render_manipulators(gl, cameraTransform, drawable, params); - - render_light_frustum(gl); - } - - private void render_scene_from_camera_view_shadowed(GL gl, GLAutoDrawable drawable, CameraParameters params) { - // place light - gl.glPushMatrix(); - gl.glLoadIdentity(); - applyTransform(gl, cameraInverseTransform); - applyTransform(gl, spotlightTransform); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, light_pos, 0); - gl.glPopMatrix(); - - // spot image - gl.glActiveTexture(GL.GL_TEXTURE1); - - gl.glPushMatrix(); - applyTransform(gl, cameraInverseTransform); - eye_linear_texgen(gl); - texgen(gl, true); - gl.glPopMatrix(); - - gl.glMatrixMode(GL.GL_TEXTURE); - gl.glLoadIdentity(); - gl.glTranslatef(.5f, .5f, .5f); - gl.glScalef(.5f, -.5f, .5f); - glu.gluPerspective(lightshaper_fovy, 1, lightshaper_zNear, lightshaper_zFar); - applyTransform(gl, spotlightInverseTransform); - gl.glMatrixMode(GL.GL_MODELVIEW); - - light_image.bind(); - light_image.enable(); - gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_MODULATE); - - // depth compare - gl.glActiveTexture(GL.GL_TEXTURE2); - - gl.glPushMatrix(); - applyTransform(gl, cameraInverseTransform); - eye_linear_texgen(gl); - texgen(gl, true); - gl.glPopMatrix(); - - gl.glMatrixMode(GL.GL_TEXTURE); - gl.glLoadIdentity(); - gl.glTranslatef(.5f, .5f, ((Tweak) tweaks.get(R_COORDINATE_SCALE)).val); - gl.glScalef(.5f, .5f, ((Tweak) tweaks.get(R_COORDINATE_BIAS)).val); - glu.gluPerspective(lightshaper_fovy, 1, lightshaper_zNear, lightshaper_zFar); - applyTransform(gl, spotlightInverseTransform); - gl.glMatrixMode(GL.GL_MODELVIEW); - - gl.glBindTexture(GL.GL_TEXTURE_2D, light_view_depth); - gl.glEnable(GL.GL_TEXTURE_2D); - gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_MODULATE); - - gl.glActiveTexture(GL.GL_TEXTURE0); - - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - gl.glViewport(viewportX, viewportY, drawable.getWidth(), drawable.getHeight()); - applyTransform(gl, cameraPerspective); - gl.glMatrixMode(GL.GL_MODELVIEW); - render_scene(gl, cameraTransform, drawable, params); - - gl.glActiveTexture(GL.GL_TEXTURE1); - light_image.disable(); - gl.glActiveTexture(GL.GL_TEXTURE2); - gl.glDisable(GL.GL_TEXTURE_2D); - gl.glActiveTexture(GL.GL_TEXTURE0); - - render_manipulators(gl, cameraTransform, drawable, params); - - render_light_frustum(gl); - } - - private void largest_square_power_of_two_viewport(GL gl, GLAutoDrawable drawable, int viewportX, int viewportY) { - float min = Math.min(drawable.getWidth(), drawable.getHeight()); - float log2min = (float) Math.log(min) / (float) Math.log(2.0); - float pow2 = (float) Math.floor(log2min); - int size = 1 << (int) pow2; - gl.glViewport(viewportX, viewportY, size, size); - } - - private void render_scene_from_light_view(GL gl, GLAutoDrawable drawable, int viewportX, int viewportY) { - // place light - gl.glPushMatrix(); - gl.glLoadIdentity(); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, light_pos, 0); - gl.glPopMatrix(); - - // spot image - gl.glActiveTexture(GL.GL_TEXTURE1); - - gl.glPushMatrix(); - eye_linear_texgen(gl); - texgen(gl, true); - gl.glPopMatrix(); - - gl.glMatrixMode(GL.GL_TEXTURE); - gl.glLoadIdentity(); - gl.glTranslatef(.5f, .5f, .5f); - gl.glScalef(.5f, .5f, .5f); - glu.gluPerspective(lightshaper_fovy, 1, lightshaper_zNear, lightshaper_zFar); - gl.glMatrixMode(GL.GL_MODELVIEW); - - light_image.bind(); - light_image.enable(); - gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_MODULATE); - - gl.glActiveTexture(GL.GL_TEXTURE0); - - gl.glViewport(0, 0, TEX_SIZE, TEX_SIZE); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluPerspective(lightshaper_fovy, 1, lightshaper_zNear, lightshaper_zFar); - gl.glMatrixMode(GL.GL_MODELVIEW); - if (displayMode == RENDER_SCENE_FROM_LIGHT_VIEW) - largest_square_power_of_two_viewport(gl, drawable, viewportX, viewportY); - render_scene(gl, spotlightTransform, null, null); - - gl.glActiveTexture(GL.GL_TEXTURE1); - light_image.disable(); - gl.glActiveTexture(GL.GL_TEXTURE0); - } - - private static void getRow(Mat4f m, int row, float[] out) { - out[0] = m.get(row, 0); - out[1] = m.get(row, 1); - out[2] = m.get(row, 2); - out[3] = m.get(row, 3); - } - - private static void applyTransform(GL gl, Mat4f xform) { - float[] data = new float[16]; - xform.getColumnMajorData(data); - gl.glMultMatrixf(data, 0); - } - - private static Mat4f perspectiveInverse(float fovy, float aspect, float zNear, float zFar) { - float tangent = (float) Math.tan(Math.toRadians(fovy / 2.0)); - float y = tangent * zNear; - float x = aspect * y; - return frustumInverse(-x, x, -y, y, zNear, zFar); - } - - private static Mat4f frustumInverse(float left, float right, - float bottom, float top, - float zNear, float zFar) { - Mat4f m = new Mat4f(); - m.makeIdent(); - - m.set(0, 0, (right - left) / (2 * zNear)); - m.set(0, 3, (right + left) / (2 * zNear)); - - m.set(1, 1, (top - bottom) / (2 * zNear)); - m.set(1, 3, (top + bottom) / (2 * zNear)); - - m.set(2, 2, 0); - m.set(2, 3, -1); - - m.set(3, 2, -(zFar - zNear) / (2 * zFar * zNear)); - m.set(3, 3, (zFar + zNear) / (2 * zFar * zNear)); - - return m; - } - - private static void runExit() { - // Note: calling System.exit() synchronously inside the draw, - // reshape or init callbacks can lead to deadlocks on certain - // platforms (in particular, X11) because the JAWT's locking - // routines cause a global AWT lock to be grabbed. Run the - // exit routine in another thread. - new Thread(new Runnable() { - public void run() { - System.exit(0); - } - }).start(); - } -} diff --git a/src/demos/infiniteShadowVolumes/InfiniteShadowVolumes.java b/src/demos/infiniteShadowVolumes/InfiniteShadowVolumes.java deleted file mode 100644 index 364fc0e..0000000 --- a/src/demos/infiniteShadowVolumes/InfiniteShadowVolumes.java +++ /dev/null @@ -1,1311 +0,0 @@ -/* - * Portions Copyright (C) 2003 Sun Microsystems, Inc. - * All rights reserved. - */ - -/* - * - * COPYRIGHT NVIDIA CORPORATION 2003. ALL RIGHTS RESERVED. - * BY ACCESSING OR USING THIS SOFTWARE, YOU AGREE TO: - * - * 1) ACKNOWLEDGE NVIDIA'S EXCLUSIVE OWNERSHIP OF ALL RIGHTS - * IN AND TO THE SOFTWARE; - * - * 2) NOT MAKE OR DISTRIBUTE COPIES OF THE SOFTWARE WITHOUT - * INCLUDING THIS NOTICE AND AGREEMENT; - * - * 3) ACKNOWLEDGE THAT TO THE MAXIMUM EXTENT PERMITTED BY - * APPLICABLE LAW, THIS SOFTWARE IS PROVIDED *AS IS* AND - * THAT NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, - * EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED - * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY - * SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES - * WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS - * OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS - * INFORMATION, OR ANY OTHER PECUNIARY LOSS), INCLUDING ATTORNEYS' - * FEES, RELATING TO THE USE OF OR INABILITY TO USE THIS SOFTWARE, - * EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.infiniteShadowVolumes; - -import java.awt.*; -import java.awt.event.*; -import java.awt.image.*; -import java.io.*; -import java.nio.*; -import java.util.*; -import javax.imageio.*; -import javax.imageio.stream.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; -import demos.common.*; -import demos.util.*; -import gleem.*; -import gleem.linalg.*; - -/** - Infinite shadow volumes are described in the paper - "Practical and Robust Stenciled Shadow Volumes for - Hardware-Accelerated Rendering" which can be found - online at: <P> - - <a href = "http://developer.nvidia.com/view.asp?IO=robust_shadow_volumes">http://developer.nvidia.com/view.asp?IO=robust_shadow_volumes</a><P> - - This code is intended to illustrate the technique. It - is not optimized for performance. <P> - - Cass Everitt <BR> - 04-04-2002 <P> - - Ported to Java by Kenneth Russell -*/ - -public class InfiniteShadowVolumes extends Demo { - public static void main(String[] args) { - GLCapabilities caps = new GLCapabilities(); - caps.setStencilBits(16); - final GLCanvas canvas = new GLCanvas(caps); - InfiniteShadowVolumes demo = new InfiniteShadowVolumes(); - canvas.addGLEventListener(demo); - - demo.setDemoListener(new DemoListener() { - public void shutdownDemo() { - runExit(); - } - public void repaint() { - canvas.repaint(); - } - }); - - Frame frame = new Frame("Infinite Stenciled Shadow Volumes"); - frame.setLayout(new BorderLayout()); - canvas.setSize(512, 512); - frame.add(canvas, BorderLayout.CENTER); - frame.pack(); - frame.show(); - canvas.requestFocus(); - - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - runExit(); - } - }); - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - public void shutdownDemo() { - ManipManager.getManipManager().unregisterWindow(drawable); - drawable.removeGLEventListener(this); - super.shutdownDemo(); - } - - static class Model { - Model() { - frame_num = 0; - frame_incr = 0.25f; - draw = true; - ambient = new Vec4f(0.1f, 0.1f, 0.1f, 1); - diffuse = new Vec4f(0.8f, 0, 0, 1); - specular = new Vec4f(0.6f, 0.6f, 0.6f, 1); - shininess = 64; - } - - MD2.Model mod; - MD2.Frame interp_frame; - float frame_num; - float frame_incr; - - Vec4f ambient; - Vec4f diffuse; - Vec4f specular; - float shininess; - boolean draw; - }; - - // You can load multiple models and - // position them independently. If they're - // quake2 models you can animate them as well. - - private static final int MAX_MODELS = 4; - private Model[] m = new Model[MAX_MODELS]; - private int curr_model = 0; - private int num_models = 0; - - // selector for the current view mode - private static final int CAMERA_VIEW = 0; - private static final int SCENE_VIEW = 1; - private static final int CLIP_VIEW = 2; - private int curr_view = CAMERA_VIEW; - - private GLU glu = new GLU(); - private GLUT glut = new GLUT(); - - private GLAutoDrawable drawable; - private ExaminerViewer viewer; - private HandleBoxManip objectManip; - private HandleBoxManip lightManip; - private Mat4f objectManipXform; - private Mat4f lightManipXform; - int faceDisplayList; - int wallTexObject; - - private boolean[] b = new boolean[256]; - - Vec4f light_position = new Vec4f(0,0,0,1); - float light_object_scale = 1; - float volume_alpha = .1f; - float room_ambient = .3f; - - boolean doViewAll = true; - - private boolean enableDepthClampNV; - private boolean toggleDepthClampNV; - private boolean animateContinually; - private boolean animateForward; - private boolean animateBackward; - private boolean hideCurrentModel; - private boolean toggleWireframe; - - public void init(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - - gl.glClearStencil(128); - //glEnable(GL.GL_DEPTH_CLAMP_NV); - gl.glEnable(GL.GL_DEPTH_TEST); - gl.glDepthFunc(GL.GL_LESS); - gl.glEnable(GL.GL_NORMALIZE); - gl.glLightModeli(GL.GL_LIGHT_MODEL_TWO_SIDE, GL.GL_FALSE); - float[] ambient = new float[] {0.3f, 0.3f, 0.3f, 1}; - gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, ambient, 0); - faceDisplayList = gl.glGenLists(1); - gl.glNewList(faceDisplayList, GL.GL_COMPILE); - drawMesh(gl, 20, 40); - gl.glEndList(); - - int[] tmp = new int[1]; - gl.glGenTextures(1, tmp, 0); - wallTexObject = tmp[0]; - gl.glBindTexture(GL.GL_TEXTURE_2D, wallTexObject); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_GENERATE_MIPMAP_SGIS, GL.GL_TRUE); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_LINEAR); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); - - float[] tex = new float[32*32]; - for(int i=0; i < 32; i++) { - for(int j=0; j < 32; j++) { - if ((i>>4 ^ j>>4) != 0) - tex[i+j*32] = 1; - else - tex[i+j*32] = .9f; - } - } - gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGBA, 32, 32, 0, GL.GL_LUMINANCE, GL.GL_FLOAT, FloatBuffer.wrap(tex)); - - initModel(); - - b['S'] = true; // no silhouette outlines - b['v'] = true; // no volume drawing - b['I'] = true; // use infinite far plane - b['L'] = true; // use local light for shadowing - - doViewAll = true; - - drawable.addKeyListener(new KeyAdapter() { - public void keyTyped(KeyEvent e) { - dispatchKey(e.getKeyChar()); - demoListener.repaint(); - } - }); - - // Register the window with the ManipManager - ManipManager manager = ManipManager.getManipManager(); - manager.registerWindow(drawable); - this.drawable = drawable; - - objectManip = new HandleBoxManip(); - manager.showManipInWindow(objectManip, drawable); - objectManip.setTranslation(new Vec3f(0, 0, -2)); - objectManip.setRotation(new Rotf(new Vec3f(1, 0, 0), (float) Math.toRadians(-90))); - - lightManip = new HandleBoxManip(); - manager.showManipInWindow(lightManip, drawable); - lightManip.setTranslation(new Vec3f(0.5f, 0.5f, -1)); - lightManip.setGeometryScale(new Vec3f(0.1f, 0.1f, 0.1f)); - - viewer = new ExaminerViewer(MouseButtonHelper.numMouseButtons()); - viewer.attach(drawable, new BSphereProvider() { - public BSphere getBoundingSphere() { - return new BSphere(objectManip.getTranslation(), 1.0f); - } - }); - viewer.setZNear(1.0f); - viewer.setZFar(100.0f); - viewer.setOrientation(new Rotf(new Vec3f(0, 1, 0), (float) Math.toRadians(15))); - - // FIXME - // glutAddMenuEntry("mouse controls view [1]", '1'); - // glutAddMenuEntry("mouse controls model [2]", '2'); - // glutAddMenuEntry("mouse controls light [3]", '3'); - // glutAddMenuEntry("mouse controls room [4]", '4'); - // glutAddMenuEntry("enable depth clamp [!]", '!'); - // glutAddMenuEntry("disable depth clamp [~]", '~'); - // glutAddMenuEntry("start animation [ ]", ' '); - // glutAddMenuEntry("step animation forward [a]", 'a'); - // glutAddMenuEntry("step animation backward [b]", 'b'); - // glutAddMenuEntry("toggle drawing silhouette [S]", 'S'); - // glutAddMenuEntry("toggle drawing shadow [s]", 's'); - // glutAddMenuEntry("toggle drawing visible shadow volume [v]", 'v'); - // glutAddMenuEntry("toggle drawing model geometry[m]", 'm'); - - // glutAddMenuEntry("increase shadow volume alpha [;]", ';'); - // glutAddMenuEntry("decrease shadow volume alpha [:]", ':'); - - // glutAddMenuEntry("next model [,]", ','); - // glutAddMenuEntry("hide current model [.]", '.'); - - // glutAddMenuEntry("toggle view frustum clip planes [X]", 'X'); - - // glutAddMenuEntry("camera view [5]", '5'); - // glutAddMenuEntry("scene view [6]", '6'); - // glutAddMenuEntry("clipspace view [7]", '7'); - - // glutAddMenuEntry("enable depth clamp [!]", '!'); - // glutAddMenuEntry("disable depth clamp [~]", '~'); - - // glutAddMenuEntry("increase light size [n]", 'n'); - // glutAddMenuEntry("decrease light size [N]", 'N'); - - // glutAddMenuEntry("move near plane in [[]", '['); - // glutAddMenuEntry("move near plane out []]", ']'); - // glutAddMenuEntry("move far plane in [{]", '['); - // glutAddMenuEntry("move far plane out [}]", ']'); - - // glutAddMenuEntry("toggle local/infinite light [L]", 'L'); - - // glutAddMenuEntry("hide room [R]", 'R'); - - // glutAddMenuEntry("view all with camera [c]", 'c'); - - // glutAddMenuEntry("quit [<esc>]", 27); - } - - public void display(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - - if (doViewAll) { - viewer.viewAll(gl); - doViewAll = false; - } - - objectManipXform = objectManip.getTransform(); - lightManipXform = lightManip.getTransform(); - - if (toggleDepthClampNV) { - if (enableDepthClampNV) { - gl.glEnable(GL.GL_DEPTH_CLAMP_NV); - } else { - gl.glDisable(GL.GL_DEPTH_CLAMP_NV); - } - toggleDepthClampNV = false; - } - - if (b[' ']) { - animateForward = true; - } - - if (animateForward) { - Model mm = m[curr_model]; - mm.frame_num += mm.frame_incr; - if (mm.frame_num >= mm.mod.f.length) - mm.frame_num = 0; - interpolate_frame(); - animateForward = false; - } - - if (animateBackward) { - Model mm = m[curr_model]; - mm.frame_num -= mm.frame_incr; - if (mm.frame_num < 0) - mm.frame_num += mm.mod.f.length; - interpolate_frame(); - animateBackward = false; - } - - if (hideCurrentModel) { - gl.glNewList(faceDisplayList, GL.GL_COMPILE); - drawMesh(gl, 20, 40); - gl.glEndList(); - hideCurrentModel = false; - } - - if (toggleWireframe) { - if(b['w']) - gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_LINE); - else - gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_FILL); - } - - if(b['I']) { - // push far plane to infinity - switch (curr_view) { - case CAMERA_VIEW: - viewer.update(gl); - // Undo perspective effects of ExaminerViewer - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - applyInfinitePerspective(gl, viewer); - break; - - case SCENE_VIEW: - applyInfinitePerspective(gl, viewer); - // FIXME: do we need more primitives in the ExaminerViewer class? - // scenecam.apply_inverse_transform(); - break; - - case CLIP_VIEW: - applyInfinitePerspective(gl, viewer); - // FIXME - // clipcam.apply_inverse_transform(); - gl.glScalef(10,10,-10); - applyInfinitePerspective(gl, viewer); - break; - - default: - break; - } - } else { - switch (curr_view) { - case CAMERA_VIEW: - viewer.update(gl); - break; - - case SCENE_VIEW: - applyInfinitePerspective(gl, viewer); - // FIXME - // scenecam.apply_inverse_transform(); - break; - - case CLIP_VIEW: - applyInfinitePerspective(gl, viewer); - // FIXME - // clipcam.apply_inverse_transform(); - gl.glScalef(10,10,-10); - // FIXME - // reshaper.apply_projection(); - break; - - default: - break; - } - } - - gl.glMatrixMode(GL.GL_MODELVIEW); - - // FIXME - if (b['X']) { - gl.glLoadIdentity(); - if(b['I']) { - // FIXME - applyInfinitePerspectiveInverse(gl, viewer); - } else { - // FIXME - // reshaper.apply_projection_inverse(); - } - double[] pos_x = new double[] {-1, 0, 0, 1}; - double[] neg_x = new double[] { 1, 0, 0, 1}; - double[] pos_y = new double[] { 0,-1, 0, 1}; - double[] neg_y = new double[] { 0, 1, 0, 1}; - double[] pos_z = new double[] { 0, 0,-1, 1}; - double[] neg_z = new double[] { 0, 0, 1, 1}; - gl.glClipPlane(GL.GL_CLIP_PLANE0, pos_x, 0); - gl.glClipPlane(GL.GL_CLIP_PLANE1, neg_x, 0); - gl.glClipPlane(GL.GL_CLIP_PLANE2, pos_y, 0); - gl.glClipPlane(GL.GL_CLIP_PLANE3, neg_y, 0); - gl.glClipPlane(GL.GL_CLIP_PLANE4, pos_z, 0); - gl.glClipPlane(GL.GL_CLIP_PLANE5, neg_z, 0); - gl.glEnable(GL.GL_CLIP_PLANE0); - gl.glEnable(GL.GL_CLIP_PLANE1); - gl.glEnable(GL.GL_CLIP_PLANE2); - gl.glEnable(GL.GL_CLIP_PLANE3); - gl.glEnable(GL.GL_CLIP_PLANE4); - gl.glEnable(GL.GL_CLIP_PLANE5); - gl.glLoadIdentity(); - } - - gl.glPushMatrix(); - // FIXME - // camera.apply_inverse_transform(); - // light.apply_transform(); - gl.glMultMatrixf(getData(lightManipXform), 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, getData(light_position), 0); - gl.glPopMatrix(); - gl.glEnable(GL.GL_LIGHT0); - - // FIXME - gl.glPushMatrix(); - // gl.glLoadIdentity(); - // camera.apply_inverse_transform(); - - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT | GL.GL_STENCIL_BUFFER_BIT); - - ManipManager.getManipManager().updateCameraParameters(drawable, viewer.getCameraParameters()); - ManipManager.getManipManager().render(drawable, gl); - - if (!b['R']) { - drawRoom(gl, false); - } - - if (!b['m']) { - for (int i = 0; i < num_models; i++) - if (m[i].draw) - drawModel(gl, i, false); - } - - if (b['X']) { - gl.glDisable(GL.GL_CLIP_PLANE0); - gl.glDisable(GL.GL_CLIP_PLANE1); - gl.glDisable(GL.GL_CLIP_PLANE2); - gl.glDisable(GL.GL_CLIP_PLANE3); - gl.glDisable(GL.GL_CLIP_PLANE4); - gl.glDisable(GL.GL_CLIP_PLANE5); - } - - if (!b['s']) { - for (int i = 0; i < num_models; i++) - if (m[i].draw) - drawShadowVolumeToStencil(gl, i); - } - - // Be aware that this can cause some multipass artifacts - // due to invariance issues. - if (b['X']) { - gl.glEnable(GL.GL_CLIP_PLANE0); - gl.glEnable(GL.GL_CLIP_PLANE1); - gl.glEnable(GL.GL_CLIP_PLANE2); - gl.glEnable(GL.GL_CLIP_PLANE3); - gl.glEnable(GL.GL_CLIP_PLANE4); - gl.glEnable(GL.GL_CLIP_PLANE5); - } - if (!b['d']) { - if (!b['R']) - drawRoom(gl, true); - if (!b['m']) - for (int i = 0; i < num_models; i++) - if (m[i].draw) - drawModel(gl, i, true); - } - - if(!b['S']) { - for (int i = 0; i < num_models; i++) - if (m[i].draw) - drawPossibleSilhouette(gl, i); - } - - if (!b['v']) { - for (int i = 0; i < num_models; i++) - if (m[i].draw) - drawShadowVolumeToColor(gl, i); - } - - // Be aware that this can cause some multipass artifacts - // due to invariance issues. - if (b['X']) { - gl.glDisable(GL.GL_CLIP_PLANE0); - gl.glDisable(GL.GL_CLIP_PLANE1); - gl.glDisable(GL.GL_CLIP_PLANE2); - gl.glDisable(GL.GL_CLIP_PLANE3); - gl.glDisable(GL.GL_CLIP_PLANE4); - gl.glDisable(GL.GL_CLIP_PLANE5); - } - - drawLight(gl); - - gl.glPopMatrix(); - - // In an "external" viewing mode, show the camera's view volume - // as a yellow wireframe cube or frustum. - if (curr_view != CAMERA_VIEW) { - gl.glPushMatrix(); - if (b['I']) { - // FIXME - applyInfinitePerspectiveInverse(gl, viewer); - } else { - // FIXME - // reshaper.apply_projection_inverse(); - } - gl.glColor3f(.75f,.75f,0); - gl.glLineWidth(3); - glut.glutWireCube(2); - gl.glLineWidth(1); - gl.glPopMatrix(); - } - - if (b[' ']) { - // Animating continually. Schedule another repaint soon. - demoListener.repaint(); - } - } - - // Unused routines - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - - private void dispatchKey(char k) { - b[k] = ! b[k]; - if (k==27 || k=='q') { - shutdownDemo(); - return; - } - - if(';' == k) { - volume_alpha *= 1.1f; - } - if(':' == k) { - volume_alpha /= 1.1f; - } - - if('\'' == k) { - room_ambient += .025f; - } - if('"' == k) { - room_ambient -= .025f; - } - - if(',' == k) { - curr_model++; - curr_model %= num_models; - // FIXME - // key('2',0,0); - } - if('.' == k) { - m[curr_model].draw = ! m[curr_model].draw; - } - if('w' == k) { - toggleWireframe = true; - } - if('1' == k) { - // FIXME - /* - curr_manip = 1; - camera.disable(); - clipcam.disable(); - scenecam.disable(); - if(curr_view == 0) - camera.enable(); - else if(curr_view == 1) - scenecam.enable(); - else - clipcam.enable(); - for(int i=0; i < num_models; i++) - object[i].disable(); - light.disable(); - room.disable(); - */ - } - if('2' == k) { - // FIXME - /* - curr_manip = 2; - camera.disable(); - clipcam.disable(); - scenecam.disable(); - light.disable(); - for(int i=0; i < num_models; i++) - object[i].disable(); - object[curr_model].enable(); - room.disable(); - */ - } - if('3' == k) { - // FIXME - /* - curr_manip = 3; - camera.disable(); - clipcam.disable(); - scenecam.disable(); - light.enable(); - for(int i=0; i < num_models; i++) - object[i].disable(); - room.disable(); - */ - } - if('4' == k) { - // FIXME - /* - curr_manip = 4; - camera.disable(); - clipcam.disable(); - scenecam.disable(); - light.disable(); - for(int i=0; i < num_models; i++) - object[i].disable(); - room.enable(); - */ - } - - if('5' == k) { - // FIXME - /* - curr_view = 0; - if(curr_manip == 1) - key('1',0,0); - */ - } - - if('6' == k) { - // FIXME - /* - curr_view = 1; - if(curr_manip == 1) - key('1',0,0); - */ - } - - if('7' == k) { - // FIXME - /* - curr_view = 2; - if(curr_manip == 1) - key('1',0,0); - */ - } - - if('[' == k) { - // FIXME: correct? - viewer.setZNear(viewer.getZNear() / 2); - // reshaper.zNear /= 2; - } - if(']' == k) { - // FIXME: correct? - viewer.setZNear(viewer.getZNear() * 2); - // reshaper.zNear *= 2; - } - - if('{' == k) { - // FIXME: correct? - viewer.setZFar(viewer.getZFar() / 2); - // reshaper.zFar /= 2; - } - if('}' == k) { - // FIXME: correct? - viewer.setZFar(viewer.getZFar() * 2); - // reshaper.zFar *= 2; - } - - if('!' == k) { - enableDepthClampNV = true; - toggleDepthClampNV = true; - } - if('~' == k) { - enableDepthClampNV = false; - toggleDepthClampNV = true; - } - - if('a' == k) { - animateForward = true; - } - - if('b' == k) { - animateBackward = true; - } - - if('.' == k) { - hideCurrentModel = true; - } - - if('n' == k) { - light_object_scale *= 1.1f; - } - if('N' == k) { - light_object_scale /= 1.1f; - } - - if('L' == k) { - if(b[k]) - light_position.set(0,0,0,1); - else - light_position.set(0.25f, 0.25f, 1, 0); - } - - if ('c' == k) { - doViewAll = true; - } - } - - private void initModel() { - int i = 0; - - try { - MD2.Model mod = MD2.loadMD2(getClass().getClassLoader().getResourceAsStream("demos/data/models/knight.md2")); - m[i] = new Model(); - m[i].mod = mod; - m[i].interp_frame = (MD2.Frame) m[i].mod.f[0].clone(); - m[i].ambient.componentMul(m[i].diffuse); - i++; - } catch (IOException e) { - e.printStackTrace(); - } - - num_models = i; - } - - // interpolate between keyframes - private void interpolate_frame() { - float frac = m[curr_model].frame_num - (float) Math.floor(m[curr_model].frame_num); - int f0_index = (int) Math.floor(m[curr_model].frame_num); - int f1_index = ((int) Math.ceil(m[curr_model].frame_num)) % m[curr_model].mod.f.length; - MD2.Frame f0 = m[curr_model].mod.f[f0_index]; - MD2.Frame f1 = m[curr_model].mod.f[f1_index]; - - for (int i = 0; i < f0.pn.length; i++) { - MD2.PositionNormal pn = m[curr_model].interp_frame.pn[i]; - MD2.PositionNormal pn0 = f0.pn[i]; - MD2.PositionNormal pn1 = f1.pn[i]; - - pn.x = (1-frac) * pn0.x + frac * pn1.x; - pn.y = (1-frac) * pn0.y + frac * pn1.y; - pn.z = (1-frac) * pn0.z + frac * pn1.z; - pn.nx = (1-frac) * pn0.nx + frac * pn1.nx; - pn.ny = (1-frac) * pn0.ny + frac * pn1.ny; - pn.nz = (1-frac) * pn0.nz + frac * pn1.nz; - } - - for (int i = 0; i < f0.triplane.length; i++) { - MD2.Plane p = m[curr_model].interp_frame.triplane[i]; - - MD2.computePlane(m[curr_model].interp_frame.pn[m[curr_model].mod.tri[i].v[0].pn_index], - m[curr_model].interp_frame.pn[m[curr_model].mod.tri[i].v[1].pn_index], - m[curr_model].interp_frame.pn[m[curr_model].mod.tri[i].v[2].pn_index], - p); - } - } - - // This routine draws the end caps (both local and infinite) for an - // occluder. These caps are required for the zfail approach to work. - private void drawShadowVolumeEndCaps(GL gl, int mindex) { - Vec4f olight = new Vec4f(); - - Mat4f ml = new Mat4f(objectManipXform); - ml.invertRigid(); - ml = ml.mul(lightManipXform); - ml.xformVec(light_position, olight); - - MD2.PositionNormal[] vpn = m[mindex].interp_frame.pn; - - gl.glPushMatrix(); - gl.glMultMatrixf(getData(objectManipXform), 0); - gl.glBegin(GL.GL_TRIANGLES); - for (int i = 0; i < m[mindex].mod.tri.length; i++) { - if (m[mindex].mod.tri[i].kill) - continue; - MD2.Plane p = m[mindex].interp_frame.triplane[i]; - - boolean facing_light = (( p.a * olight.get(0) + - p.b * olight.get(1) + - p.c * olight.get(2) + - p.d * olight.get(3) ) >= 0 ); - - for (int j = 0; j < 3; j++) { - MD2.PositionNormal pn = vpn[m[mindex].mod.tri[i].v[j].pn_index]; - if (facing_light) // draw locally - gl.glVertex4f(pn.x, pn.y, pn.z, 1); - else // draw at infinity - gl.glVertex4f(pn.x*olight.get(3) - olight.get(0), - pn.y*olight.get(3) - olight.get(1), - pn.z*olight.get(3) - olight.get(2), - 0); - } - } - gl.glEnd(); - gl.glPopMatrix(); - } - - private void drawModel(GL gl, int mindex, boolean do_diffuse) { - MD2.PositionNormal[] vpn = m[mindex].interp_frame.pn; - - float[] zero = new float[] { 0, 0, 0, 0}; - float[] dim = new float[] {.2f,.2f,.2f,.2f}; - float[] diffuse = new float[4]; - float[] specular = new float[4]; - gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT, getData(m[mindex].ambient), 0); - gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_DIFFUSE, getData(m[mindex].diffuse), 0); - gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_SPECULAR, getData(m[mindex].specular), 0); - gl.glMaterialf(GL.GL_FRONT_AND_BACK, GL.GL_SHININESS, m[mindex].shininess); - if (!do_diffuse) { - gl.glGetLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, diffuse, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, dim, 0); - gl.glGetLightfv(GL.GL_LIGHT0, GL.GL_SPECULAR, specular, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_SPECULAR, zero, 0); - } else { - gl.glBlendFunc(GL.GL_ONE, GL.GL_ONE); - gl.glEnable(GL.GL_BLEND); - gl.glStencilFunc(GL.GL_EQUAL, 128, ~0); - gl.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP); - gl.glEnable(GL.GL_STENCIL_TEST); - gl.glDepthFunc(GL.GL_EQUAL); - } - gl.glPushMatrix(); - gl.glMultMatrixf(getData(objectManipXform), 0); - gl.glEnable(GL.GL_LIGHTING); - - gl.glPolygonOffset(0,-2); - gl.glEnable(GL.GL_POLYGON_OFFSET_FILL); - - gl.glBegin(GL.GL_TRIANGLES); - { - for (int i = 0; i < m[mindex].mod.tri.length; i++) { - for(int j=0; j < 3; j++) { - MD2.PositionNormal pn = vpn[m[mindex].mod.tri[i].v[j].pn_index]; - gl.glNormal3f(pn.nx, pn.ny, pn.nz); - gl.glVertex4f(pn.x, pn.y, pn.z, 1); - } - } - } - gl.glEnd(); - - gl.glDisable(GL.GL_POLYGON_OFFSET_FILL); - - gl.glDisable(GL.GL_LIGHTING); - gl.glPopMatrix(); - gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_DIFFUSE, new float[] { 0.8f, 0.8f, 0.8f, 1}, 0); - gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_SPECULAR, new float[] { 0.3f, 0.3f, 0.3f, 1}, 0); - - if (!do_diffuse) { - gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, diffuse, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_SPECULAR, specular, 0); - } else { - gl.glDisable(GL.GL_BLEND); - //glDisable(GL.GL_STENCIL_TEST); - gl.glStencilFunc(GL.GL_ALWAYS, 128, ~0); - gl.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP); - - gl.glDepthFunc(GL.GL_LESS); - } - } - - // This is for drawing the walls of the room. - private void drawMesh(GL gl, float size, int tess) { - float hsize = size/2; - float delta = size/(tess-1); - - gl.glPushMatrix(); - gl.glTranslatef(-hsize, -hsize, hsize); - - gl.glNormal3f(0,0,-1); - - float x = 0; - for(int i=0; i < tess-1; i++) { - float y = 0; - gl.glBegin(GL.GL_QUAD_STRIP); - for(int j=0; j < tess; j++) { - gl.glTexCoord2f( x, y); - gl.glVertex2f ( x, y); - gl.glTexCoord2f(x+delta, y); - gl.glVertex2f (x+delta, y); - y += delta; - } - gl.glEnd(); - x += delta; - } - gl.glPopMatrix(); - } - - private void drawCube(GL gl) { - gl.glBindTexture(GL.GL_TEXTURE_2D, wallTexObject); - gl.glEnable(GL.GL_TEXTURE_2D); - gl.glPushMatrix(); - // FIXME - // room.apply_transform(); - gl.glCallList(faceDisplayList); - gl.glRotatef(90, 1, 0, 0); - gl.glCallList(faceDisplayList); - gl.glRotatef(90, 1, 0, 0); - gl.glCallList(faceDisplayList); - gl.glRotatef(90, 1, 0, 0); - gl.glCallList(faceDisplayList); - gl.glRotatef(90, 1, 0, 0); - gl.glRotatef(90, 0, 1, 0); - gl.glCallList(faceDisplayList); - gl.glRotatef(180, 0, 1, 0); - gl.glCallList(faceDisplayList); - gl.glPopMatrix(); - gl.glDisable(GL.GL_TEXTURE_2D); - } - - private void drawRoom(GL gl, boolean do_diffuse) { - float[] zero = new float[] {0,0,0,0}; - float[] a = new float[4]; - a[0] = room_ambient; - a[1] = room_ambient; - a[2] = room_ambient; - a[3] = 1; - - float[] d1 = new float[] {.1f,.1f,.1f,.1f}; - float[] d2 = new float[] {.7f,.7f,.7f,.7f}; - float[] s = new float[] {.7f,.7f,.7f,.7f}; - float[] emission = new float[4]; - float[] ambient = new float[4]; - float[] diffuse = new float[4]; - float[] specular = new float[4]; - - gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT, a, 0); - gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_DIFFUSE, new float[] {0.8f, 0.8f, 0.8f, 1}, 0); - gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_SPECULAR, new float[] {0.4f, 0.4f, 0.4f, 1}, 0); - gl.glMaterialf(GL.GL_FRONT_AND_BACK, GL.GL_SHININESS, 64.0f); - - if (!do_diffuse) { - gl.glGetLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, diffuse, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, d1, 0); - gl.glGetLightfv(GL.GL_LIGHT0, GL.GL_SPECULAR, specular, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_SPECULAR, zero, 0); - gl.glStencilFunc(GL.GL_ALWAYS, 128, ~0); - } else { - gl.glGetLightfv(GL.GL_LIGHT0, GL.GL_EMISSION, emission, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_EMISSION, zero, 0); - gl.glGetLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, ambient, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, zero, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, d2, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_SPECULAR, s, 0); - - gl.glBlendFunc(GL.GL_ONE, GL.GL_ONE); - gl.glEnable(GL.GL_BLEND); - gl.glStencilFunc(GL.GL_EQUAL, 128, ~0); - gl.glDepthFunc(GL.GL_EQUAL); - } - gl.glPushMatrix(); - gl.glTranslatef(0,9,0); - gl.glEnable(GL.GL_LIGHTING); - gl.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP); - gl.glEnable(GL.GL_STENCIL_TEST); - - drawCube(gl); - - gl.glStencilFunc(GL.GL_ALWAYS, 128, ~0); - gl.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP); - - gl.glDisable(GL.GL_LIGHTING); - gl.glPopMatrix(); - - if (!do_diffuse) { - gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, diffuse, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_SPECULAR, specular, 0); - } else { - gl.glLightfv(GL.GL_LIGHT0, GL.GL_EMISSION, emission, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, ambient, 0); - - gl.glDisable(GL.GL_BLEND); - gl.glDepthFunc(GL.GL_LESS); - } - } - - // This routine draws the extruded "possible silhouette" edge. The - // edge is extruded to infinity. - - // The paper describes identifying silhouette edge loops. The approach - // in this demo is to visit each edge, determine if it's a "possible silhouette" - // or not, and if it is, draw the extruded edge. This approach is not - // as efficient, but it has the benefit of being extremely simple. - - // This routine also doubles as the routine for drawing the local and ininite - // silhouette edges (when prim == GL_LINES). - private void drawShadowVolumeEdges(GL gl, - int mindex, - int prim, - boolean local, - boolean infinity) { - Vec4f olight = new Vec4f(); - - Mat4f ml = new Mat4f(objectManipXform); - ml.invertRigid(); - ml = ml.mul(lightManipXform); - ml.xformVec(light_position, olight); - - gl.glPushMatrix(); - gl.glMultMatrixf(getData(objectManipXform), 0); - - MD2.Frame f = m[mindex].interp_frame; - - gl.glBegin(prim); - for (int i = 0; i < m[mindex].mod.edge.length; i++) { - MD2.WingedEdge we = m[mindex].mod.edge[i]; - if (we.w[0] == -1 || m[mindex].mod.tri[we.w[0]].kill || - we.w[1] == -1 || m[mindex].mod.tri[we.w[1]].kill ) - continue; - - MD2.Plane p0 = f.triplane[we.w[0]]; - float f0 = ( p0.a * olight.get(0) + - p0.b * olight.get(1) + - p0.c * olight.get(2) + - p0.d * olight.get(3) ); - - float f1 = -f0; - if(we.w[1] != -1) { - MD2.Plane p1 = f.triplane[we.w[1]]; - - f1 = ( p1.a * olight.get(0) + - p1.b * olight.get(1) + - p1.c * olight.get(2) + - p1.d * olight.get(3) ); - } - - int[] edge = new int[2]; - - if(f0 >= 0 && f1 < 0) { - edge[0] = we.e[1]; - edge[1] = we.e[0]; - } else if(f1 >= 0 && f0 < 0) { - edge[0] = we.e[0]; - edge[1] = we.e[1]; - } else { - continue; - } - - MD2.PositionNormal pn0 = f.pn[edge[0]]; - MD2.PositionNormal pn1 = f.pn[edge[1]]; - - if(prim == GL.GL_QUADS || local) { - // local segment - gl.glVertex4f(pn0.x, pn0.y, pn0.z, 1); - gl.glVertex4f(pn1.x, pn1.y, pn1.z, 1); - } - if(prim == GL.GL_QUADS || infinity) { - // segment projected to infinity - gl.glVertex4f(pn1.x*olight.get(3) - olight.get(0), - pn1.y*olight.get(3) - olight.get(1), - pn1.z*olight.get(3) - olight.get(2), - 0); - gl.glVertex4f(pn0.x*olight.get(3) - olight.get(0), - pn0.y*olight.get(3) - olight.get(1), - pn0.z*olight.get(3) - olight.get(2), - 0); - } - } - gl.glEnd(); - gl.glPopMatrix(); - } - - private void drawShadowVolumeExtrudedEdges(GL gl, int mindex) { - drawShadowVolumeEdges(gl, mindex, GL.GL_QUADS, true, true); - } - - private void drawPossibleSilhouette(GL gl, int mindex) { - gl.glLineWidth(3); - gl.glColor3f(1,1,1); - drawShadowVolumeEdges(gl, mindex, GL.GL_LINES, true, !b['-']); - gl.glLineWidth(1); - } - - // Draw the shadow volume into the stencil buffer. - private void drawShadowVolumeToStencil(GL gl, int mindex) { - gl.glDepthFunc(GL.GL_LESS); - gl.glDepthMask(false); - - gl.glStencilFunc(GL.GL_ALWAYS, 128, ~0); - gl.glEnable(GL.GL_STENCIL_TEST); - - gl.glEnable(GL.GL_CULL_FACE); - gl.glCullFace(GL.GL_FRONT); - gl.glStencilOp(GL.GL_KEEP, GL.GL_INCR, GL.GL_KEEP); - gl.glColorMask(false, false, false, false); - - drawShadowVolumeExtrudedEdges(gl, mindex); - drawShadowVolumeEndCaps(gl, mindex); - - gl.glCullFace(GL.GL_BACK); - gl.glStencilOp(GL.GL_KEEP, GL.GL_DECR, GL.GL_KEEP); - - drawShadowVolumeExtrudedEdges(gl, mindex); - drawShadowVolumeEndCaps(gl, mindex); - - gl.glColorMask(true, true, true, true); - gl.glDisable(GL.GL_CULL_FACE); - - gl.glStencilFunc(GL.GL_ALWAYS, 128, ~0); - gl.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP); - - gl.glDepthMask(true); - gl.glDepthFunc(GL.GL_LESS); - } - - // Draw the shadow volume into the color buffer. - private void drawShadowVolumeToColor(GL gl, int mindex) { - gl.glDepthFunc(GL.GL_LESS); - gl.glDepthMask(false); - - gl.glEnable(GL.GL_BLEND); - gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA); - - gl.glColor4f(1,1,1,.7f * volume_alpha); - drawShadowVolumeEndCaps(gl, mindex); - gl.glColor4f(1,1,.7f,.15f * volume_alpha); - drawShadowVolumeExtrudedEdges(gl, mindex); - - gl.glDepthMask(true); - gl.glDepthFunc(GL.GL_LESS); - gl.glDisable(GL.GL_BLEND); - } - - // Draw an icon to show where the local light is - // or in what direction the infinite light is pointing. - private void drawLight(GL gl) { - gl.glColor3f(1,1,0); - gl.glPushMatrix(); - gl.glMultMatrixf(getData(lightManipXform), 0); - gl.glScalef(light_object_scale, light_object_scale, light_object_scale); - if (b['L']) { - glut.glutSolidSphere(.01f, 20, 10); - } else { - Vec3f ldir = new Vec3f(light_position.get(0), - light_position.get(1), - light_position.get(2)); - Rotf r = new Rotf(new Vec3f(0,0,1), ldir); - Mat4f m = new Mat4f(); - m.makeIdent(); - m.setRotation(r); - m = m.mul(perspectiveInverse(30, 1, 0.001f, 0.04f)); - gl.glRotatef(180, 1, 0, 0); - gl.glTranslatef(0,0,-0.02f); - gl.glMultMatrixf(getData(m), 0); - glut.glutSolidCube(2); - } - gl.glPopMatrix(); - } - - // The infinite frustum set-up code. - private Mat4f infiniteFrustum(float left, float right, - float bottom, float top, - float zNear) { - Mat4f m = new Mat4f(); - m.makeIdent(); - - m.set(0,0, (2*zNear) / (right - left)); - m.set(0,2, (right + left) / (right - left)); - - m.set(1,1, (2*zNear) / (top - bottom)); - m.set(1,2, (top + bottom) / (top - bottom)); - - // nudge infinity in just slightly for lsb slop - float nudge = 1 - 1.0f / (1<<23); - - m.set(2,2, -1 * nudge); - m.set(2,3, -2*zNear * nudge); - - m.set(3,2, -1); - m.set(3,3, 0); - - m.transpose(); - - return m; - } - - private Mat4f infiniteFrustumInverse(float left, float right, - float bottom, float top, - float zNear) { - Mat4f m = new Mat4f(); - m.makeIdent(); - - m.set(0,0, (right - left) / (2 * zNear)); - m.set(0,3, (right + left) / (2 * zNear)); - - m.set(1,1, (top - bottom) / (2 * zNear)); - m.set(1,3, (top + bottom) / (2 * zNear)); - - m.set(2,2, 0); - m.set(2,3, -1); - - m.set(3,2, -1 / (2 * zNear)); - m.set(3,3, 1 / (2 * zNear)); - - return m; - } - - private Mat4f infinitePerspective(float fovy, float aspect, float zNear) { - float tangent = (float) Math.tan(fovy / 2.0); - float y = tangent * zNear; - float x = aspect * y; - return infiniteFrustum(-x, x, -y, y, zNear); - } - - private Mat4f infinitePerspectiveInverse(float fovy, float aspect, float zNear) { - float tangent = (float) Math.tan(fovy / 2.0); - float y = tangent * zNear; - float x = aspect * y; - return infiniteFrustumInverse(-x, x, -y, y, zNear); - } - - private void applyInfinitePerspective(GL gl, ExaminerViewer v) { - CameraParameters parms = v.getCameraParameters(); - float aspect = parms.getImagePlaneAspectRatio(); - gl.glMultMatrixf(getData(infinitePerspective(parms.getVertFOV(), aspect, v.getZNear())), 0); - } - - private void applyInfinitePerspectiveInverse(GL gl, ExaminerViewer v) { - CameraParameters parms = v.getCameraParameters(); - float aspect = parms.getImagePlaneAspectRatio(); - gl.glMultMatrixf(getData(infinitePerspectiveInverse(parms.getVertFOV(), aspect, v.getZNear())), 0); - } - - private Mat4f perspectiveInverse(float fovy, float aspect, float zNear, float zFar) { - float tangent = (float) Math.tan(Math.toRadians(fovy / 2.0)); - float y = tangent * zNear; - float x = aspect * y; - return frustumInverse(-x, x, -y, y, zNear, zFar); - } - - private Mat4f frustumInverse(float left, float right, - float bottom, float top, - float zNear, float zFar) { - Mat4f m = new Mat4f(); - m.makeIdent(); - - m.set(0, 0, (right - left) / (2 * zNear)); - m.set(0, 3, (right + left) / (2 * zNear)); - - m.set(1, 1, (top - bottom) / (2 * zNear)); - m.set(1, 3, (top + bottom) / (2 * zNear)); - - m.set(2, 2, 0); - m.set(2, 3, -1); - - m.set(3, 2, -(zFar - zNear) / (2 * zFar * zNear)); - m.set(3, 3, (zFar + zNear) / (2 * zFar * zNear)); - - return m; - } - - private float[] getData(Vec4f v) { - return new float[] { v.x(), v.y(), v.z(), v.w() }; - } - - private float[] getData(Mat4f m) { - float[] res = new float[16]; - m.getColumnMajorData(res); - return res; - } - - private static void runExit() { - // Note: calling System.exit() synchronously inside the draw, - // reshape or init callbacks can lead to deadlocks on certain - // platforms (in particular, X11) because the JAWT's locking - // routines cause a global AWT lock to be grabbed. Instead run - // the exit routine in another thread. - new Thread(new Runnable() { - public void run() { - System.exit(0); - } - }).start(); - } -} diff --git a/src/demos/j2d/CustomText.java b/src/demos/j2d/CustomText.java deleted file mode 100755 index aba7b97..0000000 --- a/src/demos/j2d/CustomText.java +++ /dev/null @@ -1,428 +0,0 @@ -/* - * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.j2d; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Container; -import java.awt.DisplayMode; -import java.awt.Font; -import java.awt.GradientPaint; -import java.awt.Graphics2D; -import java.awt.GraphicsEnvironment; -import java.awt.event.*; -import java.awt.geom.*; -import java.awt.font.*; -import java.awt.image.*; -import java.text.*; -import java.util.*; -import javax.swing.*; -import javax.swing.event.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.j2d.*; -import com.sun.opengl.util.texture.*; - -import demos.common.*; -import demos.util.*; -import gleem.linalg.*; - -/** Illustrates more advanced use of the TextRenderer class; shows how - to do text filled with a linear Java 2D gradient. */ - -public class CustomText extends Demo { - public static void main(String[] args) { - JFrame frame = new JFrame("Custom Text"); - frame.getContentPane().setLayout(new BorderLayout()); - - GLCanvas canvas = new GLCanvas(); - final CustomText demo = new CustomText(); - - canvas.addGLEventListener(demo); - frame.getContentPane().add(canvas, BorderLayout.CENTER); - frame.getContentPane().add(demo.buildGUI(), BorderLayout.NORTH); - - DisplayMode mode = - GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDisplayMode(); - - frame.setSize((int) (0.75f * mode.getWidth()), - (int) (0.75f * mode.getHeight())); - - final Animator animator = new Animator(canvas); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - // Run this on another thread than the AWT event queue to - // make sure the call to Animator.stop() completes before - // exiting - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } - }); - frame.show(); - animator.start(); - } - - // Put a little physics on the text to make it look nicer - private static final float INIT_ANG_VEL_MAG = 0.3f; - private static final float INIT_VEL_MAG = 400.0f; - private static final int DEFAULT_DROP_SHADOW_DIST = 20; - - // Information about each piece of text - private static class TextInfo { - float angularVelocity; - Vec2f velocity; - - float angle; - Vec2f position; - - String text; - } - - private List/*<TextInfo>*/ textInfo = new ArrayList/*<TextInfo>*/(); - private Time time; - private Texture backgroundTexture; - private TextRenderer renderer; - private Random random = new Random(); - private GLU glu = new GLU(); - private int width; - private int height; - - private int maxTextWidth; - - private FPSCounter fps; - - public Container buildGUI() { - // Create gui - JPanel panel = new JPanel(); - JButton button = new JButton("Less Text"); - button.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - lessText(); - } - }); - panel.add(button); - button = new JButton("More Text"); - button.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - moreText(); - } - }); - panel.add(button); - return panel; - } - - public void moreText() { - int numToAdd = (int) (textInfo.size() * 0.5f); - if (numToAdd == 0) - numToAdd = 1; - for (int i = 0; i < numToAdd; i++) { - textInfo.add(randomTextInfo()); - } - } - - public void lessText() { - if (textInfo.size() == 1) - return; - int numToRemove = textInfo.size() / 3; - if (numToRemove == 0) - numToRemove = 1; - for (int i = 0; i < numToRemove; i++) { - textInfo.remove(textInfo.size() - 1); - } - } - - public void init(GLAutoDrawable drawable) { - // Create the background texture - BufferedImage bgImage = new BufferedImage(2, 2, BufferedImage.TYPE_BYTE_GRAY); - Graphics2D g = bgImage.createGraphics(); - g.setColor(new Color(0.3f, 0.3f, 0.3f)); - g.fillRect(0, 0, 2, 2); - g.setColor(new Color(0.7f, 0.7f, 0.7f)); - g.fillRect(0, 0, 1, 1); - g.fillRect(1, 1, 1, 1); - g.dispose(); - backgroundTexture = TextureIO.newTexture(bgImage, false); - backgroundTexture.bind(); - backgroundTexture.setTexParameteri(GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); - backgroundTexture.setTexParameteri(GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); - backgroundTexture.setTexParameteri(GL.GL_TEXTURE_WRAP_S, GL.GL_REPEAT); - backgroundTexture.setTexParameteri(GL.GL_TEXTURE_WRAP_T, GL.GL_REPEAT); - - // Create the text renderer - renderer = new TextRenderer(new Font("Serif", Font.PLAIN, 72), true, true, - new CustomRenderDelegate(52, 10, Color.BLUE, Color.CYAN)); - - // Create the FPS counter - fps = new FPSCounter(drawable, 36); - - width = drawable.getWidth(); - height = drawable.getWidth(); - - // Compute maximum width of text we're going to draw to avoid - // popping in/out at edges - maxTextWidth = (int) renderer.getBounds("Java 2D").getWidth(); - maxTextWidth = Math.max(maxTextWidth, (int) renderer.getBounds("OpenGL").getWidth()); - - // Create random text - textInfo.clear(); - for (int i = 0; i < 100; i++) { - textInfo.add(randomTextInfo()); - } - - time = new SystemTime(); - ((SystemTime) time).rebase(); - - // Set up properties; note we don't need the depth buffer in this demo - GL gl = drawable.getGL(); - gl.glDisable(GL.GL_DEPTH_TEST); - // Turn off vsync if we can - gl.setSwapInterval(0); - } - - public void display(GLAutoDrawable drawable) { - time.update(); - - // Update velocities and positions of all text - float deltaT = (float) time.deltaT(); - Vec2f tmp = new Vec2f(); - for (Iterator iter = textInfo.iterator(); iter.hasNext(); ) { - TextInfo info = (TextInfo) iter.next(); - - // Randomize things a little bit at run time - if (random.nextInt(1000) == 0) { - info.angularVelocity = INIT_ANG_VEL_MAG * (randomAngle() - 180); - info.velocity = randomVelocityVec2f(INIT_VEL_MAG, INIT_VEL_MAG); - } - - // Now update angles and positions - info.angle += info.angularVelocity * deltaT; - tmp.set(info.velocity); - tmp.scale(deltaT); - info.position.add(tmp); - - // Wrap angles and positions - if (info.angle < 0) { - info.angle += 360; - } else if (info.angle > 360) { - info.angle -= 360; - } - // Use maxTextWidth to avoid popping in/out at edges - // Would be better to do oriented bounding rectangle computation - if (info.position.x() < -maxTextWidth) { - info.position.setX(info.position.x() + drawable.getWidth() + 2 * maxTextWidth); - } else if (info.position.x() > drawable.getWidth() + maxTextWidth) { - info.position.setX(info.position.x() - drawable.getWidth() - 2 * maxTextWidth); - } - if (info.position.y() < -maxTextWidth) { - info.position.setY(info.position.y() + drawable.getHeight() + 2 * maxTextWidth); - } else if (info.position.y() > drawable.getHeight() + maxTextWidth) { - info.position.setY(info.position.y() - drawable.getHeight() - 2 * maxTextWidth); - } - } - - GL gl = drawable.getGL(); - gl.glClear(GL.GL_COLOR_BUFFER_BIT); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluOrtho2D(0, drawable.getWidth(), 0, drawable.getHeight()); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - - // Draw the background texture - backgroundTexture.enable(); - backgroundTexture.bind(); - TextureCoords coords = backgroundTexture.getImageTexCoords(); - int w = drawable.getWidth(); - int h = drawable.getHeight(); - float fw = w / 100.0f; - float fh = h / 100.0f; - gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_REPLACE); - gl.glBegin(GL.GL_QUADS); - gl.glTexCoord2f(fw * coords.left(), fh * coords.bottom()); - gl.glVertex3f(0, 0, 0); - gl.glTexCoord2f(fw * coords.right(), fh * coords.bottom()); - gl.glVertex3f(w, 0, 0); - gl.glTexCoord2f(fw * coords.right(), fh * coords.top()); - gl.glVertex3f(w, h, 0); - gl.glTexCoord2f(fw * coords.left(), fh * coords.top()); - gl.glVertex3f(0, h, 0); - gl.glEnd(); - backgroundTexture.disable(); - - // Render all text - renderer.beginRendering(drawable.getWidth(), drawable.getHeight()); - - // Note we're doing some slightly fancy stuff to position the text. - // We tell the text renderer to render the text at the origin, and - // manipulate the modelview matrix to put the text where we want. - - gl.glMatrixMode(GL.GL_MODELVIEW); - - for (Iterator iter = textInfo.iterator(); iter.hasNext(); ) { - TextInfo info = (TextInfo) iter.next(); - gl.glLoadIdentity(); - gl.glTranslatef(info.position.x(), - info.position.y(), - 0); - gl.glRotatef(info.angle, 0, 0, 1); - renderer.draw(info.text, 0, 0); - renderer.flush(); - } - - renderer.endRendering(); - - // Use the FPS renderer last to render the FPS - fps.draw(); - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { - this.width = width; - this.height = height; - } - - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private TextInfo randomTextInfo() { - TextInfo info = new TextInfo(); - info.text = randomString(); - info.angle = randomAngle(); - info.position = randomVec2f(width, height); - - info.angularVelocity = INIT_ANG_VEL_MAG * (randomAngle() - 180); - info.velocity = randomVelocityVec2f(INIT_VEL_MAG, INIT_VEL_MAG); - - return info; - } - - private String randomString() { - switch (random.nextInt(3)) { - case 0: - return "OpenGL"; - case 1: - return "Java 2D"; - default: - return "Text"; - } - } - - private float randomAngle() { - return 360.0f * random.nextFloat(); - } - - private Vec2f randomVec2f(float x, float y) { - return new Vec2f(x * random.nextFloat(), - y * random.nextFloat()); - } - - private Vec2f randomVelocityVec2f(float x, float y) { - return new Vec2f(x * (random.nextFloat() - 0.5f), - y * (random.nextFloat() - 0.5f)); - } - - private static final Color DROP_SHADOW_COLOR = new Color(0, 0, 0, 0.5f); - class CustomRenderDelegate implements TextRenderer.RenderDelegate { - private float gradientSize; - private int dropShadowDepth; - private Color color1; - private Color color2; - - - CustomRenderDelegate(float gradientSize, int dropShadowDepth, Color color1, Color color2) { - this.gradientSize = gradientSize; - this.dropShadowDepth = dropShadowDepth; - this.color1 = color1; - this.color2 = color2; - } - - public boolean intensityOnly() { - return false; - } - - public Rectangle2D getBounds(CharSequence str, - Font font, - FontRenderContext frc) { - return getBounds(str.toString(), font, frc); - } - - public Rectangle2D getBounds(String str, - Font font, - FontRenderContext frc) { - return getBounds(font.createGlyphVector(frc, str), frc); - } - - public Rectangle2D getBounds(GlyphVector gv, FontRenderContext frc) { - Rectangle2D stringBounds = gv.getPixelBounds(frc, 0, 0); - return new Rectangle2D.Double(stringBounds.getX(), - stringBounds.getY(), - stringBounds.getWidth() + dropShadowDepth, - stringBounds.getHeight() + dropShadowDepth); - } - - public void drawGlyphVector(Graphics2D graphics, GlyphVector str, int x, int y) { - graphics.setColor(DROP_SHADOW_COLOR); - graphics.drawGlyphVector(str, x + dropShadowDepth, y + dropShadowDepth); - graphics.setColor(Color.WHITE); - graphics.setPaint(new GradientPaint(x, y, color1, - x, y + gradientSize / 2, color2, - true)); - graphics.drawGlyphVector(str, x, y); - } - - public void draw(Graphics2D graphics, String str, int x, int y) { - graphics.setColor(DROP_SHADOW_COLOR); - graphics.drawString(str, x + dropShadowDepth, y + dropShadowDepth); - graphics.setColor(Color.WHITE); - graphics.setPaint(new GradientPaint(x, y, color1, - x, y + gradientSize / 2, color2, - true)); - graphics.drawString(str, x, y); - } - } -} diff --git a/src/demos/j2d/FlyingText.java b/src/demos/j2d/FlyingText.java deleted file mode 100755 index 81deeec..0000000 --- a/src/demos/j2d/FlyingText.java +++ /dev/null @@ -1,459 +0,0 @@ -/* - * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.j2d; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Container; -import java.awt.DisplayMode; -import java.awt.Font; -import java.awt.Graphics2D; -import java.awt.GraphicsEnvironment; -import java.awt.event.*; -import java.awt.image.*; -import java.text.*; -import java.util.*; -import javax.swing.*; -import javax.swing.event.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.j2d.*; -import com.sun.opengl.util.texture.*; - -import demos.common.*; -import demos.util.*; -import gleem.linalg.*; - -/** Illustrates more advanced use of the TextRenderer class; shows how - to do animated translated and rotated text as well as a drop - shadow effect. */ - -public class FlyingText extends Demo { - public static void main(String[] args) { - JFrame frame = new JFrame("Flying Text"); - frame.getContentPane().setLayout(new BorderLayout()); - - GLCanvas canvas = new GLCanvas(); - final FlyingText demo = new FlyingText(); - - canvas.addGLEventListener(demo); - frame.getContentPane().add(canvas, BorderLayout.CENTER); - frame.getContentPane().add(demo.buildGUI(), BorderLayout.NORTH); - - DisplayMode mode = - GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDisplayMode(); - - frame.setSize((int) (0.75f * mode.getWidth()), - (int) (0.75f * mode.getHeight())); - - final Animator animator = new Animator(canvas); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - // Run this on another thread than the AWT event queue to - // make sure the call to Animator.stop() completes before - // exiting - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } - }); - frame.show(); - animator.start(); - } - - // Put a little physics on the text to make it look nicer - private static final float INIT_ANG_VEL_MAG = 0.3f; - private static final float INIT_VEL_MAG = 400.0f; - private static final int DEFAULT_DROP_SHADOW_DIST = 20; - - // Information about each piece of text - private static class TextInfo { - float angularVelocity; - Vec2f velocity; - - float angle; - Vec2f position; - - float h; - float s; - float v; - - // Cycle the saturation - float curTime; - - // Cache of the RGB color - float r; - float g; - float b; - - String text; - } - - private List/*<TextInfo>*/ textInfo = new ArrayList/*<TextInfo>*/(); - private int dropShadowDistance = DEFAULT_DROP_SHADOW_DIST; - private Time time; - private Texture backgroundTexture; - private TextRenderer renderer; - private Random random = new Random(); - private GLU glu = new GLU(); - private int width; - private int height; - - private int maxTextWidth; - - private FPSCounter fps; - - public Container buildGUI() { - // Create gui - JPanel panel = new JPanel(); - JButton button = new JButton("Less Text"); - button.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - lessText(); - } - }); - panel.add(button); - final JSlider slider = new JSlider(JSlider.HORIZONTAL, - getMinDropShadowDistance(), - getMaxDropShadowDistance(), - getDropShadowDistance()); - slider.addChangeListener(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - setDropShadowDistance(slider.getValue()); - } - }); - panel.add(slider); - button = new JButton("More Text"); - button.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - moreText(); - } - }); - panel.add(button); - return panel; - } - - public void moreText() { - int numToAdd = (int) (textInfo.size() * 0.5f); - if (numToAdd == 0) - numToAdd = 1; - for (int i = 0; i < numToAdd; i++) { - textInfo.add(randomTextInfo()); - } - } - - public void lessText() { - if (textInfo.size() == 1) - return; - int numToRemove = textInfo.size() / 3; - if (numToRemove == 0) - numToRemove = 1; - for (int i = 0; i < numToRemove; i++) { - textInfo.remove(textInfo.size() - 1); - } - } - - public int getDropShadowDistance() { - return dropShadowDistance; - } - - public int getMinDropShadowDistance() { - return 1; - } - - public int getMaxDropShadowDistance() { - return 30; - } - - public void setDropShadowDistance(int dist) { - dropShadowDistance = dist; - } - - public void init(GLAutoDrawable drawable) { - // Create the background texture - BufferedImage bgImage = new BufferedImage(2, 2, BufferedImage.TYPE_BYTE_GRAY); - Graphics2D g = bgImage.createGraphics(); - g.setColor(new Color(0.3f, 0.3f, 0.3f)); - g.fillRect(0, 0, 2, 2); - g.setColor(new Color(0.7f, 0.7f, 0.7f)); - g.fillRect(0, 0, 1, 1); - g.fillRect(1, 1, 1, 1); - g.dispose(); - backgroundTexture = TextureIO.newTexture(bgImage, false); - backgroundTexture.bind(); - backgroundTexture.setTexParameteri(GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); - backgroundTexture.setTexParameteri(GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); - backgroundTexture.setTexParameteri(GL.GL_TEXTURE_WRAP_S, GL.GL_REPEAT); - backgroundTexture.setTexParameteri(GL.GL_TEXTURE_WRAP_T, GL.GL_REPEAT); - - // Create the text renderer - renderer = new TextRenderer(new Font("Serif", Font.PLAIN, 72), true, true); - - // Create the FPS counter - fps = new FPSCounter(drawable, 36); - - width = drawable.getWidth(); - height = drawable.getWidth(); - - // Compute maximum width of text we're going to draw to avoid - // popping in/out at edges - maxTextWidth = (int) renderer.getBounds("Java 2D").getWidth(); - maxTextWidth = Math.max(maxTextWidth, (int) renderer.getBounds("OpenGL").getWidth()); - - // Create random text - textInfo.clear(); - for (int i = 0; i < 100; i++) { - textInfo.add(randomTextInfo()); - } - - time = new SystemTime(); - ((SystemTime) time).rebase(); - - // Set up properties; note we don't need the depth buffer in this demo - GL gl = drawable.getGL(); - gl.glDisable(GL.GL_DEPTH_TEST); - // Turn off vsync if we can - gl.setSwapInterval(0); - } - - public void display(GLAutoDrawable drawable) { - time.update(); - - // Update velocities and positions of all text - float deltaT = (float) time.deltaT(); - Vec2f tmp = new Vec2f(); - for (Iterator iter = textInfo.iterator(); iter.hasNext(); ) { - TextInfo info = (TextInfo) iter.next(); - - // Randomize things a little bit at run time - if (random.nextInt(1000) == 0) { - info.angularVelocity = INIT_ANG_VEL_MAG * (randomAngle() - 180); - info.velocity = randomVelocityVec2f(INIT_VEL_MAG, INIT_VEL_MAG); - } - - // Now update angles and positions - info.angle += info.angularVelocity * deltaT; - tmp.set(info.velocity); - tmp.scale(deltaT); - info.position.add(tmp); - - // Update color - info.curTime += deltaT; - if (info.curTime > 2 * Math.PI) { - info.curTime -= 2 * Math.PI; - } - int rgb = Color.HSBtoRGB(info.h, - (float) (0.5 * (1 + Math.sin(info.curTime)) * info.s), - info.v); - info.r = ((rgb >> 16) & 0xFF) / 255.0f; - info.g = ((rgb >> 8) & 0xFF) / 255.0f; - info.b = ( rgb & 0xFF) / 255.0f; - - // Wrap angles and positions - if (info.angle < 0) { - info.angle += 360; - } else if (info.angle > 360) { - info.angle -= 360; - } - // Use maxTextWidth to avoid popping in/out at edges - // Would be better to do oriented bounding rectangle computation - if (info.position.x() < -maxTextWidth) { - info.position.setX(info.position.x() + drawable.getWidth() + 2 * maxTextWidth); - } else if (info.position.x() > drawable.getWidth() + maxTextWidth) { - info.position.setX(info.position.x() - drawable.getWidth() - 2 * maxTextWidth); - } - if (info.position.y() < -maxTextWidth) { - info.position.setY(info.position.y() + drawable.getHeight() + 2 * maxTextWidth); - } else if (info.position.y() > drawable.getHeight() + maxTextWidth) { - info.position.setY(info.position.y() - drawable.getHeight() - 2 * maxTextWidth); - } - } - - GL gl = drawable.getGL(); - gl.glClear(GL.GL_COLOR_BUFFER_BIT); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluOrtho2D(0, drawable.getWidth(), 0, drawable.getHeight()); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - - // Draw the background texture - backgroundTexture.enable(); - backgroundTexture.bind(); - TextureCoords coords = backgroundTexture.getImageTexCoords(); - int w = drawable.getWidth(); - int h = drawable.getHeight(); - float fw = w / 100.0f; - float fh = h / 100.0f; - gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_REPLACE); - gl.glBegin(GL.GL_QUADS); - gl.glTexCoord2f(fw * coords.left(), fh * coords.bottom()); - gl.glVertex3f(0, 0, 0); - gl.glTexCoord2f(fw * coords.right(), fh * coords.bottom()); - gl.glVertex3f(w, 0, 0); - gl.glTexCoord2f(fw * coords.right(), fh * coords.top()); - gl.glVertex3f(w, h, 0); - gl.glTexCoord2f(fw * coords.left(), fh * coords.top()); - gl.glVertex3f(0, h, 0); - gl.glEnd(); - backgroundTexture.disable(); - - // Render all text - renderer.beginRendering(drawable.getWidth(), drawable.getHeight()); - - // Note we're doing some slightly fancy stuff to position the text. - // We tell the text renderer to render the text at the origin, and - // manipulate the modelview matrix to put the text where we want. - - gl.glMatrixMode(GL.GL_MODELVIEW); - - // First render drop shadows - renderer.setColor(0, 0, 0, 0.5f); - for (Iterator iter = textInfo.iterator(); iter.hasNext(); ) { - TextInfo info = (TextInfo) iter.next(); - gl.glLoadIdentity(); - gl.glTranslatef(info.position.x() + dropShadowDistance, - info.position.y() - dropShadowDistance, - 0); - gl.glRotatef(info.angle, 0, 0, 1); - renderer.draw(info.text, 0, 0); - // We need to call flush() only because we're modifying the modelview matrix - renderer.flush(); - } - - // Now render the actual text - for (Iterator iter = textInfo.iterator(); iter.hasNext(); ) { - TextInfo info = (TextInfo) iter.next(); - gl.glLoadIdentity(); - gl.glTranslatef(info.position.x(), - info.position.y(), - 0); - gl.glRotatef(info.angle, 0, 0, 1); - renderer.setColor(info.r, info.g, info.b, 1); - renderer.draw(info.text, 0, 0); - // We need to call flush() only because we're modifying the modelview matrix - renderer.flush(); - } - - renderer.endRendering(); - - // Use the FPS renderer last to render the FPS - fps.draw(); - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { - this.width = width; - this.height = height; - } - - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private TextInfo randomTextInfo() { - TextInfo info = new TextInfo(); - info.text = randomString(); - info.angle = randomAngle(); - info.position = randomVec2f(width, height); - - info.angularVelocity = INIT_ANG_VEL_MAG * (randomAngle() - 180); - info.velocity = randomVelocityVec2f(INIT_VEL_MAG, INIT_VEL_MAG); - - Color c = randomColor(); - float[] hsb = Color.RGBtoHSB(c.getRed(), c.getGreen(), c.getBlue(), null); - info.h = hsb[0]; - info.s = hsb[1]; - info.v = hsb[2]; - info.curTime = (float) (2 * Math.PI * random.nextFloat()); - return info; - } - - private String randomString() { - switch (random.nextInt(3)) { - case 0: - return "OpenGL"; - case 1: - return "Java 2D"; - default: - return "Text"; - } - } - - private float randomAngle() { - return 360.0f * random.nextFloat(); - } - - private Vec2f randomVec2f(float x, float y) { - return new Vec2f(x * random.nextFloat(), - y * random.nextFloat()); - } - - private Vec2f randomVelocityVec2f(float x, float y) { - return new Vec2f(x * (random.nextFloat() - 0.5f), - y * (random.nextFloat() - 0.5f)); - } - - private Color randomColor() { - // Get a bright and saturated color - float r = 0; - float g = 0; - float b = 0; - float s = 0; - do { - r = random.nextFloat(); - g = random.nextFloat(); - b = random.nextFloat(); - - float[] hsb = Color.RGBtoHSB((int) (255.0f * r), - (int) (255.0f * g), - (int) (255.0f * b), null); - s = hsb[1]; - } while ((r < 0.8f && g < 0.8f && b < 0.8f) || - s < 0.8f); - return new Color(r, g, b); - } -} diff --git a/src/demos/j2d/TestOverlay.java b/src/demos/j2d/TestOverlay.java deleted file mode 100755 index b0bcae2..0000000 --- a/src/demos/j2d/TestOverlay.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.j2d; - -import java.awt.AlphaComposite; -import java.awt.Color; -import java.awt.Font; -import java.awt.Frame; -import java.awt.Graphics2D; -import java.awt.Rectangle; -import java.awt.event.*; -import java.awt.font.*; -import java.text.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.j2d.*; - -import demos.gears.Gears; -import demos.util.*; -import gleem.linalg.*; - -/** A simple test of the Overlay utility class. Draws gears underneath - with moving Java 2D-rendered text on top. */ - -public class TestOverlay implements GLEventListener { - public static void main(String[] args) { - Frame frame = new Frame("Java 2D Overlay Test"); - GLCapabilities caps = new GLCapabilities(); - caps.setAlphaBits(8); - GLCanvas canvas = new GLCanvas(caps); - canvas.addGLEventListener(new Gears()); - canvas.addGLEventListener(new TestOverlay()); - frame.add(canvas); - frame.setSize(512, 512); - final Animator animator = new Animator(canvas); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - // Run this on another thread than the AWT event queue to - // make sure the call to Animator.stop() completes before - // exiting - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } - }); - frame.show(); - animator.start(); - } - - private Overlay overlay; - private Time time; - private Font font; - private Color TRANSPARENT_BLACK = new Color(0.0f, 0.0f, 0.0f, 0.0f); - private FontRenderContext frc; - private GlyphVector gv; - private Vec2f velocity = new Vec2f(100.0f, 150.0f); - private Vec2f position; - private Rectangle textBounds; - private Rectangle lastTextBounds; - private String TEST_STRING = "Java 2D Text"; - private long startTime; - private int frameCount; - private DecimalFormat format = new DecimalFormat("####.00"); - - private Rectangle fpsBounds; - - public void init(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - gl.setSwapInterval(0); - - overlay = new Overlay(drawable); - time = new SystemTime(); - ((SystemTime) time).rebase(); - - // Start the text half way up the left side - position = new Vec2f(0.0f, drawable.getHeight() / 2); - - // Create the font, render context, and glyph vector - font = new Font("SansSerif", Font.BOLD, 36); - } - - public void display(GLAutoDrawable drawable) { - if (startTime == 0) { - startTime = System.currentTimeMillis(); - } - - Graphics2D g2d = overlay.createGraphics(); - - if (++frameCount == 30) { - long endTime = System.currentTimeMillis(); - float fps = 30.0f / (float) (endTime - startTime) * 1000; - frameCount = 0; - startTime = System.currentTimeMillis(); - - FontRenderContext frc = g2d.getFontRenderContext(); - String fpsString = "FPS: " + format.format(fps); - GlyphVector gv = font.createGlyphVector(frc, TEST_STRING); - fpsBounds = gv.getPixelBounds(frc, 0, 0); - int x = drawable.getWidth() - fpsBounds.width - 20; - int y = drawable.getHeight() - 20; - g2d.setFont(font); - g2d.setComposite(AlphaComposite.Src); - g2d.setColor(TRANSPARENT_BLACK); - g2d.fillRect(x + fpsBounds.x, y + fpsBounds.y, fpsBounds.width, fpsBounds.height); - g2d.setColor(Color.WHITE); - g2d.drawString(fpsString, x, y); - overlay.markDirty(x + fpsBounds.x, y + fpsBounds.y, fpsBounds.width, fpsBounds.height); - } - - time.update(); - - g2d.setFont(font); - g2d.setComposite(AlphaComposite.Src); - if (overlay.contentsLost()) { - frc = g2d.getFontRenderContext(); - gv = font.createGlyphVector(frc, TEST_STRING); - } - - // Compute the next position of the text - position = position.plus(velocity.times((float) time.deltaT())); - // Figure out whether we have to switch directions - textBounds = gv.getPixelBounds(frc, position.x(), position.y()); - if (textBounds.getMinX() < 0) { - velocity.setX(Math.abs(velocity.x())); - } else if (textBounds.getMaxX() > drawable.getWidth()) { - velocity.setX(-1.0f * Math.abs(velocity.x())); - } - if (textBounds.getMinY() < 0) { - velocity.setY(Math.abs(velocity.y())); - } else if (textBounds.getMaxY() > drawable.getHeight()) { - velocity.setY(-1.0f * Math.abs(velocity.y())); - } - - // Clear the last text (if any) and draw the current - if (lastTextBounds != null) { - g2d.setColor(TRANSPARENT_BLACK); - g2d.fillRect((int) lastTextBounds.getMinX(), (int) lastTextBounds.getMinY(), - (int) (lastTextBounds.getWidth() + 1), (int) (lastTextBounds.getHeight() + 1)); - } else if (overlay.contentsLost()) { - g2d.setColor(TRANSPARENT_BLACK); - g2d.fillRect(0, 0, drawable.getWidth(), drawable.getHeight()); - } - g2d.setColor(Color.WHITE); - g2d.drawString(TEST_STRING, position.x(), position.y()); - - // Compute the union of these rectangles to push an update to - // the overlay - Rectangle union = new Rectangle(textBounds); - if (lastTextBounds != null) { - union.add(lastTextBounds); - } - // Put a little slop around this text due to apparent rounding errors - overlay.markDirty(union.x, union.y, union.width + 10, union.height + 10); - - // Move down the text bounds - lastTextBounds = textBounds; - - // Draw the overlay - overlay.drawAll(); - g2d.dispose(); - } - - // Unused methods - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} -} diff --git a/src/demos/j2d/TestTextRenderer.java b/src/demos/j2d/TestTextRenderer.java deleted file mode 100755 index 281476f..0000000 --- a/src/demos/j2d/TestTextRenderer.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.j2d; - -import java.awt.Font; -import java.awt.Frame; -import java.awt.event.*; -import java.awt.geom.*; -import java.text.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.j2d.*; - -import demos.gears.Gears; -import demos.util.*; -import gleem.linalg.*; - -/** A simple test of the TextRenderer class. Draws gears underneath - with moving Java 2D-rendered text on top. */ - -public class TestTextRenderer implements GLEventListener { - public static void main(String[] args) { - Frame frame = new Frame("Text Renderer Test"); - GLCapabilities caps = new GLCapabilities(); - caps.setAlphaBits(8); - GLCanvas canvas = new GLCanvas(caps); - canvas.addGLEventListener(new Gears()); - canvas.addGLEventListener(new TestTextRenderer()); - frame.add(canvas); - frame.setSize(512, 512); - final Animator animator = new Animator(canvas); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - // Run this on another thread than the AWT event queue to - // make sure the call to Animator.stop() completes before - // exiting - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } - }); - - frame.show(); - animator.start(); - } - - private TextRenderer renderer; - private Time time; - private Font font; - private Vec2f velocity = new Vec2f(100.0f, 150.0f); - private Vec2f position; - private String TEST_STRING = "Java 2D Text"; - private int textWidth; - private int textHeight; - private FPSCounter fps; - - public void init(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - - // Don't artificially slow us down, at least on platforms where we - // have control over this (note: on X11 platforms this may not - // have the effect of overriding the setSwapInterval(1) in the - // Gears demo) - gl.setSwapInterval(0); - - renderer = new TextRenderer(new Font("SansSerif", Font.BOLD, 36)); - time = new SystemTime(); - ((SystemTime) time).rebase(); - - // Start the text half way up the left side - position = new Vec2f(0.0f, drawable.getHeight() / 2); - Rectangle2D textBounds = renderer.getBounds(TEST_STRING); - textWidth = (int) textBounds.getWidth(); - textHeight = (int) textBounds.getHeight(); - - fps = new FPSCounter(drawable, 36); - } - - public void display(GLAutoDrawable drawable) { - time.update(); - - // Compute the next position of the text - position = position.plus(velocity.times((float) time.deltaT())); - // Figure out whether we have to switch directions - if (position.x() < 0) { - velocity.setX(Math.abs(velocity.x())); - } else if (position.x() + textWidth > drawable.getWidth()) { - velocity.setX(-1.0f * Math.abs(velocity.x())); - } - if (position.y() < 0) { - velocity.setY(Math.abs(velocity.y())); - } else if (position.y() + textHeight > drawable.getHeight()) { - velocity.setY(-1.0f * Math.abs(velocity.y())); - } - - GL gl = drawable.getGL(); - - // Prepare to draw text - renderer.beginRendering(drawable.getWidth(), drawable.getHeight()); - - // Draw text - renderer.draw(TEST_STRING, (int) position.x(), (int) position.y()); - - // Draw FPS - fps.draw(); - - // Clean up rendering - renderer.endRendering(); - } - - // Unused methods - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} -} diff --git a/src/demos/j2d/TestTextureRenderer.java b/src/demos/j2d/TestTextureRenderer.java deleted file mode 100755 index 5702743..0000000 --- a/src/demos/j2d/TestTextureRenderer.java +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.j2d; - -import java.awt.AlphaComposite; -import java.awt.Color; -import java.awt.Font; -import java.awt.Frame; -import java.awt.Graphics2D; -import java.awt.Rectangle; -import java.awt.event.*; -import java.awt.font.*; -import java.text.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.j2d.*; - -import demos.gears.Gears; -import demos.util.*; -import gleem.linalg.*; - -/** A simple test of the TextureRenderer utility class. Draws gears - underneath with moving Java 2D-rendered text on top. */ - -public class TestTextureRenderer implements GLEventListener { - public static void main(String[] args) { - Frame frame = new Frame("Java 2D Renderer Test"); - GLCapabilities caps = new GLCapabilities(); - caps.setAlphaBits(8); - GLCanvas canvas = new GLCanvas(caps); - canvas.addGLEventListener(new Gears()); - canvas.addGLEventListener(new TestTextureRenderer()); - frame.add(canvas); - frame.setSize(512, 512); - final Animator animator = new Animator(canvas); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - // Run this on another thread than the AWT event queue to - // make sure the call to Animator.stop() completes before - // exiting - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } - }); - frame.show(); - animator.start(); - } - - private TextureRenderer renderer; - private Time time; - private Font font; - private Color TRANSPARENT_BLACK = new Color(0.0f, 0.0f, 0.0f, 0.0f); - private Vec2f velocity = new Vec2f(100.0f, 150.0f); - private Vec2f position; - private Rectangle textBounds; - private Rectangle fpsBounds; - private String TEST_STRING = "Java 2D Text"; - private GLU glu = new GLU(); - private long startTime; - private int frameCount; - private DecimalFormat format = new DecimalFormat("####.00"); - - public void init(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - gl.setSwapInterval(0); - - renderer = new TextureRenderer(256, 256, true); - time = new SystemTime(); - ((SystemTime) time).rebase(); - - // Start the text half way up the left side - position = new Vec2f(0.0f, drawable.getHeight() / 2); - - // Create the font, render context, and glyph vector - font = new Font("SansSerif", Font.BOLD, 36); - Graphics2D g2d = renderer.createGraphics(); - g2d.setFont(font); - g2d.setComposite(AlphaComposite.Src); - FontRenderContext frc = g2d.getFontRenderContext(); - GlyphVector gv = font.createGlyphVector(frc, TEST_STRING); - g2d.setColor(TRANSPARENT_BLACK); - g2d.fillRect(0, 0, renderer.getWidth(), renderer.getHeight()); - g2d.setColor(Color.WHITE); - g2d.drawString(TEST_STRING, 10, 50); - textBounds = gv.getPixelBounds(frc, 10, 50); - renderer.markDirty(textBounds.x, textBounds.y, textBounds.width, textBounds.height); - } - - public void display(GLAutoDrawable drawable) { - if (startTime == 0) { - startTime = System.currentTimeMillis(); - } - - if (++frameCount == 100) { - long endTime = System.currentTimeMillis(); - float fps = 100.0f / (float) (endTime - startTime) * 1000; - frameCount = 0; - startTime = System.currentTimeMillis(); - - Graphics2D g2d = renderer.createGraphics(); - g2d.setFont(font); - g2d.setComposite(AlphaComposite.Src); - FontRenderContext frc = g2d.getFontRenderContext(); - String fpsString = "FPS: " + format.format(fps); - GlyphVector gv = font.createGlyphVector(frc, TEST_STRING); - fpsBounds = gv.getPixelBounds(frc, 10, 100); - g2d.setColor(TRANSPARENT_BLACK); - g2d.fillRect(fpsBounds.x, fpsBounds.y, fpsBounds.width, fpsBounds.height); - g2d.setColor(Color.WHITE); - g2d.drawString(fpsString, 10, 100); - renderer.markDirty(fpsBounds.x, fpsBounds.y, fpsBounds.width, fpsBounds.height); - } - - time.update(); - - // Compute the next position of the text - position = position.plus(velocity.times((float) time.deltaT())); - // Figure out whether we have to switch directions - Rectangle tmpBounds = new Rectangle((int) position.x(), (int) position.y(), - textBounds.width, textBounds.height); - if (tmpBounds.getMinX() < 0) { - velocity.setX(Math.abs(velocity.x())); - } else if (tmpBounds.getMaxX() > drawable.getWidth()) { - velocity.setX(-1.0f * Math.abs(velocity.x())); - } - if (tmpBounds.getMinY() < 0) { - velocity.setY(Math.abs(velocity.y())); - } else if (tmpBounds.getMaxY() > drawable.getHeight()) { - velocity.setY(-1.0f * Math.abs(velocity.y())); - } - - GL gl = drawable.getGL(); - - // Prepare to draw from the renderer's texture - renderer.beginOrthoRendering(drawable.getWidth(), drawable.getHeight()); - - // Draw from the renderer's texture - renderer.drawOrthoRect((int) position.x(), (int) position.y(), - textBounds.x, - renderer.getHeight() - textBounds.y - textBounds.height, - textBounds.width, - textBounds.height); - - // If we have the FPS, draw it - if (fpsBounds != null) { - renderer.drawOrthoRect(drawable.getWidth() - fpsBounds.width, - 20, - fpsBounds.x, - renderer.getHeight() - fpsBounds.y - fpsBounds.height, - fpsBounds.width, - fpsBounds.height); - } - - // Clean up rendering - renderer.endOrthoRendering(); - } - - // Unused methods - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} -} diff --git a/src/demos/j2d/TextCube.java b/src/demos/j2d/TextCube.java deleted file mode 100755 index 10d97b7..0000000 --- a/src/demos/j2d/TextCube.java +++ /dev/null @@ -1,209 +0,0 @@ -/* - * Copyright (c) 2007 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.j2d; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Font; -import java.awt.Frame; -import java.awt.event.*; -import java.awt.geom.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.j2d.*; - -import demos.common.*; -import demos.util.*; - -/** Shows how to place 2D text in 3D using the TextRenderer. */ - -public class TextCube extends Demo { - private float xAng; - private float yAng; - private GLU glu = new GLU(); - private Time time; - private TextRenderer renderer; - private FPSCounter fps; - private float textScaleFactor; - - public static void main(String[] args) { - Frame frame = new Frame("Text Cube"); - frame.setLayout(new BorderLayout()); - - GLCanvas canvas = new GLCanvas(); - final TextCube demo = new TextCube(); - - canvas.addGLEventListener(demo); - frame.add(canvas, BorderLayout.CENTER); - - frame.setSize(512, 512); - final Animator animator = new Animator(canvas); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - // Run this on another thread than the AWT event queue to - // make sure the call to Animator.stop() completes before - // exiting - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } - }); - frame.show(); - animator.start(); - } - - public void init(GLAutoDrawable drawable) { - renderer = new TextRenderer(new Font("SansSerif", Font.PLAIN, 72)); - GL gl = drawable.getGL(); - gl.glEnable(GL.GL_DEPTH_TEST); - - // Compute the scale factor of the largest string which will make - // them all fit on the faces of the cube - Rectangle2D bounds = renderer.getBounds("Bottom"); - float w = (float) bounds.getWidth(); - float h = (float) bounds.getHeight(); - textScaleFactor = 1.0f / (w * 1.1f); - fps = new FPSCounter(drawable, 36); - - time = new SystemTime(); - ((SystemTime) time).rebase(); - gl.setSwapInterval(0); - } - - public void display(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - glu.gluLookAt(0, 0, 10, - 0, 0, 0, - 0, 1, 0); - - // Base rotation of cube - gl.glRotatef(xAng, 1, 0, 0); - gl.glRotatef(yAng, 0, 1, 0); - - // Six faces of cube - // Top face - gl.glPushMatrix(); - gl.glRotatef(-90, 1, 0, 0); - drawFace(gl, 1.0f, 0.2f, 0.2f, 0.8f, "Top"); - gl.glPopMatrix(); - // Front face - drawFace(gl, 1.0f, 0.8f, 0.2f, 0.2f, "Front"); - // Right face - gl.glPushMatrix(); - gl.glRotatef(90, 0, 1, 0); - drawFace(gl, 1.0f, 0.2f, 0.8f, 0.2f, "Right"); - // Back face - gl.glRotatef(90, 0, 1, 0); - drawFace(gl, 1.0f, 0.8f, 0.8f, 0.2f, "Back"); - // Left face - gl.glRotatef(90, 0, 1, 0); - drawFace(gl, 1.0f, 0.2f, 0.8f, 0.8f, "Left"); - gl.glPopMatrix(); - // Bottom face - gl.glPushMatrix(); - gl.glRotatef(90, 1, 0, 0); - drawFace(gl, 1.0f, 0.8f, 0.2f, 0.8f, "Bottom"); - gl.glPopMatrix(); - - fps.draw(); - - time.update(); - xAng += 200 * (float) time.deltaT(); - yAng += 150 * (float) time.deltaT(); - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { - GL gl = drawable.getGL(); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluPerspective(15, (float) width / (float) height, 5, 15); - } - - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - - private void drawFace(GL gl, - float faceSize, - float r, float g, float b, - String text) { - float halfFaceSize = faceSize / 2; - // Face is centered around the local coordinate system's z axis, - // at a z depth of faceSize / 2 - gl.glColor3f(r, g, b); - gl.glBegin(GL.GL_QUADS); - gl.glVertex3f(-halfFaceSize, -halfFaceSize, halfFaceSize); - gl.glVertex3f( halfFaceSize, -halfFaceSize, halfFaceSize); - gl.glVertex3f( halfFaceSize, halfFaceSize, halfFaceSize); - gl.glVertex3f(-halfFaceSize, halfFaceSize, halfFaceSize); - gl.glEnd(); - - // Now draw the overlaid text. In this setting, we don't want the - // text on the backward-facing faces to be visible, so we enable - // back-face culling; and since we're drawing the text over other - // geometry, to avoid z-fighting we disable the depth test. We - // could plausibly also use glPolygonOffset but this is simpler. - // Note that because the TextRenderer pushes the enable state - // internally we don't have to reset the depth test or cull face - // bits after we're done. - renderer.begin3DRendering(); - gl.glDisable(GL.GL_DEPTH_TEST); - gl.glEnable(GL.GL_CULL_FACE); - // Note that the defaults for glCullFace and glFrontFace are - // GL_BACK and GL_CCW, which match the TextRenderer's definition - // of front-facing text. - Rectangle2D bounds = renderer.getBounds(text); - float w = (float) bounds.getWidth(); - float h = (float) bounds.getHeight(); - renderer.draw3D(text, - w / -2.0f * textScaleFactor, - h / -2.0f * textScaleFactor, - halfFaceSize, - textScaleFactor); - renderer.end3DRendering(); - } -} diff --git a/src/demos/j2d/TextFlow.java b/src/demos/j2d/TextFlow.java deleted file mode 100755 index 3dfcf14..0000000 --- a/src/demos/j2d/TextFlow.java +++ /dev/null @@ -1,202 +0,0 @@ -/* - * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.j2d; - -import java.awt.BorderLayout; -import java.awt.Font; -import java.awt.Frame; -import java.awt.event.*; -import java.awt.font.*; -import java.awt.geom.*; -import java.text.*; -import java.util.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.j2d.*; - -import demos.common.*; -import demos.util.*; - -/** Illustrates both the TextRenderer's capability for handling - relatively large amounts of text (more than drawn on the screen -- - showing the least recently used capabilities of its internal - cache) as well as using the Java 2D text layout mechanisms in - conjunction with the TextRenderer to flow text across the - screen. */ - -public class TextFlow extends Demo { - public static void main(String[] args) { - Frame frame = new Frame("Text Flow"); - frame.setLayout(new BorderLayout()); - - GLCanvas canvas = new GLCanvas(); - final TextFlow demo = new TextFlow(); - - canvas.addGLEventListener(demo); - frame.add(canvas, BorderLayout.CENTER); - - frame.setSize(512, 512); - final Animator animator = new Animator(canvas); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - // Run this on another thread than the AWT event queue to - // make sure the call to Animator.stop() completes before - // exiting - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } - }); - frame.show(); - animator.start(); - } - - private List/*<String>*/ lines = new ArrayList(); - private Time time; - private TextRenderer renderer; - private int curParagraph; - private float x = 30; - private float y; - private float velocity = 100; // pixels/sec - private int lineSpacing; - private int EXTRA_LINE_SPACING = 5; - - private void reflow(float width) { - lines.clear(); - lineSpacing = 0; - int numLines = 0; - FontRenderContext frc = renderer.getFontRenderContext(); - for (int i = 0; i < text.length; i++) { - String paragraph = text[i]; - Map attrs = new HashMap(); - attrs.put(TextAttribute.FONT, renderer.getFont()); - AttributedString str = new AttributedString(paragraph, attrs); - LineBreakMeasurer measurer = new LineBreakMeasurer(str.getIterator(), frc); - int curPos = 0; - while (measurer.getPosition() < paragraph.length()) { - int nextPos = measurer.nextOffset(width); - String line = paragraph.substring(curPos, nextPos); - Rectangle2D bounds = renderer.getBounds(line); - lines.add(line); - lineSpacing += (int) bounds.getHeight(); - ++numLines; - curPos = nextPos; - measurer.setPosition(curPos); - } - // Indicate end of paragraph with a null LineInfo - lines.add(null); - } - lineSpacing = (int) ((float) lineSpacing / (float) numLines) + EXTRA_LINE_SPACING; - } - - public void init(GLAutoDrawable drawable) { - renderer = new TextRenderer(new Font("SansSerif", Font.PLAIN, 36)); - time = new SystemTime(); - ((SystemTime) time).rebase(); - } - - public void display(GLAutoDrawable drawable) { - time.update(); - - GL gl = drawable.getGL(); - gl.glClear(GL.GL_COLOR_BUFFER_BIT); - - float deltaT = (float) time.deltaT(); - y += velocity * deltaT; - - // Draw text starting at the specified paragraph - int paragraph = 0; - float curY = y; - renderer.beginRendering(drawable.getWidth(), drawable.getHeight()); - boolean renderedOne = false; - for (int i = 0; i < lines.size(); i++) { - String line = (String) lines.get(i); - if (line == null) { - ++paragraph; - if (paragraph >= curParagraph) { - // If this paragraph has scrolled off the top of the screen, - // don't draw it the next frame - if (paragraph > curParagraph && curY > drawable.getHeight()) { - ++curParagraph; - y = curY; - } - curY -= 2 * lineSpacing; - } - } else { - if (paragraph >= curParagraph) { - curY -= lineSpacing; - if (curY < drawable.getHeight() + lineSpacing) { - renderer.draw(line, (int) x, (int) curY); - renderedOne = true; - } - if (curY < 0) { - // Done rendering all visible lines - break; - } - } - } - } - renderer.endRendering(); - if (!renderedOne) { - // Start over - curParagraph = 0; - y = 0; - } - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { - reflow(Math.max(100, width - 60)); - } - - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - - // Use some nonsense Lorem Ipsum text generated from www.lipsum.com - private static final String[] text = { - "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla in mi ut augue laoreet gravida. Quisque sodales vehicula ligula. Donec posuere. Morbi aliquet, odio vitae tempus mattis, odio dolor vestibulum leo, congue laoreet risus felis vitae dolor. Nulla arcu. Morbi non quam. Vestibulum pretium dolor fermentum erat. Proin dictum volutpat nibh. Morbi egestas mauris a diam. Vestibulum mauris eros, porttitor at, fermentum a, varius eu, mauris. Cras rutrum felis ut diam. Aenean porttitor risus a nunc. Aliquam et ante eu dolor pretium adipiscing. Sed fermentum, eros in dapibus lacinia, augue nunc fermentum tellus, eu egestas justo elit at mauris. Sed leo nisl, fermentum in, pretium vitae, tincidunt at, lacus. Curabitur non diam.", - "Etiam varius sagittis lorem. Vivamus iaculis condimentum tortor. Nunc sollicitudin scelerisque dolor. Nunc condimentum fringilla nisl. Fusce purus mauris, blandit eu, lacinia eget, vestibulum nec, massa. Nulla vitae libero. Suspendisse potenti. Aliquam iaculis, lorem eu adipiscing tempor, ipsum dui aliquam sem, eu vehicula leo leo eu ipsum. Pellentesque faucibus. Nullam porttitor ligula eget nibh. Cras elementum mi ac libero. Praesent pellentesque pede vitae quam. Sed nec arcu id ante cursus mollis. Suspendisse quis ipsum. Maecenas feugiat interdum neque. Nullam dui diam, convallis at, condimentum vitae, mattis vitae, metus. Integer sollicitudin, diam id lacinia posuere, quam velit fringilla dolor, eu semper sapien felis ac elit.", - "Ut a magna vitae lectus euismod hendrerit. Quisque varius consectetuer sapien. Suspendisse ligula. Nullam feugiat venenatis mauris. In consequat lorem at neque. Pellentesque libero. In eget lectus in velit auctor facilisis. Donec nec metus. Aliquam facilisis eros vel dui. Integer a diam. Donec interdum, eros faucibus blandit venenatis, ante ante ornare enim, a gravida ante lectus id metus. Ut sem.", - "Duis consectetuer leo quis elit. Suspendisse pretium nunc ac dolor. Quisque eleifend fringilla nisl. Suspendisse potenti. Duis vel ipsum at enim tincidunt consectetuer. Aliquam tempor justo nec metus. Nunc ac velit id nibh consequat vulputate. Cras vel dolor eu massa lacinia volutpat. Curabitur nibh nisi, auctor et, tincidunt eget, molestie vel, neque. Sed semper viverra neque. Nullam rhoncus hendrerit libero. Nulla adipiscing. Fusce pede nibh, lacinia a, malesuada a, dictum nec, pede. Etiam ut lorem. Donec quis massa vitae est pharetra mattis.", - "Nullam dui. Morbi nulla quam, imperdiet iaculis, consectetuer a, porttitor eu, sem. Donec id ipsum vitae nisi viverra porta. In hac habitasse platea dictumst. In ligula libero, dapibus eleifend, eleifend vel, accumsan sit amet, felis. Morbi tortor. Donec mattis ultricies arcu. Ut eget leo. Sed vel quam at ipsum sodales semper. Curabitur tincidunt quam id odio. Quisque porta, magna vel nonummy pulvinar, ligula tellus fringilla tellus, ut pharetra turpis velit ac eros. Cras eu enim vel mi suscipit malesuada. Phasellus ut orci. Aenean vitae turpis vitae lectus malesuada aliquet." - }; -} diff --git a/src/demos/jgears/JGears.java b/src/demos/jgears/JGears.java deleted file mode 100644 index 9da0f46..0000000 --- a/src/demos/jgears/JGears.java +++ /dev/null @@ -1,143 +0,0 @@ -package demos.jgears; - -import java.awt.*; -import java.awt.event.*; -import java.awt.geom.*; -import java.awt.image.*; -import java.io.*; -import java.text.*; -import javax.imageio.*; -import javax.swing.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import demos.gears.Gears; - -/** - * JGears.java <BR> - * author: Brian Paul (converted to Java by Ron Cemer and Sven Goethel) <P> - * - * This version is equal to Brian Paul's version 1.2 1999/10/21 - */ - -public class JGears extends GLJPanel { - private static GLCapabilities caps; - private long startTime; - private int frameCount; - private float fps; - private static Font fpsFont = new Font("SansSerif", Font.BOLD, 24); - private DecimalFormat format = new DecimalFormat("####.00"); - private BufferedImage javaImage; - private BufferedImage openglImage; - - static { - caps = new GLCapabilities(); - caps.setAlphaBits(8); - } - - public JGears() { - super(caps, null, null); - addGLEventListener(new Gears()); - try { - InputStream in = JGears.class.getClassLoader().getResourceAsStream("demos/data/images/java_logo.png"); - BufferedImage image = ImageIO.read(in); - javaImage = scaleImage(image, 0.25f, 0.25f); - - in = JGears.class.getClassLoader().getResourceAsStream("demos/data/images/opengl_logo.png"); - image = ImageIO.read(in); - openglImage = scaleImage(image, 0.45f, 0.45f); - } catch (Exception e) { - e.printStackTrace(); - } - } - - - public void paintComponent(Graphics g) { - super.paintComponent(g); - if (startTime == 0) { - startTime = System.currentTimeMillis(); - } - - if (++frameCount == 30) { - long endTime = System.currentTimeMillis(); - fps = 30.0f / (float) (endTime - startTime) * 1000; - frameCount = 0; - startTime = System.currentTimeMillis(); - } - - if (fps > 0) { - g.setColor(Color.WHITE); - g.setFont(fpsFont); - g.drawString("FPS: " + format.format(fps), getWidth() - 140, getHeight() - 30); - } - - int sp = 10; - if (javaImage != null) { - g.drawImage(javaImage, sp, getHeight() - javaImage.getHeight() - sp, null); - if (openglImage != null) { - g.drawImage(openglImage, sp + javaImage.getWidth() + sp, getHeight() - openglImage.getHeight() - sp, null); - } - } - } - - // Helper routine for various demos - public static JPanel createGradientPanel() { - JPanel gradientPanel = new JPanel() { - public void paintComponent(Graphics g) { - ((Graphics2D) g).setPaint(new GradientPaint(0, 0, Color.WHITE, - getWidth(), getHeight(), Color.DARK_GRAY)); - g.fillRect(0, 0, getWidth(), getHeight()); - } - }; - gradientPanel.setLayout(new BorderLayout()); - return gradientPanel; - } - - private BufferedImage scaleImage(BufferedImage img, float xScale, float yScale) { - BufferedImage scaled = new BufferedImage((int) (img.getWidth() * xScale), - (int) (img.getHeight() * yScale), - BufferedImage.TYPE_INT_ARGB); - Graphics2D g = scaled.createGraphics(); - g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); - g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); - g.drawRenderedImage(img, AffineTransform.getScaleInstance(xScale, yScale)); - return scaled; - } - - public static void main(String[] args) { - JFrame frame = new JFrame("Gear Demo"); - frame.getContentPane().setLayout(new BorderLayout()); - final GLJPanel drawable = new JGears(); - drawable.setOpaque(false); - - JPanel gradientPanel = createGradientPanel(); - frame.getContentPane().add(gradientPanel, BorderLayout.CENTER); - gradientPanel.add(drawable, BorderLayout.CENTER); - - final JCheckBox checkBox = new JCheckBox("Transparent", true); - checkBox.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - drawable.setOpaque(!checkBox.isSelected()); - } - }); - frame.getContentPane().add(checkBox, BorderLayout.SOUTH); - - frame.setSize(300, 300); - final Animator animator = new Animator(drawable); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - // Run this on another thread than the AWT event queue to - // make sure the call to Animator.stop() completes before - // exiting - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } - }); - frame.show(); - animator.start(); - } -} diff --git a/src/demos/jrefract/JRefract.java b/src/demos/jrefract/JRefract.java deleted file mode 100755 index ee659da..0000000 --- a/src/demos/jrefract/JRefract.java +++ /dev/null @@ -1,451 +0,0 @@ -/* - * Portions Copyright (C) 2005 Sun Microsystems, Inc. - * All rights reserved. - */ - -/* - * - * COPYRIGHT NVIDIA CORPORATION 2003. ALL RIGHTS RESERVED. - * BY ACCESSING OR USING THIS SOFTWARE, YOU AGREE TO: - * - * 1) ACKNOWLEDGE NVIDIA'S EXCLUSIVE OWNERSHIP OF ALL RIGHTS - * IN AND TO THE SOFTWARE; - * - * 2) NOT MAKE OR DISTRIBUTE COPIES OF THE SOFTWARE WITHOUT - * INCLUDING THIS NOTICE AND AGREEMENT; - * - * 3) ACKNOWLEDGE THAT TO THE MAXIMUM EXTENT PERMITTED BY - * APPLICABLE LAW, THIS SOFTWARE IS PROVIDED *AS IS* AND - * THAT NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, - * EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED - * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY - * SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES - * WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS - * OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS - * INFORMATION, OR ANY OTHER PECUNIARY LOSS), INCLUDING ATTORNEYS' - * FEES, RELATING TO THE USE OF OR INABILITY TO USE THIS SOFTWARE, - * EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.jrefract; - -import java.awt.*; -import java.awt.event.*; -import java.util.*; -import javax.swing.*; -import javax.swing.event.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.*; -import demos.common.*; -import demos.hdr.HDR; -import demos.hwShadowmapsSimple.HWShadowmapsSimple; -import demos.infiniteShadowVolumes.InfiniteShadowVolumes; -import demos.j2d.FlyingText; -import demos.jgears.JGears; -import demos.proceduralTexturePhysics.ProceduralTexturePhysics; -import demos.util.*; -import demos.vertexBufferObject.VertexBufferObject; -import demos.vertexProgRefract.VertexProgRefract; -import demos.vertexProgWarp.VertexProgWarp; - -import demos.xtrans.*; - -/** - Wavelength-dependent refraction demo<br> - It's a chromatic aberration!<br> - [email protected] 4/2001<br><p> - - Currently 3 passes - could do it in 1 with 4 texture units<p> - - Cubemap courtesy of Paul Debevec<p> - - Ported to Java, Swing and ARB_fragment_program by Kenneth Russell -*/ - -public class JRefract { - private boolean useRegisterCombiners; - - private Animator animator; - private JDesktopPane desktop; - - public static void main(String[] args) { - new JRefract().run(args); - } - - private static final int GEARS = 1; - private static final int HDR = 2; - private static final int HWSHADOWS = 3; - private static final int INFINITE = 4; - private static final int REFRACT = 5; - private static final int TEXT = 6; - private static final int VBO = 7; - private static final int WARP = 8; - private static final int WATER = 9; - - private JInternalFrame addWindow(int which) { - // FIXME: workaround for problem in 1.6 where ALL Components, - // including Swing components, are Finalizable, requiring two full - // GC cycles (and running of finalizers) to reclaim - System.gc(); - // Try to get finalizers run - try { - Thread.sleep(1); - } catch (InterruptedException e) { - } - System.gc(); - - String str = ""; - switch (which) { - case GEARS: str = "Gears Demo"; break; - case HDR: str = "High Dynamic Range Rendering Demo"; break; - case HWSHADOWS: str = "ARB_shadow Shadows"; break; - case INFINITE: str = "Infinite Shadow Volumes"; break; - case REFRACT: str = "Refraction Using Vertex Programs"; break; - case TEXT: str = "Flying Text"; break; - case VBO: str = "Very Simple vertex_buffer_object demo"; break; - case WATER: str = "Procedural Texture Waves"; break; - } - final JInternalFrame inner = new JInternalFrame(str); - inner.setResizable(true); - inner.setClosable(true); - inner.setVisible(true); - - GLCapabilities caps = new GLCapabilities(); - if (which == INFINITE) { - caps.setStencilBits(16); - } - final GLJPanel canvas = - (which == GEARS) ? - new JGears() : - new GLJPanel(caps); - final DemoListener demoListener = new DemoListener() { - public void shutdownDemo() { - removeJPanel(canvas); - SwingUtilities.invokeLater(new Runnable() { - public void run() { - inner.doDefaultCloseAction(); - } - }); - } - - public void repaint() { - canvas.repaint(); - } - }; - - Demo demo = null; - switch (which) { - case GEARS: { - // GLEventListener already added - break; - } - - case HDR: { - demo = new HDR(); - ((HDR) demo).setup(null); - inner.setSize(((HDR) demo).getPreferredWidth(), ((HDR) demo).getPreferredHeight()); - break; - } - - case HWSHADOWS: { - demo = new HWShadowmapsSimple(); - break; - } - - case INFINITE: { - demo = new InfiniteShadowVolumes(); - break; - } - - case REFRACT: { - demo = new VertexProgRefract(); - break; - } - - case TEXT: { - demo = new FlyingText(); - break; - } - - case VBO: { - demo = new VertexBufferObject(); - break; - } - - case WARP: { - demo = new VertexProgWarp(); - ((VertexProgWarp) demo).setTitleSetter(new VertexProgWarp.TitleSetter() { - public void setTitle(final String title) { - SwingUtilities.invokeLater(new Runnable() { - public void run() { - inner.setTitle(title); - } - }); - } - }); - break; - } - - case WATER: { - demo = new ProceduralTexturePhysics(); - break; - } - } - if (which != GEARS) { - demo.setDemoListener(demoListener); - canvas.addGLEventListener(demo); - } - canvas.addMouseListener(new MouseAdapter() { - public void mouseClicked(MouseEvent e) { - canvas.requestFocus(); - } - }); - - addJPanel(canvas); - - final Demo fDemo = demo; - - inner.addInternalFrameListener(new InternalFrameAdapter() { - public void internalFrameClosed(InternalFrameEvent e) { - if (fDemo != null) { - fDemo.shutdownDemo(); - } - } - }); - - inner.getContentPane().setLayout(new BorderLayout()); - /* if (which == REFRACT) { - // Testing scrolling - canvas.setSize(512, 512); - canvas.setPreferredSize(new Dimension(512, 512)); - JScrollPane scroller = new JScrollPane(canvas); - inner.getContentPane().add(scroller); - } else */ if (which == GEARS) { - // Provide control over transparency of gears background - canvas.setOpaque(false); - JPanel gradientPanel = JGears.createGradientPanel(); - inner.getContentPane().add(gradientPanel, BorderLayout.CENTER); - gradientPanel.add(canvas, BorderLayout.CENTER); - - final JCheckBox checkBox = new JCheckBox("Transparent", true); - checkBox.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - canvas.setOpaque(!checkBox.isSelected()); - } - }); - inner.getContentPane().add(checkBox, BorderLayout.SOUTH); - } else if (which == TEXT) { - FlyingText text = (FlyingText) demo; - inner.getContentPane().add(text.buildGUI(), BorderLayout.NORTH); - inner.getContentPane().add(canvas, BorderLayout.CENTER); - } else { - inner.getContentPane().add(canvas, BorderLayout.CENTER); - } - - if (which != HDR) { - inner.setSize(512, 512); - } - desktop.add(inner); - - return inner; - } - - public void run(String[] args) { - JFrame frame = new JFrame("JOGL and Swing Interoperability"); - if ((args.length > 0) && args[0].equals("-xt")) { - desktop = new XTDesktopPane(); - // FIXME: this is a hack to get the repaint behavior to work correctly - ((XTDesktopPane) desktop).setAlwaysRedraw(true); - } else { - desktop = new JDesktopPane(); - } - - desktop.setSize(1024, 768); - frame.getContentPane().setLayout(new BorderLayout()); - frame.getContentPane().add(desktop, BorderLayout.CENTER); - - JInternalFrame inner2 = new JInternalFrame("Hello, World"); - JLabel label = new JLabel("Hello, World!"); - label.setFont(new Font("SansSerif", Font.PLAIN, 128)); - inner2.getContentPane().add(label); - inner2.pack(); - inner2.setResizable(true); - desktop.add(inner2); - inner2.setVisible(true); - - JMenuBar menuBar = new JMenuBar(); - - JMenu menu = new JMenu("Actions"); - JMenuItem item; - - item = new JMenuItem("Gears"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - addWindow(GEARS); - } - }); - menu.add(item); - - item = new JMenuItem("High Dynamic Range"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - addWindow(HDR); - } - }); - menu.add(item); - - item = new JMenuItem("Hardware Shadow Maps"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - addWindow(HWSHADOWS); - } - }); - menu.add(item); - - item = new JMenuItem("Infinite Shadow Volumes"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - addWindow(INFINITE); - } - }); - menu.add(item); - - item = new JMenuItem("Refraction"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - addWindow(REFRACT); - } - }); - menu.add(item); - - item = new JMenuItem("Text"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - addWindow(TEXT); - } - }); - menu.add(item); - - item = new JMenuItem("Vertex Buffer Object"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - addWindow(VBO); - } - }); - menu.add(item); - - item = new JMenuItem("Warp"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - addWindow(WARP); - } - }); - menu.add(item); - - item = new JMenuItem("Water"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - addWindow(WATER); - } - }); - menu.add(item); - - item = new JMenuItem("Loop Gears Demo"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - startAutoMode(); - } - }); - menu.add(item); - - item = new JMenuItem("Quit"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - runExit(); - } - }); - item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK)); - menu.add(item); - - menuBar.add(menu); - frame.setJMenuBar(menuBar); - - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - runExit(); - } - }); - frame.setSize(desktop.getSize()); - frame.setVisible(true); - - animator = new FPSAnimator(60); - animator.start(); - } - - private void runExit() { - // Note: calling System.exit() synchronously inside the draw, - // reshape or init callbacks can lead to deadlocks on certain - // platforms (in particular, X11) because the JAWT's locking - // routines cause a global AWT lock to be grabbed. Instead run - // the exit routine in another thread. - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } - - private synchronized void addJPanel(GLJPanel panel) { - animator.add(panel); - } - - private synchronized void removeJPanel(GLJPanel panel) { - animator.remove(panel); - } - - private JInternalFrame curFrame; - private void startAutoMode() { - new Thread(new Runnable() { - public void run() { - while (true) { - try { - SwingUtilities.invokeAndWait(new Runnable() { - public void run() { - curFrame = addWindow(GEARS); - } - }); - } catch (Exception e) { - e.printStackTrace(); - } - - try { - Thread.sleep(2000); - } catch (InterruptedException e) { - } - - try { - SwingUtilities.invokeAndWait(new Runnable() { - public void run() { - curFrame.doDefaultCloseAction(); - } - }); - } catch (Exception e) { - e.printStackTrace(); - } - - try { - Thread.sleep(2000); - } catch (InterruptedException e) { - } - } - } - }).start(); - } -} diff --git a/src/demos/misc/GLCapsTableDemo.java b/src/demos/misc/GLCapsTableDemo.java deleted file mode 100755 index 766c8a4..0000000 --- a/src/demos/misc/GLCapsTableDemo.java +++ /dev/null @@ -1,322 +0,0 @@ -package demos.misc; - -import java.awt.*; -import java.awt.event.*; -import java.util.*; -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import javax.swing.*; -import com.sun.opengl.util.FPSAnimator; -import javax.swing.border.TitledBorder; -import javax.swing.table.TableColumn; - -import demos.gears.Gears; - -/******************************************************************************* - * @file GLCapsTableDemo.java - * @desc Demonstrate use of GLCapabilitiesChooser and DefaultGLCapabilities. - * Demo tabulates the available capabilities array and put the data into a - * table. Pressing respawn button displays a canvas created with the - * currently selected index corresponding to the available array. There - * are two canvas to respawn: left or right.<br> - * TODO: if the number of samples > 0, setSampleBuffer(true) and run an - * antialiased renderer?;<br> - * TODO: if pbuffer is available, enable Float, RTT, RTTRec and create a - * pbuffer for eacH?<br> - * TODO: spawn using a diff renderer option(such as ones from demo - * package) <br> - * @version Jan 22, 2006 - GLCapsTableDemo.java created at 7:17:31 PM - * @platform ATI X600SE/XP Tablet SP2/JDK5/Eclipse - * @author Kiet Le - * @legal (c) 2006 Kiet Le. Released under BSD licence. - ******************************************************************************/ -public class GLCapsTableDemo - extends JFrame - implements - GLCapabilitiesChooser -{ - private String[] colNames = - {"Pfd", "H/W", "DblBfr", "Stereo", // index, hwaccel, double, stereo - "CBits", "cR", "cG", "cB", "cA", // color bits - "ABits", "aR", "aG", "aB", "aA", // accum bits - "Z", "S", "AA|AAS", "PBuf(Float|RTT|RTTRec)"}; // depth, stencil, n - // samples, pbuffer - private ArrayList/*<GLCapabilities>*/ available = new ArrayList/*<GLCapabilities>*/(); - private ArrayList/*<Integer>*/ indices = new ArrayList/*<Integer>*/(); - private Object[][] data; - private JTable capsTable; - private int desiredCapIndex; // pfd index - private int selected = desiredCapIndex; - protected JPanel pane, pane2; - private boolean updateLR;// leftright - private DefaultGLCapabilitiesChooser choiceExaminer = // - new DefaultGLCapabilitiesChooser() - { - public int chooseCapabilities(GLCapabilities desired, - GLCapabilities[] available, - int windowSystemRecommendedChoice) - { - if ( available != null ) - for (int i = 0; i < available.length; i++) { - GLCapabilities c = available[i]; - if (c != null) { - GLCapsTableDemo.this.available.add((GLCapabilities) c.clone()); - GLCapsTableDemo.this.indices.add(new Integer(i)); - } - } - desiredCapIndex = super.chooseCapabilities(desired, available, - windowSystemRecommendedChoice); - System.out.println("valid" + desiredCapIndex); - capsTable = GLCapsTableDemo.this - .tabulateTable(GLCapsTableDemo.this.available, GLCapsTableDemo.this.indices); - JScrollPane scroller = // - new JScrollPane(capsTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, - JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); - GLCapsTableDemo.this.getContentPane().add(scroller); - pane.setBorder(BorderFactory - .createTitledBorder(null, "" + desiredCapIndex, TitledBorder.TRAILING, - TitledBorder.DEFAULT_POSITION)); - pane2.setBorder(BorderFactory - .createTitledBorder(null, "" + desiredCapIndex, TitledBorder.LEADING, - TitledBorder.DEFAULT_POSITION)); - GLCapsTableDemo.this.validate();// so table'll show up - System.out.println("valid"); - return desiredCapIndex; - } - }; - private GraphicsDevice device = GraphicsEnvironment - .getLocalGraphicsEnvironment().getDefaultScreenDevice(); - private JSplitPane canvasPane; - - private GLCanvas canvas; - private GLCanvas canvas2; - private Gears topRenderer = new Gears(), bottomRenderer = new Gears(); - private FPSAnimator animator; - private Dimension defdim = new Dimension(512, 256); - private String visTip = "If no gears are visible, it may be that the " - + "current desktop color resolution doesn't match " - + "the GLCapabilities chosen. Check CBits column."; - - /** - - */ - public GLCapsTableDemo() - { - super(GLCapsTableDemo.class.getName()); - initComponents(); - } - - /** - * (non-Javadoc) - * - * @see javax.media.opengl.GLCapabilitiesChooser#chooseCapabilities(javax.media.opengl.GLCapabilities, - * javax.media.opengl.GLCapabilities[], int) - */ - public int chooseCapabilities(GLCapabilities desired, - GLCapabilities[] available, - int windowSystemRecommendedChoice) - { - int row = capsTable.getSelectedRow(); - int desiredCapIndex = ((Integer) indices.get(row)).intValue(); - if ( updateLR ) - { - pane.setBorder(BorderFactory - .createTitledBorder(null, "" + desiredCapIndex, - TitledBorder.TRAILING, - TitledBorder.DEFAULT_POSITION)); - } - else - { - pane2.setBorder(BorderFactory - .createTitledBorder(null, "" + desiredCapIndex, TitledBorder.LEADING, - TitledBorder.DEFAULT_POSITION)); - } - return desiredCapIndex; - } - - public void run(final String[] args) - { - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); - setSize(new Dimension((int) (d.width * 0.75), (int) (d.height * 0.75))); - setLocationRelativeTo(null); - setVisible(true); - validate(); - animator.start(); - }// - - /** - * @param args - */ - public static void main(String[] args) - { - GLCapsTableDemo demo = new GLCapsTableDemo(); - demo.run(args); - } - - private void initComponents() - { - pane = new JPanel(); - pane2 = new JPanel(); - // Hack: use multisampled capabilities to pick up more detailed information on Windows - GLCapabilities multisampledCaps = new GLCapabilities(); - multisampledCaps.setSampleBuffers(true); - canvas = new GLCanvas(multisampledCaps, choiceExaminer, null, device); - - // initially start w/ 2 canvas of default caps - // canvas = new GLCanvas(null, choiceExaminer, null, device); - canvas.addGLEventListener(topRenderer); - canvas.setSize(defdim); - // canvas.setPreferredSize(defdim); - // canvas.setMaximumSize(defdim); - animator = new FPSAnimator(canvas, 30); - canvas2 = new GLCanvas(null, null, null, device); - canvas2.addGLEventListener(bottomRenderer); - canvas2.setSize(defdim); - // canvas2.setPreferredSize(defdim); - // canvas2.setMaximumSize(defdim); - animator.add(canvas2); - pane.add(canvas); - pane2.add(canvas2); - canvasPane = new JSplitPane(); - canvasPane.setResizeWeight(0.5);// 50-50 division - canvasPane.setOrientation(JSplitPane.HORIZONTAL_SPLIT); - canvasPane.setLeftComponent(pane); - canvasPane.setRightComponent(pane2); - getContentPane().add(canvasPane, BorderLayout.SOUTH); - getContentPane().add(buildControls(), BorderLayout.NORTH); - } - - private JTable tabulateTable(ArrayList/*<GLCapabilities>*/ capabilities, - ArrayList/*<Integer>*/ indices) - { - capabilities.trimToSize(); - data = new Object[capabilities.size()][colNames.length]; - String t = "T", f = "F"; - for (int pfd = 0; pfd < capabilities.size(); pfd++) - { - data[ pfd ][ 0 ] = indices.get(pfd); - GLCapabilities cap = (GLCapabilities) capabilities.get(pfd); - data[ pfd ][ 1 ] = "" + (cap.getHardwareAccelerated() ? f : f); - data[ pfd ][ 2 ] = "" + (cap.getDoubleBuffered() ? t : f); - data[ pfd ][ 3 ] = "" + (cap.getStereo() ? t : f); - int r = cap.getRedBits(), // - g = cap.getGreenBits(), // - b = cap.getBlueBits(), // - a = cap.getAlphaBits(); - data[ pfd ][ 4 ] = "" + (r + g + b + a); - data[ pfd ][ 5 ] = new Integer(r); - data[ pfd ][ 6 ] = new Integer(g); - data[ pfd ][ 7 ] = new Integer(b); - data[ pfd ][ 8 ] = new Integer(a); - r = cap.getAccumRedBits(); - g = cap.getAccumGreenBits(); - b = cap.getAccumBlueBits(); - a = cap.getAccumAlphaBits(); - data[ pfd ][ 9 ] = "" + (r + g + b + a); - data[ pfd ][ 10 ] = new Integer(r); - data[ pfd ][ 11 ] = new Integer(g); - data[ pfd ][ 12 ] = new Integer(b); - data[ pfd ][ 13 ] = new Integer(a); - // - data[ pfd ][ 14 ] = "" + cap.getDepthBits(); - data[ pfd ][ 15 ] = "" + cap.getStencilBits(); - data[ pfd ][ 16 ] = "" + (cap.getSampleBuffers() ? t : f) + " | " - + cap.getNumSamples(); - // concat p buffer nfo - String pbuf = (cap.getPbufferFloatingPointBuffers() ? "T |" : "F |"); - pbuf += (cap.getPbufferRenderToTexture() ? "T | " : "F | "); - pbuf += (cap.getPbufferRenderToTextureRectangle() ? t : f); - data[ pfd ][ 17 ] = pbuf; - } - JTable table = new JTable(data, colNames) { - public boolean isCellEditable(int rowIndex, int colIndex) { - return false; - } - }; - // table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); - TableColumn column = null; - for (int i = 0; i < colNames.length; i++) - { - column = table.getColumnModel().getColumn(i); - if ( i == (colNames.length - 1) ) - { - column.setPreferredWidth(100); // pbuffer column is bigger - } - else column.setPreferredWidth(7); - } - table.setDoubleBuffered(true); - return table; - } - - private JPanel buildControls() - { - JPanel controls = new JPanel(); - final JButton spawn = new JButton("Respawn Left"); - final JButton spawn2 = new JButton("Respawn Right"); - ActionListener recap = new ActionListener() - { - public void actionPerformed(final ActionEvent act) - { - animator.stop(); - if ( act.getSource() == spawn ) - { - updateLR = true;// left - animator.remove(canvas); - pane.remove(canvas); - canvas = newCanvas(true, true);// get new canvas w/ selected index - pane.add(canvas); - animator.add(canvas); - } - else - { - updateLR = false; - animator.remove(canvas2); - pane2.remove(canvas2); - canvas2 = newCanvas(true, false); - pane2.add(canvas2); - animator.add(canvas2); - } - new Thread() - { - public void run() - { - animator.start(); - } - }.start(); - GLCapsTableDemo.this.validate(); - } - }; - spawn.setToolTipText(visTip); - spawn.addActionListener(recap); - spawn2.addActionListener(recap); - // - controls.add(spawn); - controls.add(spawn2); - return controls; - } - - private GLCanvas newCanvas(boolean mycap, boolean top) - { - GLCanvas surface = null; - if ( !mycap ) surface = new GLCanvas(null, choiceExaminer, null, device); - else surface = new GLCanvas(null, this, null, device); - if ( top ) surface.addGLEventListener(topRenderer); - else surface.addGLEventListener(bottomRenderer); - surface.setSize(defdim);// otherwise, no show; mixin' light-heavy containers - // surface.setMinimumSize(defdim); - return surface; - } - - private void exitRunner() - { - new Thread() - { - public void run() - { - animator.stop(); - } - }; - } -}// diff --git a/src/demos/misc/Picking.java b/src/demos/misc/Picking.java deleted file mode 100755 index 2fe8b2d..0000000 --- a/src/demos/misc/Picking.java +++ /dev/null @@ -1,270 +0,0 @@ -package demos.misc; - -//================================================================================= -// Picking 0.2 (Thomas Bladh) -//================================================================================= -// A simple picking example using java/jogl. This is far from a complete solution -// but it should give you an idea of how to include picking in your assigment -// solutions. -// -// Notes: * Based on example 13-3 (p 542) in the "OpenGL Programming Guide" -// * This version should handle overlapping objects correctly. -//--------------------------------------------------------------------------------- -import java.awt.*; -import java.awt.event.*; -import java.awt.Canvas.*; -import java.nio.*; -import java.util.*; -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; - -public class Picking -{ - public static void main(String[] args) - { - new Picking(); - } - - Picking() - { - Frame frame = new Frame("Picking Example"); - GLDrawableFactory factory = GLDrawableFactory.getFactory(); - GLCapabilities capabilities = new GLCapabilities(); - GLCanvas drawable = new GLCanvas(capabilities); - drawable.addGLEventListener(new Renderer()); - frame.add(drawable); - frame.setSize(400, 400); - final Animator animator = new Animator(drawable); - frame.addWindowListener(new WindowAdapter() - { - public void windowClosing(WindowEvent e) - { - animator.stop(); - System.exit(0); - } - }); - frame.show(); - animator.start(); - } - - static class Renderer implements GLEventListener, MouseListener, MouseMotionListener - { - static final int NOTHING = 0, UPDATE = 1, SELECT = 2; - int cmd = UPDATE; - int mouse_x, mouse_y; - - private GLU glu = new GLU(); - private GLAutoDrawable gldrawable; - - public void init(GLAutoDrawable drawable) - { - GL gl = drawable.getGL(); - this.gldrawable = drawable; - gl.glEnable(GL.GL_CULL_FACE); - gl.glEnable(GL.GL_DEPTH_TEST); - gl.glEnable(GL.GL_NORMALIZE); - gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - drawable.addMouseListener(this); - drawable.addMouseMotionListener(this); - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) - { - GL gl = drawable.getGL(); - float h = (float) height / (float) width; - gl.glViewport(0, 0, width, height); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluOrtho2D(0.0f,1.0f,0.0f,1.0f); - } - - public void display(GLAutoDrawable drawable) - { - GL gl = drawable.getGL(); - switch(cmd) - { - case UPDATE: - drawScene(gl); - break; - case SELECT: - int buffsize = 512; - double x = (double) mouse_x, y = (double) mouse_y; - int[] viewPort = new int[4]; - IntBuffer selectBuffer = BufferUtil.newIntBuffer(buffsize); - int hits = 0; - gl.glGetIntegerv(GL.GL_VIEWPORT, viewPort, 0); - gl.glSelectBuffer(buffsize, selectBuffer); - gl.glRenderMode(GL.GL_SELECT); - gl.glInitNames(); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glPushMatrix(); - gl.glLoadIdentity(); - glu.gluPickMatrix(x, (double) viewPort[3] - y, 5.0d, 5.0d, viewPort, 0); - glu.gluOrtho2D(0.0d, 1.0d, 0.0d, 1.0d); - drawScene(gl); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glPopMatrix(); - gl.glFlush(); - hits = gl.glRenderMode(GL.GL_RENDER); - processHits(hits, selectBuffer); - cmd = UPDATE; - break; - } - } - - public void processHits(int hits, IntBuffer buffer) - { - System.out.println("---------------------------------"); - System.out.println(" HITS: " + hits); - int offset = 0; - int names; - float z1, z2; - for (int i=0;i<hits;i++) - { - System.out.println("- - - - - - - - - - - -"); - System.out.println(" hit: " + (i + 1)); - names = buffer.get(offset); offset++; - z1 = (float) buffer.get(offset) / 0x7fffffff; offset++; - z2 = (float) buffer.get(offset) / 0x7fffffff; offset++; - System.out.println(" number of names: " + names); - System.out.println(" z1: " + z1); - System.out.println(" z2: " + z2); - System.out.println(" names: "); - - for (int j=0;j<names;j++) - { - System.out.print(" " + buffer.get(offset)); - if (j==(names-1)) - System.out.println("<-"); - else - System.out.println(); - offset++; - } - System.out.println("- - - - - - - - - - - -"); - } - System.out.println("---------------------------------"); - } - - public int viewPortWidth(GL gl) - { - int[] viewPort = new int[4]; - gl.glGetIntegerv(GL.GL_VIEWPORT, viewPort, 0); - return viewPort[2]; - } - - public int viewPortHeight(GL gl) - { - int[] viewPort = new int[4]; - gl.glGetIntegerv(GL.GL_VIEWPORT, viewPort, 0); - return viewPort[3]; - } - - public void drawScene(GL gl) - { - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - // Colors - float red[] = {1.0f,0.0f,0.0f,1.0f}; - float green[] = {0.0f,1.0f,0.0f,1.0f}; - float blue[] = {0.0f,0.0f,1.0f,1.0f}; - - // Red rectangle - GLRectangleEntity r1 = new GLRectangleEntity(gl, glu); - r1.x = 0.15f; - r1.y = 0.25f; - r1.z = 0.75f; - r1.w = 0.4f; - r1.h = 0.4f; - r1.c = red; - r1.id = 10; - r1.draw(); - - // Green rectangle - GLRectangleEntity r2 = new GLRectangleEntity(gl, glu); - r2.x = 0.35f; - r2.y = 0.45f; - r2.z = 0.5f; - r2.w = 0.4f; - r2.h = 0.4f; - r2.c = green; - r2.id = 20; - r2.draw(); - - // Blue rectangle - GLRectangleEntity r3 = new GLRectangleEntity(gl, glu); - r3.x = 0.45f; - r3.y = 0.15f; - r3.z = 0.25f; - r3.w = 0.4f; - r3.h = 0.4f; - r3.c = blue; - r3.id = 30; - r3.draw(); - - gl.glFlush(); - } - - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - - public void mousePressed(MouseEvent e) - { - cmd = SELECT; - mouse_x = e.getX(); - mouse_y = e.getY(); - } - - public void mouseEntered(MouseEvent e) {} - public void mouseExited(MouseEvent e) {} - public void mouseReleased(MouseEvent e) {} - public void mouseClicked(MouseEvent e) {} - public void mouseDragged(MouseEvent e) {} - public void mouseMoved(MouseEvent e) {} - - public abstract class GLEntity - { - float x, y, z; - float[] c; - int id = 0; - boolean outline = false; - GL gl; - GLU glu; - public GLEntity(GL gl, GLU glu) - { - this.gl = gl; - this.glu = glu; - } - public void draw() - { - gl.glPushName(id); - _draw(); - } - public abstract void _draw(); - } - - public class GLRectangleEntity extends GLEntity - { - float w = 0.1f; - float h = 0.1f; - public GLRectangleEntity(GL gl, GLU glu) - { - super(gl, glu); - } - public void _draw() - { - if (outline) - gl.glPolygonMode(GL.GL_FRONT, GL.GL_LINE); - else - gl.glPolygonMode(GL.GL_FRONT, GL.GL_FILL); - - gl.glColor4fv(c, 0); - gl.glBegin(GL.GL_POLYGON); - gl.glVertex3f(x, y, z); - gl.glVertex3f(x + w, y, z); - gl.glVertex3f(x + w, y + h, z); - gl.glVertex3f(x, y + h, z); - gl.glEnd(); - } - } - } -} diff --git a/src/demos/misc/TiledRendering.java b/src/demos/misc/TiledRendering.java deleted file mode 100755 index f5b857e..0000000 --- a/src/demos/misc/TiledRendering.java +++ /dev/null @@ -1,146 +0,0 @@ -package demos.misc; - -import java.awt.image.*; -import java.io.*; -import java.nio.*; -import javax.imageio.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; - -import demos.gears.Gears; - -/** Demonstrates the TileRenderer class by rendering a large version - of the Gears demo to the specified file. */ - -public class TiledRendering { - public static void main(String[] args) throws IOException { - if (args.length != 1) { - System.out.println("Usage: java TiledRendering [output file name]"); - System.out.println("Writes output (a large version of the Gears demo) to"); - System.out.println("the specified file, using either ImageIO or the fast TGA writer"); - System.out.println("depending on the file extension."); - System.exit(1); - } - - String filename = args[0]; - File file = new File(filename); - - if (!GLDrawableFactory.getFactory().canCreateGLPbuffer()) { - System.out.println("Demo requires pbuffer support"); - System.exit(1); - } - - // Use a pbuffer for rendering - GLCapabilities caps = new GLCapabilities(); - caps.setDoubleBuffered(false); - GLPbuffer pbuffer = GLDrawableFactory.getFactory().createGLPbuffer(caps, null, - 256, 256, - null); - - // Fix the image size for now - int tileWidth = 256; - int tileHeight = 256; - int imageWidth = tileWidth * 16; - int imageHeight = tileHeight * 12; - - // Figure out the file format - TGAWriter tga = null; - BufferedImage img = null; - Buffer buf = null; - - if (filename.endsWith(".tga")) { - tga = new TGAWriter(); - tga.open(file, - imageWidth, - imageHeight, - false); - buf = tga.getImageData(); - } else { - img = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_3BYTE_BGR); - buf = ByteBuffer.wrap(((DataBufferByte) img.getRaster().getDataBuffer()).getData()); - } - - // Initialize the tile rendering library - TileRenderer renderer = new TileRenderer(); - renderer.setTileSize(tileWidth, tileHeight, 0); - renderer.setImageSize(imageWidth, imageHeight); - renderer.setImageBuffer(GL.GL_BGR, GL.GL_UNSIGNED_BYTE, buf); - renderer.trPerspective(20.0f, (float) imageWidth / (float) imageHeight, 5.0f, 60.0f); - - GLContext context = pbuffer.getContext(); - if (context.makeCurrent() == GLContext.CONTEXT_NOT_CURRENT) { - System.out.println("Error making pbuffer's context current"); - System.exit(1); - } - - GL gl = pbuffer.getGL(); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - gl.glTranslatef(0.0f, 0.0f, -40.0f); - // Tile renderer will set up projection matrix - - do { - renderer.beginTile(gl); - drawGears(gl); - } while (renderer.endTile(gl)); - - context.release(); - - // Close things up and/or write image using ImageIO - if (tga != null) { - tga.close(); - } else { - ImageUtil.flipImageVertically(img); - if (!ImageIO.write(img, FileUtil.getFileSuffix(file), file)) { - System.err.println("Error writing file using ImageIO (unsupported file format?)"); - } - } - } - - private static void drawGears(GL gl) { - float view_rotx = 20.0f, view_roty = 30.0f, view_rotz = 0.0f; - float angle = 0.0f; - float pos[] = { 5.0f, 5.0f, 10.0f, 0.0f }; - float red[] = { 0.8f, 0.1f, 0.0f, 1.0f }; - float green[] = { 0.0f, 0.8f, 0.2f, 1.0f }; - float blue[] = { 0.2f, 0.2f, 1.0f, 1.0f }; - - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, pos, 0); - gl.glEnable(GL.GL_CULL_FACE); - gl.glEnable(GL.GL_LIGHTING); - gl.glEnable(GL.GL_LIGHT0); - gl.glEnable(GL.GL_DEPTH_TEST); - gl.glEnable(GL.GL_NORMALIZE); - - gl.glPushMatrix(); - gl.glRotatef(view_rotx, 1.0f, 0.0f, 0.0f); - gl.glRotatef(view_roty, 0.0f, 1.0f, 0.0f); - gl.glRotatef(view_rotz, 0.0f, 0.0f, 1.0f); - - gl.glPushMatrix(); - gl.glTranslatef(-3.0f, -2.0f, 0.0f); - gl.glRotatef(angle, 0.0f, 0.0f, 1.0f); - gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE, red, 0); - Gears.gear(gl, 1.0f, 4.0f, 1.0f, 20, 0.7f); - gl.glPopMatrix(); - - gl.glPushMatrix(); - gl.glTranslatef(3.1f, -2.0f, 0.0f); - gl.glRotatef(-2.0f * angle - 9.0f, 0.0f, 0.0f, 1.0f); - gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE, green, 0); - Gears.gear(gl, 0.5f, 2.0f, 2.0f, 10, 0.7f); - gl.glPopMatrix(); - - gl.glPushMatrix(); - gl.glTranslatef(-3.1f, 4.2f, 0.0f); - gl.glRotatef(-2.0f * angle - 25.0f, 0.0f, 0.0f, 1.0f); - gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE, blue, 0); - Gears.gear(gl, 1.3f, 2.0f, 0.5f, 10, 0.7f); - gl.glPopMatrix(); - - gl.glPopMatrix(); - } -} diff --git a/src/demos/misc/VersionInfo.java b/src/demos/misc/VersionInfo.java deleted file mode 100644 index 589d899..0000000 --- a/src/demos/misc/VersionInfo.java +++ /dev/null @@ -1,58 +0,0 @@ - -package demos.misc; - -/** - * VersionInfo.java <BR> - * author: Travis Bryson <P> - * - * This program returns the version and implementation information for the Java - * Bindings for OpenGL (R) implementation found in the CLASSPATH. This information - * is also found in the manifest for jogl.jar, and this program uses the - * java.lang.Package class to retrieve it programatically. -**/ - -public class VersionInfo { - public VersionInfo() { - ClassLoader classLoader = getClass().getClassLoader(); - pkgInfo(classLoader, "javax.media.opengl", "GL"); - } - - static void pkgInfo(ClassLoader classLoader, - String pkgName, - String className) { - - try { - classLoader.loadClass(pkgName + "." + className); - - Package p = Package.getPackage(pkgName); - if (p == null) { - System.out.println("WARNING: Package.getPackage(" + - pkgName + - ") is null"); - } - else { - System.out.println(p); - System.out.println("Specification Title = " + - p.getSpecificationTitle()); - System.out.println("Specification Vendor = " + - p.getSpecificationVendor()); - System.out.println("Specification Version = " + - p.getSpecificationVersion()); - - System.out.println("Implementation Vendor = " + - p.getImplementationVendor()); - System.out.println("Implementation Version = " + - p.getImplementationVersion()); - } - } - catch (ClassNotFoundException e) { - System.out.println("Unable to load " + pkgName); - } - - System.out.println(); - } - - public static void main(String[] args) { - new VersionInfo(); - } -} diff --git a/src/demos/multisample/Multisample.java b/src/demos/multisample/Multisample.java deleted file mode 100755 index 4db572a..0000000 --- a/src/demos/multisample/Multisample.java +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.multisample; - -import java.awt.*; -import java.awt.event.*; -import javax.media.opengl.*; - -public class Multisample { - private GLCanvas canvas; - - // Simple class to warn if results are not going to be as expected - static class MultisampleChooser extends DefaultGLCapabilitiesChooser { - public int chooseCapabilities(GLCapabilities desired, - GLCapabilities[] available, - int windowSystemRecommendedChoice) { - boolean anyHaveSampleBuffers = false; - for (int i = 0; i < available.length; i++) { - GLCapabilities caps = available[i]; - if (caps != null && caps.getSampleBuffers()) { - anyHaveSampleBuffers = true; - break; - } - } - int selection = super.chooseCapabilities(desired, available, windowSystemRecommendedChoice); - if (!anyHaveSampleBuffers) { - System.err.println("WARNING: antialiasing will be disabled because none of the available pixel formats had it to offer"); - } else { - if (!available[selection].getSampleBuffers()) { - System.err.println("WARNING: antialiasing will be disabled because the DefaultGLCapabilitiesChooser didn't supply it"); - } - } - return selection; - } - } - - public static void main(String[] args) { - new Multisample().run(args); - } - - public void run(String[] args) { - GLCapabilities caps = new GLCapabilities(); - GLCapabilitiesChooser chooser = new MultisampleChooser(); - - caps.setSampleBuffers(true); - caps.setNumSamples(4); - canvas = new GLCanvas(caps, chooser, null, null); - canvas.addGLEventListener(new Listener()); - - Frame frame = new Frame("Full-scene antialiasing"); - frame.setLayout(new BorderLayout()); - canvas.setSize(512, 512); - frame.add(canvas, BorderLayout.CENTER); - frame.pack(); - frame.show(); - frame.setLocation(0, 0); - canvas.requestFocus(); - - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - runExit(); - } - }); - - // No antialiasing (for comparison) - caps.setSampleBuffers(false); - canvas = new GLCanvas(caps); - canvas.addGLEventListener(new Listener()); - - frame = new Frame("No antialiasing"); - frame.setLayout(new BorderLayout()); - canvas.setSize(512, 512); - frame.add(canvas, BorderLayout.CENTER); - frame.pack(); - frame.show(); - frame.setLocation(512, 0); - canvas.requestFocus(); - - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - runExit(); - } - }); - } - - class Listener implements GLEventListener { - public void init(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - - gl.glClearColor(0, 0, 0, 0); - // gl.glEnable(GL.GL_DEPTH_TEST); - // gl.glDepthFunc(GL.GL_LESS); - - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - gl.glOrtho(-1, 1, -1, 1, -1, 1); - } - - public void display(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - int numSteps = 20; - double increment = Math.PI / numSteps; - double radius = 1; - - gl.glBegin(GL.GL_LINES); - for (int i = numSteps - 1; i >= 0; i--) { - gl.glVertex3d(radius * Math.cos(i * increment), - radius * Math.sin(i * increment), - 0); - gl.glVertex3d(-1.0 * radius * Math.cos(i * increment), - -1.0 * radius * Math.sin(i * increment), - 0); - } - gl.glEnd(); - } - - // Unused routines - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - } - - private void runExit() { - // Note: calling System.exit() synchronously inside the draw, - // reshape or init callbacks can lead to deadlocks on certain - // platforms (in particular, X11) because the JAWT's locking - // routines cause a global AWT lock to be grabbed. Instead run - // the exit routine in another thread. - new Thread(new Runnable() { - public void run() { - System.exit(0); - } - }).start(); - } -} diff --git a/src/demos/nurbs/curveapp/ActListener.java b/src/demos/nurbs/curveapp/ActListener.java deleted file mode 100755 index 52e89b8..0000000 --- a/src/demos/nurbs/curveapp/ActListener.java +++ /dev/null @@ -1,114 +0,0 @@ -package demos.nurbs.curveapp; - -import java.awt.event.ActionEvent; - -import javax.swing.AbstractAction; -import javax.swing.ImageIcon; -import javax.swing.JFileChooser; -import javax.swing.JOptionPane; - -import demos.nurbs.icons.*; - -/** - * Class reacting to events from toolbar and menu - * Třída reagující na události z nástrojové lišty a menu - * @author Tomáš Hráský - * - */ -@SuppressWarnings("serial") -public class ActListener extends AbstractAction -{ - - /** - * Parent window - * Odkaz na rodičovské okno - */ - private CurveApp app; - /** - * File chooser object - * Objekt pro výběr souboru - */ - private JFileChooser fc; - - /** - * Creates instance of object with pointer to parent window - * Vytvoří instanci objektu s odkazem na rodičovské okno - * @param app parent window - */ - public ActListener(CurveApp app) { - this.app=app; - fc=new JFileChooser("./"); - } - - /* (non-Javadoc) - * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) - */ - public void actionPerformed(ActionEvent e) { - - - if(e.getActionCommand()==CurveApp.PRIDAT_AC){ - - }else if(e.getActionCommand()==CurveApp.SMAZAT_AC){ - - }else if(e.getActionCommand()==CurveApp.UZAVRENY_AC){ - app.uzavernyKV(); - }else if(e.getActionCommand()==CurveApp.OTEVRENY_AC){ - app.otevrenyKV(); - }else if(e.getActionCommand()==CurveApp.ULOZIT_AC){ - if(fc.showSaveDialog(app)==JFileChooser.APPROVE_OPTION){ - Curve.getInstance().persist(fc.getSelectedFile()); - } - }else if(e.getActionCommand()==CurveApp.NACIST_AC){ - if(fc.showOpenDialog(app)==JFileChooser.APPROVE_OPTION){ - try { - Curve.getInstance().unPersist(fc.getSelectedFile()); - app.updateGLCanvas(); - app.selectMoveButt(); - app.updateJKnotSlider(); - } catch (Exception e1) { - //JOptionPane.showMessageDialog(app,"Chyba při načítání ze souboru","Chyba",JOptionPane.ERROR_MESSAGE); - JOptionPane.showMessageDialog(app,"Error loading file","Error",JOptionPane.ERROR_MESSAGE); - } - } - }else if(e.getActionCommand()==CurveApp.NOVA_AC){ - Curve.getInstance().clear(); - app.getMouseListener().setBodIndex(-1); - Curve.getInstance().setBodIndex(-1); - app.updateGLCanvas(); - app.updateJKnotSlider(); - }else if(e.getActionCommand()==CurveApp.EXIT_AC){ - //TODO exit confirmation ? - System.exit(0); - }else if(e.getActionCommand()==CurveApp.STUPEN_AC){ - try{ - //String retval = JOptionPane.showInputDialog(null,"Zadejte stupeň křivky",new Integer(Curve.getInstance().getOrder())); - String retval = JOptionPane.showInputDialog(null,"Curve degree",new Integer(Curve.getInstance().getOrder())); - if(retval!=null){ - int stupen=(new Integer(retval)).intValue(); - Curve.getInstance().setOrder(stupen); - Curve.getInstance().setIsCurveFinished(false); - } - }catch (NumberFormatException ex){ - //JOptionPane.showMessageDialog(null,"Chybný formát přirozeného čísla","Chyba!",JOptionPane.ERROR_MESSAGE); - JOptionPane.showMessageDialog(null,"Wrong natural number format","Error!",JOptionPane.ERROR_MESSAGE); - } - }else if(e.getActionCommand()==CurveApp.INFO_AC){ - /* - JOptionPane.showMessageDialog(null,"Ukázková aplikace rozšířené funkcionality knihovny JOGL\n" + - "Autor: Tomáš Hráský\n" + - "Součást bakalářské práce na téma Softwarová implementace NURBS křivek a ploch\n" + - "2007 Fakulta Informatiky a Managementu UHK\n" + - "Pro serializaci objektů využívá open source framework Simple XML - http://simple.sourceforge.net/","O aplikaci",JOptionPane.INFORMATION_MESSAGE,IconFactory.getIcon("demos/nurbs/icons/info.png")); - */ - JOptionPane.showMessageDialog(null,"Example aplication of extended functionality JOGL library\n" + - "Author: Tomáš Hráský\n" + - "Part of bachelor's degree thesis Software implementation of NURBS curves and surfaces\n" + - "2007 Faculty of Informatics and Management University of Hradec Králové\n" + - "Simple XML framework is used for object serialization - http://simple.sourceforge.net/","About",JOptionPane.INFORMATION_MESSAGE,IconFactory.getIcon("demos/nurbs/icons/info.png")); - } - - app.getMouseListener().setActionType(e.getActionCommand()); - - - } -} diff --git a/src/demos/nurbs/curveapp/Curve.java b/src/demos/nurbs/curveapp/Curve.java deleted file mode 100755 index b772973..0000000 --- a/src/demos/nurbs/curveapp/Curve.java +++ /dev/null @@ -1,313 +0,0 @@ -package demos.nurbs.curveapp; - -import java.io.File; -import java.util.Vector; - -import simple.xml.Element; -import simple.xml.ElementList; -import simple.xml.Root; -import simple.xml.Serializer; -import simple.xml.load.Persister; - -/** - * Třída definice NURBS křivky, vystavěna podle návrhového vzoru Singleton - * @author Tomáš Hráský - * - */ -@Root(name="curve") -public class Curve -{ - /** - * Odkaz na instanci třídy - */ - private static Curve singleton; - /** - * Indikuje, zda je zadání křivky kompletní - */ - @Element(name="finished") - private boolean isCurveFinished; - - /** - * Index aktuálního vybraného řídícího bodu - */ - private int bodIndex = -1; - - /** - * Stupeň křivky - */ - @Element(name="order") - private int order=3; - - /** - * Pole souřadnic řídícíh bodů - * - */ - private float[] ctrlPoints; - - /** - * Pole hodnot uzlového vektoru - */ - private float knots[]; - - /** - * Kolekce vektor pro persistenci souřadnic řídících bodů - */ - @ElementList(name="ctrlpoints",type=MyFloat.class) - private Vector<MyFloat> ctrlVector; - - /** - * Kolekce vektor pro persistenci uzlového vektoru - */ - @ElementList(name="knots",type=MyFloat.class) - private Vector<MyFloat> knotVector; - - /** - * Vytvoří prázdnou definici křivky - */ - public void clear(){ - isCurveFinished=false; - ctrlPoints=new float[0]; - knots=new float[0]; - order=3; - } - - /** - * Pomocí framweorku Simple serializuje definici křivky do XML souboru - * @param f soubor pro uložení - */ - public void persist(File f){ - ctrlVector=new Vector<MyFloat>(ctrlPoints.length); - knotVector=new Vector<MyFloat>(knots.length); - - for(Float ff:ctrlPoints) - ctrlVector.add(new MyFloat(ff)); - - for(Float ff:knots) - knotVector.add(new MyFloat(ff)); - - Serializer s=new Persister(); - try { - System.out.println("ukládám"); - s.write(Curve.getInstance(),f); - } catch (Exception e1) { - e1.printStackTrace(); - } - - - } - - /** - * Vytvoří pomocí frameworku Simple křivku z definice uložené v XML souboru - * @param f soubor,z něhož se má definice načíst - * @throws Exception chyba při čtení ze souboru - */ - public void unPersist(File f) throws Exception{ - Serializer s=new Persister(); - Curve c=s.read(Curve.class,f); - initFromCurve(c); - } - - /** - * Inicializuje objekt podle jiného objektu typu Curve - * @param c referenční objekt - křivka - */ - private void initFromCurve(Curve c) { - this.order=c.getOrder(); - this.ctrlPoints=new float[c.getCtrlVector().size()]; - this.knots=new float[c.getKnotVector().size()]; - int i=0; - for(MyFloat f:c.getCtrlVector()) - ctrlPoints[i++]=f.getValue(); - i=0; - for(MyFloat f:c.getKnotVector()) - knots[i++]=f.getValue(); - - this.isCurveFinished=c.isCurveFinished(); - } - - /** - * Konstruktor, nastaví prázdné hodnoty polí definujících NURBS křivku - */ - private Curve(){ - ctrlPoints=new float[0]; - knots=new float[0]; - isCurveFinished=false; - } - - /** - * Vrací instanci třídy (podle návrhového vzoru Singleton) - * @return instance třídy Curve - */ - public static Curve getInstance() { - if (singleton == null) - singleton = new Curve(); - return singleton; - - } - - /** - * Vrací pole uzlového vektoru - * @return pole hodnot uzlového vektoru - */ - public float[] getKnots() { - return this.knots; - } - - /** - * Vrací pole s hodnotami souřadnic řídících bodů - * @return pole souřadnic řídících bodů - */ - public float[] getCtrlPoints() { - return this.ctrlPoints; - } - - /** - * Vrací stupeň NURBS křivky - * @return stupeň NURBS křivky - */ - public int getOrder() { - return this.order; - } - - /** - * Vrací index aktuálně vybraného řídícího bodu - * @return index aktuálně vybraného řídícího bodu - */ - public int getBodIndex() { - return bodIndex; - } - - /** - * Nastavuje index požadovaného aktuálně vybraného řídícího bodu - * @param bodIndex index požadovaného aktuálně vybraného řídícího bodu - */ - public void setBodIndex(int bodIndex) { - this.bodIndex = bodIndex; - } - - /** - * Vrací X-ovou souadnici aktuálně vybraného řídícího bodu, přepočítává hodnotu z homogenních souřadnic - * @return X-ová souadnice aktuálně vybraného řídícího bodu - */ - public float getActiveX(){ - if(bodIndex>=0){ - return ctrlPoints[bodIndex*4]/ctrlPoints[bodIndex*4+3]; - } - else return 0; - } - /** - * Vrací Y-ovou souadnici aktuálně vybraného řídícího bodu, přepočítává hodnotu z homogenních souřadnic - * @return Y-ová souadnice aktuálně vybraného řídícího bodu - */ - public float getActiveY(){ - if(bodIndex>=0){ - return ctrlPoints[bodIndex*4+1]/ctrlPoints[bodIndex*4+3]; - } - else return 0; - } - - /** - * Vrací váhu aktuálně vybraného řídícího bodu - * @return váha aktuálně vybraného řídícího bodu - */ - public float getActiveW(){ - if(bodIndex>=0){ - return ctrlPoints[bodIndex*4+3]; - } - else return 0; - } - - /** - * Nastavuje X-ovou souadnici aktuálně vybraného řídícího bodu, přepočítává hodnotu do homogenních souřadnic - * @param x X-ová souřadnice aktuálně vybraného řídícího bodu - */ - public void setActiveX(float x){ - if(bodIndex>=0){ - ctrlPoints[bodIndex*4]=x*ctrlPoints[bodIndex*4+3]; - } - } - /** - * Nastavuje Y-ovou souadnici aktuálně vybraného řídícího bodu, přepočítává hodnotu do homogenních souřadnic - * @param y Y-ová souřadnice aktuálně vybraného řídícího bodu - */ - - public void setActiveY(float y){ - if(bodIndex>=0){ - ctrlPoints[bodIndex*4+1]=y*ctrlPoints[bodIndex*4+3]; - } - } - - /** - *Nastavuje váhu aktuálně vybraného řídícího bodu, upravuje hodnoty stávajícíh souřadic vzhledem k váze a použití homogenních souřadnic - * @param w váha aktuálně vybraného řídícího bodu - */ - public void setActiveW(float w){ - if(bodIndex>=0){ - float oldW=ctrlPoints[bodIndex*4+3]; - if(w>0){ - ctrlPoints[bodIndex*4+3]=w; - //úprava souřadnic - ctrlPoints[bodIndex*4]=ctrlPoints[bodIndex*4]/oldW*w; - ctrlPoints[bodIndex*4+1]=ctrlPoints[bodIndex*4+1]/oldW*w; - } - - } - } - - /** - * Nastavuje uzlový vektor - * @param knots nový uzlový vektor - */ - public void setKnots(float[] knots) { - this.knots = knots; - } - - /** - * Vrací informaci o stavu dokončení definice křvky - * @return true pokud je definice křivky kompletní, jinak false - */ - public boolean isCurveFinished() { - return isCurveFinished; - } - - /** - * Nastavuje řídící body - * @param ctrlPoints pole souřadnic řídících bodů - */ - public void setCtrlPoints(float[] ctrlPoints) { - this.ctrlPoints = ctrlPoints; - } - - /** - * Nastavuje stav dokončení definice křivky - * @param b stav dokončení definice křivky - * - */ - public void setIsCurveFinished(boolean b) { - isCurveFinished=b; - } - - /** - * Vrací vektor souřadnic řídích bodů pro serializaci - * @return vektor souřadnic řídících bodů - */ - private Vector<MyFloat> getCtrlVector() { - return ctrlVector; - } - - /** - * Vrací vektor prvků uzlového vektoru pro serializaci - * @return vektor prvků uzlového vektoru - */ - private Vector<MyFloat> getKnotVector() { - return knotVector; - } - - /** - * Nastaví stupeň křivky - * @param order požadovaný stupeň - */ - public void setOrder(int order) { - this.order = order; - } -} diff --git a/src/demos/nurbs/curveapp/CurveApp.java b/src/demos/nurbs/curveapp/CurveApp.java deleted file mode 100755 index ff70f68..0000000 --- a/src/demos/nurbs/curveapp/CurveApp.java +++ /dev/null @@ -1,659 +0,0 @@ -package demos.nurbs.curveapp; - -import java.awt.Dimension; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Insets; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; - -import javax.media.opengl.GLCanvas; -import javax.swing.ButtonGroup; -import javax.swing.ImageIcon; -import javax.swing.JButton; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JMenu; -import javax.swing.JMenuBar; -import javax.swing.JMenuItem; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; -import javax.swing.JSeparator; -import javax.swing.JSpinner; -import javax.swing.JToggleButton; -import javax.swing.JToolBar; -import javax.swing.SpinnerNumberModel; -import javax.swing.ToolTipManager; - -import demos.nurbs.icons.*; -import demos.nurbs.knotslidercomponent.JKnotSlider; - -/** - * Main class of application demostrating capabilities of JOGL when working with NURBS curves - * Hlavní třída aplikace demonstrující shopnosti knihovny JOGL při práci s NURBS křivkami - * @author Tomáš Hráský - * - */ -@SuppressWarnings("serial") -public class CurveApp extends JFrame implements ActionListener -{ - - /** - * Name of X-coord editing component of actually selected control point - * Jméno komponenty pro editaci X-ové souřadnice aktuálního bodu - */ - public static final String X_SPINNER_NAME = "xspinner"; - /** - * Name of Y-coord editing component of actually selected control point - * Jméno komponenty pro editaci Y-ové souřadnice aktuálního bodu - */ - public static final String Y_SPINNER_NAME = "yspinner"; - /** - * Name of weight editing component of actually selected control point - * Jméno komponenty pro editaci váhy aktuálního bodu - */ - public static final String W_SPINNER_NAME = "wspinner"; - - /** - * Name of ADD CONTROL POINT event - * Jméno události přidání řídícího bodu - */ - public static final String PRIDAT_AC = "PRIDAT"; - - /** - * Name of SET CURVE DEGREE event - * Jméno události zadání stupně křivky - */ - public static final String STUPEN_AC="STUPEN"; - /** - * Name of DELETE CONTROL POINT event - * Jméno události smazání řídícího bodu - */ - public static final String SMAZAT_AC = "SMAZAT"; - /** - * Name of MAKE CLOSED KNOTVECTOR event - * Jméno události vytvoření uzavřeného uzlového vektoru - */ - public static final String UZAVRENY_AC = "UZAVRENY"; - /** - * Name of MAKE OPEN (UNIFORM) KNOTVECTOR event - * Jméno události vytvoření otevřeného (uniformního) uzlového vektoru - */ - public static final String OTEVRENY_AC = "OTEVRENY"; - /** - * Name of SAVE CURVE event - * Jméno události uložení křivky - */ - public static final String ULOZIT_AC = "ULOZIT"; - /** - * Name of LOAD CURVE event - * Jméno události načetení uložené definice křivky - */ - public static final String NACIST_AC = "NACIST"; - /** - * Name of MOVE CONTROL POINT event - * Jméno události pohybu řídícího bodu - */ - private static final String MOVE_AC = "MOVE"; - - /** - * Name of CREATE NEW CURVE event - * Jméno události vytvoření nové křivky - */ - static final String NOVA_AC = "NEWCURVE"; - - /** - * Name of EXIT APP event - * Jméno události ukončení aplikace - */ - public static final String EXIT_AC = "EXIT"; - /** - * Name of SHOW ABOUT event - * Jméno události zobrazení okna o aplikaci - */ - public static final String INFO_AC = "INFO"; - - /** - * OpenGL canvas - * Plátno pro vykreslování pomocí OpenGL - */ - private GLCanvas glCanvas; - - /** - * X-coord editing component - * Komponenta pro editaci X-ové souřadnice aktuálního bodu - */ - private JSpinner xSpinner; - /** - * Y-coord editing component - * Komponenta pro editaci Y-ové souřadnice aktuálního bodu - */ - private JSpinner ySpinner; - /** - * Weight editing component - * Komponenta pro editaci váhy aktuálního bodu - */ - private JSpinner wSpinner; - - /** - * Mouse events listener - * Listener událostí myši - */ - private CurveMouseListener mouseListener; - - /** - * Knot vector editing component - * Komponenta pro editaci uzlového vektoru - */ - private JKnotSlider knotSlider; - - /** - * Start "move control point" mode - * Tlačítko pro zapnutí módu pohybu řídících bodů - */ - private JToggleButton moveTB; - - /** - * Constructor, initializes GUI - * Konstruktor, vytvoří grafické uživatelské rozhraní - */ - public CurveApp() { - super("Tomáš Hráský - example application demonstrating GLU NURBS capabilites - JOGL"); - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - - initGUI(); - } - - /** - * GUI initialization - * Inicializace grafického uživatelského rozhraní - */ - private void initGUI() { - JPopupMenu.setDefaultLightWeightPopupEnabled(false); - ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false); - - this.glCanvas = new GLCanvas(); - glCanvas.setSize(new Dimension(750, 500)); - glCanvas.addGLEventListener(new GLListener()); - mouseListener = new CurveMouseListener(this); - glCanvas.addMouseListener(mouseListener); - glCanvas.addMouseMotionListener(mouseListener); - setLayout(new GridBagLayout()); - GridBagConstraints c = new GridBagConstraints(); - c.fill = GridBagConstraints.BOTH; - - c.gridy = 0; - c.gridwidth = GridBagConstraints.REMAINDER; - - ActListener listener = new ActListener(this); - - JMenuBar menuBar = new JMenuBar(); - getContentPane().add(menuBar, c); - - //JMenu aplikaceMenu = new JMenu("Aplikace"); - JMenu aplikaceMenu = new JMenu("Application"); - menuBar.add(aplikaceMenu); - - //JMenuItem aboutMI=new JMenuItem("O aplikaci"); - JMenuItem aboutMI=new JMenuItem("About"); - aboutMI.setActionCommand(INFO_AC); - aboutMI.addActionListener(listener); - aplikaceMenu.add(aboutMI); - - aplikaceMenu.add(new JSeparator()); - - //JMenuItem konecMI=new JMenuItem("Ukončit"); - JMenuItem konecMI=new JMenuItem("Exit"); - konecMI.addActionListener(listener); - konecMI.setActionCommand(EXIT_AC); - aplikaceMenu.add(konecMI); - - //JMenu krivkaMenu = new JMenu("Křivka"); - JMenu krivkaMenu = new JMenu("Curve"); - menuBar.add(krivkaMenu); - - //JMenuItem pridatBodyMI = new JMenuItem("Přidat body"); - JMenuItem pridatBodyMI = new JMenuItem("Add control points"); - krivkaMenu.add(pridatBodyMI); - pridatBodyMI.addActionListener(listener); - - - pridatBodyMI.setActionCommand(PRIDAT_AC); - JMenuItem smazatBodyMI = new JMenuItem( - //"Smazat body"); - "Delete points"); - krivkaMenu.add(smazatBodyMI); - smazatBodyMI.addActionListener(listener); - - smazatBodyMI.setActionCommand(SMAZAT_AC); - - //JMenuItem stupenMI=new JMenuItem("Zadat stupeň křivky"); - JMenuItem stupenMI=new JMenuItem("Set curve degree"); - krivkaMenu.add(stupenMI); - stupenMI.addActionListener(listener); - stupenMI.setActionCommand(STUPEN_AC); - - //JMenu knotVecMenu = new JMenu("Vytvořit uzlový vektor"); - JMenu knotVecMenu = new JMenu("Create knot vector"); - krivkaMenu.add(knotVecMenu); - - //JMenuItem clampedKVMI = new JMenuItem("Okrajový"); - JMenuItem clampedKVMI = new JMenuItem("Clamped"); - knotVecMenu.add(clampedKVMI); - clampedKVMI.setActionCommand(UZAVRENY_AC); - clampedKVMI.addActionListener(listener); - //JMenuItem unclampedKVMI = new JMenuItem("Uniformní"); - JMenuItem unclampedKVMI = new JMenuItem("Uniform"); - knotVecMenu.add(unclampedKVMI); - unclampedKVMI.setActionCommand(OTEVRENY_AC); - unclampedKVMI.addActionListener(listener); - - //JMenuItem moveMI=new JMenuItem("Hýbat body"); - JMenuItem moveMI=new JMenuItem("Move points"); - krivkaMenu.add(moveMI); - moveMI.setActionCommand(MOVE_AC); - moveMI.addActionListener(listener); - - krivkaMenu.add(new JSeparator()); - - krivkaMenu.add(new JSeparator()); - - //JMenuItem novaMI=new JMenuItem("Nová křivka"); - JMenuItem novaMI=new JMenuItem("New curve"); - krivkaMenu.add(novaMI); - novaMI.setActionCommand(NOVA_AC); - novaMI.addActionListener(listener); - - //JMenuItem ulozitMI = new JMenuItem("Uložit křivku jako..."); - JMenuItem ulozitMI = new JMenuItem("Save curve as..."); - krivkaMenu.add(ulozitMI); - ulozitMI.setActionCommand(ULOZIT_AC); - ulozitMI.addActionListener(listener); - //JMenuItem nacistMI = new JMenuItem("Načíst křivku"); - JMenuItem nacistMI = new JMenuItem("Load curve"); - krivkaMenu.add(nacistMI); - nacistMI.setActionCommand(NACIST_AC); - nacistMI.addActionListener(listener); - - c.gridy++; - JToolBar toolBar = new JToolBar(); - getContentPane().add(toolBar, c); - - ButtonGroup bg = new ButtonGroup(); - - - JButton novaB=new JButton(); - // novaB.setText("Nová"); - //novaB.setToolTipText("Nová křivka"); - novaB.setToolTipText("New curve"); - novaB.setIcon(IconFactory.getIcon("demos/nurbs/icons/folder_new.png")); - novaB.setActionCommand(NOVA_AC); - novaB.addActionListener(listener); - toolBar.add(novaB); - - JButton ulozitB=new JButton(); - ulozitB.setIcon(IconFactory.getIcon("demos/nurbs/icons/adept_sourceseditor.png")); - // ulozitB.setText("Uložit"); - //ulozitB.setToolTipText("Uložit"); - ulozitB.setToolTipText("Save"); - ulozitB.setActionCommand(ULOZIT_AC); - ulozitB.addActionListener(listener); - toolBar.add(ulozitB); - - JButton nahratB=new JButton(); - // nahratB.setText("Nahrát"); - //nahratB.setToolTipText("Nahrát uloženou křivku"); - nahratB.setToolTipText("Load curve"); - nahratB.setIcon(IconFactory.getIcon("demos/nurbs/icons/fileimport.png")); - nahratB.setActionCommand(NACIST_AC); - nahratB.addActionListener(listener); - toolBar.add(nahratB); - - toolBar.add(new JToolBar.Separator()); - - JToggleButton pridatTB = new JToggleButton(); - // pridatTB.setText("Přidat body"); - //pridatTB.setToolTipText("Přidat body"); - pridatTB.setToolTipText("Add points"); - toolBar.add(pridatTB); - pridatTB.setIcon(IconFactory.getIcon("demos/nurbs/icons/add.png")); - pridatTB.setActionCommand(PRIDAT_AC); - pridatTB.addActionListener(listener); - bg.add(pridatTB); - JToggleButton smazatTB = new JToggleButton(); - // smazatTB.setText("Smazat body"); - //smazatTB.setToolTipText("Smazat body"); - smazatTB.setToolTipText("Delete points"); - toolBar.add(smazatTB); - smazatTB.setIcon(IconFactory.getIcon("demos/nurbs/icons/fileclose.png")); - smazatTB.setActionCommand(SMAZAT_AC); - smazatTB.addActionListener(listener); - bg.add(smazatTB); - - JToggleButton stupenTB = new JToggleButton(); - // stupenTB.setText("Smazat body"); - //stupenTB.setToolTipText("Zadat stupeň křivky"); - stupenTB.setToolTipText("Set curve degree"); - toolBar.add(stupenTB); - stupenTB.setIcon(IconFactory.getIcon("demos/nurbs/icons/math_rsup.png")); - stupenTB.setActionCommand(STUPEN_AC); - stupenTB.addActionListener(listener); - bg.add(stupenTB); - - - final JPopupMenu popup = new JPopupMenu(); - - //JMenuItem uzavrenyPopupMI = new JMenuItem("Okrajový"); - JMenuItem uzavrenyPopupMI = new JMenuItem("Clamped"); - popup.add(uzavrenyPopupMI); - uzavrenyPopupMI.setActionCommand(UZAVRENY_AC); - uzavrenyPopupMI.addActionListener(listener); - //JMenuItem otevrenyPopupMI = new JMenuItem("Uniformní"); - JMenuItem otevrenyPopupMI = new JMenuItem("Uniform"); - popup.add(otevrenyPopupMI); - otevrenyPopupMI.setActionCommand(OTEVRENY_AC); - otevrenyPopupMI.addActionListener(listener); - - JToggleButton vytvoritButton = new JToggleButton(); - // vytvoritButton.setText("Vytvořit uzlový vektor"); - //vytvoritButton.setToolTipText("Vytvořit uzlový vektor"); - vytvoritButton.setToolTipText("Create knot vector"); - vytvoritButton.setIcon(IconFactory.getIcon("demos/nurbs/icons/newfunction.png")); - bg.add(vytvoritButton); - - vytvoritButton.addMouseListener(new - /** - * @author Tomáš Hráský - * Class connecting context menu to button on toolbar - * Třída pro připojení kontextového menu na tlačítko na liště nástrojů - */ - MouseAdapter() { - - @Override - public void mouseClicked(MouseEvent e) { - super.mouseClicked(e); - e.isPopupTrigger(); - popup.show(e.getComponent(), e.getX(), e.getY()); - } - - }); - popup.setInvoker(vytvoritButton); - toolBar.add(vytvoritButton); - - moveTB=new JToggleButton(); - // moveTB.setText("Hýbat body"); - //moveTB.setToolTipText("Hýbat body"); - moveTB.setToolTipText("Move points"); - moveTB.setIcon(IconFactory.getIcon("demos/nurbs/icons/mouse.png")); - toolBar.add(moveTB); - moveTB.setActionCommand(MOVE_AC); - moveTB.addActionListener(listener); - bg.add(moveTB); - toolBar.add(new JToolBar.Separator()); - JButton infoB=new JButton(); - // infoB.setText("Ukončit"); - //infoB.setToolTipText("O aplikaci"); - infoB.setToolTipText("About"); - - infoB.setIcon(IconFactory.getIcon("demos/nurbs/icons/info.png")); - toolBar.add(infoB); - infoB.setActionCommand(INFO_AC); - infoB.addActionListener(listener); - toolBar.add(new JToolBar.Separator()); - - JButton exitB=new JButton(); - // exitB.setText("Ukončit"); - //exitB.setToolTipText("Ukončit"); - exitB.setToolTipText("Exit"); - - exitB.setIcon(IconFactory.getIcon("demos/nurbs/icons/exit.png")); - toolBar.add(exitB); - exitB.setActionCommand(EXIT_AC); - exitB.addActionListener(listener); - - c.gridwidth = 1; - - c.gridx = 0; - c.gridy = 2; - - c.weightx = 1; - c.weighty = 1; - - getContentPane().add(glCanvas, c); - c.gridx = 1; - JPanel rightPanel = new JPanel(new GridBagLayout()); - GridBagConstraints cc = new GridBagConstraints(); - cc.insets = new Insets(5, 5, 5, 5); - xSpinner = new JSpinner(new SpinnerNumberModel(0, 0, 10000.0, 1)); - ySpinner = new JSpinner(new SpinnerNumberModel(0, 0, 10000.0, 1)); - wSpinner = new JSpinner(new SpinnerNumberModel(0, 0, 10000.0, .05)); - - SpinnerListener spinnerListener = new SpinnerListener(this); - xSpinner.addChangeListener(spinnerListener); - xSpinner.setName(X_SPINNER_NAME); - ySpinner.addChangeListener(spinnerListener); - ySpinner.setName(Y_SPINNER_NAME); - wSpinner.addChangeListener(spinnerListener); - wSpinner.setName(W_SPINNER_NAME); - - cc.gridx = 0; - cc.gridy = 0; - - cc.gridwidth = 2; - cc.weighty = 1; - rightPanel.add(new JPanel(), cc); - cc.weighty = 0; - cc.gridwidth = 1; - - cc.gridy++; - rightPanel.add(new JLabel("X"), cc); - cc.gridy++; - rightPanel.add(new JLabel("Y"), cc); - cc.gridy++; - rightPanel.add(new JLabel("W"), cc); - - cc.gridx = 1; - cc.gridy = 1; - rightPanel.add(xSpinner, cc); - cc.gridy++; - rightPanel.add(ySpinner, cc); - cc.gridy++; - rightPanel.add(wSpinner, cc); - - xSpinner.setEnabled(false); - ySpinner.setEnabled(false); - wSpinner.setEnabled(false); - - c.weightx = 0; - c.weighty = 0; - getContentPane().add(rightPanel, c); - - c.gridx = 0; - c.gridy++; - - knotSlider = new JKnotSlider(Curve.getInstance().getKnots()); - knotSlider.addActionListener(this); - getContentPane().add(knotSlider, c); - - pack(); - invalidate(); - setVisible(true); - } - - /** - * Main method starting application - * Metoda pro spuštění aplikace - * @param args no arguments accepted - * - */ - public static void main(String[] args) { - new CurveApp(); - - } - - /** - * Reaction to request for redrive OpenGL canvas - repaints canvas, sets actually selected control points coords to editing components - * Reakce na požadavek překreslení OpenGL plátna, překreslí plátno a nastaví souřadnice aktuálního vybraného bodu do editačních komponent - */ - public void updateGLCanvas() { - glCanvas.repaint(); - if (Curve.getInstance().getBodIndex() >= 0) { - xSpinner.setEnabled(true); - ySpinner.setEnabled(true); - wSpinner.setEnabled(true); - - xSpinner.setValue(Double.valueOf(Math.round(Curve.getInstance() - .getActiveX()))); - ySpinner.setValue(Double.valueOf(Math.round(Curve.getInstance() - .getActiveY()))); - wSpinner.setValue(Double.valueOf(Curve.getInstance().getActiveW())); - } else { - xSpinner.setEnabled(false); - ySpinner.setEnabled(false); - wSpinner.setEnabled(false); - } - } - - /* (non-Javadoc) - * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) - */ - public void actionPerformed(ActionEvent e) { - JKnotSlider src = (JKnotSlider) e.getSource(); - if(src.checkKnotMulti(Curve.getInstance().getOrder())){ - Curve.getInstance().setKnots(src.getKnotsFloat()); - }else{ - //JOptionPane.showMessageDialog(this,"Překročení maximální násobnosti uzlu","Chyba",JOptionPane.ERROR_MESSAGE); - JOptionPane.showMessageDialog(this,"Maximum knot multiplicity exceeded","Error",JOptionPane.ERROR_MESSAGE); - src.setKnots(Curve.getInstance().getKnots()); - } - updateGLCanvas(); - } - - /** - * Returns OpenGL canvas - * Vrací OpenGL plátno - * @return OpenGL canvas - */ - public GLCanvas getGlCanvas() { - return glCanvas; - } - - /** - * Returns mouse events listener - * Vrací listener událostí myši - * @return mouse listener - */ - public CurveMouseListener getMouseListener() { - return mouseListener; - } - - /** - * Creates NURBS curve with clamped knot vector - * Vytvoří NURBS křivku s okrajovým uzlovým vektorem - */ - public void uzavernyKV() { - int stupen = Curve.getInstance().getOrder(); - int pocetBodu = Curve.getInstance().getCtrlPoints().length / 4; - if (stupen <= pocetBodu) { - int knotCount = stupen + pocetBodu; - int middlePartSize = knotCount - 2 * stupen; - float[] newKnots = new float[knotCount]; - int i; - int j = 0; - float middleStep = 1f / (middlePartSize + 2); - float knot = middleStep; - - // knot=.5f; - - for (i = 0; i < stupen; i++) - newKnots[j++] = 0; - for (i = 0; i < middlePartSize; i++) { - newKnots[j++] = knot; - knot += middleStep; - } - for (i = 0; i < stupen; i++) - newKnots[j++] = 1; - - postNewKnot(newKnots); - - } else - //errorMessage("Malý počet řídících bodů vzhledem k zadanému stupni křivky"); - errorMessage("Too few control points regarding set curve degree"); - } - - /** - * Displays modal window with error report - * Zobrazí modální okno s hlášením chyby - * @param error error message - */ - public void errorMessage(String error){ - //JOptionPane.showMessageDialog(this,error,"Chyba!",JOptionPane.ERROR_MESSAGE); - JOptionPane.showMessageDialog(this,error,"Error!",JOptionPane.ERROR_MESSAGE); - } - - /** - * Creates NURBS curves with uniform knot vector - * Vytvoří NURBS křivku s uniformním uzlovým vektorem - */ - public void otevrenyKV() { - int stupen = Curve.getInstance().getOrder(); - int pocetBodu = Curve.getInstance().getCtrlPoints().length / 4; - if (stupen <= pocetBodu) { - int knotCount = stupen + pocetBodu; - int middlePartSize = knotCount; - float[] newKnots = new float[knotCount]; - int i; - int j = 0; - float middleStep = 1f / (middlePartSize - 1); - float knot = 0; - - // knot=.5f; - - // for(i=0;i<stupen;i++) - // newKnots[j++]=0; - for (i = 0; i < middlePartSize; i++) { - newKnots[j++] = knot; - knot += middleStep; - } - // for(i=0;i<stupen;i++) - // newKnots[j++]=1; - - postNewKnot(newKnots); - } - else - //errorMessage("Malý počet řídících bodů vzhledem k zadanému stupni křivky"); - errorMessage("Too few control points regarding set curve degree"); - } - - /** - * Method called after adding new knot - * Metoda volaná po přidání nového uzlu - * @param newKnots new knot vector - */ - private void postNewKnot(float[] newKnots) { - Curve.getInstance().setKnots(newKnots); - knotSlider.setKnots(newKnots); - Curve.getInstance().setIsCurveFinished(true); - updateGLCanvas(); - moveTB.setSelected(true); - } - - /** - * Activates MOVE MODE button - * Aktivuje tlačítko módu pohybu řícími body - */ - public void selectMoveButt() { - moveTB.setSelected(true); - } - - /** - * Sets data source for knot editing component from knot vector of curve object - * Nastaví zdroj dat komponenty pro editaci uzlového vektoru podle uz. vektoru v objektu křivky - */ - public void updateJKnotSlider() { - knotSlider.setKnots(Curve.getInstance().getKnots()); - } -} diff --git a/src/demos/nurbs/curveapp/CurveMouseListener.java b/src/demos/nurbs/curveapp/CurveMouseListener.java deleted file mode 100755 index b74e1cf..0000000 --- a/src/demos/nurbs/curveapp/CurveMouseListener.java +++ /dev/null @@ -1,180 +0,0 @@ -package demos.nurbs.curveapp; - -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.awt.event.MouseMotionListener; - -/** - * Class reacting to mouse events (implements interface for button press, drag and movement) - * Třída zpracovávající události myši (implementuje rozhraní zpracovávající stisk tlačítek i pohyb a tažení myší) - * @author Tomáš Hráský - * - */ -public class CurveMouseListener implements MouseListener, MouseMotionListener { - /** - * Actually selected control point index - * Index aktuálně vybraného řídícího bodu - */ - private int bodIndex; - - /** - * Window listener is connected to - * Okno k nemuž listener patří - */ - private CurveApp appWindow; - - /** - * Action type - * Typ prováděné činnosti - */ - private String actionType; - - /** - * Pixel tolerance when selecting control point by clicking - * Tolerance pro indikaci kliku na řídící bod - */ - private static final int TOLERANCE=10; - - /** - * Creates new listener with connection to given app window - * Vytvoří listener s odkazem na zadané okno - * @param app rodičovské okno - */ - public CurveMouseListener(CurveApp app) { - this.appWindow=app; - } - - /* (non-Javadoc) - * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent) - */ - public void mouseClicked(MouseEvent e) { - if(actionType==CurveApp.PRIDAT_AC){ - Curve.getInstance().setIsCurveFinished(false); - float x=e.getX(); - float y=e.getY(); - float z=0; - float w=1; - int size; - float[] newCtrls; - try{ - size=Curve.getInstance().getCtrlPoints().length; - }catch (Exception ex) { - size=0; - } - newCtrls=new float[size+4]; - System.arraycopy(Curve.getInstance().getCtrlPoints(),0,newCtrls,0,size); - - newCtrls[size]=x; - newCtrls[size+1]=y; - newCtrls[size+2]=z; - newCtrls[size+3]=w; - Curve.getInstance().setCtrlPoints(newCtrls); - }else if(actionType==CurveApp.SMAZAT_AC&&bodIndex>=0){ - Curve.getInstance().setIsCurveFinished(false); - int size=Curve.getInstance().getCtrlPoints().length; - float[] newCtrls=new float[size-4]; - - int firstPartSize=(bodIndex)*4; - int secondPartSize=newCtrls.length-firstPartSize; - System.arraycopy(Curve.getInstance().getCtrlPoints(),0,newCtrls,0,firstPartSize); - System.arraycopy(Curve.getInstance().getCtrlPoints(),firstPartSize+4,newCtrls,firstPartSize,secondPartSize); - bodIndex=-1; - Curve.getInstance().setBodIndex(bodIndex); - Curve.getInstance().setCtrlPoints(newCtrls); - } - appWindow.updateGLCanvas(); - } - - /* (non-Javadoc) - * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent) - */ - public void mousePressed(MouseEvent e) { - // if(actionType==MOVE_AC){ - float[] ctrlpoints=Curve.getInstance().getCtrlPoints(); - int x=e.getX(); - int y=e.getY(); - this.bodIndex=-1; - // System.out.println(ctrlpoints.length); - for(int i=0;i<ctrlpoints.length/4;i++){ - float xS = ctrlpoints[i*4]/ctrlpoints[i*4+3]; - float yS = ctrlpoints[i*4+1]/ctrlpoints[i*4+3]; - if(x>=xS-TOLERANCE&&x<=xS+TOLERANCE&&y>=yS-TOLERANCE&&y<=yS+TOLERANCE){ - this.bodIndex=i; - } - } - - Curve.getInstance().setBodIndex(bodIndex); - // } - appWindow.updateGLCanvas(); - - } - - /* (non-Javadoc) - * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent) - */ - public void mouseReleased(MouseEvent e) { - // this.bodIndex=-1; - } - - /* (non-Javadoc) - * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent) - */ - public void mouseEntered(MouseEvent e) { - - } - - /* (non-Javadoc) - * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent) - */ - public void mouseExited(MouseEvent e) { - - } - - /* (non-Javadoc) - * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent) - */ - public void mouseDragged(MouseEvent e) { - if(this.bodIndex>=0){ - int x=e.getX(); - int y=e.getY(); - - Curve.getInstance().setActiveX(x); - Curve.getInstance().setActiveY(y); - } - appWindow.updateGLCanvas(); - } - - /* (non-Javadoc) - * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent) - */ - public void mouseMoved(MouseEvent e) { - - } - - /** - * Set action type - * Nastaví typ prováděné činnosti - * @param action Action type - */ - public void setActionType(String action) { - this.actionType=action; - } - - /** - * Returns actually selected control point index - * Vrací index aktuálně vybraného řídícího bodu - * @return actually selected control point index - */ - public int getBodIndex() { - return bodIndex; - } - - /** - * Sets actually selected control point index - * Nastavuje index aktuálně vybraného řídícího bodu - * @param bodIndex actually selected control point index - */ - public void setBodIndex(int bodIndex) { - this.bodIndex = bodIndex; - } -} diff --git a/src/demos/nurbs/curveapp/GLListener.java b/src/demos/nurbs/curveapp/GLListener.java deleted file mode 100755 index 18bf36f..0000000 --- a/src/demos/nurbs/curveapp/GLListener.java +++ /dev/null @@ -1,141 +0,0 @@ -package demos.nurbs.curveapp; - -import javax.media.opengl.GL; -import javax.media.opengl.GLAutoDrawable; -import javax.media.opengl.GLEventListener; -import javax.media.opengl.glu.*; - -import com.sun.opengl.util.GLUT; - -/** - * Listener raacting to OpenGL canvas events - * Listener reagující na události na OpenGL plátně - * @author Tomáš Hráský - * - */ -public class GLListener implements GLEventListener { - - /** - * OpenGL object - * objekt realizující základní OpenGL funkce - */ - private GL gl; - - /** - * GLU - * Objekt realizující funkce nadstavbové knihovny GLU - */ - private GLU glu; - - /** - * GLUT object - * Objekt realizující funkce nadstavbové knihovny GLUT - */ - private GLUT glut; - - /** - * NURBS curve object - * OpenGL Objekt NURBS křivky - */ - private GLUnurbs nurbs; - - - /* (non-Javadoc) - * @see javax.media.opengl.GLEventListener#init(javax.media.opengl.GLAutoDrawable) - */ - public void init(GLAutoDrawable drawable) { - this.gl = drawable.getGL(); - this.glu = new GLU(); - this.glut=new GLUT(); - - this.nurbs = glu.gluNewNurbsRenderer(); - gl.glClearColor(1, 1, 1, 1); - } - - /* (non-Javadoc) - * @see javax.media.opengl.GLEventListener#display(javax.media.opengl.GLAutoDrawable) - */ - public void display(GLAutoDrawable drawable) { - - gl.glClear(GL.GL_COLOR_BUFFER_BIT); - - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - - float[] knots = Curve.getInstance().getKnots(); - float[] ctrlpoints = Curve.getInstance().getCtrlPoints(); - - gl.glEnable(GL.GL_LINE_SMOOTH); - gl.glEnable(GL.GL_BLEND); - gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA); - gl.glHint(GL.GL_LINE_SMOOTH_HINT, GL.GL_DONT_CARE); - - gl.glLineWidth(3); - - if(Curve.getInstance().isCurveFinished()){ - glu.gluBeginCurve(nurbs); - glu.gluNurbsCurve(nurbs, knots.length, knots, 4, ctrlpoints, Curve.getInstance().getOrder(), GL.GL_MAP1_VERTEX_4); - glu.gluEndCurve(nurbs); - } - - gl.glColor3f(0,0,0); - gl.glPointSize(5); - gl.glBegin(GL.GL_POINTS); - for (int i = 0; i < ctrlpoints.length / 4; i++) { - // if(i!=Curve.getInstance().getBodIndex()) - gl.glVertex3d(ctrlpoints[i * 4]/ctrlpoints[i * 4 + 3], ctrlpoints[i * 4 + 1]/ctrlpoints[i * 4 + 3], - ctrlpoints[i * 4 + 2]/ctrlpoints[i * 4 + 3]); - } - gl.glEnd(); - - - for (int i = 0; i < ctrlpoints.length / 4; i++) { - // if(i!=Curve.getInstance().getBodIndex()) - // gl.glPushMatrix(); - gl.glRasterPos2f(ctrlpoints[i * 4]/ctrlpoints[i * 4 + 3], ctrlpoints[i * 4 + 1]/ctrlpoints[i * 4 + 3]-5); - glut.glutBitmapString(GLUT.BITMAP_HELVETICA_18,String.valueOf(i+1)); - // gl.glPopMatrix(); - } - - - gl.glLineWidth(1); - gl.glBegin(GL.GL_LINE_STRIP); - for (int i = 0; i < ctrlpoints.length / 4; i++) { - // if(i!=Curve.getInstance().getBodIndex()) - gl.glVertex3d(ctrlpoints[i * 4]/ctrlpoints[i * 4 + 3], ctrlpoints[i * 4 + 1]/ctrlpoints[i * 4 + 3], - ctrlpoints[i * 4 + 2]/ctrlpoints[i * 4 + 3]); - } - gl.glEnd(); - gl.glColor3f(0,0,1); - if(Curve.getInstance().getBodIndex()>=0){ - gl.glPointSize(8); - gl.glBegin(GL.GL_POINTS); - int i=Curve.getInstance().getBodIndex(); - gl.glVertex3d(ctrlpoints[i * 4]/ctrlpoints[i * 4 + 3], ctrlpoints[i * 4 + 1]/ctrlpoints[i * 4 + 3], - ctrlpoints[i * 4 + 2]/ctrlpoints[i * 4 + 3]); - gl.glEnd(); - } - - - - } - - /* (non-Javadoc) - * @see javax.media.opengl.GLEventListener#reshape(javax.media.opengl.GLAutoDrawable, int, int, int, int) - */ - public void reshape(GLAutoDrawable drawable, int x, int y, int width, - int height) { - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - gl.glOrtho(0, drawable.getWidth(), 0, drawable.getHeight(), -1, 1); - gl.glScalef(1, -1, 1); - gl.glTranslatef(0, -drawable.getHeight(), 0); - - } - - /* (non-Javadoc) - * @see javax.media.opengl.GLEventListener#displayChanged(javax.media.opengl.GLAutoDrawable, boolean, boolean) - */ - public void displayChanged(GLAutoDrawable arg0, boolean arg1, boolean arg2) { - } -} diff --git a/src/demos/nurbs/curveapp/MyFloat.java b/src/demos/nurbs/curveapp/MyFloat.java deleted file mode 100755 index 6adc2ef..0000000 --- a/src/demos/nurbs/curveapp/MyFloat.java +++ /dev/null @@ -1,55 +0,0 @@ -package demos.nurbs.curveapp; - -import simple.xml.Attribute; -import simple.xml.Root; - -/** - * Class for serializing decimal point number using SimpleXML - * Třída umožňující serializaci desetinného čísla ve formátu plovoucí čárky (float) - * @author Tomáš Hráský - * - */ -@Root(name="floatval") -public class MyFloat { - /** - * Value - * Hodnota - */ - @Attribute(name="val") - private float value; - - /** - * Constructor, sets value to 0 - * Konstrktor, hodnota je defaultně 0 - */ - public MyFloat(){ - value=0; - } - - /** - * Creates instance with specified value - * Vytvoří instanci objektu s požadovanou hodnotou - * @param f value - */ - public MyFloat(float f) { - value = f; - } - - /** - * Returns value of decimal number - * Vrací hodnotu des. čísla - * @return value - */ - public float getValue() { - return value; - } - - /** - * Sets value - * Nastavuje hodnotu objektu - * @param value value - */ - public void setValue(float value) { - this.value = value; - } -} diff --git a/src/demos/nurbs/curveapp/SpinnerListener.java b/src/demos/nurbs/curveapp/SpinnerListener.java deleted file mode 100755 index ccc5ac4..0000000 --- a/src/demos/nurbs/curveapp/SpinnerListener.java +++ /dev/null @@ -1,47 +0,0 @@ -package demos.nurbs.curveapp; - -import javax.swing.JSpinner; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - -/** - * Listener reacting to events on GUI components setting coords and weight of selected control point - * Listener zpracovávající události na komponentách editujících souřadnice a váhu vybraného řídícícho bodu - * @author Tomáš Hráský - * - */ -public class SpinnerListener implements ChangeListener { - - /** - * Application window - * Okno aplikace, k němuž listener patří - */ - private CurveApp appWindow; - - /** - * Creates new instance with link to parent window - * Vytvoří instanci objektu s odkazem na rodičovské okno - * @param app app window - */ - public SpinnerListener(CurveApp app) { - this.appWindow=app; - } - - /* (non-Javadoc) - * @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent) - */ - public void stateChanged(ChangeEvent e) { - JSpinner src=(JSpinner) e.getSource(); - float val = 0; - if(src.getValue() instanceof Double) val=((Double) src.getValue()).floatValue(); - if(src.getValue() instanceof Float) val=((Float) src.getValue()).floatValue(); - - if(src.getName()==CurveApp.X_SPINNER_NAME) - Curve.getInstance().setActiveX(val); - if(src.getName()==CurveApp.Y_SPINNER_NAME) - Curve.getInstance().setActiveY(val); - if(src.getName()==CurveApp.W_SPINNER_NAME) - Curve.getInstance().setActiveW(val); - appWindow.updateGLCanvas(); - } -} diff --git a/src/demos/nurbs/icons/IconFactory.java b/src/demos/nurbs/icons/IconFactory.java deleted file mode 100755 index 88d8539..0000000 --- a/src/demos/nurbs/icons/IconFactory.java +++ /dev/null @@ -1,19 +0,0 @@ -package demos.nurbs.icons; - -import java.io.*; -import javax.swing.ImageIcon; -import com.sun.opengl.util.StreamUtil; - -public class IconFactory { - private IconFactory() {} - - public static ImageIcon getIcon(String resourceName) { - try { - InputStream input = IconFactory.class.getClassLoader().getResourceAsStream(resourceName); - byte[] data = StreamUtil.readAll(input); - return new ImageIcon(data, resourceName); - } catch (IOException e) { - return new ImageIcon(); - } - } -} diff --git a/src/demos/nurbs/icons/add.png b/src/demos/nurbs/icons/add.png Binary files differdeleted file mode 100644 index ade93b9..0000000 --- a/src/demos/nurbs/icons/add.png +++ /dev/null diff --git a/src/demos/nurbs/icons/adept_sourceseditor.png b/src/demos/nurbs/icons/adept_sourceseditor.png Binary files differdeleted file mode 100644 index c69015a..0000000 --- a/src/demos/nurbs/icons/adept_sourceseditor.png +++ /dev/null diff --git a/src/demos/nurbs/icons/exit.png b/src/demos/nurbs/icons/exit.png Binary files differdeleted file mode 100644 index 5313b7a..0000000 --- a/src/demos/nurbs/icons/exit.png +++ /dev/null diff --git a/src/demos/nurbs/icons/fileclose.png b/src/demos/nurbs/icons/fileclose.png Binary files differdeleted file mode 100644 index 84813bc..0000000 --- a/src/demos/nurbs/icons/fileclose.png +++ /dev/null diff --git a/src/demos/nurbs/icons/fileimport.png b/src/demos/nurbs/icons/fileimport.png Binary files differdeleted file mode 100644 index 3bf3b99..0000000 --- a/src/demos/nurbs/icons/fileimport.png +++ /dev/null diff --git a/src/demos/nurbs/icons/filenew.png b/src/demos/nurbs/icons/filenew.png Binary files differdeleted file mode 100644 index 1f7f88e..0000000 --- a/src/demos/nurbs/icons/filenew.png +++ /dev/null diff --git a/src/demos/nurbs/icons/folder_new.png b/src/demos/nurbs/icons/folder_new.png Binary files differdeleted file mode 100644 index 1ea3951..0000000 --- a/src/demos/nurbs/icons/folder_new.png +++ /dev/null diff --git a/src/demos/nurbs/icons/info.png b/src/demos/nurbs/icons/info.png Binary files differdeleted file mode 100644 index e3c8adb..0000000 --- a/src/demos/nurbs/icons/info.png +++ /dev/null diff --git a/src/demos/nurbs/icons/math_rsup.png b/src/demos/nurbs/icons/math_rsup.png Binary files differdeleted file mode 100644 index d689192..0000000 --- a/src/demos/nurbs/icons/math_rsup.png +++ /dev/null diff --git a/src/demos/nurbs/icons/mouse.png b/src/demos/nurbs/icons/mouse.png Binary files differdeleted file mode 100644 index fd57fac..0000000 --- a/src/demos/nurbs/icons/mouse.png +++ /dev/null diff --git a/src/demos/nurbs/icons/newfunction.png b/src/demos/nurbs/icons/newfunction.png Binary files differdeleted file mode 100644 index f890ef2..0000000 --- a/src/demos/nurbs/icons/newfunction.png +++ /dev/null diff --git a/src/demos/nurbs/knotslidercomponent/JKnotSlider.java b/src/demos/nurbs/knotslidercomponent/JKnotSlider.java deleted file mode 100755 index 02da402..0000000 --- a/src/demos/nurbs/knotslidercomponent/JKnotSlider.java +++ /dev/null @@ -1,468 +0,0 @@ -package demos.nurbs.knotslidercomponent; - -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.ComponentEvent; -import java.awt.event.ComponentListener; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.awt.event.MouseMotionListener; -import java.util.Collections; -import java.util.LinkedList; -import java.util.Vector; - -import javax.swing.JComponent; - -/** - * GUI component for editing NURBS curve/surface knotvector - * Komponenta grafického uživatelského rozhraní pro editaci uzlového vektoru NURBS křivky - * @author Tomáš Hráský - * - */ -@SuppressWarnings("serial") -public class JKnotSlider extends JComponent implements ComponentListener, - MouseMotionListener, MouseListener { - - /** - * Knot value change event - * Událost změny hodoty prvku uzlového vektoru - */ - private static final String KNOT_MOVED = "KnotMoved"; - - /** - * Vector representing knots - * Vektor objektů reprezentujících prvky uzlového vektoru - */ - private Vector<KnotPolygon> knots; - - /** - * Previous knot vector (for recovery after user wrong setting) - * Předchozí vektor objektů reprezentujících prvky uzlového vektoru - pro obnovení při chybě uživatele - */ - private Vector<KnotPolygon> previousState; - - /** - * List of listeners attached to component - * Seznam ActionListenerů navázaných na komponentu - */ - private LinkedList<ActionListener> actionListeners; - - /** - * Value of one pixel movement - * Hodnota posunu o jeden pixel - */ - private double oneStep; - - /** - * Side space - * Mezera na straně osy - */ - private int side; - - /** - * Top space - * Mezera nad osou - */ - private int top; - - /** - * Actually selected knot index - * Index aktuálně vybraného prvku uzlového vektoru - */ - private int activeKnot; - -// private Vector<Integer> xVector; - - - /** - * Creates component - * Vytvoří komponentu - */ - public JKnotSlider() { - oneStep = 0; - top = 0; - side = 0; - knots = new Vector<KnotPolygon>(); - previousState=new Vector<KnotPolygon>(); -// xVector=new Vector<Integer>(); - - actionListeners = new LinkedList<ActionListener>(); - this.addComponentListener(this); - this.addMouseMotionListener(this); - this.addMouseListener(this); - } - - /** - * Adds listener to notified list. list - * Přidá zadaný listener do seznamu naslouchajících objektů - * @param listener added listener - */ - public void addActionListener(ActionListener listener) { - actionListeners.add(listener); - } - - /** - * Creates component with given knotvector knots - * Vytvoří komponentu se zadanými hodnotami uzlového vektoru - * @param knots knot vector - */ - public JKnotSlider(double[] knots) { - this(); - for (double d : knots) { - addKnot(new Double(d)); - } - } - - /** - * Creates component with given knotvector knots - * Vytvoří komponentu se zadanými hodnotami uzlového vektoru - * @param knots knot vector - */ - public JKnotSlider(Vector<Double> knots) { - this(); - for (Double d : knots) { - addKnot(d); - } - } - /** - * Creates component with given knotvector knots - * Vytvoří komponentu se zadanými hodnotami uzlového vektoru - * @param knots uzlový vektor - */ - public JKnotSlider(float[] knots) { - this(); - if(knots!=null) - for(double d:knots) - addKnot(new Double(d)); - } - - /** - * Adds a knot - * Přidá uzel do uzlového vektoru - * @param d knot - */ - public void addKnot(Double d) { -// preserveState(); - knots.add(new KnotPolygon(d, oneStep, top, side)); - } - - - /** - * Saves actual knotvector for later recovery - * Uloží aktuální uzlový vektor pro pozdější obnovení - */ - private void preserveState(){ - previousState.clear(); - previousState.addAll(knots); - } - -// /** -// * Přidá uzel do uzlového vektoru -// * @param d hodnota přidávaného uzlu -// */ -// public void addKnot(double d) { -// addKnot(new Double(d)); -// } - - /** - * Returns knotvector - * Vrací uzlový vektor - * @return knotvector array - */ - @SuppressWarnings("unchecked") - public double[] getKnots() { - double[] output = new double[knots.size()]; - int i = 0; - if (activeKnot >= 0) { - Double d = knots.get(activeKnot).getValue(); - Collections.sort(knots); - for (int j = 0; j < knots.size(); j++) - if (knots.get(j).getValue().equals(d)) { - activeKnot = j; - break; - } - } else - Collections.sort(knots); - for (KnotPolygon p : knots) - output[i++] = p.getValue().doubleValue(); - return output; - } - /** - * Returns knotvector - * Vrací uzlový vektor - * @return knotvector array - */ - public float[] getKnotsFloat(){ - float[] output=new float[knots.size()]; - int i=0; - for(double d:getKnots()){ - output[i++]=(float) d; - } - return output; - } - - /* (non-Javadoc) - * @see javax.swing.JComponent#paintComponent(java.awt.Graphics) - */ - @Override - protected void paintComponent(Graphics g) { - super.paintComponent(g); - drawBaseLine((Graphics2D) g); - updateMultis((Graphics2D)g); - drawKnots((Graphics2D) g); - } - - /** - * Draws info about knot multiplicity - * Vykreslí informaci o násobnosti uzlů - * @param graphics2D object to draw to - */ - private void updateMultis(Graphics2D graphics2D) { - Vector<Integer> vrcholy=new Vector<Integer>(); - for(int i=0;i<knots.size();i++){ - knots.get(i).setMulti(0); - vrcholy.add(knots.get(i).xpoints[0]); - } - - for(int i=0;i<knots.size();i++){ - //k.xpoints[0] //hodnota na X -> počet stejných hodnot nám zjistí multiplicitu - for(Integer ii:vrcholy) - if(ii.intValue()==knots.get(i).xpoints[0]) - knots.get(i).setMulti(knots.get(i).getMulti()+1); - } - } - - /** - * Sends event to all notified listeners - * Pošle všem navešeným listenerům událost - * @param ae event being sent - */ - private void notificateActionListeners(ActionEvent ae) { - for (ActionListener a : actionListeners) - a.actionPerformed(ae); - } - - /** - * "Draws" knotvector - * Vykreslí reprezentaci uzlového vektoru - * @param g object to draw to - */ - private void drawKnots(Graphics2D g) { - String txt; -// int freq; - for (KnotPolygon p : knots) { - g.drawPolygon(p); - g.drawString(p.getMulti()+"x",p.xpoints[1],top); -// freq=Collections.frequency(xVector,Integer.valueOf(p.xpoints[0])); -// g.drawString(freq+"x",p.xpoints[1],top-8); - } - g.rotate(Math.PI / 2); - for (KnotPolygon p : knots) { - txt = p.getValue().toString(); - if (txt.length() > 5) - txt = txt.substring(0, 4); - g.translate(top + 15, -p.xpoints[1]); - g.drawString(txt, 0, 0); - g.translate(-(top + 15), p.xpoints[1]); - } - } - - - /** - * Draws baseline - * Vykreslí základní linku - * @param g object to draw to - */ - private void drawBaseLine(Graphics2D g) { - g.drawLine(side, top, (int) (side + (this.getWidth() * .8)), top); - } - - /* (non-Javadoc) - * @see java.awt.Component#getMinimumSize() - */ - @Override - public Dimension getMinimumSize() { - return new Dimension(100, 60); - } - - /* (non-Javadoc) - * @see java.awt.Component#getPreferredSize() - */ - @Override - public Dimension getPreferredSize() { - return new Dimension(250, 60); - } - - /* (non-Javadoc) - * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent) - */ - public void componentResized(ComponentEvent e) { - int width = this.getWidth(); - int height = this.getHeight(); - - side = (int) (width * .1); - top = (int) (height * .3); - - width *= .8; - height *= .8; - - oneStep = 1d / (width); - - updateKnotPolygons(); - repaint(); - } - - /** - * Updates all objects representing knots - * Aktualizuje nastavení všech objektů reprezentujících uzly - */ - private void updateKnotPolygons() { - for (KnotPolygon p : knots) { - p.update(oneStep, top, side); - } - - } - - /* (non-Javadoc) - * @see java.awt.event.ComponentListener#componentMoved(java.awt.event.ComponentEvent) - */ - public void componentMoved(ComponentEvent e) { - } - - /* (non-Javadoc) - * @see java.awt.event.ComponentListener#componentShown(java.awt.event.ComponentEvent) - */ - public void componentShown(ComponentEvent e) { - } - - /* (non-Javadoc) - * @see java.awt.event.ComponentListener#componentHidden(java.awt.event.ComponentEvent) - */ - public void componentHidden(ComponentEvent e) { - } - - /* (non-Javadoc) - * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent) - */ - public void mouseDragged(MouseEvent e) { - - if (activeKnot >= 0) { -// preserveState(); - - if (e.getX() >= side && e.getX() <= (getWidth() * .8 + side)) { - knots.get(activeKnot).updateByX(e.getX()); - } else if (e.getX() < side) - knots.get(activeKnot).updateByValue(new Double(0)); - else - knots.get(activeKnot).updateByValue(new Double(1)); - - notificateActionListeners(new ActionEvent(this, - ActionEvent.ACTION_PERFORMED, KNOT_MOVED)); - repaint(); - } - } - -// private void updateXVector() { -// xVector.clear(); -// for(KnotPolygon p:knots){ -// xVector.add(Integer.valueOf(p.xpoints[0])); -// } -// } - - /* (non-Javadoc) - * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent) - */ - public void mouseMoved(MouseEvent e) { - } - - /* (non-Javadoc) - * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent) - */ - public void mouseClicked(MouseEvent e) { - } - - /* (non-Javadoc) - * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent) - */ - public void mousePressed(MouseEvent e) { - int x = e.getX(); - int y = e.getY(); - KnotPolygon p; - this.activeKnot = -1; - for (int i = 0; i < knots.size(); i++) { - p = knots.get(i); - if (p.contains(x, y)) { - activeKnot = i; - break; - } - } - } - - /* (non-Javadoc) - * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent) - */ - public void mouseReleased(MouseEvent e) { - this.activeKnot = -1; - } - - /* (non-Javadoc) - * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent) - */ - public void mouseEntered(MouseEvent e) { - } - - /* (non-Javadoc) - * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent) - */ - public void mouseExited(MouseEvent e) { - } - -// /** -// * Nastaví uzlový vektor -// * @param knots nový uzlový vektor -// */ -// public void setKnots(double[] knots) { -// preserveState(); -// for(double d:knots) -// addKnot(new Double(d)); -// repaint(); -// } - /** - * Sets knotvector - * Nastaví uzlový vektor - * @param knots new knotvector - */ - public void setKnots(float[] knots) { -// preserveState(); - this.knots.clear(); - for(double d:knots) - addKnot(new Double(d)); - repaint(); - } - - /** - * Checks whether knot multiplicity is not bigger than given value - * Zkontroluje, zda násobnost uzlů nepřekročila zadanou hodnotu - * @param maxMulti maximum multiplicity - * @return true if multiplicity is NOT bigger - */ - public boolean checkKnotMulti(int maxMulti) { - updateMultis((Graphics2D) this.getGraphics()); - for(KnotPolygon p:knots) - if(p.getMulti()>maxMulti) - return false; - return true; - } - -// /** -// * Obnosví poslední uložený stav uzlového vektoru -// */ -// public void restoreState() { -// knots.clear(); -// knots.addAll(previousState); -// repaint(); -// } -} diff --git a/src/demos/nurbs/knotslidercomponent/KnotPolygon.java b/src/demos/nurbs/knotslidercomponent/KnotPolygon.java deleted file mode 100755 index 5665392..0000000 --- a/src/demos/nurbs/knotslidercomponent/KnotPolygon.java +++ /dev/null @@ -1,159 +0,0 @@ -package demos.nurbs.knotslidercomponent; - -import java.awt.Polygon; - -/** - * Object representing knot - * Objekt reprezentující uzel v uzlovém vektoru - * @author Tomáš Hráský - * - */ -@SuppressWarnings("serial") -class KnotPolygon extends Polygon implements Comparable { - /** - * Knot value - * Hodnota uzlu - */ - private Double value; - - /** - * Size of change when moved by one pixel - * Velikost změny při posunu o jeden pixel - */ - private double oneStep; - - /** - * Top space - * Horní mezera osy - */ - private int top; - - /** - * Side space - * Boční mezera osy - */ - private int side; - - /** - * Knot multiplicity - * Násobnost uzlu - */ - private int multi; - - /** - * Creates new instance with given values - * Vytvoří instanci se zadanými hodnotami - * @param d knot value - * @param oneStep change of one pixel movement - * @param top top space - * @param side side space - */ - public KnotPolygon(Double d, double oneStep, int top, int side) { - this.value = d; - xpoints = new int[3]; - ypoints = new int[3]; - npoints = 3; - multi=1; - makeCoords(oneStep, top, side); - } - - /** - * Computes coords of polygon representing knot - * Vypočte souřadnice polygonu reprezentujícího uzel - * @param oneStep change of one pixel movement - * @param top top space - * @param side side space - */ - private void makeCoords(double oneStep, int top, int side) { - this.oneStep = oneStep; - this.top = top; - this.side = side; - - int x = (int) (value / oneStep); - x += side; - - xpoints[0] = x; - xpoints[1] = x - 4; - xpoints[2] = x + 4; - ypoints[0] = top + 2; - ypoints[1] = top + 12; - ypoints[2] = top + 12; - - invalidate(); - } - - /** - * Computes coords from set values - * Vypočte souřadnice podle nastavených hodont - */ - private void makeCoords() { - makeCoords(oneStep, top, side); - } - - /** - * Computes coords from given values - * Vypočte souřadnice podle zadaných hodont - * @param oneStep step of one pixel movement - * @param top top space - * @param side side space - */ - public void update(double oneStep, int top, int side) { - makeCoords(oneStep, top, side); - } - - /** - * Updates coords from given coord of polygon top - * Upraví souřadnice podle nové zadané souřadnice vrcholu polygonu - * @param x nová souřadnice vrcholu - */ - public void updateByX(int x) { - value = oneStep * (x - side); - makeCoords(); - } - - /** - * Updates coords from given value of knot - * Upraví souřadnice polygonu podle nové hodnoty - * @param d nová hodnota - */ - public void updateByValue(Double d){ - value=d; - makeCoords(); - } - - public int compareTo(Object o) { - if (o instanceof KnotPolygon) { - KnotPolygon kp = (KnotPolygon) o; - return getValue().compareTo(kp.getValue()); - } else - return 0; - } - - /** - * Returns knot value - * Vrací hodnotu uzlu - * @return knot value - */ - public Double getValue() { - return value; - } - - /** - * Returns knot multiplicity - * Vrací násobnost uzlu - * @return knot multiplicity - */ - public int getMulti() { - return multi; - } - - /** - * Sets knot multiplicity - * Nastavuje násobnost uzlu - * @param multi knot multiplicity - */ - public void setMulti(int multi) { - this.multi = multi; - } - -} diff --git a/src/demos/nurbs/surfaceapp/ActListener.java b/src/demos/nurbs/surfaceapp/ActListener.java deleted file mode 100755 index c55b561..0000000 --- a/src/demos/nurbs/surfaceapp/ActListener.java +++ /dev/null @@ -1,330 +0,0 @@ -package demos.nurbs.surfaceapp; - -import java.awt.AWTEvent; -import java.awt.event.ActionEvent; -import java.util.Collections; -import java.util.Vector; - -import javax.swing.AbstractAction; -import javax.swing.ImageIcon; -import javax.swing.JFileChooser; -import javax.swing.JOptionPane; - -import demos.nurbs.icons.*; - -/** - * Class reacting to events occuring on toolbar and menu - * Třída reagující na události z nástrojové lišty a menu - * @author Tomáš Hráský - * - */ -@SuppressWarnings("serial") -public class ActListener extends AbstractAction -{ - /** - * Parent window - * Odkaz na rodičovské okno - */ - private SurfaceApp app; - /** - * FIle chooser object - * Objekt pro výběr souboru - */ - private JFileChooser fc; - - /** - * Creates new instance with link to parent window - * Vytvoří instanci objektu s odkazem na rodičovské okno - * @param app parent window - */ - public ActListener(SurfaceApp app) { - this.app=app; - fc=new JFileChooser("./"); - } - - /* (non-Javadoc) - * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) - */ - public void actionPerformed(ActionEvent e) { - if(e.getActionCommand()==SurfaceApp.PRIDAT_AC_RADEK){ - if(Surface.getInstance().getPointsInU()>=2){ - Surface surface=Surface.getInstance(); - Vector<Float> lastRow=new Vector<Float>(); - int i; - for(i=surface.getCtrlPoints().length-1;i>=surface.getCtrlPoints().length-surface.getPointsInV()*4;i--){ - lastRow.add(surface.getCtrlPoints()[i]); - } - - Collections.reverse(lastRow); - - for(int j=0;j<lastRow.size();j+=4){ - lastRow.set(j,lastRow.get(j)/lastRow.get(j+3)); - lastRow.set(j+1,lastRow.get(j+1)/lastRow.get(j+3)); - lastRow.set(j+2,lastRow.get(j+2)/lastRow.get(j+3)); - } - - - Vector<Float> prevLastRow=new Vector<Float>(); - for(;i>=surface.getCtrlPoints().length-2*surface.getPointsInV()*4;i--){ - prevLastRow.add(surface.getCtrlPoints()[i]); - } - Collections.reverse(prevLastRow); - - for(int j=0;j<prevLastRow.size();j+=4){ - prevLastRow.set(j,prevLastRow.get(j)/prevLastRow.get(j+3)); - prevLastRow.set(j+1,prevLastRow.get(j+1)/prevLastRow.get(j+3)); - prevLastRow.set(j+2,prevLastRow.get(j+2)/prevLastRow.get(j+3)); - } - - - Vector<Float> diffs=new Vector<Float>(); - for(i=0;i<prevLastRow.size();i++){ - if((i+1)%4==0) - diffs.add(0f); - else - diffs.add(lastRow.get(i)-prevLastRow.get(i)); - } - - - //TODO ošetřit speciální případy (0 nebo 1 řada bodů) - //TODO react to special cases - 0 or 1 row of control points - Vector<Float> newCtrls=new Vector<Float>(); - i=0; - - for(float f:surface.getCtrlPoints()){ - newCtrls.add(f); - } - // newCtrls.addAll(lastRow); - for(i=0;i<lastRow.size();i++){ - newCtrls.add(lastRow.get(i)+diffs.get(i)); - } - - - float[] newCtrlArr=new float[newCtrls.size()]; - i=0; - - for(float f:newCtrls) - newCtrlArr[i++]=f; - - surface.setIsSurfaceFinished(false); - surface.setPointsInU(surface.getPointsInU()+1); - surface.setCtrlPoints(newCtrlArr); - }else{ - //TODO informaci o tom že to lze jen při dvou řádcích, ano ne dialog, pokud ano, tak zavolá akci nové plochy - //TODO inform that this can be done only with two row -> yes/no dialog -> if yes->new surface action - //int retval=JOptionPane.showOptionDialog(null,"Malý počet bodů pro vytvoření nového řádku. Přejete si definovat novou plochu?","Definovat novou plochu?",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,null,JOptionPane.YES_OPTION); - int retval=JOptionPane.showOptionDialog(null,"Not enough points for newe row. Would you like to define new surface?","Define new surface?",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,null,JOptionPane.YES_OPTION); - if(retval==JOptionPane.YES_OPTION) - actionPerformed(new ActionEvent(this,AWTEvent.RESERVED_ID_MAX+1,SurfaceApp.NOVA_AC)); - } - }else if(e.getActionCommand()==SurfaceApp.PRIDAT_AC_SLOUPEC){ - if(Surface.getInstance().getPointsInV()>=2){ - Surface srf = Surface.getInstance(); - Vector<Float> leftCol=new Vector<Float>(); - for(int i=0;i<srf.getCtrlPoints().length;i+=srf.getPointsInV()*4){ - leftCol.add(srf.getCtrlPoints()[i]); - leftCol.add(srf.getCtrlPoints()[i+1]); - leftCol.add(srf.getCtrlPoints()[i+2]); - leftCol.add(srf.getCtrlPoints()[i+3]); - } - Vector<Float> nextCol=new Vector<Float>(); - for(int i=4;i<srf.getCtrlPoints().length;i+=srf.getPointsInV()*4){ - nextCol.add(srf.getCtrlPoints()[i]); - nextCol.add(srf.getCtrlPoints()[i+1]); - nextCol.add(srf.getCtrlPoints()[i+2]); - nextCol.add(srf.getCtrlPoints()[i+3]); - } - // System.out.println(nextCol); - - for(int j=0;j<leftCol.size();j+=4){ - leftCol.set(j,leftCol.get(j)/leftCol.get(j+3)); - leftCol.set(j+1,leftCol.get(j+1)/leftCol.get(j+3)); - leftCol.set(j+2,leftCol.get(j+2)/leftCol.get(j+3)); - } - - for(int j=0;j<nextCol.size();j+=4){ - nextCol.set(j,nextCol.get(j)/nextCol.get(j+3)); - nextCol.set(j+1,nextCol.get(j+1)/nextCol.get(j+3)); - nextCol.set(j+2,nextCol.get(j+2)/nextCol.get(j+3)); - } - - Vector<Float> diffs=new Vector<Float>(); - for(int i=0;i<nextCol.size();i++){ - if((i+1)%4==0) - diffs.add(0f); - else - diffs.add(leftCol.get(i)-nextCol.get(i)); - - } - - Vector<Float> newCol=new Vector<Float>(); - for(int i=0;i<diffs.size();i++){ - newCol.add(leftCol.get(i)+diffs.get(i)); - } - - Vector<float[]> oldPoints=new Vector<float[]>(); - for(int i=0;i<srf.getCtrlPoints().length;i+=4){ - float[] pole={srf.getCtrlPoints()[i],srf.getCtrlPoints()[i+1],srf.getCtrlPoints()[i+2],srf.getCtrlPoints()[i+3]}; - oldPoints.add(pole); - } - - - int index=0; - - Vector<Integer> indexes=new Vector<Integer>(); - - for(int i=index;i<srf.getCtrlPoints().length/4;i+=srf.getPointsInV()){ - indexes.add(i); - } - - // System.out.println(indexes); - int korekce=0; - for(int i=0;i<oldPoints.size();i++) - if(indexes.contains(Integer.valueOf(i))){ - oldPoints.add(i+korekce,null); - // System.out.println(i+korekce); - korekce++; - } - korekce=0; - // for(int i=indexes.size()-1,j=newCol.size()-4;i>=0&&j>=0;i--,j-=4){ - for(int i=0,j=0;i<indexes.size()&&j<newCol.size();i++,j+=4){ - float[] pole={newCol.get(j),newCol.get(j+1),newCol.get(j+2),newCol.get(j+3)}; - oldPoints.set(indexes.get(i)+korekce,pole); - korekce++; - // System.out.println(indexes.get(i)+korekce); - } - - float[] newPoints=new float[oldPoints.size()*4]; - int i=0; - for(float[] f:oldPoints){ - newPoints[i++]=f[0]; - newPoints[i++]=f[1]; - newPoints[i++]=f[2]; - newPoints[i++]=f[3]; - } - srf.setIsSurfaceFinished(false); - srf.setPointsInV(srf.getPointsInV()+1); - srf.setBodIndex(-1); - srf.setCtrlPoints(newPoints); - }else{ - //int retval=JOptionPane.showOptionDialog(null,"Malý počet bodů pro vytvoření nového sloupce. Přejete si definovat novou plochu?","Definovat novou plochu?",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,null,JOptionPane.YES_OPTION); - int retval=JOptionPane.showOptionDialog(null,"Not enough points for new column. Would you like to define new surface?","Define new surface?",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,null,JOptionPane.YES_OPTION); - if(retval==JOptionPane.YES_OPTION) - actionPerformed(new ActionEvent(this,AWTEvent.RESERVED_ID_MAX+1,SurfaceApp.NOVA_AC)); - } - }else if(e.getActionCommand()==SurfaceApp.SMAZAT_AC_RADEK){ - - }else if(e.getActionCommand()==SurfaceApp.SMAZAT_AC_SLOUPEC){ - - }else if(e.getActionCommand()==SurfaceApp.UZAVRENY_AC){ - app.uzavernyKV(); - }else if(e.getActionCommand()==SurfaceApp.OTEVRENY_AC){ - app.otevrenyKV(); - }else if(e.getActionCommand()==SurfaceApp.ULOZIT_AC){ - if(fc.showSaveDialog(app)==JFileChooser.APPROVE_OPTION){ - Surface.getInstance().persist(fc.getSelectedFile()); - } - }else if(e.getActionCommand()==SurfaceApp.NACIST_AC){ - if(fc.showOpenDialog(app)==JFileChooser.APPROVE_OPTION){ - try{ - Surface.getInstance().unPersist(fc.getSelectedFile()); - app.updateGLCanvas(); - app.selectMoveButt(); - app.updateJKnotSlider(); - }catch(Exception e1){ - //JOptionPane.showMessageDialog(app,"Chyba při načítání ze souboru","Chyba",JOptionPane.ERROR_MESSAGE); - JOptionPane.showMessageDialog(app,"Error reading file","Error",JOptionPane.ERROR_MESSAGE); - } - } - }else if(e.getActionCommand()==SurfaceApp.NOVA_AC){ - Surface.getInstance().clear(); - app.getMouseListener().setBodIndex(-1); - Surface.getInstance().setBodIndex(-1); - app.updateGLCanvas(); - app.updateJKnotSlider(); - - String retval2=null,retval=null; - //retval=JOptionPane.showInputDialog(null,"Zadejte počet bodů ve směru paramteru U (řádků)",new Integer(4)); - retval=JOptionPane.showInputDialog(null,"Number of control points in U direction (rows)",new Integer(4)); - if(retval!=null) - //retval2=JOptionPane.showInputDialog(null,"Zadejte počet bodů ve směru paramteru V (sloupců)",new Integer(4)); - retval2=JOptionPane.showInputDialog(null,"Number of control points in V direction (columns)",new Integer(4)); - if(retval!=null&&retval2!=null){ - try{ - int radku=(new Integer(retval)).intValue(); - int sloupcu=(new Integer(retval2)).intValue(); - - Surface.getInstance().setPointsInU(radku); - Surface.getInstance().setPointsInV(sloupcu); - - int krokX=600/sloupcu; - int krokZ=-600/radku; - - Vector<Float> souradnice=new Vector<Float>(); - float x = 0,z = 0; - for(int i=0;i<radku;i++){ - z=i*krokZ; - for(int j=0;j<sloupcu;j++){ - x=j*krokX; - souradnice.add(x); - souradnice.add(0f);//Y - souradnice.add(z); - souradnice.add(1f);//W - } - } - - float[] ctrlpoints=new float[souradnice.size()]; - int i=0; - for(Float d:souradnice) - ctrlpoints[i++]=d.floatValue(); - - Surface.getInstance().setCtrlPoints(ctrlpoints); - - - }catch(NumberFormatException ex){ - //JOptionPane.showMessageDialog(null,"Chybný formát přirozeného čísla","Chyba!",JOptionPane.ERROR_MESSAGE); - JOptionPane.showMessageDialog(null,"Wrong natural number format","Error!",JOptionPane.ERROR_MESSAGE); - } - } - - app.updateGLCanvas(); - - }else if(e.getActionCommand()==SurfaceApp.EXIT_AC){ - //TODO dotaz na uložení ?? - System.exit(0); - }else if(e.getActionCommand()==SurfaceApp.STUPEN_AC){ - try{ - String retval2=null; - //String retval=JOptionPane.showInputDialog(null,"Zadejte stupeň křivky ve směru parametru U",new Integer(Surface.getInstance().getOrderU())); - String retval=JOptionPane.showInputDialog(null,"Degree in U direction",new Integer(Surface.getInstance().getOrderU())); - if(retval!=null) - retval2=JOptionPane.showInputDialog(null,"Degree in V direction",new Integer(Surface.getInstance().getOrderV())); - if(retval!=null&&retval2!=null){ - int stupen=(new Integer(retval)).intValue(); - int stupenV=(new Integer(retval2)).intValue(); - Surface.getInstance().setOrderU(stupen); - Surface.getInstance().setOrderV(stupenV); - Surface.getInstance().setIsSurfaceFinished(false); - } - }catch (NumberFormatException ex){ - JOptionPane.showMessageDialog(null,"Wrong nutural number format","Error!",JOptionPane.ERROR_MESSAGE); - } - }else if(e.getActionCommand()==SurfaceApp.INFO_AC){ - /* - JOptionPane.showMessageDialog(null,"Ukázková aplikace rozšířené funkcionality knihovny JOGL\n" + - "Autor: Tomáš Hráský\n" + - "Součást bakalářské práce na téma Softwarová implementace NURBS křivek a ploch\n" + - "2007 Fakulta Informatiky a Managementu UHK\n" + - "Pro serializaci objektů využívá open source framework Simple XML - http://simple.sourceforge.net/","O aplikaci",JOptionPane.INFORMATION_MESSAGE,IconFactory.getIcon("demos/nurbs/icons/info.png")); - */ - JOptionPane.showMessageDialog(null,"Example aplication of extended functionality JOGL library\n" + - "Author: Tomáš Hráský\n" + - "Part of bachelor's degree thesis Software implementation of NURBS curves and surfaces\n" + - "2007 Faculty of Informatics and Management University of Hradec Králové\n" + - "Simple XML framework is used for object serialization - http://simple.sourceforge.net/","About",JOptionPane.INFORMATION_MESSAGE,IconFactory.getIcon("demos/nurbs/icons/info.png")); - - } - - app.getMouseListener().setActionType(e.getActionCommand()); - } -} diff --git a/src/demos/nurbs/surfaceapp/GLListener.java b/src/demos/nurbs/surfaceapp/GLListener.java deleted file mode 100755 index fe0918f..0000000 --- a/src/demos/nurbs/surfaceapp/GLListener.java +++ /dev/null @@ -1,336 +0,0 @@ -package demos.nurbs.surfaceapp; - -import javax.media.opengl.GL; -import javax.media.opengl.GLAutoDrawable; -import javax.media.opengl.GLEventListener; -import javax.media.opengl.glu.*; - -import com.sun.opengl.util.GLUT; - -/** - * Listener reacting to events occuring on OpenGL canvas - * Listener reagující na události na OpenGL plátně - * @author Tomáš Hráský - * - */ -public class GLListener implements GLEventListener { - /** - * Object realizing OpenGL functions - * objekt realizující základní OpenGL funkce - */ - private GL gl; - - /** - * GLU object - * Objekt realizující funkce nadstavbové knihovny GLU - */ - private GLU glu; - - /** - * NURBS object - * OpenGL Objekt NURBS křivek a ploch - */ - private GLUnurbs nurbs; - - /** - * Parent window - * Rodičovské okno - */ - private SurfaceApp app; - - /** - * Coords of canvas corners - * Viewport (souřadnice rohů plátna) - */ - private int[] viewport; - - /** - * Modelview matrix - * Matice modelview - */ - private double[] mvmatrix; - - /** - * Projection matrix - * Projekční matice - */ - private double[] projmatrix; - - - /** - * Light source position vector - * Vektor zdroje světla - */ - private float[] lightPosition = {0.0f, 1.0f, 0f, 1.0f}; - - /** - * Seconf light source position vector - * Vektor druhého zdroje světla - */ - private float[] lightPosition3 = {0.0f, 0.0f, 1.0f, 0.0f}; - - /** - * Ambient light vector - * Ambientní složka světla - */ - private float[] lightAmbient={1f,1f,1f,1f}; - - /** - * Difusion material vector - * Difuzní složka barvy materiálu - */ - private float[] materialDiffuse={0.8f, 0.4f, 0.4f, 1.0f}; - - /** - * Difusion ligh vector - * Difúzní složka světla - */ - private float[] lightDiffuse={1f, 1f, 1f, 1.0f}; - - /** - * GLUT object - * Objekt pro podporu funkcionality GL utility toolkit - */ - private GLUT glut; - - - /** - * Creates new GLListener with link to parent window - * Vytvoří nový GLListener s odkazem na rodičovské okno - * @param app parent window - */ - public GLListener(SurfaceApp app) { - this.app = app; - - viewport = new int[4]; - mvmatrix=new double[16]; - projmatrix=new double[16]; - - } - - /* (non-Javadoc) - * @see javax.media.opengl.GLEventListener#init(javax.media.opengl.GLAutoDrawable) - */ - public void init(GLAutoDrawable drawable) { - this.gl = drawable.getGL(); - this.glu = new GLU(); - this.glut = new GLUT(); - - - this.nurbs = glu.gluNewNurbsRenderer(); - // gl.glClearColor(0, 0, 0, 0); - gl.glClearColor(1, 1, 1, 0); - gl.glEnable(GL.GL_DEPTH_TEST); - gl.glDepthFunc(GL.GL_LESS); - gl.glClearDepth(1000.0f); - gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST); - } - - /* (non-Javadoc) - * @see javax.media.opengl.GLEventListener#display(javax.media.opengl.GLAutoDrawable) - */ - public void display(GLAutoDrawable drawable) { - - gl.glClear(GL.GL_COLOR_BUFFER_BIT| GL.GL_DEPTH_BUFFER_BIT); - - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - - glu.gluLookAt(0,0,400, 0,0,0, 0,1,0); - - - - // gl.glPushMatrix(); - gl.glShadeModel(GL.GL_SMOOTH); - gl.glPolygonMode(GL.GL_FRONT, GL.GL_FILL); - gl.glPolygonMode(GL.GL_BACK, GL.GL_FILL); - gl.glDisable(GL.GL_CULL_FACE); - - gl.glMaterialfv(GL.GL_FRONT, GL.GL_DIFFUSE, materialDiffuse,0); - gl.glMaterialfv(GL.GL_BACK, GL.GL_DIFFUSE, materialDiffuse,0); - - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, lightPosition,0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, materialDiffuse,0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, lightAmbient,0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_SPECULAR, lightAmbient,0); - - gl.glLightfv(GL.GL_LIGHT2, GL.GL_POSITION, lightPosition3,0); - gl.glLightfv(GL.GL_LIGHT2, GL.GL_DIFFUSE, lightDiffuse,0); - - if(app.isLightingEnabled())gl.glEnable(GL.GL_LIGHTING); - else gl.glDisable(GL.GL_LIGHTING); - gl.glEnable(GL.GL_LIGHT0); - gl.glEnable(GL.GL_LIGHT2); - // gl.glPopMatrix(); - - - gl.glTranslatef(-200,-200,-100); - - gl.glRotatef(app.getXrotation(),1,0,0); - gl.glRotatef(app.getYrotation(),0,1,0); - gl.glRotatef(app.getZrotation(),0,0,1); - - - // glut.glutSolidTeapot(20); - - float[] knotsU = Surface.getInstance().getKnotsU(); - float[] knotsV = Surface.getInstance().getKnotsV(); - float[] ctrlpoints = Surface.getInstance().getCtrlPoints(); - - - - gl.glGetIntegerv(GL.GL_VIEWPORT,viewport,0); - gl.glGetDoublev(GL.GL_MODELVIEW_MATRIX,mvmatrix,0); - gl.glGetDoublev(GL.GL_PROJECTION_MATRIX,projmatrix,0); - - gl.glEnable(GL.GL_LINE_SMOOTH); - gl.glEnable(GL.GL_BLEND); - gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA); - gl.glHint(GL.GL_LINE_SMOOTH_HINT, GL.GL_DONT_CARE); - - gl.glLineWidth(3); - - //TODO getpointsinV or inU - if(Surface.getInstance().isSurfaceFinished()){ - glu.gluBeginSurface(nurbs); - glu.gluNurbsSurface(nurbs, - knotsU.length, - knotsU, - knotsV.length, - knotsV, - Surface.getInstance().getPointsInV()*4, - 4, - ctrlpoints, - Surface.getInstance().getOrderU(), - Surface.getInstance().getOrderV(), - GL.GL_MAP2_VERTEX_4); - glu.gluEndSurface(nurbs); - } - - gl.glDisable(GL.GL_LIGHTING); - - // gl.glColor3f(1,1,1); - gl.glColor3f(0,0,0); - gl.glPointSize(5); - gl.glBegin(GL.GL_POINTS); - for (int i = 0; i < ctrlpoints.length / 4; i++) { - gl.glVertex3d(ctrlpoints[i * 4]/ctrlpoints[i * 4 + 3], ctrlpoints[i * 4 + 1]/ctrlpoints[i * 4 + 3], - ctrlpoints[i * 4 + 2]/ctrlpoints[i * 4 + 3]); - } - gl.glEnd(); - - // double[] coords = new double[3]; - for (int i = 0; i < ctrlpoints.length / 4; i++) { - gl.glRasterPos3d(ctrlpoints[i * 4]/ctrlpoints[i * 4 + 3], ctrlpoints[i * 4 + 1]/ctrlpoints[i * 4 + 3], - ctrlpoints[i * 4 + 2]/ctrlpoints[i * 4 + 3]); - //gl.glRasterPos2f((int)coords[0], (int)(viewport[3]-coords[1]-1-5)); - // gl.glRasterPos2d(20,20); - glut.glutBitmapString(GLUT.BITMAP_HELVETICA_18,String.valueOf(i+1)); - - } - - - - //TODO zobrazovat síť - musí to být pomocí dvou vnořených forcyklů - //TODO draw mesh - it needs two nested for statements - gl.glLineWidth(1); - // gl.glBegin(GL.GL_LINE_STRIP); - int baseIndex=0 ; - - - - - //"příčná žebra" - //"cross ribs" - for(int i=0;i<Surface.getInstance().getPointsInU();i++){ - gl.glBegin(GL.GL_LINE_STRIP); - for(int j=0;j<Surface.getInstance().getPointsInV();j++){ - baseIndex=i*Surface.getInstance().getPointsInV()*4+j*4; - gl.glVertex3f(ctrlpoints[baseIndex+0]/ctrlpoints[baseIndex+3], - ctrlpoints[baseIndex+1]/ctrlpoints[baseIndex+3], - ctrlpoints[baseIndex+2]/ctrlpoints[baseIndex+3]); - } - gl.glEnd(); - } - //"podélná žebra" - //"alongway ribs" - for(int j=0;j<Surface.getInstance().getPointsInV();j++){ - gl.glBegin(GL.GL_LINE_STRIP); - for(int i=0;i<Surface.getInstance().getPointsInU();i++){ - baseIndex=i*Surface.getInstance().getPointsInV()*4+j*4; - gl.glVertex3f(ctrlpoints[baseIndex+0]/ctrlpoints[baseIndex+3], - ctrlpoints[baseIndex+1]/ctrlpoints[baseIndex+3], - ctrlpoints[baseIndex+2]/ctrlpoints[baseIndex+3]); - } - gl.glEnd(); - } - - gl.glColor3f(0,0,1); - if(Surface.getInstance().getBodIndex()>=0){ - gl.glPointSize(8); - gl.glBegin(GL.GL_POINTS); - int i=Surface.getInstance().getBodIndex(); - gl.glVertex3d(ctrlpoints[i * 4]/ctrlpoints[i * 4 + 3], ctrlpoints[i * 4 + 1]/ctrlpoints[i * 4 + 3], - ctrlpoints[i * 4 + 2]/ctrlpoints[i * 4 + 3]); - gl.glEnd(); - } - - - } - - /* (non-Javadoc) - * @see javax.media.opengl.GLEventListener#reshape(javax.media.opengl.GLAutoDrawable, int, int, int, int) - */ - public void reshape(GLAutoDrawable drawable, int x, int y, int width, - int height) { - gl.glViewport(0, 0, width, height); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluPerspective(65.0, (double) width / height, 0.1, 1000.0); - // gl.glScalef(1, -1, 1); - // gl.glTranslatef(0, -drawable.getHeight(), 0); - - } - - /* (non-Javadoc) - * @see javax.media.opengl.GLEventListener#displayChanged(javax.media.opengl.GLAutoDrawable, boolean, boolean) - */ - public void displayChanged(GLAutoDrawable arg0, boolean arg1, boolean arg2) { - } - - /** - * Returns GLU object in use - * Vrací používáný GLU objekt - * @return GLU objekt - */ - public GLU getGlu() { - return glu; - } - - /** - * Returns viewpord corners coords - * Vrací souřadnice rohů viewportu - * @return array with viewport corner's coords - */ - public int[] getViewport() { - return viewport; - } - - /** - * Returns model view matrix - * Vrací modelview matici - * @return modelview matrix - */ - public double[] getMvmatrix() { - return mvmatrix; - } - - /** - * Returns projection matrix - * Vrací projekční matici - * @return projection matrix - */ - public double[] getProjmatrix() { - return projmatrix; - } -} diff --git a/src/demos/nurbs/surfaceapp/MyFloat.java b/src/demos/nurbs/surfaceapp/MyFloat.java deleted file mode 100755 index a9bd7cf..0000000 --- a/src/demos/nurbs/surfaceapp/MyFloat.java +++ /dev/null @@ -1,55 +0,0 @@ -package demos.nurbs.surfaceapp; - -import simple.xml.Attribute; -import simple.xml.Root; - -/** - * Class for serializing decimal point number using SimpleXML - * Třída umožňující serializaci desetinného čísla ve formátu plovoucí čárky (float) - * @author Tomáš Hráský - * - */ -@Root(name="floatval") -public class MyFloat { - /** - * Value - * Hodnota - */ - @Attribute(name="val") - private float value; - - /** - * Constructor, sets value to 0 - * Konstrktor, hodnota je defaultně 0 - */ - public MyFloat(){ - value=0; - } - - /** - * Creates instance with specified value - * Vytvoří instanci objektu s požadovanou hodnotou - * @param f value - */ - public MyFloat(float f) { - value = f; - } - - /** - * Returns value of decimal number - * Vrací hodnotu des. čísla - * @return value - */ - public float getValue() { - return value; - } - - /** - * Sets value - * Nastavuje hodnotu objektu - * @param value value - */ - public void setValue(float value) { - this.value = value; - } -} diff --git a/src/demos/nurbs/surfaceapp/PrintfFormat.java b/src/demos/nurbs/surfaceapp/PrintfFormat.java deleted file mode 100755 index 153460a..0000000 --- a/src/demos/nurbs/surfaceapp/PrintfFormat.java +++ /dev/null @@ -1,3090 +0,0 @@ -package demos.nurbs.surfaceapp; -// -// (c) 2000 Sun Microsystems, Inc. -// ALL RIGHTS RESERVED -// -// License Grant- -// -// -// Permission to use, copy, modify, and distribute this Software and its -// documentation for NON-COMMERCIAL or COMMERCIAL purposes and without fee is -// hereby granted. -// -// This Software is provided "AS IS". All express warranties, including any -// implied warranty of merchantability, satisfactory quality, fitness for a -// particular purpose, or non-infringement, are disclaimed, except to the extent -// that such disclaimers are held to be legally invalid. -// -// You acknowledge that Software is not designed, licensed or intended for use in -// the design, construction, operation or maintenance of any nuclear facility -// ("High Risk Activities"). Sun disclaims any express or implied warranty of -// fitness for such uses. -// -// Please refer to the file http://www.sun.com/policies/trademarks/ for further -// important trademark information and to -// http://java.sun.com/nav/business/index.html for further important licensing -// information for the Java Technology. -// - - -import java.util.Enumeration; -import java.util.Vector; -import java.util.Locale; -import java.text.DecimalFormatSymbols; - -/** - * PrintfFormat allows the formatting of an array of - * objects embedded within a string. Primitive types - * must be passed using wrapper types. The formatting - * is controlled by a control string. - *<p> - * A control string is a Java string that contains a - * control specification. The control specification - * starts at the first percent sign (%) in the string, - * provided that this percent sign - *<ol> - *<li>is not escaped protected by a matching % or is - * not an escape % character, - *<li>is not at the end of the format string, and - *<li>precedes a sequence of characters that parses as - * a valid control specification. - *</ol> - *</p><p> - * A control specification usually takes the form: - *<pre> % ['-+ #0]* [0..9]* { . [0..9]* }+ - * { [hlL] }+ [idfgGoxXeEcs] - *</pre> - * There are variants of this basic form that are - * discussed below.</p> - *<p> - * The format is composed of zero or more directives - * defined as follows: - *<ul> - *<li>ordinary characters, which are simply copied to - * the output stream; - *<li>escape sequences, which represent non-graphic - * characters; and - *<li>conversion specifications, each of which - * results in the fetching of zero or more arguments. - *</ul></p> - *<p> - * The results are undefined if there are insufficient - * arguments for the format. Usually an unchecked - * exception will be thrown. If the format is - * exhausted while arguments remain, the excess - * arguments are evaluated but are otherwise ignored. - * In format strings containing the % form of - * conversion specifications, each argument in the - * argument list is used exactly once.</p> - * <p> - * Conversions can be applied to the <code>n</code>th - * argument after the format in the argument list, - * rather than to the next unused argument. In this - * case, the conversion characer % is replaced by the - * sequence %<code>n</code>$, where <code>n</code> is - * a decimal integer giving the position of the - * argument in the argument list.</p> - * <p> - * In format strings containing the %<code>n</code>$ - * form of conversion specifications, each argument - * in the argument list is used exactly once.</p> - * - *<h4>Escape Sequences</h4> - *<p> - * The following table lists escape sequences and - * associated actions on display devices capable of - * the action. - *<table> - *<tr><th align=left>Sequence</th> - * <th align=left>Name</th> - * <th align=left>Description</th></tr> - *<tr><td>\\</td><td>backlash</td><td>None. - *</td></tr> - *<tr><td>\a</td><td>alert</td><td>Attempts to alert - * the user through audible or visible - * notification. - *</td></tr> - *<tr><td>\b</td><td>backspace</td><td>Moves the - * printing position to one column before - * the current position, unless the - * current position is the start of a line. - *</td></tr> - *<tr><td>\f</td><td>form-feed</td><td>Moves the - * printing position to the initial - * printing position of the next logical - * page. - *</td></tr> - *<tr><td>\n</td><td>newline</td><td>Moves the - * printing position to the start of the - * next line. - *</td></tr> - *<tr><td>\r</td><td>carriage-return</td><td>Moves - * the printing position to the start of - * the current line. - *</td></tr> - *<tr><td>\t</td><td>tab</td><td>Moves the printing - * position to the next implementation- - * defined horizontal tab position. - *</td></tr> - *<tr><td>\v</td><td>vertical-tab</td><td>Moves the - * printing position to the start of the - * next implementation-defined vertical - * tab position. - *</td></tr> - *</table></p> - *<h4>Conversion Specifications</h4> - *<p> - * Each conversion specification is introduced by - * the percent sign character (%). After the character - * %, the following appear in sequence:</p> - *<p> - * Zero or more flags (in any order), which modify the - * meaning of the conversion specification.</p> - *<p> - * An optional minimum field width. If the converted - * value has fewer characters than the field width, it - * will be padded with spaces by default on the left; - * t will be padded on the right, if the left- - * adjustment flag (-), described below, is given to - * the field width. The field width takes the form - * of a decimal integer. If the conversion character - * is s, the field width is the the minimum number of - * characters to be printed.</p> - *<p> - * An optional precision that gives the minumum number - * of digits to appear for the d, i, o, x or X - * conversions (the field is padded with leading - * zeros); the number of digits to appear after the - * radix character for the e, E, and f conversions, - * the maximum number of significant digits for the g - * and G conversions; or the maximum number of - * characters to be written from a string is s and S - * conversions. The precision takes the form of an - * optional decimal digit string, where a null digit - * string is treated as 0. If a precision appears - * with a c conversion character the precision is - * ignored. - * </p> - *<p> - * An optional h specifies that a following d, i, o, - * x, or X conversion character applies to a type - * short argument (the argument will be promoted - * according to the integral promotions and its value - * converted to type short before printing).</p> - *<p> - * An optional l (ell) specifies that a following - * d, i, o, x, or X conversion character applies to a - * type long argument.</p> - *<p> - * A field width or precision may be indicated by an - * asterisk (*) instead of a digit string. In this - * case, an integer argument supplised the field width - * precision. The argument that is actually converted - * is not fetched until the conversion letter is seen, - * so the the arguments specifying field width or - * precision must appear before the argument (if any) - * to be converted. If the precision argument is - * negative, it will be changed to zero. A negative - * field width argument is taken as a - flag, followed - * by a positive field width.</p> - * <p> - * In format strings containing the %<code>n</code>$ - * form of a conversion specification, a field width - * or precision may be indicated by the sequence - * *<code>m</code>$, where m is a decimal integer - * giving the position in the argument list (after the - * format argument) of an integer argument containing - * the field width or precision.</p> - * <p> - * The format can contain either numbered argument - * specifications (that is, %<code>n</code>$ and - * *<code>m</code>$), or unnumbered argument - * specifications (that is % and *), but normally not - * both. The only exception to this is that %% can - * be mixed with the %<code>n</code>$ form. The - * results of mixing numbered and unnumbered argument - * specifications in a format string are undefined.</p> - * - *<h4>Flag Characters</h4> - *<p> - * The flags and their meanings are:</p> - *<dl> - * <dt>'<dd> integer portion of the result of a - * decimal conversion (%i, %d, %f, %g, or %G) will - * be formatted with thousands' grouping - * characters. For other conversions the flag - * is ignored. The non-monetary grouping - * character is used. - * <dt>-<dd> result of the conversion is left-justified - * within the field. (It will be right-justified - * if this flag is not specified).</td></tr> - * <dt>+<dd> result of a signed conversion always - * begins with a sign (+ or -). (It will begin - * with a sign only when a negative value is - * converted if this flag is not specified.) - * <dt><space><dd> If the first character of a - * signed conversion is not a sign, a space - * character will be placed before the result. - * This means that if the space character and + - * flags both appear, the space flag will be - * ignored. - * <dt>#<dd> value is to be converted to an alternative - * form. For c, d, i, and s conversions, the flag - * has no effect. For o conversion, it increases - * the precision to force the first digit of the - * result to be a zero. For x or X conversion, a - * non-zero result has 0x or 0X prefixed to it, - * respectively. For e, E, f, g, and G - * conversions, the result always contains a radix - * character, even if no digits follow the radix - * character (normally, a decimal point appears in - * the result of these conversions only if a digit - * follows it). For g and G conversions, trailing - * zeros will not be removed from the result as - * they normally are. - * <dt>0<dd> d, i, o, x, X, e, E, f, g, and G - * conversions, leading zeros (following any - * indication of sign or base) are used to pad to - * the field width; no space padding is - * performed. If the 0 and - flags both appear, - * the 0 flag is ignored. For d, i, o, x, and X - * conversions, if a precision is specified, the - * 0 flag will be ignored. For c conversions, - * the flag is ignored. - *</dl> - * - *<h4>Conversion Characters</h4> - *<p> - * Each conversion character results in fetching zero - * or more arguments. The results are undefined if - * there are insufficient arguments for the format. - * Usually, an unchecked exception will be thrown. - * If the format is exhausted while arguments remain, - * the excess arguments are ignored.</p> - * - *<p> - * The conversion characters and their meanings are: - *</p> - *<dl> - * <dt>d,i<dd>The int argument is converted to a - * signed decimal in the style [-]dddd. The - * precision specifies the minimum number of - * digits to appear; if the value being - * converted can be represented in fewer - * digits, it will be expanded with leading - * zeros. The default precision is 1. The - * result of converting 0 with an explicit - * precision of 0 is no characters. - * <dt>o<dd> The int argument is converted to unsigned - * octal format in the style ddddd. The - * precision specifies the minimum number of - * digits to appear; if the value being - * converted can be represented in fewer - * digits, it will be expanded with leading - * zeros. The default precision is 1. The - * result of converting 0 with an explicit - * precision of 0 is no characters. - * <dt>x<dd> The int argument is converted to unsigned - * hexadecimal format in the style dddd; the - * letters abcdef are used. The precision - * specifies the minimum numberof digits to - * appear; if the value being converted can be - * represented in fewer digits, it will be - * expanded with leading zeros. The default - * precision is 1. The result of converting 0 - * with an explicit precision of 0 is no - * characters. - * <dt>X<dd> Behaves the same as the x conversion - * character except that letters ABCDEF are - * used instead of abcdef. - * <dt>f<dd> The floating point number argument is - * written in decimal notation in the style - * [-]ddd.ddd, where the number of digits after - * the radix character (shown here as a decimal - * point) is equal to the precision - * specification. A Locale is used to determine - * the radix character to use in this format. - * If the precision is omitted from the - * argument, six digits are written after the - * radix character; if the precision is - * explicitly 0 and the # flag is not specified, - * no radix character appears. If a radix - * character appears, at least 1 digit appears - * before it. The value is rounded to the - * appropriate number of digits. - * <dt>e,E<dd>The floating point number argument is - * written in the style [-]d.ddde{+-}dd - * (the symbols {+-} indicate either a plus or - * minus sign), where there is one digit before - * the radix character (shown here as a decimal - * point) and the number of digits after it is - * equal to the precision. A Locale is used to - * determine the radix character to use in this - * format. When the precision is missing, six - * digits are written after the radix character; - * if the precision is 0 and the # flag is not - * specified, no radix character appears. The - * E conversion will produce a number with E - * instead of e introducing the exponent. The - * exponent always contains at least two digits. - * However, if the value to be written requires - * an exponent greater than two digits, - * additional exponent digits are written as - * necessary. The value is rounded to the - * appropriate number of digits. - * <dt>g,G<dd>The floating point number argument is - * written in style f or e (or in sytle E in the - * case of a G conversion character), with the - * precision specifying the number of - * significant digits. If the precision is - * zero, it is taken as one. The style used - * depends on the value converted: style e - * (or E) will be used only if the exponent - * resulting from the conversion is less than - * -4 or greater than or equal to the precision. - * Trailing zeros are removed from the result. - * A radix character appears only if it is - * followed by a digit. - * <dt>c,C<dd>The integer argument is converted to a - * char and the result is written. - * - * <dt>s,S<dd>The argument is taken to be a string and - * bytes from the string are written until the - * end of the string or the number of bytes - * indicated by the precision specification of - * the argument is reached. If the precision - * is omitted from the argument, it is taken to - * be infinite, so all characters up to the end - * of the string are written. - * <dt>%<dd>Write a % character; no argument is - * converted. - *</dl> - *<p> - * If a conversion specification does not match one of - * the above forms, an IllegalArgumentException is - * thrown and the instance of PrintfFormat is not - * created.</p> - *<p> - * If a floating point value is the internal - * representation for infinity, the output is - * [+]Infinity, where Infinity is either Infinity or - * Inf, depending on the desired output string length. - * Printing of the sign follows the rules described - * above.</p> - *<p> - * If a floating point value is the internal - * representation for "not-a-number," the output is - * [+]NaN. Printing of the sign follows the rules - * described above.</p> - *<p> - * In no case does a non-existent or small field width - * cause truncation of a field; if the result of a - * conversion is wider than the field width, the field - * is simply expanded to contain the conversion result. - *</p> - *<p> - * The behavior is like printf. One exception is that - * the minimum number of exponent digits is 3 instead - * of 2 for e and E formats when the optional L is used - * before the e, E, g, or G conversion character. The - * optional L does not imply conversion to a long long - * double. </p> - * <p> - * The biggest divergence from the C printf - * specification is in the use of 16 bit characters. - * This allows the handling of characters beyond the - * small ASCII character set and allows the utility to - * interoperate correctly with the rest of the Java - * runtime environment.</p> - *<p> - * Omissions from the C printf specification are - * numerous. All the known omissions are present - * because Java never uses bytes to represent - * characters and does not have pointers:</p> - *<ul> - * <li>%c is the same as %C. - * <li>%s is the same as %S. - * <li>u, p, and n conversion characters. - * <li>%ws format. - * <li>h modifier applied to an n conversion character. - * <li>l (ell) modifier applied to the c, n, or s - * conversion characters. - * <li>ll (ell ell) modifier to d, i, o, u, x, or X - * conversion characters. - * <li>ll (ell ell) modifier to an n conversion - * character. - * <li>c, C, d,i,o,u,x, and X conversion characters - * apply to Byte, Character, Short, Integer, Long - * types. - * <li>f, e, E, g, and G conversion characters apply - * to Float and Double types. - * <li>s and S conversion characters apply to String - * types. - * <li>All other reference types can be formatted - * using the s or S conversion characters only. - *</ul> - * <p> - * Most of this specification is quoted from the Unix - * man page for the sprintf utility.</p> - * - * @author Allan Jacobs - * @version 1 - * Release 1: Initial release. - * Release 2: Asterisk field widths and precisions - * %n$ and *m$ - * Bug fixes - * g format fix (2 digits in e form corrupt) - * rounding in f format implemented - * round up when digit not printed is 5 - * formatting of -0.0f - * round up/down when last digits are 50000... - */ -public class PrintfFormat { - /** - * Constructs an array of control specifications - * possibly preceded, separated, or followed by - * ordinary strings. Control strings begin with - * unpaired percent signs. A pair of successive - * percent signs designates a single percent sign in - * the format. - * @param fmtArg Control string. - * @exception IllegalArgumentException if the control - * string is null, zero length, or otherwise - * malformed. - */ - public PrintfFormat(String fmtArg) - throws IllegalArgumentException { - this(Locale.getDefault(),fmtArg); - } - /** - * Constructs an array of control specifications - * possibly preceded, separated, or followed by - * ordinary strings. Control strings begin with - * unpaired percent signs. A pair of successive - * percent signs designates a single percent sign in - * the format. - * @param fmtArg Control string. - * @exception IllegalArgumentException if the control - * string is null, zero length, or otherwise - * malformed. - */ - public PrintfFormat(Locale locale,String fmtArg) - throws IllegalArgumentException { - dfs = new DecimalFormatSymbols(locale); - int ePos=0; - ConversionSpecification sFmt=null; - String unCS = this.nonControl(fmtArg,0); - if (unCS!=null) { - sFmt = new ConversionSpecification(); - sFmt.setLiteral(unCS); - vFmt.addElement(sFmt); - } - while(cPos!=-1 && cPos<fmtArg.length()) { - for (ePos=cPos+1; ePos<fmtArg.length(); - ePos++) { - char c=0; - c = fmtArg.charAt(ePos); - if (c == 'i') break; - if (c == 'd') break; - if (c == 'f') break; - if (c == 'g') break; - if (c == 'G') break; - if (c == 'o') break; - if (c == 'x') break; - if (c == 'X') break; - if (c == 'e') break; - if (c == 'E') break; - if (c == 'c') break; - if (c == 's') break; - if (c == '%') break; - } - ePos=Math.min(ePos+1,fmtArg.length()); - sFmt = new ConversionSpecification( - fmtArg.substring(cPos,ePos)); - vFmt.addElement(sFmt); - unCS = this.nonControl(fmtArg,ePos); - if (unCS!=null) { - sFmt = new ConversionSpecification(); - sFmt.setLiteral(unCS); - vFmt.addElement(sFmt); - } - } - } - /** - * Return a substring starting at - * <code>start</code> and ending at either the end - * of the String <code>s</code>, the next unpaired - * percent sign, or at the end of the String if the - * last character is a percent sign. - * @param s Control string. - * @param start Position in the string - * <code>s</code> to begin looking for the start - * of a control string. - * @return the substring from the start position - * to the beginning of the control string. - */ - private String nonControl(String s,int start) { - String ret=""; - cPos=s.indexOf("%",start); - if (cPos==-1) cPos=s.length(); - return s.substring(start,cPos); - } - /** - * Format an array of objects. Byte, Short, - * Integer, Long, Float, Double, and Character - * arguments are treated as wrappers for primitive - * types. - * @param o The array of objects to format. - * @return The formatted String. - */ - public String sprintf(Object[] o) { - Enumeration e = vFmt.elements(); - ConversionSpecification cs = null; - char c = 0; - int i=0; - StringBuffer sb=new StringBuffer(); - while (e.hasMoreElements()) { - cs = (ConversionSpecification) - e.nextElement(); - c = cs.getConversionCharacter(); - if (c=='\0') sb.append(cs.getLiteral()); - else if (c=='%') sb.append("%"); - else { - if (cs.isPositionalSpecification()) { - i=cs.getArgumentPosition()-1; - if (cs.isPositionalFieldWidth()) { - int ifw=cs.getArgumentPositionForFieldWidth()-1; - cs.setFieldWidthWithArg(((Integer)o[ifw]).intValue()); - } - if (cs.isPositionalPrecision()) { - int ipr=cs.getArgumentPositionForPrecision()-1; - cs.setPrecisionWithArg(((Integer)o[ipr]).intValue()); - } - } - else { - if (cs.isVariableFieldWidth()) { - cs.setFieldWidthWithArg(((Integer)o[i]).intValue()); - i++; - } - if (cs.isVariablePrecision()) { - cs.setPrecisionWithArg(((Integer)o[i]).intValue()); - i++; - } - } - if (o[i] instanceof Byte) - sb.append(cs.internalsprintf( - ((Byte)o[i]).byteValue())); - else if (o[i] instanceof Short) - sb.append(cs.internalsprintf( - ((Short)o[i]).shortValue())); - else if (o[i] instanceof Integer) - sb.append(cs.internalsprintf( - ((Integer)o[i]).intValue())); - else if (o[i] instanceof Long) - sb.append(cs.internalsprintf( - ((Long)o[i]).longValue())); - else if (o[i] instanceof Float) - sb.append(cs.internalsprintf( - ((Float)o[i]).floatValue())); - else if (o[i] instanceof Double) - sb.append(cs.internalsprintf( - ((Double)o[i]).doubleValue())); - else if (o[i] instanceof Character) - sb.append(cs.internalsprintf( - ((Character)o[i]).charValue())); - else if (o[i] instanceof String) - sb.append(cs.internalsprintf( - (String)o[i])); - else - sb.append(cs.internalsprintf( - o[i])); - if (!cs.isPositionalSpecification()) - i++; - } - } - return sb.toString(); - } - /** - * Format nothing. Just use the control string. - * @return the formatted String. - */ - public String sprintf() { - Enumeration e = vFmt.elements(); - ConversionSpecification cs = null; - char c = 0; - StringBuffer sb=new StringBuffer(); - while (e.hasMoreElements()) { - cs = (ConversionSpecification) - e.nextElement(); - c = cs.getConversionCharacter(); - if (c=='\0') sb.append(cs.getLiteral()); - else if (c=='%') sb.append("%"); - } - return sb.toString(); - } - /** - * Format an int. - * @param x The int to format. - * @return The formatted String. - * @exception IllegalArgumentException if the - * conversion character is f, e, E, g, G, s, - * or S. - */ - public String sprintf(int x) - throws IllegalArgumentException { - Enumeration e = vFmt.elements(); - ConversionSpecification cs = null; - char c = 0; - StringBuffer sb=new StringBuffer(); - while (e.hasMoreElements()) { - cs = (ConversionSpecification) - e.nextElement(); - c = cs.getConversionCharacter(); - if (c=='\0') sb.append(cs.getLiteral()); - else if (c=='%') sb.append("%"); - else sb.append(cs.internalsprintf(x)); - } - return sb.toString(); - } - /** - * Format an long. - * @param x The long to format. - * @return The formatted String. - * @exception IllegalArgumentException if the - * conversion character is f, e, E, g, G, s, - * or S. - */ - public String sprintf(long x) - throws IllegalArgumentException { - Enumeration e = vFmt.elements(); - ConversionSpecification cs = null; - char c = 0; - StringBuffer sb=new StringBuffer(); - while (e.hasMoreElements()) { - cs = (ConversionSpecification) - e.nextElement(); - c = cs.getConversionCharacter(); - if (c=='\0') sb.append(cs.getLiteral()); - else if (c=='%') sb.append("%"); - else sb.append(cs.internalsprintf(x)); - } - return sb.toString(); - } - /** - * Format a double. - * @param x The double to format. - * @return The formatted String. - * @exception IllegalArgumentException if the - * conversion character is c, C, s, S, - * d, d, x, X, or o. - */ - public String sprintf(double x) - throws IllegalArgumentException { - Enumeration e = vFmt.elements(); - ConversionSpecification cs = null; - char c = 0; - StringBuffer sb=new StringBuffer(); - while (e.hasMoreElements()) { - cs = (ConversionSpecification) - e.nextElement(); - c = cs.getConversionCharacter(); - if (c=='\0') sb.append(cs.getLiteral()); - else if (c=='%') sb.append("%"); - else sb.append(cs.internalsprintf(x)); - } - return sb.toString(); - } - /** - * Format a String. - * @param x The String to format. - * @return The formatted String. - * @exception IllegalArgumentException if the - * conversion character is neither s nor S. - */ - public String sprintf(String x) - throws IllegalArgumentException { - Enumeration e = vFmt.elements(); - ConversionSpecification cs = null; - char c = 0; - StringBuffer sb=new StringBuffer(); - while (e.hasMoreElements()) { - cs = (ConversionSpecification) - e.nextElement(); - c = cs.getConversionCharacter(); - if (c=='\0') sb.append(cs.getLiteral()); - else if (c=='%') sb.append("%"); - else sb.append(cs.internalsprintf(x)); - } - return sb.toString(); - } - /** - * Format an Object. Convert wrapper types to - * their primitive equivalents and call the - * appropriate internal formatting method. Convert - * Strings using an internal formatting method for - * Strings. Otherwise use the default formatter - * (use toString). - * @param x the Object to format. - * @return the formatted String. - * @exception IllegalArgumentException if the - * conversion character is inappropriate for - * formatting an unwrapped value. - */ - public String sprintf(Object x) - throws IllegalArgumentException { - Enumeration e = vFmt.elements(); - ConversionSpecification cs = null; - char c = 0; - StringBuffer sb=new StringBuffer(); - while (e.hasMoreElements()) { - cs = (ConversionSpecification) - e.nextElement(); - c = cs.getConversionCharacter(); - if (c=='\0') sb.append(cs.getLiteral()); - else if (c=='%') sb.append("%"); - else { - if (x instanceof Byte) - sb.append(cs.internalsprintf( - ((Byte)x).byteValue())); - else if (x instanceof Short) - sb.append(cs.internalsprintf( - ((Short)x).shortValue())); - else if (x instanceof Integer) - sb.append(cs.internalsprintf( - ((Integer)x).intValue())); - else if (x instanceof Long) - sb.append(cs.internalsprintf( - ((Long)x).longValue())); - else if (x instanceof Float) - sb.append(cs.internalsprintf( - ((Float)x).floatValue())); - else if (x instanceof Double) - sb.append(cs.internalsprintf( - ((Double)x).doubleValue())); - else if (x instanceof Character) - sb.append(cs.internalsprintf( - ((Character)x).charValue())); - else if (x instanceof String) - sb.append(cs.internalsprintf( - (String)x)); - else - sb.append(cs.internalsprintf(x)); - } - } - return sb.toString(); - } - /** - *<p> - * ConversionSpecification allows the formatting of - * a single primitive or object embedded within a - * string. The formatting is controlled by a - * format string. Only one Java primitive or - * object can be formatted at a time. - *<p> - * A format string is a Java string that contains - * a control string. The control string starts at - * the first percent sign (%) in the string, - * provided that this percent sign - *<ol> - *<li>is not escaped protected by a matching % or - * is not an escape % character, - *<li>is not at the end of the format string, and - *<li>precedes a sequence of characters that parses - * as a valid control string. - *</ol> - *<p> - * A control string takes the form: - *<pre> % ['-+ #0]* [0..9]* { . [0..9]* }+ - * { [hlL] }+ [idfgGoxXeEcs] - *</pre> - *<p> - * The behavior is like printf. One (hopefully the - * only) exception is that the minimum number of - * exponent digits is 3 instead of 2 for e and E - * formats when the optional L is used before the - * e, E, g, or G conversion character. The - * optional L does not imply conversion to a long - * long double. - */ - private class ConversionSpecification { - /** - * Constructor. Used to prepare an instance - * to hold a literal, not a control string. - */ - ConversionSpecification() { } - /** - * Constructor for a conversion specification. - * The argument must begin with a % and end - * with the conversion character for the - * conversion specification. - * @param fmtArg String specifying the - * conversion specification. - * @exception IllegalArgumentException if the - * input string is null, zero length, or - * otherwise malformed. - */ - ConversionSpecification(String fmtArg) - throws IllegalArgumentException { - if (fmtArg==null) - throw new NullPointerException(); - if (fmtArg.length()==0) - throw new IllegalArgumentException( - "Control strings must have positive"+ - " lengths."); - if (fmtArg.charAt(0)=='%') { - fmt = fmtArg; - pos=1; - setArgPosition(); - setFlagCharacters(); - setFieldWidth(); - setPrecision(); - setOptionalHL(); - if (setConversionCharacter()) { - if (pos==fmtArg.length()) { - if(leadingZeros&&leftJustify) - leadingZeros=false; - if(precisionSet&&leadingZeros){ - if(conversionCharacter=='d' - ||conversionCharacter=='i' - ||conversionCharacter=='o' - ||conversionCharacter=='x') - { - leadingZeros=false; - } - } - } - else - throw new IllegalArgumentException( - "Malformed conversion specification="+ - fmtArg); - } - else - throw new IllegalArgumentException( - "Malformed conversion specification="+ - fmtArg); - } - else - throw new IllegalArgumentException( - "Control strings must begin with %."); - } - /** - * Set the String for this instance. - * @param s the String to store. - */ - void setLiteral(String s) { - fmt = s; - } - /** - * Get the String for this instance. Translate - * any escape sequences. - * - * @return s the stored String. - */ - String getLiteral() { - StringBuffer sb=new StringBuffer(); - int i=0; - while (i<fmt.length()) { - if (fmt.charAt(i)=='\\') { - i++; - if (i<fmt.length()) { - char c=fmt.charAt(i); - switch(c) { - case 'a': - sb.append((char)0x07); - break; - case 'b': - sb.append('\b'); - break; - case 'f': - sb.append('\f'); - break; - case 'n': - sb.append(System.getProperty("line.separator")); - break; - case 'r': - sb.append('\r'); - break; - case 't': - sb.append('\t'); - break; - case 'v': - sb.append((char)0x0b); - break; - case '\\': - sb.append('\\'); - break; - } - i++; - } - else - sb.append('\\'); - } - else - i++; - } - return fmt; - } - /** - * Get the conversion character that tells what - * type of control character this instance has. - * - * @return the conversion character. - */ - char getConversionCharacter() { - return conversionCharacter; - } - /** - * Check whether the specifier has a variable - * field width that is going to be set by an - * argument. - * @return <code>true</code> if the conversion - * uses an * field width; otherwise - * <code>false</code>. - */ - boolean isVariableFieldWidth() { - return variableFieldWidth; - } - /** - * Set the field width with an argument. A - * negative field width is taken as a - flag - * followed by a positive field width. - * @param fw the field width. - */ - void setFieldWidthWithArg(int fw) { - if (fw<0) leftJustify = true; - fieldWidthSet = true; - fieldWidth = Math.abs(fw); - } - /** - * Check whether the specifier has a variable - * precision that is going to be set by an - * argument. - * @return <code>true</code> if the conversion - * uses an * precision; otherwise - * <code>false</code>. - */ - boolean isVariablePrecision() { - return variablePrecision; - } - /** - * Set the precision with an argument. A - * negative precision will be changed to zero. - * @param pr the precision. - */ - void setPrecisionWithArg(int pr) { - precisionSet = true; - precision = Math.max(pr,0); - } - /** - * Format an int argument using this conversion - * specification. - * @param s the int to format. - * @return the formatted String. - * @exception IllegalArgumentException if the - * conversion character is f, e, E, g, or G. - */ - String internalsprintf(int s) - throws IllegalArgumentException { - String s2 = ""; - switch(conversionCharacter) { - case 'd': - case 'i': - if (optionalh) - s2 = printDFormat((short)s); - else if (optionall) - s2 = printDFormat((long)s); - else - s2 = printDFormat(s); - break; - case 'x': - case 'X': - if (optionalh) - s2 = printXFormat((short)s); - else if (optionall) - s2 = printXFormat((long)s); - else - s2 = printXFormat(s); - break; - case 'o': - if (optionalh) - s2 = printOFormat((short)s); - else if (optionall) - s2 = printOFormat((long)s); - else - s2 = printOFormat(s); - break; - case 'c': - case 'C': - s2 = printCFormat((char)s); - break; - default: - throw new IllegalArgumentException( - "Cannot format a int with a format using a "+ - conversionCharacter+ - " conversion character."); - } - return s2; - } - /** - * Format a long argument using this conversion - * specification. - * @param s the long to format. - * @return the formatted String. - * @exception IllegalArgumentException if the - * conversion character is f, e, E, g, or G. - */ - String internalsprintf(long s) - throws IllegalArgumentException { - String s2 = ""; - switch(conversionCharacter) { - case 'd': - case 'i': - if (optionalh) - s2 = printDFormat((short)s); - else if (optionall) - s2 = printDFormat(s); - else - s2 = printDFormat((int)s); - break; - case 'x': - case 'X': - if (optionalh) - s2 = printXFormat((short)s); - else if (optionall) - s2 = printXFormat(s); - else - s2 = printXFormat((int)s); - break; - case 'o': - if (optionalh) - s2 = printOFormat((short)s); - else if (optionall) - s2 = printOFormat(s); - else - s2 = printOFormat((int)s); - break; - case 'c': - case 'C': - s2 = printCFormat((char)s); - break; - default: - throw new IllegalArgumentException( - "Cannot format a long with a format using a "+ - conversionCharacter+" conversion character."); - } - return s2; - } - /** - * Format a double argument using this conversion - * specification. - * @param s the double to format. - * @return the formatted String. - * @exception IllegalArgumentException if the - * conversion character is c, C, s, S, i, d, - * x, X, or o. - */ - String internalsprintf(double s) - throws IllegalArgumentException { - String s2 = ""; - switch(conversionCharacter) { - case 'f': - s2 = printFFormat(s); - break; - case 'E': - case 'e': - s2 = printEFormat(s); - break; - case 'G': - case 'g': - s2 = printGFormat(s); - break; - default: - throw new IllegalArgumentException("Cannot "+ - "format a double with a format using a "+ - conversionCharacter+" conversion character."); - } - return s2; - } - /** - * Format a String argument using this conversion - * specification. - * @param s the String to format. - * @return the formatted String. - * @exception IllegalArgumentException if the - * conversion character is neither s nor S. - */ - String internalsprintf(String s) - throws IllegalArgumentException { - String s2 = ""; - if(conversionCharacter=='s' - || conversionCharacter=='S') - s2 = printSFormat(s); - else - throw new IllegalArgumentException("Cannot "+ - "format a String with a format using a "+ - conversionCharacter+" conversion character."); - return s2; - } - /** - * Format an Object argument using this conversion - * specification. - * @param s the Object to format. - * @return the formatted String. - * @exception IllegalArgumentException if the - * conversion character is neither s nor S. - */ - String internalsprintf(Object s) { - String s2 = ""; - if(conversionCharacter=='s' - || conversionCharacter=='S') - s2 = printSFormat(s.toString()); - else - throw new IllegalArgumentException( - "Cannot format a String with a format using"+ - " a "+conversionCharacter+ - " conversion character."); - return s2; - } - /** - * For f format, the flag character '-', means that - * the output should be left justified within the - * field. The default is to pad with blanks on the - * left. '+' character means that the conversion - * will always begin with a sign (+ or -). The - * blank flag character means that a non-negative - * input will be preceded with a blank. If both - * a '+' and a ' ' are specified, the blank flag - * is ignored. The '0' flag character implies that - * padding to the field width will be done with - * zeros instead of blanks. - * - * The field width is treated as the minimum number - * of characters to be printed. The default is to - * add no padding. Padding is with blanks by - * default. - * - * The precision, if set, is the number of digits - * to appear after the radix character. Padding is - * with trailing 0s. - */ - private char[] fFormatDigits(double x) { - // int defaultDigits=6; - String sx,sxOut; - int i,j,k; - int n1In,n2In; - int expon=0; - boolean minusSign=false; - if (x>0.0) - sx = Double.toString(x); - else if (x<0.0) { - sx = Double.toString(-x); - minusSign=true; - } - else { - sx = Double.toString(x); - if (sx.charAt(0)=='-') { - minusSign=true; - sx=sx.substring(1); - } - } - int ePos = sx.indexOf('E'); - int rPos = sx.indexOf('.'); - if (rPos!=-1) n1In=rPos; - else if (ePos!=-1) n1In=ePos; - else n1In=sx.length(); - if (rPos!=-1) { - if (ePos!=-1) n2In = ePos-rPos-1; - else n2In = sx.length()-rPos-1; - } - else - n2In = 0; - if (ePos!=-1) { - int ie=ePos+1; - expon=0; - if (sx.charAt(ie)=='-') { - for (++ie; ie<sx.length(); ie++) - if (sx.charAt(ie)!='0') break; - if (ie<sx.length()) - expon=-Integer.parseInt(sx.substring(ie)); - } - else { - if (sx.charAt(ie)=='+') ++ie; - for (; ie<sx.length(); ie++) - if (sx.charAt(ie)!='0') break; - if (ie<sx.length()) - expon=Integer.parseInt(sx.substring(ie)); - } - } - int p; - if (precisionSet) p = precision; - else p = defaultDigits-1; - char[] ca1 = sx.toCharArray(); - char[] ca2 = new char[n1In+n2In]; - char[] ca3,ca4,ca5; - for (j=0; j<n1In; j++) - ca2[j] = ca1[j]; - i = j+1; - for (k=0; k<n2In; j++,i++,k++) - ca2[j] = ca1[i]; - if (n1In+expon<=0) { - ca3 = new char[-expon+n2In]; - for (j=0,k=0; k<(-n1In-expon); k++,j++) - ca3[j]='0'; - for (i=0; i<(n1In+n2In); i++,j++) - ca3[j]=ca2[i]; - } - else - ca3 = ca2; - boolean carry=false; - if (p<-expon+n2In) { - if (expon<0) i = p; - else i = p+n1In; - carry=checkForCarry(ca3,i); - if (carry) - carry=startSymbolicCarry(ca3,i-1,0); - } - if (n1In+expon<=0) { - ca4 = new char[2+p]; - if (!carry) ca4[0]='0'; - else ca4[0]='1'; - if(alternateForm||!precisionSet||precision!=0){ - ca4[1]='.'; - for(i=0,j=2;i<Math.min(p,ca3.length);i++,j++) - ca4[j]=ca3[i]; - for (; j<ca4.length; j++) ca4[j]='0'; - } - } - else { - if (!carry) { - if(alternateForm||!precisionSet - ||precision!=0) - ca4 = new char[n1In+expon+p+1]; - else - ca4 = new char[n1In+expon]; - j=0; - } - else { - if(alternateForm||!precisionSet - ||precision!=0) - ca4 = new char[n1In+expon+p+2]; - else - ca4 = new char[n1In+expon+1]; - ca4[0]='1'; - j=1; - } - for (i=0; i<Math.min(n1In+expon,ca3.length); i++,j++) - ca4[j]=ca3[i]; - for (; i<n1In+expon; i++,j++) - ca4[j]='0'; - if(alternateForm||!precisionSet||precision!=0){ - ca4[j]='.'; j++; - for (k=0; i<ca3.length && k<p; i++,j++,k++) - ca4[j]=ca3[i]; - for (; j<ca4.length; j++) ca4[j]='0'; - } - } - int nZeros=0; - if (!leftJustify && leadingZeros) { - int xThousands=0; - if (thousands) { - int xlead=0; - if (ca4[0]=='+'||ca4[0]=='-'||ca4[0]==' ') - xlead=1; - int xdp=xlead; - for (; xdp<ca4.length; xdp++) - if (ca4[xdp]=='.') break; - xThousands=(xdp-xlead)/3; - } - if (fieldWidthSet) - nZeros = fieldWidth-ca4.length; - if ((!minusSign&&(leadingSign||leadingSpace))||minusSign) - nZeros--; - nZeros-=xThousands; - if (nZeros<0) nZeros=0; - } - j=0; - if ((!minusSign&&(leadingSign||leadingSpace))||minusSign) { - ca5 = new char[ca4.length+nZeros+1]; - j++; - } - else - ca5 = new char[ca4.length+nZeros]; - if (!minusSign) { - if (leadingSign) ca5[0]='+'; - if (leadingSpace) ca5[0]=' '; - } - else - ca5[0]='-'; - for (i=0; i<nZeros; i++,j++) - ca5[j]='0'; - for (i=0; i<ca4.length; i++,j++) ca5[j]=ca4[i]; - - int lead=0; - if (ca5[0]=='+'||ca5[0]=='-'||ca5[0]==' ') - lead=1; - int dp=lead; - for (; dp<ca5.length; dp++) - if (ca5[dp]=='.') break; - int nThousands=(dp-lead)/3; - // Localize the decimal point. - if (dp<ca5.length) - ca5[dp]=dfs.getDecimalSeparator(); - char[] ca6 = ca5; - if (thousands && nThousands>0) { - ca6 = new char[ca5.length+nThousands+lead]; - ca6[0]=ca5[0]; - for (i=lead,k=lead; i<dp; i++) { - if (i>0 && (dp-i)%3==0) { - // ca6[k]=','; - ca6[k]=dfs.getGroupingSeparator(); - ca6[k+1]=ca5[i]; - k+=2; - } - else { - ca6[k]=ca5[i]; k++; - } - } - for (; i<ca5.length; i++,k++) { - ca6[k]=ca5[i]; - } - } - return ca6; - } - /** - * An intermediate routine on the way to creating - * an f format String. The method decides whether - * the input double value is an infinity, - * not-a-number, or a finite double and formats - * each type of input appropriately. - * @param x the double value to be formatted. - * @return the converted double value. - */ - private String fFormatString(double x) { - boolean noDigits=false; - char[] ca6,ca7; - if (Double.isInfinite(x)) { - if (x==Double.POSITIVE_INFINITY) { - if (leadingSign) ca6 = "+Inf".toCharArray(); - else if (leadingSpace) - ca6 = " Inf".toCharArray(); - else ca6 = "Inf".toCharArray(); - } - else - ca6 = "-Inf".toCharArray(); - noDigits = true; - } - else if (Double.isNaN(x)) { - if (leadingSign) ca6 = "+NaN".toCharArray(); - else if (leadingSpace) - ca6 = " NaN".toCharArray(); - else ca6 = "NaN".toCharArray(); - noDigits = true; - } - else - ca6 = fFormatDigits(x); - ca7 = applyFloatPadding(ca6,false); - return new String(ca7); - } - /** - * For e format, the flag character '-', means that - * the output should be left justified within the - * field. The default is to pad with blanks on the - * left. '+' character means that the conversion - * will always begin with a sign (+ or -). The - * blank flag character means that a non-negative - * input will be preceded with a blank. If both a - * '+' and a ' ' are specified, the blank flag is - * ignored. The '0' flag character implies that - * padding to the field width will be done with - * zeros instead of blanks. - * - * The field width is treated as the minimum number - * of characters to be printed. The default is to - * add no padding. Padding is with blanks by - * default. - * - * The precision, if set, is the minimum number of - * digits to appear after the radix character. - * Padding is with trailing 0s. - * - * The behavior is like printf. One (hopefully the - * only) exception is that the minimum number of - * exponent digits is 3 instead of 2 for e and E - * formats when the optional L is used before the - * e, E, g, or G conversion character. The optional - * L does not imply conversion to a long long - * double. - */ - private char[] eFormatDigits(double x,char eChar) { - char[] ca1,ca2,ca3; - // int defaultDigits=6; - String sx,sxOut; - int i,j,k,p; - int n1In,n2In; - int expon=0; - int ePos,rPos,eSize; - boolean minusSign=false; - if (x>0.0) - sx = Double.toString(x); - else if (x<0.0) { - sx = Double.toString(-x); - minusSign=true; - } - else { - sx = Double.toString(x); - if (sx.charAt(0)=='-') { - minusSign=true; - sx=sx.substring(1); - } - } - ePos = sx.indexOf('E'); - if (ePos==-1) ePos = sx.indexOf('e'); - rPos = sx.indexOf('.'); - if (rPos!=-1) n1In=rPos; - else if (ePos!=-1) n1In=ePos; - else n1In=sx.length(); - if (rPos!=-1) { - if (ePos!=-1) n2In = ePos-rPos-1; - else n2In = sx.length()-rPos-1; - } - else - n2In = 0; - if (ePos!=-1) { - int ie=ePos+1; - expon=0; - if (sx.charAt(ie)=='-') { - for (++ie; ie<sx.length(); ie++) - if (sx.charAt(ie)!='0') break; - if (ie<sx.length()) - expon=-Integer.parseInt(sx.substring(ie)); - } - else { - if (sx.charAt(ie)=='+') ++ie; - for (; ie<sx.length(); ie++) - if (sx.charAt(ie)!='0') break; - if (ie<sx.length()) - expon=Integer.parseInt(sx.substring(ie)); - } - } - if (rPos!=-1) expon += rPos-1; - if (precisionSet) p = precision; - else p = defaultDigits-1; - if (rPos!=-1 && ePos!=-1) - ca1=(sx.substring(0,rPos)+ - sx.substring(rPos+1,ePos)).toCharArray(); - else if (rPos!=-1) - ca1 = (sx.substring(0,rPos)+ - sx.substring(rPos+1)).toCharArray(); - else if (ePos!=-1) - ca1 = sx.substring(0,ePos).toCharArray(); - else - ca1 = sx.toCharArray(); - boolean carry=false; - int i0=0; - if (ca1[0]!='0') - i0 = 0; - else - for (i0=0; i0<ca1.length; i0++) - if (ca1[i0]!='0') break; - if (i0+p<ca1.length-1) { - carry=checkForCarry(ca1,i0+p+1); - if (carry) - carry = startSymbolicCarry(ca1,i0+p,i0); - if (carry) { - ca2 = new char[i0+p+1]; - ca2[i0]='1'; - for (j=0; j<i0; j++) ca2[j]='0'; - for (i=i0,j=i0+1; j<p+1; i++,j++) - ca2[j] = ca1[i]; - expon++; - ca1 = ca2; - } - } - if (Math.abs(expon)<100 && !optionalL) eSize=4; - else eSize=5; - if (alternateForm||!precisionSet||precision!=0) - ca2 = new char[2+p+eSize]; - else - ca2 = new char[1+eSize]; - if (ca1[0]!='0') { - ca2[0] = ca1[0]; - j=1; - } - else { - for (j=1; j<(ePos==-1?ca1.length:ePos); j++) - if (ca1[j]!='0') break; - if ((ePos!=-1 && j<ePos)|| - (ePos==-1 && j<ca1.length)) { - ca2[0] = ca1[j]; - expon -= j; - j++; - } - else { - ca2[0]='0'; - j=2; - } - } - if (alternateForm||!precisionSet||precision!=0) { - ca2[1] = '.'; - i=2; - } - else - i=1; - for (k=0; k<p && j<ca1.length; j++,i++,k++) - ca2[i] = ca1[j]; - for (;i<ca2.length-eSize; i++) - ca2[i] = '0'; - ca2[i++] = eChar; - if (expon<0) ca2[i++]='-'; - else ca2[i++]='+'; - expon = Math.abs(expon); - if (expon>=100) { - switch(expon/100) { - case 1: ca2[i]='1'; break; - case 2: ca2[i]='2'; break; - case 3: ca2[i]='3'; break; - case 4: ca2[i]='4'; break; - case 5: ca2[i]='5'; break; - case 6: ca2[i]='6'; break; - case 7: ca2[i]='7'; break; - case 8: ca2[i]='8'; break; - case 9: ca2[i]='9'; break; - } - i++; - } - switch((expon%100)/10) { - case 0: ca2[i]='0'; break; - case 1: ca2[i]='1'; break; - case 2: ca2[i]='2'; break; - case 3: ca2[i]='3'; break; - case 4: ca2[i]='4'; break; - case 5: ca2[i]='5'; break; - case 6: ca2[i]='6'; break; - case 7: ca2[i]='7'; break; - case 8: ca2[i]='8'; break; - case 9: ca2[i]='9'; break; - } - i++; - switch(expon%10) { - case 0: ca2[i]='0'; break; - case 1: ca2[i]='1'; break; - case 2: ca2[i]='2'; break; - case 3: ca2[i]='3'; break; - case 4: ca2[i]='4'; break; - case 5: ca2[i]='5'; break; - case 6: ca2[i]='6'; break; - case 7: ca2[i]='7'; break; - case 8: ca2[i]='8'; break; - case 9: ca2[i]='9'; break; - } - int nZeros=0; - if (!leftJustify && leadingZeros) { - int xThousands=0; - if (thousands) { - int xlead=0; - if (ca2[0]=='+'||ca2[0]=='-'||ca2[0]==' ') - xlead=1; - int xdp=xlead; - for (; xdp<ca2.length; xdp++) - if (ca2[xdp]=='.') break; - xThousands=(xdp-xlead)/3; - } - if (fieldWidthSet) - nZeros = fieldWidth-ca2.length; - if ((!minusSign&&(leadingSign||leadingSpace))||minusSign) - nZeros--; - nZeros-=xThousands; - if (nZeros<0) nZeros=0; - } - j=0; - if ((!minusSign&&(leadingSign || leadingSpace))||minusSign) { - ca3 = new char[ca2.length+nZeros+1]; - j++; - } - else - ca3 = new char[ca2.length+nZeros]; - if (!minusSign) { - if (leadingSign) ca3[0]='+'; - if (leadingSpace) ca3[0]=' '; - } - else - ca3[0]='-'; - for (k=0; k<nZeros; j++,k++) - ca3[j]='0'; - for (i=0; i<ca2.length && j<ca3.length; i++,j++) - ca3[j]=ca2[i]; - - int lead=0; - if (ca3[0]=='+'||ca3[0]=='-'||ca3[0]==' ') - lead=1; - int dp=lead; - for (; dp<ca3.length; dp++) - if (ca3[dp]=='.') break; - int nThousands=dp/3; - // Localize the decimal point. - if (dp < ca3.length) - ca3[dp] = dfs.getDecimalSeparator(); - char[] ca4 = ca3; - if (thousands && nThousands>0) { - ca4 = new char[ca3.length+nThousands+lead]; - ca4[0]=ca3[0]; - for (i=lead,k=lead; i<dp; i++) { - if (i>0 && (dp-i)%3==0) { - // ca4[k]=','; - ca4[k]=dfs.getGroupingSeparator(); - ca4[k+1]=ca3[i]; - k+=2; - } - else { - ca4[k]=ca3[i]; k++; - } - } - for (; i<ca3.length; i++,k++) - ca4[k]=ca3[i]; - } - return ca4; - } - /** - * Check to see if the digits that are going to - * be truncated because of the precision should - * force a round in the preceding digits. - * @param ca1 the array of digits - * @param icarry the index of the first digit that - * is to be truncated from the print - * @return <code>true</code> if the truncation forces - * a round that will change the print - */ - private boolean checkForCarry(char[] ca1,int icarry) { - boolean carry=false; - if (icarry<ca1.length) { - if (ca1[icarry]=='6'||ca1[icarry]=='7' - ||ca1[icarry]=='8'||ca1[icarry]=='9') carry=true; - else if (ca1[icarry]=='5') { - int ii=icarry+1; - for (;ii<ca1.length; ii++) - if (ca1[ii]!='0') break; - carry=ii<ca1.length; - if (!carry&&icarry>0) { - carry=(ca1[icarry-1]=='1'||ca1[icarry-1]=='3' - ||ca1[icarry-1]=='5'||ca1[icarry-1]=='7' - ||ca1[icarry-1]=='9'); - } - } - } - return carry; - } - /** - * Start the symbolic carry process. The process - * is not quite finished because the symbolic - * carry may change the length of the string and - * change the exponent (in e format). - * @param cLast index of the last digit changed - * by the round - * @param cFirst index of the first digit allowed - * to be changed by this phase of the round - * @return <code>true</code> if the carry forces - * a round that will change the print still - * more - */ - private boolean startSymbolicCarry( - char[] ca,int cLast,int cFirst) { - boolean carry=true; - for (int i=cLast; carry && i>=cFirst; i--) { - carry = false; - switch(ca[i]) { - case '0': ca[i]='1'; break; - case '1': ca[i]='2'; break; - case '2': ca[i]='3'; break; - case '3': ca[i]='4'; break; - case '4': ca[i]='5'; break; - case '5': ca[i]='6'; break; - case '6': ca[i]='7'; break; - case '7': ca[i]='8'; break; - case '8': ca[i]='9'; break; - case '9': ca[i]='0'; carry=true; break; - } - } - return carry; - } - /** - * An intermediate routine on the way to creating - * an e format String. The method decides whether - * the input double value is an infinity, - * not-a-number, or a finite double and formats - * each type of input appropriately. - * @param x the double value to be formatted. - * @param eChar an 'e' or 'E' to use in the - * converted double value. - * @return the converted double value. - */ - private String eFormatString(double x,char eChar) { - boolean noDigits=false; - char[] ca4,ca5; - if (Double.isInfinite(x)) { - if (x==Double.POSITIVE_INFINITY) { - if (leadingSign) ca4 = "+Inf".toCharArray(); - else if (leadingSpace) - ca4 = " Inf".toCharArray(); - else ca4 = "Inf".toCharArray(); - } - else - ca4 = "-Inf".toCharArray(); - noDigits = true; - } - else if (Double.isNaN(x)) { - if (leadingSign) ca4 = "+NaN".toCharArray(); - else if (leadingSpace) - ca4 = " NaN".toCharArray(); - else ca4 = "NaN".toCharArray(); - noDigits = true; - } - else - ca4 = eFormatDigits(x,eChar); - ca5 = applyFloatPadding(ca4,false); - return new String(ca5); - } - /** - * Apply zero or blank, left or right padding. - * @param ca4 array of characters before padding is - * finished - * @param noDigits NaN or signed Inf - * @return a padded array of characters - */ - private char[] applyFloatPadding( - char[] ca4,boolean noDigits) { - char[] ca5 = ca4; - if (fieldWidthSet) { - int i,j,nBlanks; - if (leftJustify) { - nBlanks = fieldWidth-ca4.length; - if (nBlanks > 0) { - ca5 = new char[ca4.length+nBlanks]; - for (i=0; i<ca4.length; i++) - ca5[i] = ca4[i]; - for (j=0; j<nBlanks; j++,i++) - ca5[i] = ' '; - } - } - else if (!leadingZeros || noDigits) { - nBlanks = fieldWidth-ca4.length; - if (nBlanks > 0) { - ca5 = new char[ca4.length+nBlanks]; - for (i=0; i<nBlanks; i++) - ca5[i] = ' '; - for (j=0; j<ca4.length; i++,j++) - ca5[i] = ca4[j]; - } - } - else if (leadingZeros) { - nBlanks = fieldWidth-ca4.length; - if (nBlanks > 0) { - ca5 = new char[ca4.length+nBlanks]; - i=0; j=0; - if (ca4[0]=='-') { ca5[0]='-'; i++; j++; } - for (int k=0; k<nBlanks; i++,k++) - ca5[i] = '0'; - for (; j<ca4.length; i++,j++) - ca5[i] = ca4[j]; - } - } - } - return ca5; - } - /** - * Format method for the f conversion character. - * @param x the double to format. - * @return the formatted String. - */ - private String printFFormat(double x) { - return fFormatString(x); - } - /** - * Format method for the e or E conversion - * character. - * @param x the double to format. - * @return the formatted String. - */ - private String printEFormat(double x) { - if (conversionCharacter=='e') - return eFormatString(x,'e'); - else - return eFormatString(x,'E'); - } - /** - * Format method for the g conversion character. - * - * For g format, the flag character '-', means that - * the output should be left justified within the - * field. The default is to pad with blanks on the - * left. '+' character means that the conversion - * will always begin with a sign (+ or -). The - * blank flag character means that a non-negative - * input will be preceded with a blank. If both a - * '+' and a ' ' are specified, the blank flag is - * ignored. The '0' flag character implies that - * padding to the field width will be done with - * zeros instead of blanks. - * - * The field width is treated as the minimum number - * of characters to be printed. The default is to - * add no padding. Padding is with blanks by - * default. - * - * The precision, if set, is the minimum number of - * digits to appear after the radix character. - * Padding is with trailing 0s. - * @param x the double to format. - * @return the formatted String. - */ - private String printGFormat(double x) { - String sx,sy,sz,ret; - int savePrecision=precision; - int i; - char[] ca4,ca5; - boolean noDigits=false; - if (Double.isInfinite(x)) { - if (x==Double.POSITIVE_INFINITY) { - if (leadingSign) ca4 = "+Inf".toCharArray(); - else if (leadingSpace) - ca4 = " Inf".toCharArray(); - else ca4 = "Inf".toCharArray(); - } - else - ca4 = "-Inf".toCharArray(); - noDigits = true; - } - else if (Double.isNaN(x)) { - if (leadingSign) ca4 = "+NaN".toCharArray(); - else if (leadingSpace) - ca4 = " NaN".toCharArray(); - else ca4 = "NaN".toCharArray(); - noDigits = true; - } - else { - if (!precisionSet) precision=defaultDigits; - if (precision==0) precision=1; - int ePos=-1; - if (conversionCharacter=='g') { - sx = eFormatString(x,'e').trim(); - ePos=sx.indexOf('e'); - } - else { - sx = eFormatString(x,'E').trim(); - ePos=sx.indexOf('E'); - } - i=ePos+1; - int expon=0; - if (sx.charAt(i)=='-') { - for (++i; i<sx.length(); i++) - if (sx.charAt(i)!='0') break; - if (i<sx.length()) - expon=-Integer.parseInt(sx.substring(i)); - } - else { - if (sx.charAt(i)=='+') ++i; - for (; i<sx.length(); i++) - if (sx.charAt(i)!='0') break; - if (i<sx.length()) - expon=Integer.parseInt(sx.substring(i)); - } - // Trim trailing zeros. - // If the radix character is not followed by - // a digit, trim it, too. - if (!alternateForm) { - if (expon>=-4 && expon<precision) - sy = fFormatString(x).trim(); - else - sy = sx.substring(0,ePos); - i=sy.length()-1; - for (; i>=0; i--) - if (sy.charAt(i)!='0') break; - if (i>=0 && sy.charAt(i)=='.') i--; - if (i==-1) sz="0"; - else if (!Character.isDigit(sy.charAt(i))) - sz=sy.substring(0,i+1)+"0"; - else sz=sy.substring(0,i+1); - if (expon>=-4 && expon<precision) - ret=sz; - else - ret=sz+sx.substring(ePos); - } - else { - if (expon>=-4 && expon<precision) - ret = fFormatString(x).trim(); - else - ret = sx; - } - // leading space was trimmed off during - // construction - if (leadingSpace) if (x>=0) ret = " "+ret; - ca4 = ret.toCharArray(); - } - // Pad with blanks or zeros. - ca5 = applyFloatPadding(ca4,false); - precision=savePrecision; - return new String(ca5); - } - /** - * Format method for the d conversion specifer and - * short argument. - * - * For d format, the flag character '-', means that - * the output should be left justified within the - * field. The default is to pad with blanks on the - * left. A '+' character means that the conversion - * will always begin with a sign (+ or -). The - * blank flag character means that a non-negative - * input will be preceded with a blank. If both a - * '+' and a ' ' are specified, the blank flag is - * ignored. The '0' flag character implies that - * padding to the field width will be done with - * zeros instead of blanks. - * - * The field width is treated as the minimum number - * of characters to be printed. The default is to - * add no padding. Padding is with blanks by - * default. - * - * The precision, if set, is the minimum number of - * digits to appear. Padding is with leading 0s. - * @param x the short to format. - * @return the formatted String. - */ - private String printDFormat(short x) { - return printDFormat(Short.toString(x)); - } - /** - * Format method for the d conversion character and - * long argument. - * - * For d format, the flag character '-', means that - * the output should be left justified within the - * field. The default is to pad with blanks on the - * left. A '+' character means that the conversion - * will always begin with a sign (+ or -). The - * blank flag character means that a non-negative - * input will be preceded with a blank. If both a - * '+' and a ' ' are specified, the blank flag is - * ignored. The '0' flag character implies that - * padding to the field width will be done with - * zeros instead of blanks. - * - * The field width is treated as the minimum number - * of characters to be printed. The default is to - * add no padding. Padding is with blanks by - * default. - * - * The precision, if set, is the minimum number of - * digits to appear. Padding is with leading 0s. - * @param x the long to format. - * @return the formatted String. - */ - private String printDFormat(long x) { - return printDFormat(Long.toString(x)); - } - /** - * Format method for the d conversion character and - * int argument. - * - * For d format, the flag character '-', means that - * the output should be left justified within the - * field. The default is to pad with blanks on the - * left. A '+' character means that the conversion - * will always begin with a sign (+ or -). The - * blank flag character means that a non-negative - * input will be preceded with a blank. If both a - * '+' and a ' ' are specified, the blank flag is - * ignored. The '0' flag character implies that - * padding to the field width will be done with - * zeros instead of blanks. - * - * The field width is treated as the minimum number - * of characters to be printed. The default is to - * add no padding. Padding is with blanks by - * default. - * - * The precision, if set, is the minimum number of - * digits to appear. Padding is with leading 0s. - * @param x the int to format. - * @return the formatted String. - */ - private String printDFormat(int x) { - return printDFormat(Integer.toString(x)); - } - /** - * Utility method for formatting using the d - * conversion character. - * @param sx the String to format, the result of - * converting a short, int, or long to a - * String. - * @return the formatted String. - */ - private String printDFormat(String sx) { - int nLeadingZeros=0; - int nBlanks=0,n=0; - int i=0,jFirst=0; - boolean neg = sx.charAt(0)=='-'; - if (sx.equals("0")&&precisionSet&&precision==0) - sx=""; - if (!neg) { - if (precisionSet && sx.length() < precision) - nLeadingZeros = precision-sx.length(); - } - else { - if (precisionSet&&(sx.length()-1)<precision) - nLeadingZeros = precision-sx.length()+1; - } - if (nLeadingZeros<0) nLeadingZeros=0; - if (fieldWidthSet) { - nBlanks = fieldWidth-nLeadingZeros-sx.length(); - if (!neg&&(leadingSign||leadingSpace)) - nBlanks--; - } - if (nBlanks<0) nBlanks=0; - if (leadingSign) n++; - else if (leadingSpace) n++; - n += nBlanks; - n += nLeadingZeros; - n += sx.length(); - char[] ca = new char[n]; - if (leftJustify) { - if (neg) ca[i++] = '-'; - else if (leadingSign) ca[i++] = '+'; - else if (leadingSpace) ca[i++] = ' '; - char[] csx = sx.toCharArray(); - jFirst = neg?1:0; - for (int j=0; j<nLeadingZeros; i++,j++) - ca[i]='0'; - for (int j=jFirst; j<csx.length; j++,i++) - ca[i] = csx[j]; - for (int j=0; j<nBlanks; i++,j++) - ca[i] = ' '; - } - else { - if (!leadingZeros) { - for (i=0; i<nBlanks; i++) - ca[i] = ' '; - if (neg) ca[i++] = '-'; - else if (leadingSign) ca[i++] = '+'; - else if (leadingSpace) ca[i++] = ' '; - } - else { - if (neg) ca[i++] = '-'; - else if (leadingSign) ca[i++] = '+'; - else if (leadingSpace) ca[i++] = ' '; - for (int j=0; j<nBlanks; j++,i++) - ca[i] = '0'; - } - for (int j=0; j<nLeadingZeros; j++,i++) - ca[i] = '0'; - char[] csx = sx.toCharArray(); - jFirst = neg?1:0; - for (int j=jFirst; j<csx.length; j++,i++) - ca[i] = csx[j]; - } - return new String(ca); - } - /** - * Format method for the x conversion character and - * short argument. - * - * For x format, the flag character '-', means that - * the output should be left justified within the - * field. The default is to pad with blanks on the - * left. The '#' flag character means to lead with - * '0x'. - * - * The field width is treated as the minimum number - * of characters to be printed. The default is to - * add no padding. Padding is with blanks by - * default. - * - * The precision, if set, is the minimum number of - * digits to appear. Padding is with leading 0s. - * @param x the short to format. - * @return the formatted String. - */ - private String printXFormat(short x) { - String sx=null; - if (x == Short.MIN_VALUE) - sx = "8000"; - else if (x < 0) { - String t; - if (x==Short.MIN_VALUE) - t = "0"; - else { - t = Integer.toString( - (~(-x-1))^Short.MIN_VALUE,16); - if (t.charAt(0)=='F'||t.charAt(0)=='f') - t = t.substring(16,32); - } - switch (t.length()) { - case 1: - sx = "800"+t; - break; - case 2: - sx = "80"+t; - break; - case 3: - sx = "8"+t; - break; - case 4: - switch (t.charAt(0)) { - case '1': - sx = "9"+t.substring(1,4); - break; - case '2': - sx = "a"+t.substring(1,4); - break; - case '3': - sx = "b"+t.substring(1,4); - break; - case '4': - sx = "c"+t.substring(1,4); - break; - case '5': - sx = "d"+t.substring(1,4); - break; - case '6': - sx = "e"+t.substring(1,4); - break; - case '7': - sx = "f"+t.substring(1,4); - break; - } - break; - } - } - else - sx = Integer.toString((int)x,16); - return printXFormat(sx); - } - /** - * Format method for the x conversion character and - * long argument. - * - * For x format, the flag character '-', means that - * the output should be left justified within the - * field. The default is to pad with blanks on the - * left. The '#' flag character means to lead with - * '0x'. - * - * The field width is treated as the minimum number - * of characters to be printed. The default is to - * add no padding. Padding is with blanks by - * default. - * - * The precision, if set, is the minimum number of - * digits to appear. Padding is with leading 0s. - * @param x the long to format. - * @return the formatted String. - */ - private String printXFormat(long x) { - String sx=null; - if (x == Long.MIN_VALUE) - sx = "8000000000000000"; - else if (x < 0) { - String t = Long.toString( - (~(-x-1))^Long.MIN_VALUE,16); - switch (t.length()) { - case 1: - sx = "800000000000000"+t; - break; - case 2: - sx = "80000000000000"+t; - break; - case 3: - sx = "8000000000000"+t; - break; - case 4: - sx = "800000000000"+t; - break; - case 5: - sx = "80000000000"+t; - break; - case 6: - sx = "8000000000"+t; - break; - case 7: - sx = "800000000"+t; - break; - case 8: - sx = "80000000"+t; - break; - case 9: - sx = "8000000"+t; - break; - case 10: - sx = "800000"+t; - break; - case 11: - sx = "80000"+t; - break; - case 12: - sx = "8000"+t; - break; - case 13: - sx = "800"+t; - break; - case 14: - sx = "80"+t; - break; - case 15: - sx = "8"+t; - break; - case 16: - switch (t.charAt(0)) { - case '1': - sx = "9"+t.substring(1,16); - break; - case '2': - sx = "a"+t.substring(1,16); - break; - case '3': - sx = "b"+t.substring(1,16); - break; - case '4': - sx = "c"+t.substring(1,16); - break; - case '5': - sx = "d"+t.substring(1,16); - break; - case '6': - sx = "e"+t.substring(1,16); - break; - case '7': - sx = "f"+t.substring(1,16); - break; - } - break; - } - } - else - sx = Long.toString(x,16); - return printXFormat(sx); - } - /** - * Format method for the x conversion character and - * int argument. - * - * For x format, the flag character '-', means that - * the output should be left justified within the - * field. The default is to pad with blanks on the - * left. The '#' flag character means to lead with - * '0x'. - * - * The field width is treated as the minimum number - * of characters to be printed. The default is to - * add no padding. Padding is with blanks by - * default. - * - * The precision, if set, is the minimum number of - * digits to appear. Padding is with leading 0s. - * @param x the int to format. - * @return the formatted String. - */ - private String printXFormat(int x) { - String sx=null; - if (x == Integer.MIN_VALUE) - sx = "80000000"; - else if (x < 0) { - String t = Integer.toString( - (~(-x-1))^Integer.MIN_VALUE,16); - switch (t.length()) { - case 1: - sx = "8000000"+t; - break; - case 2: - sx = "800000"+t; - break; - case 3: - sx = "80000"+t; - break; - case 4: - sx = "8000"+t; - break; - case 5: - sx = "800"+t; - break; - case 6: - sx = "80"+t; - break; - case 7: - sx = "8"+t; - break; - case 8: - switch (t.charAt(0)) { - case '1': - sx = "9"+t.substring(1,8); - break; - case '2': - sx = "a"+t.substring(1,8); - break; - case '3': - sx = "b"+t.substring(1,8); - break; - case '4': - sx = "c"+t.substring(1,8); - break; - case '5': - sx = "d"+t.substring(1,8); - break; - case '6': - sx = "e"+t.substring(1,8); - break; - case '7': - sx = "f"+t.substring(1,8); - break; - } - break; - } - } - else - sx = Integer.toString(x,16); - return printXFormat(sx); - } - /** - * Utility method for formatting using the x - * conversion character. - * @param sx the String to format, the result of - * converting a short, int, or long to a - * String. - * @return the formatted String. - */ - private String printXFormat(String sx) { - int nLeadingZeros = 0; - int nBlanks = 0; - if (sx.equals("0")&&precisionSet&&precision==0) - sx=""; - if (precisionSet) - nLeadingZeros = precision-sx.length(); - if (nLeadingZeros<0) nLeadingZeros=0; - if (fieldWidthSet) { - nBlanks = fieldWidth-nLeadingZeros-sx.length(); - if (alternateForm) nBlanks = nBlanks - 2; - } - if (nBlanks<0) nBlanks=0; - int n=0; - if (alternateForm) n+=2; - n += nLeadingZeros; - n += sx.length(); - n += nBlanks; - char[] ca = new char[n]; - int i=0; - if (leftJustify) { - if (alternateForm) { - ca[i++]='0'; ca[i++]='x'; - } - for (int j=0; j<nLeadingZeros; j++,i++) - ca[i]='0'; - char[] csx = sx.toCharArray(); - for (int j=0; j<csx.length; j++,i++) - ca[i] = csx[j]; - for (int j=0; j<nBlanks; j++,i++) - ca[i] = ' '; - } - else { - if (!leadingZeros) - for (int j=0; j<nBlanks; j++,i++) - ca[i] = ' '; - if (alternateForm) { - ca[i++]='0'; ca[i++]='x'; - } - if (leadingZeros) - for (int j=0; j<nBlanks; j++,i++) - ca[i] = '0'; - for (int j=0; j<nLeadingZeros; j++,i++) - ca[i]='0'; - char[] csx = sx.toCharArray(); - for (int j=0; j<csx.length; j++,i++) - ca[i] = csx[j]; - } - String caReturn=new String(ca); - if (conversionCharacter=='X') - caReturn = caReturn.toUpperCase(); - return caReturn; - } - /** - * Format method for the o conversion character and - * short argument. - * - * For o format, the flag character '-', means that - * the output should be left justified within the - * field. The default is to pad with blanks on the - * left. The '#' flag character means that the - * output begins with a leading 0 and the precision - * is increased by 1. - * - * The field width is treated as the minimum number - * of characters to be printed. The default is to - * add no padding. Padding is with blanks by - * default. - * - * The precision, if set, is the minimum number of - * digits to appear. Padding is with leading 0s. - * @param x the short to format. - * @return the formatted String. - */ - private String printOFormat(short x) { - String sx=null; - if (x == Short.MIN_VALUE) - sx = "100000"; - else if (x < 0) { - String t = Integer.toString( - (~(-x-1))^Short.MIN_VALUE,8); - switch (t.length()) { - case 1: - sx = "10000"+t; - break; - case 2: - sx = "1000"+t; - break; - case 3: - sx = "100"+t; - break; - case 4: - sx = "10"+t; - break; - case 5: - sx = "1"+t; - break; - } - } - else - sx = Integer.toString((int)x,8); - return printOFormat(sx); - } - /** - * Format method for the o conversion character and - * long argument. - * - * For o format, the flag character '-', means that - * the output should be left justified within the - * field. The default is to pad with blanks on the - * left. The '#' flag character means that the - * output begins with a leading 0 and the precision - * is increased by 1. - * - * The field width is treated as the minimum number - * of characters to be printed. The default is to - * add no padding. Padding is with blanks by - * default. - * - * The precision, if set, is the minimum number of - * digits to appear. Padding is with leading 0s. - * @param x the long to format. - * @return the formatted String. - */ - private String printOFormat(long x) { - String sx=null; - if (x == Long.MIN_VALUE) - sx = "1000000000000000000000"; - else if (x < 0) { - String t = Long.toString( - (~(-x-1))^Long.MIN_VALUE,8); - switch (t.length()) { - case 1: - sx = "100000000000000000000"+t; - break; - case 2: - sx = "10000000000000000000"+t; - break; - case 3: - sx = "1000000000000000000"+t; - break; - case 4: - sx = "100000000000000000"+t; - break; - case 5: - sx = "10000000000000000"+t; - break; - case 6: - sx = "1000000000000000"+t; - break; - case 7: - sx = "100000000000000"+t; - break; - case 8: - sx = "10000000000000"+t; - break; - case 9: - sx = "1000000000000"+t; - break; - case 10: - sx = "100000000000"+t; - break; - case 11: - sx = "10000000000"+t; - break; - case 12: - sx = "1000000000"+t; - break; - case 13: - sx = "100000000"+t; - break; - case 14: - sx = "10000000"+t; - break; - case 15: - sx = "1000000"+t; - break; - case 16: - sx = "100000"+t; - break; - case 17: - sx = "10000"+t; - break; - case 18: - sx = "1000"+t; - break; - case 19: - sx = "100"+t; - break; - case 20: - sx = "10"+t; - break; - case 21: - sx = "1"+t; - break; - } - } - else - sx = Long.toString(x,8); - return printOFormat(sx); - } - /** - * Format method for the o conversion character and - * int argument. - * - * For o format, the flag character '-', means that - * the output should be left justified within the - * field. The default is to pad with blanks on the - * left. The '#' flag character means that the - * output begins with a leading 0 and the precision - * is increased by 1. - * - * The field width is treated as the minimum number - * of characters to be printed. The default is to - * add no padding. Padding is with blanks by - * default. - * - * The precision, if set, is the minimum number of - * digits to appear. Padding is with leading 0s. - * @param x the int to format. - * @return the formatted String. - */ - private String printOFormat(int x) { - String sx=null; - if (x == Integer.MIN_VALUE) - sx = "20000000000"; - else if (x < 0) { - String t = Integer.toString( - (~(-x-1))^Integer.MIN_VALUE,8); - switch (t.length()) { - case 1: - sx = "2000000000"+t; - break; - case 2: - sx = "200000000"+t; - break; - case 3: - sx = "20000000"+t; - break; - case 4: - sx = "2000000"+t; - break; - case 5: - sx = "200000"+t; - break; - case 6: - sx = "20000"+t; - break; - case 7: - sx = "2000"+t; - break; - case 8: - sx = "200"+t; - break; - case 9: - sx = "20"+t; - break; - case 10: - sx = "2"+t; - break; - case 11: - sx = "3"+t.substring(1); - break; - } - } - else - sx = Integer.toString(x,8); - return printOFormat(sx); - } - /** - * Utility method for formatting using the o - * conversion character. - * @param sx the String to format, the result of - * converting a short, int, or long to a - * String. - * @return the formatted String. - */ - private String printOFormat(String sx) { - int nLeadingZeros = 0; - int nBlanks = 0; - if (sx.equals("0")&&precisionSet&&precision==0) - sx=""; - if (precisionSet) - nLeadingZeros = precision-sx.length(); - if (alternateForm) nLeadingZeros++; - if (nLeadingZeros<0) nLeadingZeros=0; - if (fieldWidthSet) - nBlanks = fieldWidth-nLeadingZeros-sx.length(); - if (nBlanks<0) nBlanks=0; - int n=nLeadingZeros+sx.length()+nBlanks; - char[] ca = new char[n]; - int i; - if (leftJustify) { - for (i=0; i<nLeadingZeros; i++) ca[i]='0'; - char[] csx = sx.toCharArray(); - for (int j=0; j<csx.length; j++,i++) - ca[i] = csx[j]; - for (int j=0; j<nBlanks; j++,i++) ca[i] = ' '; - } - else { - if (leadingZeros) - for (i=0; i<nBlanks; i++) ca[i]='0'; - else - for (i=0; i<nBlanks; i++) ca[i]=' '; - for (int j=0; j<nLeadingZeros; j++,i++) - ca[i]='0'; - char[] csx = sx.toCharArray(); - for (int j=0; j<csx.length; j++,i++) - ca[i] = csx[j]; - } - return new String(ca); - } - /** - * Format method for the c conversion character and - * char argument. - * - * The only flag character that affects c format is - * the '-', meaning that the output should be left - * justified within the field. The default is to - * pad with blanks on the left. - * - * The field width is treated as the minimum number - * of characters to be printed. Padding is with - * blanks by default. The default width is 1. - * - * The precision, if set, is ignored. - * @param x the char to format. - * @return the formatted String. - */ - private String printCFormat(char x) { - int nPrint = 1; - int width = fieldWidth; - if (!fieldWidthSet) width = nPrint; - char[] ca = new char[width]; - int i=0; - if (leftJustify) { - ca[0] = x; - for (i=1; i<=width-nPrint; i++) ca[i]=' '; - } - else { - for (i=0; i<width-nPrint; i++) ca[i]=' '; - ca[i] = x; - } - return new String(ca); - } - /** - * Format method for the s conversion character and - * String argument. - * - * The only flag character that affects s format is - * the '-', meaning that the output should be left - * justified within the field. The default is to - * pad with blanks on the left. - * - * The field width is treated as the minimum number - * of characters to be printed. The default is the - * smaller of the number of characters in the the - * input and the precision. Padding is with blanks - * by default. - * - * The precision, if set, specifies the maximum - * number of characters to be printed from the - * string. A null digit string is treated - * as a 0. The default is not to set a maximum - * number of characters to be printed. - * @param x the String to format. - * @return the formatted String. - */ - private String printSFormat(String x) { - int nPrint = x.length(); - int width = fieldWidth; - if (precisionSet && nPrint>precision) - nPrint=precision; - if (!fieldWidthSet) width = nPrint; - int n=0; - if (width>nPrint) n+=width-nPrint; - if (nPrint>=x.length()) n+= x.length(); - else n+= nPrint; - char[] ca = new char[n]; - int i=0; - if (leftJustify) { - if (nPrint>=x.length()) { - char[] csx = x.toCharArray(); - for (i=0; i<x.length(); i++) ca[i]=csx[i]; - } - else { - char[] csx = - x.substring(0,nPrint).toCharArray(); - for (i=0; i<nPrint; i++) ca[i]=csx[i]; - } - for (int j=0; j<width-nPrint; j++,i++) - ca[i]=' '; - } - else { - for (i=0; i<width-nPrint; i++) ca[i]=' '; - if (nPrint>=x.length()) { - char[] csx = x.toCharArray(); - for (int j=0; j<x.length(); i++,j++) - ca[i]=csx[j]; - } - else { - char[] csx = - x.substring(0,nPrint).toCharArray(); - for (int j=0; j<nPrint; i++,j++) - ca[i]=csx[j]; - } - } - return new String(ca); - } - /** - * Check for a conversion character. If it is - * there, store it. - * * @return <code>true</code> if the conversion - * character is there, and - * <code>false</code> otherwise. - */ - private boolean setConversionCharacter() { - /* idfgGoxXeEcs */ - boolean ret = false; - conversionCharacter='\0'; - if (pos < fmt.length()) { - char c = fmt.charAt(pos); - if (c=='i'||c=='d'||c=='f'||c=='g'||c=='G' - || c=='o' || c=='x' || c=='X' || c=='e' - || c=='E' || c=='c' || c=='s' || c=='%') { - conversionCharacter = c; - pos++; - ret = true; - } - } - return ret; - } - /** - * Check for an h, l, or L in a format. An L is - * used to control the minimum number of digits - * in an exponent when using floating point - * formats. An l or h is used to control - * conversion of the input to a long or short, - * respectively, before formatting. If any of - * these is present, store them. - */ - private void setOptionalHL() { - optionalh=false; - optionall=false; - optionalL=false; - if (pos < fmt.length()) { - char c = fmt.charAt(pos); - if (c=='h') { optionalh=true; pos++; } - else if (c=='l') { optionall=true; pos++; } - else if (c=='L') { optionalL=true; pos++; } - } - } - /** - * Set the precision. - */ - private void setPrecision() { - int firstPos = pos; - precisionSet = false; - if (pos<fmt.length()&&fmt.charAt(pos)=='.') { - pos++; - if ((pos < fmt.length()) - && (fmt.charAt(pos)=='*')) { - pos++; - if (!setPrecisionArgPosition()) { - variablePrecision = true; - precisionSet = true; - } - return; - } - else { - while (pos < fmt.length()) { - char c = fmt.charAt(pos); - if (Character.isDigit(c)) pos++; - else break; - } - if (pos > firstPos+1) { - String sz = fmt.substring(firstPos+1,pos); - precision = Integer.parseInt(sz); - precisionSet = true; - } - } - } - } - /** - * Set the field width. - */ - private void setFieldWidth() { - int firstPos = pos; - fieldWidth = 0; - fieldWidthSet = false; - if ((pos < fmt.length()) - && (fmt.charAt(pos)=='*')) { - pos++; - if (!setFieldWidthArgPosition()) { - variableFieldWidth = true; - fieldWidthSet = true; - } - } - else { - while (pos < fmt.length()) { - char c = fmt.charAt(pos); - if (Character.isDigit(c)) pos++; - else break; - } - if (firstPos<pos && firstPos < fmt.length()) { - String sz = fmt.substring(firstPos,pos); - fieldWidth = Integer.parseInt(sz); - fieldWidthSet = true; - } - } - } - /** - * Store the digits <code>n</code> in %n$ forms. - */ - private void setArgPosition() { - int xPos; - for (xPos=pos; xPos<fmt.length(); xPos++) { - if (!Character.isDigit(fmt.charAt(xPos))) - break; - } - if (xPos>pos && xPos<fmt.length()) { - if (fmt.charAt(xPos)=='$') { - positionalSpecification = true; - argumentPosition= - Integer.parseInt(fmt.substring(pos,xPos)); - pos=xPos+1; - } - } - } - /** - * Store the digits <code>n</code> in *n$ forms. - */ - private boolean setFieldWidthArgPosition() { - boolean ret=false; - int xPos; - for (xPos=pos; xPos<fmt.length(); xPos++) { - if (!Character.isDigit(fmt.charAt(xPos))) - break; - } - if (xPos>pos && xPos<fmt.length()) { - if (fmt.charAt(xPos)=='$') { - positionalFieldWidth = true; - argumentPositionForFieldWidth= - Integer.parseInt(fmt.substring(pos,xPos)); - pos=xPos+1; - ret=true; - } - } - return ret; - } - /** - * Store the digits <code>n</code> in *n$ forms. - */ - private boolean setPrecisionArgPosition() { - boolean ret=false; - int xPos; - for (xPos=pos; xPos<fmt.length(); xPos++) { - if (!Character.isDigit(fmt.charAt(xPos))) - break; - } - if (xPos>pos && xPos<fmt.length()) { - if (fmt.charAt(xPos)=='$') { - positionalPrecision = true; - argumentPositionForPrecision= - Integer.parseInt(fmt.substring(pos,xPos)); - pos=xPos+1; - ret=true; - } - } - return ret; - } - boolean isPositionalSpecification() { - return positionalSpecification; - } - int getArgumentPosition() { return argumentPosition; } - boolean isPositionalFieldWidth() { - return positionalFieldWidth; - } - int getArgumentPositionForFieldWidth() { - return argumentPositionForFieldWidth; - } - boolean isPositionalPrecision() { - return positionalPrecision; - } - int getArgumentPositionForPrecision() { - return argumentPositionForPrecision; - } - /** - * Set flag characters, one of '-+#0 or a space. - */ - private void setFlagCharacters() { - /* '-+ #0 */ - thousands = false; - leftJustify = false; - leadingSign = false; - leadingSpace = false; - alternateForm = false; - leadingZeros = false; - for ( ; pos < fmt.length(); pos++) { - char c = fmt.charAt(pos); - if (c == '\'') thousands = true; - else if (c == '-') { - leftJustify = true; - leadingZeros = false; - } - else if (c == '+') { - leadingSign = true; - leadingSpace = false; - } - else if (c == ' ') { - if (!leadingSign) leadingSpace = true; - } - else if (c == '#') alternateForm = true; - else if (c == '0') { - if (!leftJustify) leadingZeros = true; - } - else break; - } - } - /** - * The integer portion of the result of a decimal - * conversion (i, d, u, f, g, or G) will be - * formatted with thousands' grouping characters. - * For other conversions the flag is ignored. - */ - private boolean thousands = false; - /** - * The result of the conversion will be - * left-justified within the field. - */ - private boolean leftJustify = false; - /** - * The result of a signed conversion will always - * begin with a sign (+ or -). - */ - private boolean leadingSign = false; - /** - * Flag indicating that left padding with spaces is - * specified. - */ - private boolean leadingSpace = false; - /** - * For an o conversion, increase the precision to - * force the first digit of the result to be a - * zero. For x (or X) conversions, a non-zero - * result will have 0x (or 0X) prepended to it. - * For e, E, f, g, or G conversions, the result - * will always contain a radix character, even if - * no digits follow the point. For g and G - * conversions, trailing zeros will not be removed - * from the result. - */ - private boolean alternateForm = false; - /** - * Flag indicating that left padding with zeroes is - * specified. - */ - private boolean leadingZeros = false; - /** - * Flag indicating that the field width is *. - */ - private boolean variableFieldWidth = false; - /** - * If the converted value has fewer bytes than the - * field width, it will be padded with spaces or - * zeroes. - */ - private int fieldWidth = 0; - /** - * Flag indicating whether or not the field width - * has been set. - */ - private boolean fieldWidthSet = false; - /** - * The minimum number of digits to appear for the - * d, i, o, u, x, or X conversions. The number of - * digits to appear after the radix character for - * the e, E, and f conversions. The maximum number - * of significant digits for the g and G - * conversions. The maximum number of bytes to be - * printed from a string in s and S conversions. - */ - private int precision = 0; - /** Default precision. */ - private final static int defaultDigits=6; - /** - * Flag indicating that the precision is *. - */ - private boolean variablePrecision = false; - /** - * Flag indicating whether or not the precision has - * been set. - */ - private boolean precisionSet = false; - /* - */ - private boolean positionalSpecification=false; - private int argumentPosition=0; - private boolean positionalFieldWidth=false; - private int argumentPositionForFieldWidth=0; - private boolean positionalPrecision=false; - private int argumentPositionForPrecision=0; - /** - * Flag specifying that a following d, i, o, u, x, - * or X conversion character applies to a type - * short int. - */ - private boolean optionalh = false; - /** - * Flag specifying that a following d, i, o, u, x, - * or X conversion character applies to a type lont - * int argument. - */ - private boolean optionall = false; - /** - * Flag specifying that a following e, E, f, g, or - * G conversion character applies to a type double - * argument. This is a noop in Java. - */ - private boolean optionalL = false; - /** Control string type. */ - private char conversionCharacter = '\0'; - /** - * Position within the control string. Used by - * the constructor. - */ - private int pos = 0; - /** Literal or control format string. */ - private String fmt; - } - /** Vector of control strings and format literals. */ - private Vector vFmt = new Vector(); - /** Character position. Used by the constructor. */ - private int cPos=0; - /** Character position. Used by the constructor. */ - private DecimalFormatSymbols dfs=null; -} diff --git a/src/demos/nurbs/surfaceapp/SliderListener.java b/src/demos/nurbs/surfaceapp/SliderListener.java deleted file mode 100755 index 0d27fd4..0000000 --- a/src/demos/nurbs/surfaceapp/SliderListener.java +++ /dev/null @@ -1,36 +0,0 @@ -package demos.nurbs.surfaceapp; - -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - -/** - * Class reactiong to events occuring on JSliders controlling rotation - * Třída pro zpracování událostí na JSliderech ovládajících rotaci - * @author Tomáš Hráský - * - */ -public class SliderListener implements ChangeListener { - - /** - Parent window - *Rodičovské okno - */ - private SurfaceApp app; - - /** - * Creates new instance with link to parent window - * Vytvoří novou instanci s odkazem na rodičovské okno - * @param app parent window - */ - public SliderListener(SurfaceApp app) { - this.app=app; - } - - /* (non-Javadoc) - * @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent) - */ - public void stateChanged(ChangeEvent e) { - app.updateRotationLabels(); - app.updateGLCanvas(); - } -} diff --git a/src/demos/nurbs/surfaceapp/SpinnerListener.java b/src/demos/nurbs/surfaceapp/SpinnerListener.java deleted file mode 100755 index 46a9d82..0000000 --- a/src/demos/nurbs/surfaceapp/SpinnerListener.java +++ /dev/null @@ -1,52 +0,0 @@ -package demos.nurbs.surfaceapp; - -import javax.swing.JSpinner; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - -/** - * Listener reacting to event occuring on components editing coords end weight of selected control point - * Listener zpracovávající události na komponentách editujících souřadnice a váhu vybraného řídícícho bodu - * @author Tomáš Hráský - * - */ -public class SpinnerListener implements ChangeListener { - - /** - * Parent window - * Okno aplikace, k němuž listener patří - */ - private SurfaceApp appWindow; - - /** - * Creates new instance with link to parent window - * Vytvoří instanci objektu s odkazem na rodičovské okno - * @param app parent app window - */ - public SpinnerListener(SurfaceApp app) { - this.appWindow=app; - } - - /* (non-Javadoc) - * @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent) - */ - public void stateChanged(ChangeEvent e) { - JSpinner src=(JSpinner) e.getSource(); - // System.out.println(src.getValue().getClass().toString()); - float val = 0; - if(src.getValue() instanceof Double) val=((Double) src.getValue()).floatValue(); - if(src.getValue() instanceof Float) val=((Float) src.getValue()).floatValue(); - - if(src.getName()==SurfaceApp.X_SPINNER_NAME) - Surface.getInstance().setActiveX(val); - if(src.getName()==SurfaceApp.Y_SPINNER_NAME) - Surface.getInstance().setActiveY(val); - if(src.getName()==SurfaceApp.Z_SPINNER_NAME) - Surface.getInstance().setActiveZ(val); - if(src.getName()==SurfaceApp.W_SPINNER_NAME) - Surface.getInstance().setActiveW(val); - - - appWindow.updateGLCanvas(); - } -} diff --git a/src/demos/nurbs/surfaceapp/Surface.java b/src/demos/nurbs/surfaceapp/Surface.java deleted file mode 100755 index b96ff72..0000000 --- a/src/demos/nurbs/surfaceapp/Surface.java +++ /dev/null @@ -1,472 +0,0 @@ -package demos.nurbs.surfaceapp; - -import java.io.File; -import java.util.Vector; - -import simple.xml.Element; -import simple.xml.ElementList; -import simple.xml.Root; -import simple.xml.Serializer; -import simple.xml.load.Persister; - -/** - * Třída definice NURBS plochy, vystavěna podle návrhového vzoru Singleton - * @author Tomáš Hráský - * - */ -@Root(name="surface") -public class Surface { - /** - * Odkaz na instanci třídy - */ - private static Surface singleton; - /** - * Indikuje, zda je zadání plochy kompletní - */ - @Element(name="finished") - private boolean isSurfaceFinished=false; - - /** - * Index aktuálního vybraného řídícího bodu - */ - private int bodIndex = -1; - - /** - * Stupeň plocy ve směru parametru U - */ - @Element(name="orderU") - private int orderU=3; - - /** - * Stupeň plochy ve směru parametru V - */ - @Element(name="orderV") - private int orderV=3; - - /** - * Počet řídících bodů ve směru parametru V - */ - @Element(name="pointsInV") - private int pointsInV=4; - - /** - * Počet řídících bodů ve směru parametru U - */ - @Element(name="pointsInU") - private int pointsInU=4; - - - /** - * Pole souřadnic řídícíh bodů - * - */ - private float[] ctrlPoints - // ={ - // -150f,-150f, 400f,1f, - // -50f,-150f, 200f, 1f, - // 50f,-150f,-100f, 1f, - // 150f,-150f, 200f,1f, - // -150f,-50f, 100f, 1f, - // -50f,-50f, 300f, 1f, - // 50f,-50f, 0f, 1f, - // 150f,-50f,-100f,1f, - // -150f, 50f, 400f, 1f, - // -50f, 50f, 0f, 1f, - // 50f, 50f, 300f, 1f, - // 150f, 50f, 400f,1f, - // -150f, 150f,-200f, 1f, - // -50f, 150f,-200f, 1f, - // 50f, 150f, 0f, 1f, - // 150f, 150f,-100f,1f} - ; - /** - * Pole hodnot uzlového vektoru ve směru parametru U - */ - private float knotsU[] - // ={0.0f, 0.0f, 0.0f, 0.0f, - // 1f, 1f, 1.0f, 1.0f} - ; - - /** - * Pole hodnot uzlového vektoru ve směru parametru V - */ - private float knotsV[] - // ={0.0f, 0.0f, 0.0f, 0.0f, - // 1f, 1f, 1.0f, 1.0f} - ; - - /** - * Kolekce vektor pro persistenci souřadnic řídících bodů - */ - @ElementList(name="ctrlpoints",type=MyFloat.class) - private Vector<MyFloat> ctrlVector; - - /** - * Kolekce vektor pro persistenci uzlového vektoru ve směru parametru U - */ - @ElementList(name="knotsU",type=MyFloat.class) - private Vector<MyFloat> knotVectorU; - - /** - * Kolekce vektor pro persistenci uzlového vektoru ve směru parametru V - */ - @ElementList(name="knotsV",type=MyFloat.class) - private Vector<MyFloat> knotVectorV; - - /** - * Vytvoří prázdnou definici plochy - */ - public void clear(){ - isSurfaceFinished=false; - ctrlPoints=new float[0]; - knotsU=new float[0]; - knotsV=new float[0]; - orderU=3; - orderV=3; - pointsInU=0; - pointsInV=0; - } - - /** - * Pomocí framweorku Simple serializuje definici křivky do XML souboru - * @param f soubor pro uložení - */ - public void persist(File f){ - ctrlVector=new Vector<MyFloat>(ctrlPoints.length); - knotVectorU=new Vector<MyFloat>(knotsU.length); - knotVectorV=new Vector<MyFloat>(knotsV.length); - - for(Float ff:ctrlPoints) - ctrlVector.add(new MyFloat(ff)); - - for(Float ff:knotsU) - knotVectorU.add(new MyFloat(ff)); - - for(Float ff:knotsV) - knotVectorV.add(new MyFloat(ff)); - - Serializer s=new Persister(); - try { - System.out.println("ukládám"); - s.write(Surface.getInstance(),f); - } catch (Exception e1) { - e1.printStackTrace(); - } - - - } - - /** - * Vytvoří pomocí frameworku Simple křivku z definice uložené v XML souboru - * @param f soubor,z něhož se má definice načíst - * @throws Exception chyba při čtení ze souboru - */ - public void unPersist(File f) throws Exception{ - Serializer s=new Persister(); - Surface c=s.read(Surface.class,f); - initFromSurface(c); - } - - /** - * Inicializuje objekt podle jiného objektu typu Curve - * @param c referenční objekt - křivka - */ - private void initFromSurface(Surface c) { - this.orderU=c.getOrderU(); - this.orderV=c.getOrderV(); - this.ctrlPoints=new float[c.getCtrlVector().size()]; - this.knotsU=new float[c.getKnotVectorU().size()]; - this.knotsV=new float[c.getKnotVectorV().size()]; - int i=0; - for(MyFloat f:c.getCtrlVector()) - ctrlPoints[i++]=f.getValue(); - i=0; - for(MyFloat f:c.getKnotVectorU()) - knotsU[i++]=f.getValue(); - i=0; - for(MyFloat f:c.getKnotVectorV()) - knotsV[i++]=f.getValue(); - - this.pointsInU=c.getPointsInU(); - this.pointsInV=c.getPointsInV(); - - this.isSurfaceFinished=c.isSurfaceFinished(); - } - - /** - * Konstruktor, nastaví prázdné hodnoty polí definujících NURBS plochu - */ - private Surface(){ - // ctrlPoints=new float[0]; - // knotsU=new float[0]; - // knotsV=new float[0]; - // isSurfaceFinished=false; - clear(); - } - - /** - * Vrací instanci třídy (podle návrhového vzoru Singleton) - * @return instance třídy Curve - */ - public static Surface getInstance() { - if (singleton == null) - singleton = new Surface(); - return singleton; - - } - - /** - * Vrací pole uzlového vektoru ve směru parametru U - * @return pole hodnot uzlového vektoru ve směru parametru U - */ - public float[] getKnotsU() { - return this.knotsU; - } - - /** - * Vrací pole s hodnotami souřadnic řídících bodů - * @return pole souřadnic řídících bodů - */ - public float[] getCtrlPoints() { - return this.ctrlPoints; - } - - /** - * Vrací stupeň NURBS plochy ve směru parametru U - * @return stupeň NURBS plochy ve směru parametru U - */ - public int getOrderU() { - return this.orderU; - } - - /** - * Vrací index aktuálně vybraného řídícího bodu - * @return index aktuálně vybraného řídícího bodu - */ - public int getBodIndex() { - return bodIndex; - } - - /** - * Nastavuje index požadovaného aktuálně vybraného řídícího bodu - * @param bodIndex index požadovaného aktuálně vybraného řídícího bodu - */ - public void setBodIndex(int bodIndex) { - this.bodIndex = bodIndex; - } - - /** - * Vrací X-ovou souadnici aktuálně vybraného řídícího bodu, přepočítává hodnotu z homogenních souřadnic - * @return X-ová souadnice aktuálně vybraného řídícího bodu - */ - public float getActiveX(){ - if(bodIndex>=0){ - return ctrlPoints[bodIndex*4]/ctrlPoints[bodIndex*4+3]; - } - else return 0; - } - /** - * Vrací Y-ovou souadnici aktuálně vybraného řídícího bodu, přepočítává hodnotu z homogenních souřadnic - * @return Y-ová souadnice aktuálně vybraného řídícího bodu - */ - public float getActiveY(){ - if(bodIndex>=0){ - return ctrlPoints[bodIndex*4+1]/ctrlPoints[bodIndex*4+3]; - } - else return 0; - } - /** - * Vrací Z-ovou souadnici aktuálně vybraného řídícího bodu, přepočítává hodnotu z homogenních souřadnic - * @return Z-ová souadnice aktuálně vybraného řídícího bodu - */ - public float getActiveZ(){ - if(bodIndex>=0){ - return ctrlPoints[bodIndex*4+2]/ctrlPoints[bodIndex*4+3]; - } - else return 0; - } - - /** - * Vrací váhu aktuálně vybraného řídícího bodu - * @return váha aktuálně vybraného řídícího bodu - */ - public float getActiveW(){ - if(bodIndex>=0){ - return ctrlPoints[bodIndex*4+3]; - } - else return 0; - } - - /** - * Nastavuje X-ovou souadnici aktuálně vybraného řídícího bodu, přepočítává hodnotu do homogenních souřadnic - * @param x X-ová souřadnice aktuálně vybraného řídícího bodu - */ - public void setActiveX(float x){ - if(bodIndex>=0){ - ctrlPoints[bodIndex*4]=x*ctrlPoints[bodIndex*4+3]; - } - } - /** - * Nastavuje Y-ovou souadnici aktuálně vybraného řídícího bodu, přepočítává hodnotu do homogenních souřadnic - * @param y Y-ová souřadnice aktuálně vybraného řídícího bodu - */ - - public void setActiveY(float y){ - if(bodIndex>=0){ - ctrlPoints[bodIndex*4+1]=y*ctrlPoints[bodIndex*4+3]; - } - } - /** - * Nastavuje Z-ovou souadnici aktuálně vybraného řídícího bodu, přepočítává hodnotu do homogenních souřadnic - * @param z Z-ová souřadnice aktuálně vybraného řídícího bodu - */ - - public void setActiveZ(float z){ - if(bodIndex>=0){ - ctrlPoints[bodIndex*4+2]=z*ctrlPoints[bodIndex*4+3]; - } - } - - /** - *Nastavuje váhu aktuálně vybraného řídícího bodu, upravuje hodnoty stávajícíh souřadic vzhledem k váze a použití homogenních souřadnic - * @param w váha aktuálně vybraného řídícího bodu - */ - public void setActiveW(float w){ - if(bodIndex>=0){ - float oldW=ctrlPoints[bodIndex*4+3]; - if(w>0){ - ctrlPoints[bodIndex*4+3]=w; - //úprava souřadnic - ctrlPoints[bodIndex*4]=ctrlPoints[bodIndex*4]/oldW*w; - ctrlPoints[bodIndex*4+1]=ctrlPoints[bodIndex*4+1]/oldW*w; - ctrlPoints[bodIndex*4+2]=ctrlPoints[bodIndex*4+2]/oldW*w; - } - - } - } - - /** - * Nastavuje uzlový vektor ve směru parametru U - * @param knots nový uzlový vektor ve směru parametru U - */ - public void setKnotsU(float[] knots) { - this.knotsU = knots; - } - - /** - * Vrací informaci o stavu dokončení definice křvky - * @return true pokud je definice křivky kompletní, jinak false - */ - public boolean isSurfaceFinished() { - return isSurfaceFinished; - } - - /** - * Nastavuje řídící body - * @param ctrlPoints pole souřadnic řídících bodů - */ - public void setCtrlPoints(float[] ctrlPoints) { - this.ctrlPoints = ctrlPoints; - } - - /** - * Nastavuje stav dokončení definice křivky - * @param b stav dokončení definice křivky - * - */ - public void setIsSurfaceFinished(boolean b) { - isSurfaceFinished=b; - } - - /** - * Vrací vektor souřadnic řídích bodů pro serializaci - * @return vektor souřadnic řídících bodů - */ - private Vector<MyFloat> getCtrlVector() { - return ctrlVector; - } - - /** - * Vrací vektor prvků uzlového vektoru ve směru parametru U pro serializaci - * @return vektor prvků uzlového vektoru ve směru parametru U - */ - private Vector<MyFloat> getKnotVectorU() { - return knotVectorU; - } - - /** - * Vrací stupeň plochy ve směru parametru U - * @param order stupeň plochy ve směru parametru U - */ - public void setOrderU(int order) { - this.orderU = order; - } - /** - * Vrací pole uzlového vektoru ve směru parametru V - * @return pole hodnot uzlového vektoru ve směru parametru V - */ - public float[] getKnotsV() { - return knotsV; - } - /** - * Nastavuje uzlový vektor ve směru parametru V - * @param knotsV nový uzlový vektor ve směru parametru V - */ - public void setKnotsV(float[] knotsV) { - this.knotsV = knotsV; - } - /** - * Vrací stupeň plochy ve směru parametru V - * @return stupeň plochy ve směru parametru V - */ - public int getOrderV() { - return orderV; - } - /** - * Nastavuje stupeň NURBS plochy ve směru parametru V - * @param orderV stupeň plochy ve směru parametru V - */ - public void setOrderV(int orderV) { - this.orderV = orderV; - } - /** - * Vrací vektor prvků uzlového vektoru ve směru parametru V pro serializaci - * @return vektor prvků uzlového vektoru ve směru parametru V - */ - private Vector<MyFloat> getKnotVectorV() { - return knotVectorV; - } - - /** - * Vrací počet řídících bodů ve směru parametru V (tj. počet sloupců) - * @return počet řídících bodů ve směru parametru V - */ - public int getPointsInV() { - return pointsInV; - } - - /** - * Nastavuje počet řídících bodů ve směru parametru V - * @param pointsInV počet řídících bodů ve směru parametru V - */ - public void setPointsInV(int pointsInV) { - this.pointsInV = pointsInV; - } - - /** - * Vrací počet řídících bodů ve směru parametru U (tj. počet řádků) - * @return počet řídících bodů ve směru parametru U - - */ - public int getPointsInU() { - return pointsInU; - } - - /** - * Nastavuje počet řídících bodů ve směru parametru U - * @param pointsInU počet řídících bodů ve směru parametru U - */ - public void setPointsInU(int pointsInU) { - this.pointsInU = pointsInU; - } -} diff --git a/src/demos/nurbs/surfaceapp/SurfaceApp.java b/src/demos/nurbs/surfaceapp/SurfaceApp.java deleted file mode 100755 index 7f2a546..0000000 --- a/src/demos/nurbs/surfaceapp/SurfaceApp.java +++ /dev/null @@ -1,1066 +0,0 @@ -package demos.nurbs.surfaceapp; - -import java.awt.Dimension; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Insets; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; - -import javax.media.opengl.GLCanvas; -import javax.swing.AbstractAction; -import javax.swing.ButtonGroup; -import javax.swing.ImageIcon; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JMenu; -import javax.swing.JMenuBar; -import javax.swing.JMenuItem; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; -import javax.swing.JSeparator; -import javax.swing.JSlider; -import javax.swing.JSpinner; -import javax.swing.JToggleButton; -import javax.swing.JToolBar; -import javax.swing.SpinnerNumberModel; -import javax.swing.ToolTipManager; - -import demos.nurbs.icons.*; -import demos.nurbs.knotslidercomponent.JKnotSlider; - -/** - * Main class for application demostrating capabilitues of JOGL library extend by NURBS surface functionalities - * Hlavní třída aplikace demonstrující shopnosti knihovny JOGL při práci s NURBS - * plochami - * - * @author Tomáš Hráský - * - */ -@SuppressWarnings("serial") -public class SurfaceApp extends JFrame implements ActionListener -{ - - /** - * X-coord editing component name - * Jméno komponenty pro editaci X-ové souřadnice aktuálního bodu - */ - public static final String X_SPINNER_NAME = "xspinner"; - - /** - * Y-coord editing component name - * Jméno komponenty pro editaci Y-ové souřadnice aktuálního bodu - */ - public static final String Y_SPINNER_NAME = "yspinner"; - - /** - * Z-coord editing component name - * Jméno komponenty pro editaci Z-ové souřadnice aktuálního bodu - */ - public static final String Z_SPINNER_NAME = "zspinner"; - - /** - * Weight editing component name - * Jméno komponenty pro editaci váhy aktuálního bodu - */ - public static final String W_SPINNER_NAME = "wspinner"; - - /** - * U direction knotvector editing component - * Jméno komponenty pro editaci uzlového vektoru ve směru parametru U - */ - private static final String U_KNOTSLIDER = "Uknotspinner"; - - /** - * V direction knotvector editing component - * Jméno komponenty pro editaci uzlového vektoru ve směru parametru V - */ - private static final String V_KNOTSLIDER = "Vknotspinner"; - - /** - * New control point action name - * Jméno události přidání řídícího bodu - */ - public static final String PRIDAT_AC = "PRIDAT"; - - /** - * Degree set event name - * Jméno události zadání stupně křivky - */ - public static final String STUPEN_AC = "STUPEN"; - - /** - * Delete control point event name - * Jméno události smazání řídícího bodu - */ - public static final String SMAZAT_AC = "SMAZAT"; - - /** - * New clamped knotvector event name - * Jméno události vytvoření uzavřeného uzlového vektoru - */ - public static final String UZAVRENY_AC = "UZAVRENY"; - - /** - * New uniform knotvector event name - * Jméno události vytvoření otevřeného (uniformního) uzlového vektoru - */ - public static final String OTEVRENY_AC = "OTEVRENY"; - - /** - * Save surface event name - * Jméno události uložení plochy - */ - public static final String ULOZIT_AC = "ULOZIT"; - - /** - * Load surface event name - * Jméno události načetení uložené definice plochy - */ - public static final String NACIST_AC = "NACIST"; - - /** - * Move control point event name - * Jméno události pohybu řídícího bodu - */ - private static final String MOVE_AC = "MOVE"; - - /** - * New surface event name - * Jméno události vytvoření nové plochy - */ - static final String NOVA_AC = "NEWSURFACE"; - - /** - * Exit app event name - * Jméno události ukončení aplikace - */ - public static final String EXIT_AC = "EXIT"; - - /** - * Show about event name - * Jméno události zobrazení okna o aplikaci - */ - public static final String INFO_AC = "INFO"; - - /** - * Add column of control points event name - * Jméno události přidání sloupce řídících bodů - */ - public static final String PRIDAT_AC_SLOUPEC = "ADDCOL"; - - /** - * Add row of control points event name - * Jméno události přidání řádku řídících bodů - */ - public static final String PRIDAT_AC_RADEK = "ADDROW"; - - /** - * Remove row of control points event name - * Jméno události smazání řádku řídících bodů - */ - public static final String SMAZAT_AC_RADEK = "DELROW"; - - /** - * Remove column of control points event name - * Jméno události smazání sloupce řídících bodů - */ - public static final String SMAZAT_AC_SLOUPEC = "DELCOL"; - - /** - * OpenGL drawing canvas - * Plátno pro vykreslování pomocí OpenGL - */ - private GLCanvas glCanvas; - - /** - * X-coord editing component - * Komponenta pro editaci X-ové souřadnice aktuálního bodu - */ - private JSpinner xSpinner; - - /** - * Y-coord editing component - * Komponenta pro editaci Y-ové souřadnice aktuálního bodu - */ - private JSpinner ySpinner; - - /** - * Weight editing component - * Komponenta pro editaci váhy aktuálního bodu - */ - private JSpinner wSpinner; - - /** - * Z-coord editing component - * Komponenta pro editaci Z-ové souřadnice aktuálního bodu - */ - private JSpinner zSpinner; - - /** - * Mouse listener - * Listener událostí myši - */ - private SurfaceMouseListener mouseListener; - - /** - * U direction knotvector editing component - * Komponenta pro editaci uzlového vektoru ve směru parametru U - */ - private JKnotSlider knotSlider; - - /** - * V direction knotvector editing component - * Komponenta pro editaci uzlového vektoru ve směru parametru V - */ - private JKnotSlider knotSlider2; - - /** - * Set move points mode - * Tlačítko pro zapnutí módu pohybu řídících bodů - */ - private JToggleButton moveTB; - - /** - * X rotation component - * Komponenta ovládající otočení definované plochy kolem osy X - */ - private JSlider rotaceXSlider; - - /** - * Y rotation component - * Komponenta ovládající otočení definované plochy kolem osy Y - */ - private JSlider rotaceYSlider; - - /** - * Z rotation component - * Komponenta ovládající otočení definované plochy kolem osy Z - */ - private JSlider rotaceZSlider; - - /** - * Label for X rotation editing component - * Nadpis komponenty ovládající otočení definované plochy kolem osy X - */ - private JLabel rotaceXLabel; - /** - * Label for Y rotation editing component - * Nadpis komponenty ovládající otočení definované plochy kolem osy Y - */ - private JLabel rotaceYLabel; - /** - * Label for Z rotation editing component - * Nadpis komponenty ovládající otočení definované plochy kolem osy Z - */ - private JLabel rotaceZLabel; - - /** - * GL events listener - * Objekt reagující na události OpenGL plátna - */ - private GLListener glListener; - - /** - * Use lighting checkbox - * Checkbox použití nasvícení objektu - */ - private JCheckBox lightingChBox; - - /** - * Constructor, creates GUI - * Konstruktor, vytvoří grafické uživatelské rozhraní - */ - public SurfaceApp() { - //super( "Tomáš Hráský - ukázková aplikace funkcionality GLU NURBS funkcí - JOGL"); - super( "Tomáš Hráský - example application of GLU NURBS in JOGL"); - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - - initGUI(); - } - - /** - * GUI initialization - * Inicializace grafického uživatelského rozhraní - */ - private void initGUI() { - JPopupMenu.setDefaultLightWeightPopupEnabled(false); - ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false); - - this.glCanvas = new GLCanvas(); - glCanvas.setSize(new Dimension(750, 500)); - this.glListener=new GLListener(this); - glCanvas.addGLEventListener(glListener); - mouseListener = new SurfaceMouseListener(this); - glCanvas.addMouseListener(mouseListener); - glCanvas.addMouseMotionListener(mouseListener); - setLayout(new GridBagLayout()); - GridBagConstraints c = new GridBagConstraints(); - c.fill = GridBagConstraints.BOTH; - - c.gridy = 0; - c.gridwidth = GridBagConstraints.REMAINDER; - - ActListener listener = new ActListener(this); - - JMenuBar menuBar = new JMenuBar(); - getContentPane().add(menuBar, c); - - JMenu aplikaceMenu = new JMenu("Aplication"); - menuBar.add(aplikaceMenu); - - JMenuItem aboutMI = new JMenuItem("About"); - aboutMI.setActionCommand(INFO_AC); - aboutMI.addActionListener(listener); - aplikaceMenu.add(aboutMI); - - aplikaceMenu.add(new JSeparator()); - - JMenuItem konecMI = new JMenuItem("Exit"); - konecMI.addActionListener(listener); - konecMI.setActionCommand(EXIT_AC); - aplikaceMenu.add(konecMI); - - JMenu krivkaMenu = new JMenu("Surface"); - menuBar.add(krivkaMenu); - - JMenu pridatBodyM = new JMenu("Add points"); - krivkaMenu.add(pridatBodyM); - // pridatBodyM.addActionListener(listener); - - // pridatBodyM.setActionCommand(PRIDAT_AC); - - JMenuItem pridatRadkyMI=new JMenuItem("Points row"); - pridatRadkyMI.setActionCommand(PRIDAT_AC_RADEK); - pridatRadkyMI.addActionListener(listener); - - JMenuItem pridatSloupceMI=new JMenuItem("Points column"); - pridatSloupceMI.setActionCommand(PRIDAT_AC_SLOUPEC); - pridatSloupceMI.addActionListener(listener); - pridatBodyM.add(pridatRadkyMI); - pridatBodyM.add(pridatSloupceMI); - - - JMenu smazatBodyM = new JMenu("Delete points"); - krivkaMenu.add(smazatBodyM); - // smazatBodyM.addActionListener(listener); - - // smazatBodyM.setActionCommand(SMAZAT_AC); - - JMenuItem smazatRadkyMI=new JMenuItem("Points row"); - smazatRadkyMI.setActionCommand(SMAZAT_AC_RADEK); - smazatRadkyMI.addActionListener(listener); - smazatBodyM.add(smazatRadkyMI); - JMenuItem smazatSloupceMI=new JMenuItem("Points column"); - smazatSloupceMI.setActionCommand(SMAZAT_AC_SLOUPEC); - smazatSloupceMI.addActionListener(listener); - smazatBodyM.add(smazatSloupceMI); - - - JMenuItem stupenMI = new JMenuItem("Set surface degree"); - krivkaMenu.add(stupenMI); - stupenMI.addActionListener(listener); - stupenMI.setActionCommand(STUPEN_AC); - - JMenu knotVecMenu = new JMenu("Create knotvectors"); - krivkaMenu.add(knotVecMenu); - - JMenuItem clampedKVMI = new JMenuItem("Clamped"); - knotVecMenu.add(clampedKVMI); - clampedKVMI.setActionCommand(UZAVRENY_AC); - clampedKVMI.addActionListener(listener); - JMenuItem unclampedKVMI = new JMenuItem("Uniform"); - knotVecMenu.add(unclampedKVMI); - unclampedKVMI.setActionCommand(OTEVRENY_AC); - unclampedKVMI.addActionListener(listener); - - JMenuItem moveMI = new JMenuItem("Move points"); - krivkaMenu.add(moveMI); - moveMI.setActionCommand(MOVE_AC); - moveMI.addActionListener(listener); - - krivkaMenu.add(new JSeparator()); - - krivkaMenu.add(new JSeparator()); - - JMenuItem novaMI = new JMenuItem("New surface"); - krivkaMenu.add(novaMI); - novaMI.setActionCommand(NOVA_AC); - novaMI.addActionListener(listener); - - JMenuItem ulozitMI = new JMenuItem("Safe surface as..."); - krivkaMenu.add(ulozitMI); - ulozitMI.setActionCommand(ULOZIT_AC); - ulozitMI.addActionListener(listener); - JMenuItem nacistMI = new JMenuItem("Load surface"); - krivkaMenu.add(nacistMI); - nacistMI.setActionCommand(NACIST_AC); - nacistMI.addActionListener(listener); - - c.gridy++; - JToolBar toolBar = new JToolBar(); - getContentPane().add(toolBar, c); - - ButtonGroup bg = new ButtonGroup(); - - JButton novaB = new JButton(); - // novaB.setText("Nová"); - novaB.setToolTipText("New surface"); - novaB.setIcon(IconFactory.getIcon("demos/nurbs/icons/folder_new.png")); - novaB.setActionCommand(NOVA_AC); - novaB.addActionListener(listener); - toolBar.add(novaB); - - JButton ulozitB = new JButton(); - ulozitB.setIcon(IconFactory.getIcon("demos/nurbs/icons/adept_sourceseditor.png")); - // ulozitB.setText("Uložit"); - ulozitB.setToolTipText("Save"); - ulozitB.setActionCommand(ULOZIT_AC); - ulozitB.addActionListener(listener); - toolBar.add(ulozitB); - - JButton nahratB = new JButton(); - // nahratB.setText("Nahrát"); - nahratB.setToolTipText("Load surface"); - nahratB.setIcon(IconFactory.getIcon("demos/nurbs/icons/fileimport.png")); - nahratB.setActionCommand(NACIST_AC); - nahratB.addActionListener(listener); - toolBar.add(nahratB); - - toolBar.add(new JToolBar.Separator()); - - JToggleButton pridatTB = new JToggleButton(); - // pridatTB.setText("Přidat body"); - pridatTB.setToolTipText("Add contol points"); - toolBar.add(pridatTB); - pridatTB.setIcon(IconFactory.getIcon("demos/nurbs/icons/add.png")); - // pridatTB.setActionCommand(PRIDAT_AC); - // pridatTB.addActionListener(listener); - - bg.add(pridatTB); - - final JPopupMenu popup2=new JPopupMenu(); - JMenuItem radkyPopupMI=new JMenuItem("Poits row"); - radkyPopupMI.setActionCommand(PRIDAT_AC_RADEK); - JMenuItem sloupcePopupMI=new JMenuItem("Points column"); - sloupcePopupMI.setActionCommand(PRIDAT_AC_SLOUPEC); - radkyPopupMI.addActionListener(listener); - sloupcePopupMI.addActionListener(listener); - - popup2.add(radkyPopupMI); - popup2.add(sloupcePopupMI); - - pridatTB.addMouseListener(new - /** - * CLass to add context menu to toolbar button - * Třída pro připojení kontextového menu na - * tlačítko na liště nástrojů - * @author Tomáš Hráský - */ - MouseAdapter() { - - @Override - public void mouseClicked(MouseEvent e) { - super.mouseClicked(e); - e.isPopupTrigger(); - popup2.show(e.getComponent(), e.getX(), e.getY()); - } - - - }); - - JToggleButton smazatTB = new JToggleButton(); - // smazatTB.setText("Smazat body"); - smazatTB.setToolTipText("Delete points"); - toolBar.add(smazatTB); - smazatTB.setIcon(IconFactory.getIcon("demos/nurbs/icons/fileclose.png")); - // smazatTB.setActionCommand(SMAZAT_AC); - // smazatTB.addActionListener(listener); - bg.add(smazatTB); - - final JPopupMenu popup3=new JPopupMenu(); - JMenuItem radky2PopupMI=new JMenuItem("Points row"); - radky2PopupMI.setActionCommand(SMAZAT_AC_RADEK); - JMenuItem sloupce2PopupMI=new JMenuItem("Points column"); - sloupce2PopupMI.setActionCommand(SMAZAT_AC_SLOUPEC); - radky2PopupMI.addActionListener(listener); - sloupce2PopupMI.addActionListener(listener); - - popup3.add(radky2PopupMI); - popup3.add(sloupce2PopupMI); - - - smazatTB.addMouseListener(new - /** - * CLass to add context menu to toolbar button - * Třída pro připojení kontextového menu na - * tlačítko na liště nástrojů - * @author Tomáš Hráský - */ - MouseAdapter() { - - @Override - public void mouseClicked(MouseEvent e) { - super.mouseClicked(e); - e.isPopupTrigger(); - popup3.show(e.getComponent(), e.getX(), e.getY()); - } - - - }); - - JToggleButton stupenTB = new JToggleButton(); - // stupenTB.setText("Smazat body"); - stupenTB.setToolTipText("Set surface degree"); - toolBar.add(stupenTB); - stupenTB.setIcon(IconFactory.getIcon("demos/nurbs/icons/math_rsup.png")); - stupenTB.setActionCommand(STUPEN_AC); - stupenTB.addActionListener(listener); - bg.add(stupenTB); - - final JPopupMenu popup = new JPopupMenu(); - - JMenuItem uzavrenyPopupMI = new JMenuItem("Clamped"); - popup.add(uzavrenyPopupMI); - uzavrenyPopupMI.setActionCommand(UZAVRENY_AC); - uzavrenyPopupMI.addActionListener(listener); - JMenuItem otevrenyPopupMI = new JMenuItem("Uniform"); - popup.add(otevrenyPopupMI); - otevrenyPopupMI.setActionCommand(OTEVRENY_AC); - otevrenyPopupMI.addActionListener(listener); - - JToggleButton vytvoritButton = new JToggleButton(); - // vytvoritButton.setText("Vytvořit uzlový vektor"); - vytvoritButton.setToolTipText("Create knotvectors"); - vytvoritButton.setIcon(IconFactory.getIcon("demos/nurbs/icons/newfunction.png")); - bg.add(vytvoritButton); - - vytvoritButton.addMouseListener(new - /** - * CLass to add context menu to toolbar button - * Třída pro připojení kontextového menu na - * tlačítko na liště nástrojů - * @author Tomáš Hráský - */ - MouseAdapter() { - - @Override - public void mouseClicked(MouseEvent e) { - super.mouseClicked(e); - e.isPopupTrigger(); - popup.show(e.getComponent(), e.getX(), e.getY()); - } - - }); - popup.setInvoker(vytvoritButton); - toolBar.add(vytvoritButton); - - moveTB = new JToggleButton(); - // moveTB.setText("Hýbat body"); - moveTB.setToolTipText("Move points"); - moveTB.setIcon(IconFactory.getIcon("demos/nurbs/icons/mouse.png")); - toolBar.add(moveTB); - moveTB.setActionCommand(MOVE_AC); - moveTB.addActionListener(listener); - bg.add(moveTB); - toolBar.add(new JToolBar.Separator()); - JButton infoB = new JButton(); - // infoB.setText("Ukončit"); - infoB.setToolTipText("About"); - - infoB.setIcon(IconFactory.getIcon("demos/nurbs/icons/info.png")); - toolBar.add(infoB); - infoB.setActionCommand(INFO_AC); - infoB.addActionListener(listener); - toolBar.add(new JToolBar.Separator()); - - JButton exitB = new JButton(); - // exitB.setText("Ukončit"); - exitB.setToolTipText("Exit"); - - exitB.setIcon(IconFactory.getIcon("demos/nurbs/icons/exit.png")); - toolBar.add(exitB); - exitB.setActionCommand(EXIT_AC); - exitB.addActionListener(listener); - - c.gridwidth = 1; - - c.gridx = 0; - c.gridy = 2; - - c.weightx = 1; - c.weighty = 1; - - getContentPane().add(glCanvas, c); - c.gridx = 1; - JPanel rightPanel = new JPanel(new GridBagLayout()); - GridBagConstraints cc = new GridBagConstraints(); - cc.insets = new Insets(5, 5, 5, 5); - xSpinner = new JSpinner(new SpinnerNumberModel(0, -10000, 10000.0, 1)); - ySpinner = new JSpinner(new SpinnerNumberModel(0, -10000.0, 10000.0, 1)); - zSpinner = new JSpinner(new SpinnerNumberModel(0, -10000.0, 10000.0, 1)); - wSpinner = new JSpinner(new SpinnerNumberModel(0, 0, 10000.0, .05)); - - SpinnerListener spinnerListener = new SpinnerListener(this); - SliderListener sliderListener=new SliderListener(this); - - xSpinner.addChangeListener(spinnerListener); - xSpinner.setName(X_SPINNER_NAME); - ySpinner.addChangeListener(spinnerListener); - ySpinner.setName(Y_SPINNER_NAME); - wSpinner.addChangeListener(spinnerListener); - wSpinner.setName(W_SPINNER_NAME); - - zSpinner.setName(Z_SPINNER_NAME); - zSpinner.addChangeListener(spinnerListener); - - cc.gridx = 0; - cc.gridy = 0; - cc.gridwidth = 2; - cc.weighty = 0; - - rotaceXLabel = new JLabel(); - rightPanel.add(rotaceXLabel, cc); - cc.gridy++; - - rotaceXSlider = new JSlider(-180, 180, 0); - rotaceXSlider.addChangeListener(sliderListener); - rightPanel.add(rotaceXSlider, cc); - cc.gridy++; - - rotaceYLabel = new JLabel(); - rightPanel.add(rotaceYLabel, cc); - cc.gridy++; - - rotaceYSlider = new JSlider(-180, 180, 0); - rotaceYSlider.addChangeListener(sliderListener); - rightPanel.add(rotaceYSlider, cc); - cc.gridy++; - - rotaceZLabel = new JLabel(); - rightPanel.add(rotaceZLabel, cc); - cc.gridy++; - - rotaceZSlider = new JSlider(-180, 180, 0); - rotaceZSlider.addChangeListener(sliderListener); - rightPanel.add(rotaceZSlider, cc); - cc.gridy++; - - lightingChBox=new JCheckBox(new - /** - * Class for easy reaction to checkbox event - * Třída pro jendoduché zpracování akce na checkboxu - * @author Tomáš Hráský - */ - AbstractAction("Show Bézier plates"){ - - public void actionPerformed(ActionEvent e) { - updateGLCanvas(); - } - - }); - lightingChBox.setSelected(false); - - rightPanel.add(lightingChBox,cc); - - cc.gridy++; - - updateRotationLabels(); - - cc.weighty = 1; - rightPanel.add(new JPanel(), cc); - cc.weighty = 0; - cc.gridwidth = 1; - - cc.gridy++; - rightPanel.add(new JLabel("X"), cc); - cc.gridy++; - rightPanel.add(new JLabel("Y"), cc); - cc.gridy++; - rightPanel.add(new JLabel("Z"), cc); - cc.gridy++; - rightPanel.add(new JLabel("W"), cc); - - cc.gridx = 1; - cc.gridy -= 3; - rightPanel.add(xSpinner, cc); - cc.gridy++; - rightPanel.add(ySpinner, cc); - cc.gridy++; - rightPanel.add(zSpinner, cc); - cc.gridy++; - rightPanel.add(wSpinner, cc); - - xSpinner.setEnabled(false); - ySpinner.setEnabled(false); - zSpinner.setEnabled(false); - wSpinner.setEnabled(false); - - c.weightx = 0; - c.weighty = 0; - getContentPane().add(rightPanel, c); - - c.gridx = 0; - c.gridy++; - - knotSlider = new JKnotSlider(Surface.getInstance().getKnotsU()); - knotSlider.addActionListener(this); - knotSlider.setName(U_KNOTSLIDER); - getContentPane().add(knotSlider, c); - - c.gridy++; - knotSlider2 = new JKnotSlider(Surface.getInstance().getKnotsU()); - knotSlider2.addActionListener(this); - knotSlider2.setName(V_KNOTSLIDER); - getContentPane().add(knotSlider2, c); - - pack(); - invalidate(); - setVisible(true); - } - - /** - * Method for running application - * Metoda pro spuštění aplikace - * - * @param args - * no arguments from command line - * - */ - public static void main(String[] args) { - new SurfaceApp(); - - } - - /** - * Reaction to reqest for canvas redraw - redraws canvas and sets coords of actually selected control point to editing components - * Reakce na požadavek překreslení OpenGL plátna, překreslí plátno a nastaví - * souřadnice aktuálního vybraného bodu do editačních komponent - */ - public void updateGLCanvas() { - glCanvas.repaint(); - if (Surface.getInstance().getBodIndex() >= 0) { - xSpinner.setEnabled(true); - ySpinner.setEnabled(true); - zSpinner.setEnabled(true); - wSpinner.setEnabled(true); - - xSpinner.setValue(Double.valueOf(Math.round(Surface.getInstance() - .getActiveX()))); - ySpinner.setValue(Double.valueOf(Math.round(Surface.getInstance() - .getActiveY()))); - zSpinner.setValue(Double.valueOf(Math.round(Surface.getInstance() - .getActiveZ()))); - wSpinner.setValue(Double - .valueOf(Surface.getInstance().getActiveW())); - } else { - xSpinner.setEnabled(false); - ySpinner.setEnabled(false); - zSpinner.setEnabled(false); - wSpinner.setEnabled(false); - } - } - - /* - * (non-Javadoc) - * - * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) - */ - public void actionPerformed(ActionEvent e) { - if (e.getSource() instanceof JKnotSlider) { - JKnotSlider src = (JKnotSlider) e.getSource(); - if (src.getName().equals(U_KNOTSLIDER)) { - if(src.checkKnotMulti(Surface.getInstance().getOrderU())){ - Surface.getInstance().setKnotsU(src.getKnotsFloat()); - }else{ - JOptionPane.showMessageDialog(this,"Maximum knot multiplicity exceeded","Error",JOptionPane.ERROR_MESSAGE); - src.setKnots(Surface.getInstance().getKnotsU()); - } - - } else { - if(src.checkKnotMulti(Surface.getInstance().getOrderV())){ - Surface.getInstance().setKnotsV(src.getKnotsFloat()); - }else{ - JOptionPane.showMessageDialog(this,"Maximum knot multiplicity exceeded","Error",JOptionPane.ERROR_MESSAGE); - //JOptionPane.showMessageDialog(this,"Překročení maximální násobnosti uzlu","Chyba",JOptionPane.ERROR_MESSAGE); - src.setKnots(Surface.getInstance().getKnotsV()); - } - } - updateGLCanvas(); - } - } - - /** - * Returns OpenGL canvas - * Vrací OpenGL plátno - * - * @return OpenGL canvas - */ - public GLCanvas getGlCanvas() { - return glCanvas; - } - - /** - * Returns mouse listener - * Vrací listener událostí myši - * - * @return mouse listener - */ - public SurfaceMouseListener getMouseListener() { - return mouseListener; - } - - /** - * Creates NURBS surface with clamped knotvectors - * Vytvoří NURBS plochu s okrajovými uzlovými vektory - */ - public void uzavernyKV() { - int stupen; - int pocetBodu; - boolean isOK=true; - float[] newKnots = null,newKnotsV = null; - - stupen= Surface.getInstance().getOrderU(); - pocetBodu= Surface.getInstance().getPointsInU(); - if (stupen <= pocetBodu) { - int knotCount = stupen + pocetBodu; - int middlePartSize = knotCount - 2 * stupen; - newKnots = new float[knotCount]; - int i; - int j = 0; - float middleStep = 1f / (middlePartSize + 2); - float knot = middleStep; - - // knot=.5f; - - for (i = 0; i < stupen; i++) - newKnots[j++] = 0; - for (i = 0; i < middlePartSize; i++) { - newKnots[j++] = knot; - knot += middleStep; - } - for (i = 0; i < stupen; i++) - newKnots[j++] = 1; - - - - } else{ - isOK=false; - //errorMessage("Malý počet řídících bodů ve směru paramteru U vzhledem k zadanému stupni plochy"); - errorMessage("Too few control points as of U degree"); - } - - stupen= Surface.getInstance().getOrderV(); - pocetBodu= Surface.getInstance().getPointsInV(); - if (stupen <= pocetBodu) { - int knotCount = stupen + pocetBodu; - int middlePartSize = knotCount - 2 * stupen; - newKnotsV = new float[knotCount]; - int i; - int j = 0; - float middleStep = 1f / (middlePartSize + 2); - float knot = middleStep; - - // knot=.5f; - - for (i = 0; i < stupen; i++) - newKnotsV[j++] = 0; - for (i = 0; i < middlePartSize; i++) { - newKnotsV[j++] = knot; - knot += middleStep; - } - for (i = 0; i < stupen; i++) - newKnotsV[j++] = 1; - - - - } else{ - isOK=false; - //errorMessage("Malý počet řídících bodů ve směru paramteru V vzhledem k zadanému stupni plochy"); - errorMessage("Too few control points as of V degree"); - } - - if(isOK) - postNewKnot(newKnots,newKnotsV); - } - - /** - * Shows modal window with error report - * Zobrazí modální okno s hlášením chyby - * - * @param error - * error report - */ - - public void errorMessage(String error) { - JOptionPane.showMessageDialog(this, error, "Error!", - JOptionPane.ERROR_MESSAGE); - } - - /** - * Creates NURBS surface with uniform knotvectors - * Vytvoří NURBS plochu s uniformními uzlovými vektory - */ - public void otevrenyKV() { - int stupen,pocetBodu; - - boolean isOK=true; - float[] newKnots = null,newKnotsV = null; - - - stupen = Surface.getInstance().getOrderU(); - pocetBodu = Surface.getInstance().getPointsInU(); - if (stupen <= pocetBodu) { - int knotCount = stupen + pocetBodu; - int middlePartSize = knotCount; - newKnots = new float[knotCount]; - int i; - int j = 0; - float middleStep = 1f / (middlePartSize - 1); - float knot = 0; - - for (i = 0; i < middlePartSize; i++) { - newKnots[j++] = knot; - knot += middleStep; - } - - - } else{ - isOK=false; - //errorMessage("Malý počet řídících bodů ve směru parametru U vzhledem k zadanému stupni plochy"); - errorMessage("Too few control points as of U degree"); - } - - stupen = Surface.getInstance().getOrderV(); - pocetBodu = Surface.getInstance().getPointsInV(); - if (stupen <= pocetBodu) { - int knotCount = stupen + pocetBodu; - int middlePartSize = knotCount; - newKnotsV = new float[knotCount]; - int i; - int j = 0; - float middleStep = 1f / (middlePartSize - 1); - float knot = 0; - - for (i = 0; i < middlePartSize; i++) { - newKnotsV[j++] = knot; - knot += middleStep; - } - - - } else{ - isOK=false; - //errorMessage("Malý počet řídících bodů ve směru parametru V vzhledem k zadanému stupni plochy"); - errorMessage("Too few control points as of V degree"); - } - - if(isOK) - postNewKnot(newKnots,newKnotsV); - - } - - - /** - * Method called after adding new knot - * Metoda volaná po přidání nového uzlu - * @param newKnots new U knotvector - * @param newKnotsV new V knotvector - */ - private void postNewKnot(float[] newKnots,float[] newKnotsV) { - Surface.getInstance().setKnotsU(newKnots); - Surface.getInstance().setKnotsV(newKnotsV); - knotSlider.setKnots(newKnots); - knotSlider2.setKnots(newKnotsV); - Surface.getInstance().setIsSurfaceFinished(true); - updateGLCanvas(); - moveTB.setSelected(true); - } - - /** - * Activates move mode button - * Aktivuje tlačítko módu pohybu řícími body - */ - public void selectMoveButt() { - moveTB.setSelected(true); - } - - /** - * Sets datasource for editation of knotvectors from surface definition object - * Nastaví zdroje dat komponent pro editaci uzlových vektorů podle uz. - * vektorů v objektu plochy - */ - public void updateJKnotSlider() { - knotSlider.setKnots(Surface.getInstance().getKnotsU()); - knotSlider2.setKnots(Surface.getInstance().getKnotsV()); - } - - /** - * Returns value of X axe rotation set in editing component - * Vrací hodnotu rotace kolem osy X nastavenou v editační komponentě - * @return X rotation - */ - public float getXrotation() { - return rotaceXSlider.getValue(); - } - - /** - * Returns value of Y axe rotation set in editing component - * Vrací hodnotu rotace kolem osy Y nastavenou v editační komponentě - * @return Y rotation - */ - public float getYrotation() { - return rotaceYSlider.getValue(); - } - - /** - * Returns value of Z axe rotation set in editing component - * Vrací hodnotu rotace kolem osy Z nastavenou v editační komponentě - * @return Z rotation - */ - public float getZrotation() { - return rotaceZSlider.getValue(); - } - - /** - * Updates labels's text according to their actual state - * Upraví text popisků prvků pro ovládání rotace podle jejich aktuálního stavu - */ - public void updateRotationLabels(){ - String zakladniText = "Rotation by axe "; - - PrintfFormat format=new PrintfFormat("%0.3d"); - String add; - if(rotaceXSlider.getValue()<0)add="-"; - else add="+"; - rotaceXLabel.setText(zakladniText+"X "+add+format.sprintf(Math.abs(rotaceXSlider.getValue()))+"˚"); - if(rotaceYSlider.getValue()<0)add="-"; - else add="+"; - rotaceYLabel.setText(zakladniText+"Y "+add+format.sprintf(Math.abs(rotaceYSlider.getValue()))+"˚"); - if(rotaceZSlider.getValue()<0)add="-"; - else add="+"; - rotaceZLabel.setText(zakladniText+"Z "+add+format.sprintf(Math.abs(rotaceZSlider.getValue()))+"˚"); - } - - /** - * Return OpenGL canvas listener - * Vrací listener OpenGL plátna - * @return OpenGL canvas listener - */ - public GLListener getGlListener() { - return glListener; - } - - /** - * Notifies about reqest to light surface - * Informuje o požadavku na nasvětlení tělesa - * @return true if lighting is enabled - */ - public boolean isLightingEnabled() { - return !lightingChBox.isSelected(); - } -} diff --git a/src/demos/nurbs/surfaceapp/SurfaceMouseListener.java b/src/demos/nurbs/surfaceapp/SurfaceMouseListener.java deleted file mode 100755 index 834ae46..0000000 --- a/src/demos/nurbs/surfaceapp/SurfaceMouseListener.java +++ /dev/null @@ -1,277 +0,0 @@ -package demos.nurbs.surfaceapp; - -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.awt.event.MouseMotionListener; -import java.util.Vector; - -import javax.media.opengl.GL; -import javax.media.opengl.glu.GLU; - -/** - * Třída zpracovávající události myši (implementuje rozhraní zpracovávající stisk tlačítek i pohyb a tažení myší) - * @author Tomáš Hráský - * - */ -public class SurfaceMouseListener implements MouseListener, MouseMotionListener { - /** - * Index aktuálně vybraného řídícího bodu - */ - private int bodIndex; - - /** - * Okno k nemuž liustener patří - */ - private SurfaceApp appWindow; - - /** - * Typ prováděné činnosti - */ - private String actionType; - - /** - * Tolerance pro indikaci kliku na řídící bod - */ - private static final int TOLERANCE=10; - - /** - * Vytvoří listener s odkazem na zadané okno - * @param app rodičovské okno - */ - public SurfaceMouseListener(SurfaceApp app) { - this.appWindow=app; - } - - /* (non-Javadoc) - * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent) - */ - public void mouseClicked(MouseEvent e) { - if(actionType==SurfaceApp.PRIDAT_AC){ - // Surface.getInstance().setIsSurfaceFinished(false); - // float x=e.getX(); - // float y=e.getY(); - // float z=0; - // float w=1; - // int size; - // float[] newCtrls; - // try{ - // size=Surface.getInstance().getCtrlPoints().length; - // }catch (Exception ex) { - // size=0; - // } - // newCtrls=new float[size+4]; - // System.arraycopy(Surface.getInstance().getCtrlPoints(),0,newCtrls,0,size); - // - // newCtrls[size]=x; - // newCtrls[size+1]=y; - // newCtrls[size+2]=z; - // newCtrls[size+3]=w; - // Surface.getInstance().setCtrlPoints(newCtrls); - }else if(actionType==SurfaceApp.SMAZAT_AC&&bodIndex>=0){ - // Surface.getInstance().setIsSurfaceFinished(false); - // int size=Surface.getInstance().getCtrlPoints().length; - // float[] newCtrls=new float[size-4]; - // - // int firstPartSize=(bodIndex)*4; - // int secondPartSize=newCtrls.length-firstPartSize; - // System.arraycopy(Surface.getInstance().getCtrlPoints(),0,newCtrls,0,firstPartSize); - // System.arraycopy(Surface.getInstance().getCtrlPoints(),firstPartSize+4,newCtrls,firstPartSize,secondPartSize); - // bodIndex=-1; - // Surface.getInstance().setBodIndex(bodIndex); - // Surface.getInstance().setCtrlPoints(newCtrls); - }else if(actionType==SurfaceApp.SMAZAT_AC_RADEK&&bodIndex>=0){ - - Vector<float[]> oldPoints=new Vector<float[]>(); - Surface srf=Surface.getInstance(); - for(int i=0;i<srf.getCtrlPoints().length;i+=4){ - float[] pole={srf.getCtrlPoints()[i],srf.getCtrlPoints()[i+1],srf.getCtrlPoints()[i+2],srf.getCtrlPoints()[i+3]}; - oldPoints.add(pole); - } - - int index=bodIndex+1; - while(!(index%srf.getPointsInV()==0)) - index--; - // index--; - Vector<Integer> indexes=new Vector<Integer>(); - for(int i=index;i<index+srf.getPointsInV();i++) - indexes.add(i); - Vector<float[]> newOldPoints=new Vector<float[]>(); - for(int i=0;i<oldPoints.size();i++){ - if(!indexes.contains(Integer.valueOf(i))) - newOldPoints.add(oldPoints.get(i)); - } - // oldPoints.remove(i); - float[] newPoints=new float[newOldPoints.size()*4]; - int i=0; - for(float[] f:newOldPoints){ - newPoints[i++]=f[0]; - newPoints[i++]=f[1]; - newPoints[i++]=f[2]; - newPoints[i++]=f[3]; - } - srf.setIsSurfaceFinished(false); - srf.setPointsInU(srf.getPointsInU()-1); - bodIndex=-1; - srf.setBodIndex(-1); - srf.setCtrlPoints(newPoints); - - }else if(actionType==SurfaceApp.SMAZAT_AC_SLOUPEC&&bodIndex>=0){ - Vector<float[]> oldPoints=new Vector<float[]>(); - Surface srf=Surface.getInstance(); - for(int i=0;i<srf.getCtrlPoints().length;i+=4){ - float[] pole={srf.getCtrlPoints()[i],srf.getCtrlPoints()[i+1],srf.getCtrlPoints()[i+2],srf.getCtrlPoints()[i+3]}; - oldPoints.add(pole); - } - - int index=bodIndex+1; - - Vector<Integer> indexes=new Vector<Integer>(); - - for(int i=index;i>=0;i-=srf.getPointsInV()){ - indexes.add(i-1); - } - for(int i=index;i<srf.getCtrlPoints().length;i+=srf.getPointsInV()){ - indexes.add(i-1); - } - - // index--; - // for(int i=index;i<index+srf.getPointsInV();i++) - // - - Vector<float[]> newOldPoints=new Vector<float[]>(); - for(int i=0;i<oldPoints.size();i++){ - if(!indexes.contains(Integer.valueOf(i))) - newOldPoints.add(oldPoints.get(i)); - } - // oldPoints.remove(i); - float[] newPoints=new float[newOldPoints.size()*4]; - int i=0; - for(float[] f:newOldPoints){ - newPoints[i++]=f[0]; - newPoints[i++]=f[1]; - newPoints[i++]=f[2]; - newPoints[i++]=f[3]; - } - srf.setIsSurfaceFinished(false); - srf.setPointsInV(srf.getPointsInV()-1); - bodIndex=-1; - srf.setBodIndex(-1); - srf.setCtrlPoints(newPoints); - - } - - appWindow.updateGLCanvas(); - } - - /* (non-Javadoc) - * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent) - */ - public void mousePressed(MouseEvent e) { - float[] ctrlpoints=Surface.getInstance().getCtrlPoints(); - int xE=e.getX(); - int yE=e.getY(); - // System.out.println(xE+" "+yE); - double x,y,z=0; - - this.bodIndex=-1; - - GL gl=appWindow.getGlCanvas().getGL(); - GLU glu=appWindow.getGlListener().getGlu(); - - int[] viewport; - double[] mvmatrix; - double[] projmatrix; - int realy; - double[] wcoord=new double[4]; - - viewport=appWindow.getGlListener().getViewport(); - mvmatrix=appWindow.getGlListener().getMvmatrix(); - projmatrix=appWindow.getGlListener().getProjmatrix(); - - - for(int i=0;i<ctrlpoints.length/4;i++){ - x = ctrlpoints[i*4]/ctrlpoints[i*4+3]; - y = ctrlpoints[i*4+1]/ctrlpoints[i*4+3]; - z=ctrlpoints[i*4+2]/ctrlpoints[i*4+3]; - //projekce souřadnic do okna - glu.gluProject(x,y,z,mvmatrix,0,projmatrix,0,viewport,0,wcoord,0); - - x=wcoord[0]; - y=(viewport[3]-wcoord[1]-1); - - if(xE>=x-TOLERANCE&&xE<=x+TOLERANCE&&yE>=y-TOLERANCE&&yE<=y+TOLERANCE){ - this.bodIndex=i; - } - } - - Surface.getInstance().setBodIndex(bodIndex); - appWindow.updateGLCanvas(); - - } - - /* (non-Javadoc) - * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent) - */ - public void mouseReleased(MouseEvent e) { - // this.bodIndex=-1; - } - - /* (non-Javadoc) - * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent) - */ - public void mouseEntered(MouseEvent e) { - - } - - /* (non-Javadoc) - * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent) - */ - public void mouseExited(MouseEvent e) { - - } - - /* (non-Javadoc) - * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent) - */ - public void mouseDragged(MouseEvent e) { - // if(this.bodIndex>=0){ - // int x=e.getX(); - // int y=e.getY(); - // - // Surface.getInstance().setActiveX(x); - // Surface.getInstance().setActiveY(y); - // } - // appWindow.updateGLCanvas(); - } - - /* (non-Javadoc) - * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent) - */ - public void mouseMoved(MouseEvent e) { - - } - - /** - * Nastaví typ prováděné činnosti - * @param action typ prováděné činnosti - */ - public void setActionType(String action) { - this.actionType=action; - } - - /** - * Vrací index aktuálně vybraného řídícího bodu - * @return index aktuálně vybraného řídícího bodu - */ - public int getBodIndex() { - return bodIndex; - } - - /** - * Vrací index aktuálně vybraného řídícího bodu - * @param bodIndex aktuálně vybraného řídícího bodu - */ - public void setBodIndex(int bodIndex) { - this.bodIndex = bodIndex; - } -} diff --git a/src/demos/particles/engine/ControlWindow.java b/src/demos/particles/engine/ControlWindow.java deleted file mode 100755 index 8268e6f..0000000 --- a/src/demos/particles/engine/ControlWindow.java +++ /dev/null @@ -1,240 +0,0 @@ -/* - * Copyright (c) 2006 Ben Chappell ([email protected]) All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * The names of Ben Chappell, Sun Microsystems, Inc. or the names of - * contributors may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. BEN CHAPPELL, - * SUN MICROSYSTEMS, INC. ("SUN"), AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL BEN - * CHAPPELL, SUN, OR SUN'S LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT - * OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR - * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF BEN - * CHAPPELL OR SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - */ - -package demos.particles.engine; - -import javax.swing.*; -import java.awt.*; -import javax.swing.border.*; -import java.awt.event.*; -import javax.swing.event.*; - -public class ControlWindow extends JFrame implements ActionListener, ChangeListener { - - // For the engine - private Engine engine; - private GLComponent glComponent; - private Integer numParticles; - - // Swing components - private JSlider greenSlider; - private JSlider redSlider; - private JSlider blueSlider; - - private JButton resetButton; - private JButton closeButton; - - private JSpinner particleSpinner; - - public ControlWindow() { - super("Particle Engine"); - - Dimension d = getToolkit().getScreenSize(); - - buildFrame(d); - initComponents(); - setVisible(true); - } - - private void buildFrame(Dimension d) { - // Nicely center the window on the screen - int width = 800; - int x = (int)(d.getWidth()/2)-(int)(width/2); - - int height = 800; - int y = (int)(d.getHeight()/2)-(int)(height/2); - - setBounds(x, y, width, height); - setResizable(false); - getContentPane().setLayout(new GridBagLayout()); - setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); - } - - private void initComponents() { - // This will be used when borders or GridBagConstraints are needed - Border border; - GridBagConstraints constraints; - - // Engine components - numParticles = new Integer(1000); - engine = new Engine(numParticles.intValue(), "demos/particles/engine/images/particle.jpg"); - glComponent = new GLComponent(60, new RGBA(0.0f, 0.0f, 0.0f, 1.0f), new RGBA(0.0f, 0.0f, 0.0f, 1.0f), engine); - - // Close and reset buttons - resetButton = new JButton("Reset"); - resetButton.addActionListener(this); - closeButton = new JButton("Close"); - closeButton.addActionListener(this); - - // The RGB sliders - redSlider = new JSlider(0, 100, (int)engine.tendToColor.r*100) ; - redSlider.addChangeListener(this); - greenSlider = new JSlider(0, 100, (int)engine.tendToColor.g*100) ; - greenSlider.addChangeListener(this); - blueSlider = new JSlider(0, 100, (int)engine.tendToColor.b*100) ; - blueSlider.addChangeListener(this); - - // Particle spinner - particleSpinner = new JSpinner(new SpinnerNumberModel(numParticles, - new Integer(0), - null, - new Integer(1))); - particleSpinner.addChangeListener(this); - particleSpinner.setPreferredSize( - new Dimension((int)(getBounds().width/3.5), 25)); - - // The color control panel - JPanel colorPanel = new JPanel(new GridBagLayout()); - border = BorderFactory.createTitledBorder( - BorderFactory.createLineBorder(new Color(0.0f,0.0f,0.0f)), - "Color Tendency"); - colorPanel.setBorder(border); - - constraints = new GridBagConstraints(); - constraints.insets = new Insets(3,2,3,2); - constraints.fill=constraints.HORIZONTAL; - - constraints.gridx = 0; - constraints.gridy = 0; - colorPanel.add(new JLabel("Red"), constraints); - constraints.gridx = 1; - colorPanel.add(redSlider, constraints); - - constraints.gridx = 0; - constraints.gridy = 1; - colorPanel.add(new JLabel("Green"), constraints); - constraints.gridx = 1; - colorPanel.add(greenSlider, constraints); - - constraints.gridx = 0; - constraints.gridy = 2; - colorPanel.add(new JLabel("Blue"), constraints); - constraints.gridx = 1; - colorPanel.add(blueSlider, constraints); - - // The panel containing the spinnger - JPanel numPanel = new JPanel(new GridBagLayout()); - border = BorderFactory.createTitledBorder( - BorderFactory.createLineBorder(new Color(0.0f,0.0f,0.0f)), - "Number of Particles"); - numPanel.setBorder(border); - - constraints = new GridBagConstraints(); - numPanel.add(particleSpinner, constraints); - - // The panel containing the reset and close buttons - JPanel optionsPanel = new JPanel(new GridBagLayout()); - border = BorderFactory.createTitledBorder( - BorderFactory.createLineBorder(new Color(0.0f,0.0f,0.0f)), - "Options"); - optionsPanel.setBorder(border); - - constraints = new GridBagConstraints(); - constraints.insets = new Insets(5,5,5,5); - optionsPanel.add(resetButton, constraints); - constraints.gridy = GridBagConstraints.RELATIVE; - constraints.gridx = GridBagConstraints.RELATIVE; - optionsPanel.add(closeButton, constraints); - - // The panel containing the the OpenGL content - JPanel glPanel = new JPanel(new BorderLayout()); - glPanel.setPreferredSize(new Dimension(getBounds().width-10, (int)getBounds().height*3/4)); - glPanel.add(glComponent); - - constraints = new GridBagConstraints(); - constraints.weightx = constraints.weighty = 1.0d; - constraints.fill=constraints.BOTH; - - constraints.gridx = 0; - constraints.gridy = 0; - glPanel.setBorder(BorderFactory.createRaisedBevelBorder()); - getContentPane().add(glPanel, constraints); - - // The panel containing the panels that contain all the other components - JPanel bottomPanel = new JPanel(new GridLayout(1,3,3,3)); - bottomPanel.add(colorPanel); - bottomPanel.add(numPanel); - bottomPanel.add(optionsPanel); - constraints.gridx = 0; - constraints.gridy = GridBagConstraints.RELATIVE; - getContentPane().add(bottomPanel, constraints); - } - - public static void main(String[] args) { - new ControlWindow(); - } - - public void actionPerformed(ActionEvent e) { - if(e.getSource().equals(closeButton)) { - setVisible(false); - dispose(); - System.exit(0); - } - if(e.getSource().equals(resetButton)) - engine.reset(); - } - - public void stateChanged(ChangeEvent e) { - if(e.getSource().equals(particleSpinner)) { - // Get the number; loop up or down until the vector in the engine has the proper number - Integer newNum = (Integer)particleSpinner.getValue(); - int diff = newNum.intValue()-numParticles.intValue(); - if(diff>0) - for(int i=0; i<diff; i++) - engine.addParticle(); - else - for(int i=0; i>diff; i--) - engine.removeParticle(); - - numParticles=newNum; - } - if(e.getSource().equals(redSlider)) { - float value = (float)(redSlider.getValue()); - value/=100; - engine.tendToColor.r = value; - } - if(e.getSource().equals(greenSlider)) { - float value = (float)(greenSlider.getValue()); - value/=100; - engine.tendToColor.g = value; - } - if(e.getSource().equals(blueSlider)) { - float value = (float)(blueSlider.getValue()); - value/=100; - engine.tendToColor.b = value; - } - } -} diff --git a/src/demos/particles/engine/Engine.java b/src/demos/particles/engine/Engine.java deleted file mode 100755 index 62a6237..0000000 --- a/src/demos/particles/engine/Engine.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (c) 2006 Ben Chappell ([email protected]) All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * The names of Ben Chappell, Sun Microsystems, Inc. or the names of - * contributors may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. BEN CHAPPELL, - * SUN MICROSYSTEMS, INC. ("SUN"), AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL BEN - * CHAPPELL, SUN, OR SUN'S LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT - * OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR - * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF BEN - * CHAPPELL OR SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - */ - -package demos.particles.engine; - -import javax.media.opengl.*; -import com.sun.opengl.util.texture.*; -import java.net.*; -import java.util.*; -import java.io.*; - -public class Engine { - - private Texture texture; - private List/*<Particle>*/ particles; - private String path; - public RGBA tendToColor; - - public Engine(int numParticles, String path) { - this.path=path; - - tendToColor = new RGBA(1.0f, 1.0f, 1.0f, 1.0f); - - particles = new ArrayList/*<Particle>*/(numParticles); - for(int i=0; i<numParticles; i++) - particles.add(new Particle()); - } - - public void addParticle() { - particles.add(new Particle()); - } - - public void removeParticle() { - if(particles.size()-1 >= 0) - particles.remove(particles.size()-1); - } - - public void draw(GL gl) { - - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - gl.glLoadIdentity(); - - for(int i=0; i<particles.size(); i++) { - ((Particle) particles.get(i)).draw(gl, texture, tendToColor); - } - } - - public void init() { - try { - ClassLoader c1 = this.getClass().getClassLoader(); - URL url = c1.getResource(path); - texture = TextureIO.newTexture(url, false, null); - texture.enable(); - } - catch(IOException e) { - e.printStackTrace(); - } - catch(GLException e) { - e.printStackTrace(); - } - } - - public void reset() { - int numParticles = particles.size(); - particles = new ArrayList/*<Particle>*/(numParticles); - for(int i=0; i<numParticles; i++) - particles.add(new Particle()); - } - -} diff --git a/src/demos/particles/engine/GLComponent.java b/src/demos/particles/engine/GLComponent.java deleted file mode 100755 index 299578f..0000000 --- a/src/demos/particles/engine/GLComponent.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 2006 Ben Chappell ([email protected]) All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * The names of Ben Chappell, Sun Microsystems, Inc. or the names of - * contributors may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. BEN CHAPPELL, - * SUN MICROSYSTEMS, INC. ("SUN"), AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL BEN - * CHAPPELL, SUN, OR SUN'S LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT - * OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR - * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF BEN - * CHAPPELL OR SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - */ - -package demos.particles.engine; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; - -import java.io.*; - -public class GLComponent extends GLCanvas implements GLEventListener { - - private GLU glu; - private FPSAnimator animator; - private RGBA background; - private RGBA ambient; - private Engine engine; - - public GLComponent(int fps, RGBA ambient, RGBA background, Engine engine) { - super(getCapabilities()); - addGLEventListener(this); - glu = new GLU(); - - this.background=background; - this.ambient=ambient; - this.engine=engine; - - animator = new FPSAnimator(this, fps); - } - - private static GLCapabilities getCapabilities() { - GLCapabilities caps = new GLCapabilities(); - caps.setDoubleBuffered(true); - caps.setHardwareAccelerated(true); - return caps; - } - - public void display(GLAutoDrawable drawable) { - final GL gl = drawable.getGL(); - engine.draw(gl); - } - - - - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) { - - } - - public void init(GLAutoDrawable drawable) { - final GL gl = drawable.getGL(); - - gl.glShadeModel(GL.GL_SMOOTH); - // Set the background / clear color. - gl.glClearColor(background.r, background.g, background.b, background.a); - // Clear the depth - gl.glClearDepth(1.0); - // Disable depth testing. - gl.glDisable(GL.GL_DEPTH_TEST); - // Enable blending and specify blening function. - gl.glEnable(GL.GL_BLEND); - gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE); - // Get nice perspective calculations. - gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST); - // Nice point smoothing. - gl.glHint(GL.GL_POINT_SMOOTH_HINT, GL.GL_NICEST); - // Enable texture mapping. - gl.glEnable(GL.GL_TEXTURE_2D); - - animator.start(); - - engine.init(); - - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { - GL gl = drawable.getGL(); - // the size of openGL - gl.glViewport(0,0, width, height); - - // perspective view (smaller for further behind) - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - - // perspective - double ratio = (double)width/(double)height; - // angle, ratio, nearest, farthest - glu.gluPerspective(45.0, ratio, 0.0, 1.0); - - // draw into the model matrix now - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - } - - public void setFPS(int fps) { - animator.stop(); - animator = new FPSAnimator(this, fps); - animator.start(); - } - - public void kill() { - animator.stop(); - } -} diff --git a/src/demos/particles/engine/Particle.java b/src/demos/particles/engine/Particle.java deleted file mode 100755 index 82e0756..0000000 --- a/src/demos/particles/engine/Particle.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (c) 2006 Ben Chappell ([email protected]) All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * The names of Ben Chappell, Sun Microsystems, Inc. or the names of - * contributors may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. BEN CHAPPELL, - * SUN MICROSYSTEMS, INC. ("SUN"), AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL BEN - * CHAPPELL, SUN, OR SUN'S LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT - * OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR - * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF BEN - * CHAPPELL OR SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - */ - -package demos.particles.engine; - -import com.sun.opengl.util.texture.*; - -import javax.media.opengl.*; - -public class Particle { - private XYZ currentPos; - private RGBA rgba; - - public Particle() { - currentPos = new XYZ((float)Math.random(), - (float)Math.random(), - -30.0f - ); - - rgba = rgba = new RGBA((float)Math.random(), - (float)Math.random(), - (float)Math.random(), - (float)Math.random()); - } - - public void draw(GL gl, Texture texture, RGBA tendToColor) { - adjust(tendToColor); - texture.bind(); - gl.glColor4f(rgba.r,rgba.g,rgba.b,rgba.a); - - gl.glBegin(GL.GL_QUADS); - gl.glTexCoord2f(0.0f, 0.0f); gl.glVertex3f(currentPos.x, currentPos.y-2, currentPos.z); - gl.glTexCoord2f(1.0f, 0.0f); gl.glVertex3f(currentPos.x+2, currentPos.y-2, currentPos.z); - gl.glTexCoord2f(1.0f, 1.0f); gl.glVertex3f(currentPos.x+2, currentPos.y, currentPos.z); - gl.glTexCoord2f(0.0f, 1.0f); gl.glVertex3f(currentPos.x, currentPos.y, currentPos.z); - gl.glEnd(); - } - - private void tendToColor(RGBA tendToColor) { - float red = 0.0f; - float blue = 0.0f; - float green = 0.0f; - float sign=1.0f; - - if(Math.random()>=0.5) - sign=-1.0f; - - // RED - if(tendToColor.r <= 1-tendToColor.r) - red = tendToColor.r; - else - red = 1-tendToColor.r; - - red = (float)(Math.random()*red*sign+tendToColor.r); - - // GREEN - if(tendToColor.g <= 1-tendToColor.g) - green = tendToColor.g; - else - green = 1-tendToColor.g; - - green =(float)(Math.random()*green*sign+tendToColor.g); - - // BLUE - if(tendToColor.b <= 1-tendToColor.b) - blue = tendToColor.b; - else - blue = 1-tendToColor.b; - - blue = (float)(Math.random()*blue*sign+tendToColor.b); - - rgba = new RGBA(red, green, blue, (float)Math.random()); - } - - private void tendToPos() { - XYZ xyz = new XYZ((float)Math.random()-0.5f,(float)Math.random()-0.5f,(float)Math.random()-0.5f); - currentPos.add(xyz); - } - - private void adjust(RGBA tendToColor) { - tendToPos(); - - rgba.a-=Math.random()/100; - if(rgba.a<=0) - tendToColor(tendToColor); - } - -} diff --git a/src/demos/particles/engine/RGBA.java b/src/demos/particles/engine/RGBA.java deleted file mode 100755 index 06f8863..0000000 --- a/src/demos/particles/engine/RGBA.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2006 Ben Chappell ([email protected]) All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * The names of Ben Chappell, Sun Microsystems, Inc. or the names of - * contributors may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. BEN CHAPPELL, - * SUN MICROSYSTEMS, INC. ("SUN"), AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL BEN - * CHAPPELL, SUN, OR SUN'S LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT - * OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR - * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF BEN - * CHAPPELL OR SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - */ - -package demos.particles.engine; - -public class RGBA { - - public float r; - public float g; - public float b; - public float a; - - public RGBA() { - this.r = this.g = this.g = this.a = 0.0f; - } - - public RGBA(float r, float g, float b, float a) { - this.r=r; - this.g=g; - this.b=b; - this.a=a; - } -} diff --git a/src/demos/particles/engine/XYZ.java b/src/demos/particles/engine/XYZ.java deleted file mode 100755 index f38a6fa..0000000 --- a/src/demos/particles/engine/XYZ.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2006 Ben Chappell ([email protected]) All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * The names of Ben Chappell, Sun Microsystems, Inc. or the names of - * contributors may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. BEN CHAPPELL, - * SUN MICROSYSTEMS, INC. ("SUN"), AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL BEN - * CHAPPELL, SUN, OR SUN'S LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT - * OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR - * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF BEN - * CHAPPELL OR SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - */ - -package demos.particles.engine; - -public class XYZ { - - public float x; - public float y; - public float z; - - public XYZ() { - this.x = this.y = this.z = 0.0f; - } - - public XYZ(float x, float y, float z) { - this.x=x; - this.y=y; - this.z=z; - } - - public XYZ add(XYZ xyz) { - x += xyz.x; - y += xyz.y; - z += xyz.z; - - return this; - } -} diff --git a/src/demos/particles/engine/images/particle.jpg b/src/demos/particles/engine/images/particle.jpg Binary files differdeleted file mode 100755 index 70e28ac..0000000 --- a/src/demos/particles/engine/images/particle.jpg +++ /dev/null diff --git a/src/demos/printext/PrintExt.java b/src/demos/printext/PrintExt.java deleted file mode 100755 index fa76031..0000000 --- a/src/demos/printext/PrintExt.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Portions Copyright (C) 2003 Sun Microsystems, Inc. - * All rights reserved. - */ - -package demos.printext; - -import java.awt.*; -import javax.media.opengl.*; - -public class PrintExt { - public static void main(String[] args) { - Frame frame = new Frame(); - GLCanvas canvas = new GLCanvas(); - canvas.addGLEventListener(new Listener()); - frame.setUndecorated(true); - frame.add(canvas); - frame.setSize(1, 1); - frame.setVisible(true); - } - - static class Listener implements GLEventListener { - public void init(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - System.out.println("GL vendor: " + gl.glGetString(GL.GL_VENDOR)); - System.out.println("GL version: " + gl.glGetString(GL.GL_VERSION)); - System.out.println("GL renderer: " + gl.glGetString(GL.GL_RENDERER)); - System.out.println("GL extensions:"); - String[] extensions = gl.glGetString(GL.GL_EXTENSIONS).split(" "); - int i = 0; - while (i < extensions.length) { - System.out.print(" "); - String ext = extensions[i++]; - System.out.print(ext); - if (i < extensions.length) { - for (int j = 0; j < (40 - ext.length()); j++) { - System.out.print(" "); - } - System.out.println(extensions[i++]); - } else { - System.out.println(); - } - } - runExit(); - } - - public void display(GLAutoDrawable drawable) { - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int w, int h) { - } - - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) { - } - } - - private static void runExit() { - // Note: calling System.exit() synchronously inside the draw, - // reshape or init callbacks can lead to deadlocks on certain - // platforms (in particular, X11) because the JAWT's locking - // routines cause a global AWT lock to be grabbed. Run the - // exit routine in another thread. - new Thread(new Runnable() { - public void run() { - System.exit(0); - } - }).start(); - } -} diff --git a/src/demos/proceduralTexturePhysics/ProceduralTexturePhysics.java b/src/demos/proceduralTexturePhysics/ProceduralTexturePhysics.java deleted file mode 100644 index e20d811..0000000 --- a/src/demos/proceduralTexturePhysics/ProceduralTexturePhysics.java +++ /dev/null @@ -1,381 +0,0 @@ -/* - * Portions Copyright (C) 2003 Sun Microsystems, Inc. - * All rights reserved. - */ - -/* - * - * COPYRIGHT NVIDIA CORPORATION 2003. ALL RIGHTS RESERVED. - * BY ACCESSING OR USING THIS SOFTWARE, YOU AGREE TO: - * - * 1) ACKNOWLEDGE NVIDIA'S EXCLUSIVE OWNERSHIP OF ALL RIGHTS - * IN AND TO THE SOFTWARE; - * - * 2) NOT MAKE OR DISTRIBUTE COPIES OF THE SOFTWARE WITHOUT - * INCLUDING THIS NOTICE AND AGREEMENT; - * - * 3) ACKNOWLEDGE THAT TO THE MAXIMUM EXTENT PERMITTED BY - * APPLICABLE LAW, THIS SOFTWARE IS PROVIDED *AS IS* AND - * THAT NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, - * EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED - * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY - * SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES - * WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS - * OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS - * INFORMATION, OR ANY OTHER PECUNIARY LOSS), INCLUDING ATTORNEYS' - * FEES, RELATING TO THE USE OF OR INABILITY TO USE THIS SOFTWARE, - * EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.proceduralTexturePhysics; - -import java.awt.*; -import java.awt.event.*; -import javax.swing.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import demos.common.*; -import demos.util.*; -import gleem.*; -import gleem.linalg.*; - -/** - * Water demonstration by NVidia Corporation - <a href = - * "http://developer.nvidia.com/view.asp?IO=ogl_dynamic_bumpreflection">http://developer.nvidia.com/view.asp?IO=ogl_dynamic_bumpreflection</a> - * - * <P> - * - * Demonstrates pbuffers, vertex programs, fragment programs - * - * <P> - * - * Ported to Java and ARB_fragment_program by Kenneth Russell - * - */ - -public class ProceduralTexturePhysics extends Demo { - public static void main(String[] args) { - GLCanvas canvas = new GLCanvas(); - ProceduralTexturePhysics demo = new ProceduralTexturePhysics(); - canvas.addGLEventListener(demo); - - final Animator animator = new Animator(canvas); - demo.setDemoListener(new DemoListener() { - public void shutdownDemo() { - runExit(animator); - } - public void repaint() {} - }); - - Frame frame = new Frame("Procedural Texture Waves"); - frame.setLayout(new BorderLayout()); - canvas.setSize(512, 512); - frame.add(canvas, BorderLayout.CENTER); - frame.pack(); - frame.show(); - canvas.requestFocus(); - - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - runExit(animator); - } - }); - - animator.start(); - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - public void shutdownDemo() { - viewer.detach(); - ManipManager.getManipManager().unregisterWindow(drawable); - drawable.removeGLEventListener(this); - super.shutdownDemo(); - } - - private volatile boolean drawing; - private volatile int mousePosX; - private volatile int mousePosY; - - private GLAutoDrawable drawable; - private Water water = new Water(); - private volatile ExaminerViewer viewer; - private boolean[] b = new boolean[256]; - private boolean doViewAll = true; - private float zNear = 0.1f; - private float zFar = 10.0f; - - private DurationTimer timer = new DurationTimer(); - private boolean firstRender = true; - private int frameCount; - - private float blurIncrement = 0.01f; - private float bumpIncrement = 0.01f; - private float frequencyIncrement = 0.1f; - - public void init(GLAutoDrawable drawable) { - water.destroy(); - water.initialize("demos/data/images/nvfixed.tga", - "demos/data/images/nvspin.tga", - "demos/data/images/droplet.tga", - "demos/data/cubemaps/CloudyHills_", - "tga", - drawable); - - GL gl = drawable.getGL(); - gl.setSwapInterval(1); - - try { - checkExtension(gl, "GL_VERSION_1_3"); // For multitexture - checkExtension(gl, "GL_ARB_vertex_program"); - checkExtension(gl, "GL_ARB_fragment_program"); - checkExtension(gl, "GL_ARB_pbuffer"); - checkExtension(gl, "GL_ARB_pixel_format"); - } catch (GLException e) { - e.printStackTrace(); - throw(e); - } - - gl.glClearColor(0, 0.2f, 0.5f, 0); - gl.glDisable(GL.GL_LIGHTING); - gl.glDisable(GL.GL_DEPTH_TEST); - gl.glDisable(GL.GL_CULL_FACE); - - doViewAll = true; - - if (firstRender) { - firstRender = false; - - // Register the window with the ManipManager - ManipManager manager = ManipManager.getManipManager(); - manager.registerWindow(drawable); - this.drawable = drawable; - - viewer = new ExaminerViewer(MouseButtonHelper.numMouseButtons()); - viewer.setAutoRedrawMode(false); - viewer.attach(drawable, new BSphereProvider() { - public BSphere getBoundingSphere() { - return new BSphere(new Vec3f(0, 0, 0), 1.2f); - } - }); - viewer.setVertFOV((float) (15.0f * Math.PI / 32.0f)); - viewer.setZNear(zNear); - viewer.setZFar(zFar); - - drawable.addKeyListener(new KeyAdapter() { - public void keyPressed(KeyEvent e) { - dispatchKey(e.getKeyChar()); - } - }); - - drawable.addMouseListener(new MouseAdapter() { - public void mousePressed(MouseEvent e) { - if (e.getButton() == MouseEvent.BUTTON1 && - !e.isAltDown() && !e.isMetaDown()) { - drawing = true; - } - } - - public void mouseReleased(MouseEvent e) { - if (e.getButton() == MouseEvent.BUTTON1) { - drawing = false; - } - } - }); - - drawable.addMouseMotionListener(new MouseMotionAdapter() { - public void mouseDragged(MouseEvent e) { - mousePosX = e.getX(); - mousePosY = e.getY(); - } - }); - - timer.start(); - } - } - - public void display(GLAutoDrawable drawable) { - if (++frameCount == 30) { - timer.stop(); - System.err.println("Frames per second: " + (30.0f / timer.getDurationAsSeconds())); - timer.reset(); - timer.start(); - frameCount = 0; - } - - GL gl = drawable.getGL(); - - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - if (doViewAll) { - viewer.viewAll(gl); - doViewAll = false; - } - - viewer.update(gl); - ManipManager.getManipManager().updateCameraParameters(drawable, viewer.getCameraParameters()); - ManipManager.getManipManager().render(drawable, gl); - - if (drawing) { - int w = drawable.getWidth(); - int h = drawable.getHeight(); - water.addDroplet(new Water.Droplet( 2 * (mousePosX / (float) w - 0.5f), - -2 * (mousePosY / (float) h - 0.5f), - 0.08f)); - } - water.tick(); - - CameraParameters params = viewer.getCameraParameters(); - water.draw(gl, params.getOrientation().inverse()); - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} - - // Unused routines - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - - private void setFlag(char key, boolean val) { - b[((int) key) & 0xFF] = val; - } - - private boolean getFlag(char key) { - return b[((int) key) & 0xFF]; - } - - private void checkExtension(GL gl, String extensionName) { - if (!gl.isExtensionAvailable(extensionName)) { - String message = "Unable to initialize " + extensionName + " OpenGL extension"; - JOptionPane.showMessageDialog(null, message, "Unavailable extension", JOptionPane.ERROR_MESSAGE); - shutdownDemo(); - } - } - - private void dispatchKey(char k) { - setFlag(k, !getFlag(k)); - - switch (k) { - case 27: - case 'q': - shutdownDemo(); - break; - case 'w': - water.enableWireframe(getFlag('w')); - break; - case 'd': - // FIXME - /* - - if (getKey('d')) { - glutMouseFunc(glh::glut_mouse_function); - glutMotionFunc(glh::glut_motion_function); - } - else - { - glutMouseFunc(Mouse); - glutMotionFunc(Motion); - } - */ - break; - case ' ': - water.enableAnimation(getFlag(' ')); - break; - case 'b': - water.enableBorderWrapping(getFlag('b')); - break; - case 'n': - water.singleStep(); - break; - case 's': - water.enableSlowAnimation(getFlag('s')); - break; - case '1': - water.setRenderMode(Water.CA_FULLSCREEN_REFLECT); - break; - case '2': - water.setRenderMode(Water.CA_FULLSCREEN_HEIGHT); - break; - case '3': - water.setRenderMode(Water.CA_FULLSCREEN_FORCE); - break; - case '4': - water.setRenderMode(Water.CA_FULLSCREEN_NORMALMAP); - break; - case '5': - water.setRenderMode(Water.CA_TILED_THREE_WINDOWS); - break; - case 'r': - water.reset(); - break; - case 'i': - // FIXME: make sure this is what this does - doViewAll = true; - // gluPerspective(90, 1, .01, 10); - break; - case 'c': { - float dist = water.getBlurDistance(); - if (dist > blurIncrement) - water.setBlurDistance(dist - blurIncrement); - break; - } - case 'v': { - float dist = water.getBlurDistance(); - if (dist < 1) - water.setBlurDistance(dist + blurIncrement); - break; - } - case '-': { - float scale = water.getBumpScale(); - if (scale > -1) - water.setBumpScale(scale - bumpIncrement); - break; - } - case '=': { - float scale = water.getBumpScale(); - if (scale < 1) - water.setBumpScale(scale + bumpIncrement); - break; - } - case 'l': - water.enableBoundaryApplication(getFlag('l')); - break; - case 'o': - water.enableSpinningLogo(getFlag('o')); - break; - case '.': { - float frequency = water.getBumpScale(); - if (frequency < 1) - water.setDropFrequency(frequency + frequencyIncrement); - break; - } - case ',': { - float frequency = water.getBumpScale(); - if (frequency > 0) - water.setDropFrequency(frequency - frequencyIncrement); - break; - } - default: - break; - } - } - - private static void runExit(final Animator animator) { - // Note: calling System.exit() synchronously inside the draw, - // reshape or init callbacks can lead to deadlocks on certain - // platforms (in particular, X11) because the JAWT's locking - // routines cause a global AWT lock to be grabbed. Run the - // exit routine in another thread. - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } -} diff --git a/src/demos/proceduralTexturePhysics/Water.java b/src/demos/proceduralTexturePhysics/Water.java deleted file mode 100644 index 50be158..0000000 --- a/src/demos/proceduralTexturePhysics/Water.java +++ /dev/null @@ -1,1844 +0,0 @@ -/* - * Portions Copyright (C) 2003 Sun Microsystems, Inc. - * All rights reserved. - */ - -/* - * - * COPYRIGHT NVIDIA CORPORATION 2003. ALL RIGHTS RESERVED. - * BY ACCESSING OR USING THIS SOFTWARE, YOU AGREE TO: - * - * 1) ACKNOWLEDGE NVIDIA'S EXCLUSIVE OWNERSHIP OF ALL RIGHTS - * IN AND TO THE SOFTWARE; - * - * 2) NOT MAKE OR DISTRIBUTE COPIES OF THE SOFTWARE WITHOUT - * INCLUDING THIS NOTICE AND AGREEMENT; - * - * 3) ACKNOWLEDGE THAT TO THE MAXIMUM EXTENT PERMITTED BY - * APPLICABLE LAW, THIS SOFTWARE IS PROVIDED *AS IS* AND - * THAT NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, - * EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED - * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY - * SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES - * WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS - * OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS - * INFORMATION, OR ANY OTHER PECUNIARY LOSS), INCLUDING ATTORNEYS' - * FEES, RELATING TO THE USE OF OR INABILITY TO USE THIS SOFTWARE, - * EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.proceduralTexturePhysics; - -import java.awt.Image; -import java.awt.image.*; -import java.io.*; -import java.nio.*; -import java.text.*; -import java.util.*; - -import gleem.linalg.*; -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.texture.*; -import demos.util.*; - -/** - * Auxiliary Water simulation class used by ProceduralTexturePhysics - * main loop. Demonstration by NVidia Corporation. - * - * <P> - * - * Ported to Java and ARB_fragment_program by Kenneth Russell - */ - -public class Water { - // Note: this class is organized differently than most of the demos - // due to the fact that it is used for two purposes: when the - // pbuffer's context is current it is used to update the cellular - // automata, and when the parent drawable's context is current it is - // used to render the water geometry (with the parent drawable's GL - // object). - - private GLU glu = new GLU(); - - // Rendering modes - public static final int CA_FULLSCREEN_REFLECT = 0; - public static final int CA_FULLSCREEN_FORCE = 1; - public static final int CA_FULLSCREEN_HEIGHT = 2; - public static final int CA_FULLSCREEN_NORMALMAP = 3; - public static final int CA_TILED_THREE_WINDOWS = 4; - public static final int CA_DO_NOT_RENDER = 5; - - private int[] initialMapDimensions = new int[2]; - private TextureData initialMapData; - - private String tmpSpinFilename; - private String tmpDropletFilename; - private String tmpCubeMapFilenamePrefix; - private String tmpCubeMapFilenameSuffix; - - private GLPbuffer pbuffer; - private Rotf cameraOrientation = new Rotf(); - - // Dynamic texture names - private static final int CA_TEXTURE_FORCE_INTERMEDIATE = 0; - private static final int CA_TEXTURE_FORCE_TARGET = 1; - private static final int CA_TEXTURE_VELOCITY_SOURCE = 2; - private static final int CA_TEXTURE_VELOCITY_TARGET = 3; - private static final int CA_TEXTURE_HEIGHT_SOURCE = 4; - private static final int CA_TEXTURE_HEIGHT_TARGET = 5; - private static final int CA_TEXTURE_NORMAL_MAP = 6; - private static final int CA_NUM_DYNAMIC_TEXTURES = 7; - - // List names - private static final int CA_FRAGMENT_PROGRAM_EQ_WEIGHT_COMBINE = 0; - private static final int CA_FRAGMENT_PROGRAM_NEIGHBOR_FORCE_CALC_1 = 1; - private static final int CA_FRAGMENT_PROGRAM_NEIGHBOR_FORCE_CALC_2 = 2; - private static final int CA_FRAGMENT_PROGRAM_APPLY_FORCE = 3; - private static final int CA_FRAGMENT_PROGRAM_APPLY_VELOCITY = 4; - private static final int CA_FRAGMENT_PROGRAM_CREATE_NORMAL_MAP = 5; - private static final int CA_FRAGMENT_PROGRAM_REFLECT = 6; - private static final int CA_DRAW_SCREEN_QUAD = 7; - private static final int CA_NUM_LISTS = 8; - - // Static textures - private Texture initialMapTex; - private Texture spinTex; - private Texture dropletTex; - private Texture cubemap; - - private Texture[] dynamicTextures = new Texture[CA_NUM_DYNAMIC_TEXTURES]; - - private int texHeightInput; // current input height texture ID. - private int texHeightOutput; // current output height texture ID. - private int texVelocityInput; // current input velocity texture ID. - private int texVelocityOutput; // current output velocity texture ID. - private int texForceStepOne; // intermediate force computation result texture ID. - private int texForceOutput; // current output force texture ID. - - private int[] displayListIDs = new int[CA_NUM_LISTS]; - - private int vertexProgramID; // one vertex program is used to choose the texcoord offset - - private int flipState; // used to flip target texture configurations. - - private boolean wrap; // CA can either wrap its borders, or clamp (clamp by default) - private boolean reset = true; // are we resetting this frame? (user hit reset). - private boolean singleStep; // animation step on keypress. - private boolean animate = true; // continuous animation. - private boolean slow = true; // run slow. - private boolean wireframe; // render in wireframe mode - private boolean applyInteriorBoundaries = true; // enable / disable "boundary" image drawing. - private boolean spinLogo = true; // draw spinning logo. - private boolean createNormalMap = true; // enable / disable normal map creation. - - private float perTexelWidth; // width of a texel (percentage of texture) - private float perTexelHeight; // height of a texel - - private float blurDist = 0.5f; // distance over which to blur. - private boolean mustUpdateBlurOffsets; // flag indicating blurDist was set last tick - - private float normalSTScale = 0.8f; // scale of normals in normal map. - private float bumpScale = 0.25f; // scale of bumps in water. - - private float dropletFrequency = 0.175f; // frequency at which droplets are drawn in water... - - private int slowDelay = 1; // amount (milliseconds) to delay when running slow. - private int skipInterval; // frames to skip simulation. - private int skipCount; // frame count for skipping rendering - - private int angle; // angle in degrees for spinning logo - - private List/*<Droplet>*/ droplets = new ArrayList/*<Droplet>*/(); // array of droplets - - private int renderMode; - - // Constant memory locations - private static final int CV_UV_OFFSET_TO_USE = 0; - - private static final int CV_UV_T0_NO_OFFSET = 1; - private static final int CV_UV_T0_TYPE1 = 2; - private static final int CV_UV_T0_TYPE2 = 3; - private static final int CV_UV_T0_TYPE3 = 4; - private static final int CV_UV_T0_TYPE4 = 5; - - private static final int CV_UV_T1_NO_OFFSET = 6; - private static final int CV_UV_T1_TYPE1 = 7; - private static final int CV_UV_T1_TYPE2 = 8; - private static final int CV_UV_T1_TYPE3 = 9; - private static final int CV_UV_T1_TYPE4 = 10; - - private static final int CV_UV_T2_NO_OFFSET = 11; - private static final int CV_UV_T2_TYPE1 = 12; - private static final int CV_UV_T2_TYPE2 = 13; - private static final int CV_UV_T2_TYPE3 = 14; - private static final int CV_UV_T2_TYPE4 = 15; - - private static final int CV_UV_T3_NO_OFFSET = 16; - private static final int CV_UV_T3_TYPE1 = 17; - private static final int CV_UV_T3_TYPE2 = 18; - private static final int CV_UV_T3_TYPE3 = 19; - private static final int CV_UV_T3_TYPE4 = 20; - - private static final int CV_CONSTS_1 = 21; - - public void initialize(String initialMapFilename, - String spinFilename, - String dropletFilename, - String cubeMapFilenamePrefix, - String cubeMapFilenameSuffix, - GLAutoDrawable parentWindow) { - loadInitialTexture(initialMapFilename); - tmpSpinFilename = spinFilename; - tmpDropletFilename = dropletFilename; - tmpCubeMapFilenamePrefix = cubeMapFilenamePrefix; - tmpCubeMapFilenameSuffix = cubeMapFilenameSuffix; - - // create the pbuffer. Will use this as an offscreen rendering buffer. - // it allows rendering a texture larger than our window. - GLCapabilities caps = new GLCapabilities(); - caps.setDoubleBuffered(false); - if (!GLDrawableFactory.getFactory().canCreateGLPbuffer()) { - throw new GLException("Pbuffers not supported with this graphics card"); - } - pbuffer = GLDrawableFactory.getFactory().createGLPbuffer(caps, - null, - initialMapDimensions[0], - initialMapDimensions[1], - parentWindow.getContext()); - pbuffer.addGLEventListener(new Listener()); - } - - public void destroy() { - if (pbuffer != null) { - pbuffer.destroy(); - pbuffer = null; - } - reset = true; - } - - public void tick() { - pbuffer.display(); - } - - public void draw(GL gl, Rotf cameraOrientation) { - this.cameraOrientation.set(cameraOrientation); - - if (skipCount >= skipInterval && renderMode != CA_DO_NOT_RENDER) { - skipCount = 0; - // Display the results of the rendering to texture - if (wireframe) { - gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_LINE); - - // chances are the texture will be all dark, so lets not use a texture - gl.glDisable(GL.GL_TEXTURE_2D); - } else { - gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_FILL); - - gl.glActiveTexture(GL.GL_TEXTURE0); - gl.glEnable(GL.GL_TEXTURE_2D); - } - - switch (renderMode) { - case CA_FULLSCREEN_REFLECT: { - // include bump scale... - Mat4f bscale = new Mat4f(); - bscale.makeIdent(); - bscale.set(0, 0, bumpScale); - bscale.set(1, 1, bumpScale); - Mat4f rot = new Mat4f(); - rot.makeIdent(); - rot.setRotation(cameraOrientation); - Mat4f matRot = rot.mul(bscale); - - gl.glCallList(displayListIDs[CA_FRAGMENT_PROGRAM_REFLECT]); - - // Draw quad over full display - gl.glActiveTexture(GL.GL_TEXTURE0); - dynamicTextures[CA_TEXTURE_NORMAL_MAP].bind(); - dynamicTextures[CA_TEXTURE_NORMAL_MAP].disable(); - gl.glActiveTexture(GL.GL_TEXTURE3); - cubemap.bind(); - cubemap.enable(); - - gl.glColor4f(1, 1, 1, 1); - gl.glBegin(GL.GL_QUADS); - - gl.glMultiTexCoord2f(GL.GL_TEXTURE0, 0,0); - gl.glMultiTexCoord4f(GL.GL_TEXTURE1, matRot.get(0,0), matRot.get(0,1), matRot.get(0,2), 1); - gl.glMultiTexCoord4f(GL.GL_TEXTURE2, matRot.get(1,0), matRot.get(1,1), matRot.get(1,2), 1); - gl.glMultiTexCoord4f(GL.GL_TEXTURE3, matRot.get(2,0), matRot.get(2,1), matRot.get(2,2), 1); - gl.glVertex2f(-1,-1); - - gl.glMultiTexCoord2f(GL.GL_TEXTURE0, 1,0); - gl.glMultiTexCoord4f(GL.GL_TEXTURE1, matRot.get(0,0), matRot.get(0,1), matRot.get(0,2), -1); - gl.glMultiTexCoord4f(GL.GL_TEXTURE2, matRot.get(1,0), matRot.get(1,1), matRot.get(1,2), 1); - gl.glMultiTexCoord4f(GL.GL_TEXTURE3, matRot.get(2,0), matRot.get(2,1), matRot.get(2,2), 1); - gl.glVertex2f( 1,-1); - - gl.glMultiTexCoord2f(GL.GL_TEXTURE0, 1,1); - gl.glMultiTexCoord4f(GL.GL_TEXTURE1, matRot.get(0,0), matRot.get(0,1), matRot.get(0,2), -1); - gl.glMultiTexCoord4f(GL.GL_TEXTURE2, matRot.get(1,0), matRot.get(1,1), matRot.get(1,2), -1); - gl.glMultiTexCoord4f(GL.GL_TEXTURE3, matRot.get(2,0), matRot.get(2,1), matRot.get(2,2), 1); - gl.glVertex2f( 1, 1); - - gl.glMultiTexCoord2f(GL.GL_TEXTURE0, 0,1); - gl.glMultiTexCoord4f(GL.GL_TEXTURE1, matRot.get(0,0), matRot.get(0,1), matRot.get(0,2), 1); - gl.glMultiTexCoord4f(GL.GL_TEXTURE2, matRot.get(1,0), matRot.get(1,1), matRot.get(1,2), -1); - gl.glMultiTexCoord4f(GL.GL_TEXTURE3, matRot.get(2,0), matRot.get(2,1), matRot.get(2,2), 1); - gl.glVertex2f(-1, 1); - - gl.glEnd(); - - cubemap.disable(); - gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB); - - break; - } - - case CA_FULLSCREEN_NORMALMAP: { - // Draw quad over full display - gl.glActiveTexture(GL.GL_TEXTURE0); - dynamicTextures[CA_TEXTURE_NORMAL_MAP].bind(); - - gl.glCallList(displayListIDs[CA_DRAW_SCREEN_QUAD]); - break; - } - - case CA_FULLSCREEN_HEIGHT: { - // Draw quad over full display - gl.glActiveTexture(GL.GL_TEXTURE0); - gl.glBindTexture(GL.GL_TEXTURE_2D, texHeightOutput); - - gl.glCallList(displayListIDs[CA_DRAW_SCREEN_QUAD]); - break; - } - - case CA_FULLSCREEN_FORCE: { - // Draw quad over full display - gl.glActiveTexture(GL.GL_TEXTURE0); - dynamicTextures[CA_TEXTURE_FORCE_TARGET].bind(); - - gl.glCallList(displayListIDs[CA_DRAW_SCREEN_QUAD]); - break; - } - - case CA_TILED_THREE_WINDOWS: { - // Draw quad over full display - // lower left - gl.glActiveTexture(GL.GL_TEXTURE0); - dynamicTextures[CA_TEXTURE_FORCE_TARGET].bind(); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glPushMatrix(); - - gl.glTranslatef(-0.5f, -0.5f, 0); - gl.glScalef(0.5f, 0.5f, 1); - gl.glCallList(displayListIDs[CA_DRAW_SCREEN_QUAD]); - gl.glPopMatrix(); - - // lower right - gl.glBindTexture(GL.GL_TEXTURE_2D, texVelocityOutput); - gl.glPushMatrix(); - - gl.glTranslatef(0.5f, -0.5f, 0); - gl.glScalef(0.5f, 0.5f, 1); - gl.glCallList(displayListIDs[CA_DRAW_SCREEN_QUAD]); - gl.glPopMatrix(); - - // upper left - dynamicTextures[CA_TEXTURE_NORMAL_MAP].bind(); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glPushMatrix(); - - gl.glTranslatef(-0.5f, 0.5f, 0); - gl.glScalef(0.5f, 0.5f, 1); - gl.glCallList(displayListIDs[CA_DRAW_SCREEN_QUAD]); - gl.glPopMatrix(); - - // upper right - gl.glBindTexture(GL.GL_TEXTURE_2D, texHeightOutput); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glPushMatrix(); - - gl.glTranslatef(0.5f, 0.5f, 0); - gl.glScalef(0.5f, 0.5f, 1); - gl.glCallList(displayListIDs[CA_DRAW_SCREEN_QUAD]); - gl.glPopMatrix(); - - break; - } - } - } else { - // skip rendering this frame - skipCount++; - } - } - - public void singleStep() { singleStep = true; } - public void enableAnimation(boolean enable) { animate = enable; } - public void enableSlowAnimation(boolean enable) { slow = enable; } - public void reset() { reset = true; } - public void setRenderMode(int mode) { renderMode = mode; } - - public void enableWireframe(boolean enable) { wireframe = enable; } - public void enableBorderWrapping(boolean enable) { wrap = enable; } - - public void enableBoundaryApplication(boolean enable) { applyInteriorBoundaries = enable; } - public void enableSpinningLogo(boolean enable) { spinLogo = enable; } - - public void setBlurDistance(float distance) { blurDist = distance; - mustUpdateBlurOffsets = true; } - public float getBlurDistance() { return blurDist; } - - public void setBumpScale(float scale) { bumpScale = scale; } - public float getBumpScale() { return bumpScale; } - - public void setDropFrequency(float frequency) { dropletFrequency = frequency; } - public float getDropFrequency() { return dropletFrequency; } - - public static class Droplet { - private float rX; - private float rY; - private float rScale; - - Droplet(float rX, float rY, float rScale) { - this.rX = rX; - this.rY = rY; - this.rScale = rScale; - } - - float rX() { return rX; } - float rY() { return rY; } - float rScale() { return rScale; } - } - - public synchronized void addDroplet(Droplet drop) { - droplets.add(drop); - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - class Listener implements GLEventListener { - public void init(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - - initOpenGL(gl); - } - - public void display(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - if (mustUpdateBlurOffsets) { - updateBlurVertOffset(gl); - mustUpdateBlurOffsets = false; - } - - // Take a single step in the cellular automaton - - // Disable culling - gl.glDisable(GL.GL_CULL_FACE); - - if (reset) { - reset = false; - flipState = 0; - } - - if (animate) { - // Update the textures for one step of the simulation - doSingleTimeStep(gl); - } else if (singleStep) { - doSingleTimeStep(gl); - singleStep = false; - } - - // Force rendering to pbuffer to complete - gl.glFlush(); - - if (slow && (slowDelay > 0) ) { - try { - Thread.sleep(slowDelay); - } catch (InterruptedException e) { - } - } - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} - - // Unused routines - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - } - - // We need to load the initial texture file early to get the width - // and height for the pbuffer - private void loadInitialTexture(String initialMapFilename) { - try { - initialMapData = TextureIO.newTextureData(getClass().getClassLoader().getResourceAsStream(initialMapFilename), - false, - FileUtil.getFileSuffix(initialMapFilename)); - } catch (IOException e) { - throw new GLException(e); - } - initialMapDimensions[0] = initialMapData.getWidth(); - initialMapDimensions[1] = initialMapData.getHeight(); - } - - private void initOpenGL(GL gl) { - try { - loadTextures(gl, tmpSpinFilename, tmpDropletFilename, tmpCubeMapFilenamePrefix, tmpCubeMapFilenameSuffix); - } catch (IOException e) { - throw new GLException(e); - } - tmpSpinFilename = null; - tmpDropletFilename = null; - tmpCubeMapFilenamePrefix = null; - tmpCubeMapFilenameSuffix = null; - - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluOrtho2D(-1, 1, -1, 1); - - gl.glClearColor(0, 0, 0, 0); - gl.glDisable(GL.GL_LIGHTING); - gl.glDisable(GL.GL_DEPTH_TEST); - - createAndWriteUVOffsets(gl, initialMapDimensions[0], initialMapDimensions[1]); - - checkExtension(gl, "GL_ARB_vertex_program"); - checkExtension(gl, "GL_ARB_fragment_program"); - checkExtension(gl, "GL_ARB_multitexture"); - - /////////////////////////////////////////////////////////////////////////// - // UV Offset Vertex Program - /////////////////////////////////////////////////////////////////////////// - - int[] tmpInt = new int[1]; - gl.glGenProgramsARB(1, tmpInt, 0); - vertexProgramID = tmpInt[0]; - gl.glBindProgramARB(GL.GL_VERTEX_PROGRAM_ARB, vertexProgramID); - - String programBuffer = -"!!ARBvp1.0\n" + -"# Constant memory location declarations (must match those in Java sources)\n" + -"# CV_UV_OFFSET_TO_USE = 0\n" + -"\n" + -"# CV_UV_T0_NO_OFFSET = 1\n" + -"# CV_UV_T0_TYPE1 = 2\n" + -"# CV_UV_T0_TYPE2 = 3\n" + -"# CV_UV_T0_TYPE3 = 4\n" + -"# CV_UV_T0_TYPE4 = 5\n" + -"\n" + -"# CV_UV_T1_NO_OFFSET = 6\n" + -"# CV_UV_T1_TYPE1 = 7\n" + -"# CV_UV_T1_TYPE2 = 8\n" + -"# CV_UV_T1_TYPE3 = 9\n" + -"# CV_UV_T1_TYPE4 = 10\n" + -"\n" + -"# CV_UV_T2_NO_OFFSET = 11\n" + -"# CV_UV_T2_TYPE1 = 12\n" + -"# CV_UV_T2_TYPE2 = 13\n" + -"# CV_UV_T2_TYPE3 = 14\n" + -"# CV_UV_T2_TYPE4 = 15\n" + -"\n" + -"# CV_UV_T3_NO_OFFSET = 16\n" + -"# CV_UV_T3_TYPE1 = 17\n" + -"# CV_UV_T3_TYPE2 = 18\n" + -"# CV_UV_T3_TYPE3 = 19\n" + -"# CV_UV_T3_TYPE4 = 20\n" + -"\n" + -"# CV_CONSTS_1 = 21\n" + -"\n" + -"# Parameters\n" + -"PARAM mvp [4] = { state.matrix.mvp }; # modelview projection matrix\n" + -"PARAM uvOffsetToUse = program.env[0];\n" + -"PARAM uvOffsets[20] = { program.env[1..20] };\n" + -"\n" + -"# Addresses\n" + -"ADDRESS addr;\n" + -"\n" + -"# Per vertex inputs\n" + -"ATTRIB iPos = vertex.position; #position\n" + -"\n" + -"# Outputs\n" + -"OUTPUT oPos = result.position; #position\n" + -"\n" + -"# Transform vertex-position to clip-space\n" + -"DP4 oPos.x, iPos, mvp[0];\n" + -"DP4 oPos.y, iPos, mvp[1];\n" + -"DP4 oPos.z, iPos, mvp[2];\n" + -"DP4 oPos.w, iPos, mvp[3];\n" + -"\n" + -"# Read which set of offsets to use\n" + -"ARL addr.x, uvOffsetToUse.x;\n" + -"\n" + -"# c[CV_CONSTS_1] = c[28]\n" + -"# x = 0\n" + -"# y = 0.5\n" + -"# z = 1\n" + -"# w = 2.0f\n" + -"\n" + -"# Put a scale factor into r0 so the sample points\n" + -"# can be moved farther from the texel being written\n" + -"# MOV R0, c[28].z;\n" + -"\n" + -"# Add the offsets to the input texture\n" + -"# coordinate, creating 4 sets of independent\n" + -"# texture coordinates.\n" + -"ADD result.texcoord[0], uvOffsets[addr.x ], vertex.texcoord[0];\n" + -"ADD result.texcoord[1], uvOffsets[addr.x + 5 ], vertex.texcoord[0];\n" + -"ADD result.texcoord[2], uvOffsets[addr.x + 10], vertex.texcoord[0];\n" + -"ADD result.texcoord[3], uvOffsets[addr.x + 15], vertex.texcoord[0];\n" + -"\n" + -"END\n"; - - // set up constants (not currently used in the vertex program, though) - float[] rCVConsts = new float[] { 0, 0.5f, 1.0f, 2.0f }; - gl.glProgramEnvParameter4fvARB(GL.GL_VERTEX_PROGRAM_ARB, CV_CONSTS_1, rCVConsts, 0); - - loadProgram(gl, GL.GL_VERTEX_PROGRAM_ARB, programBuffer); - - /////////////////////////////////////////////////////////////////////////// - // fragment program setup for equal weight combination of texels - /////////////////////////////////////////////////////////////////////////// - displayListIDs[CA_FRAGMENT_PROGRAM_EQ_WEIGHT_COMBINE] = gl.glGenLists(1); - initEqWeightCombine_PostMult(gl, displayListIDs[CA_FRAGMENT_PROGRAM_EQ_WEIGHT_COMBINE]); - - /////////////////////////////////////////////////////////////////////////// - // fragment program setup for computing force from neighbors (step 1) - /////////////////////////////////////////////////////////////////////////// - displayListIDs[CA_FRAGMENT_PROGRAM_NEIGHBOR_FORCE_CALC_1] = gl.glGenLists(1); - initNeighborForceCalcStep1(gl, displayListIDs[CA_FRAGMENT_PROGRAM_NEIGHBOR_FORCE_CALC_1]); - - /////////////////////////////////////////////////////////////////////////// - // fragment program setup for computing force from neighbors (step 2) - /////////////////////////////////////////////////////////////////////////// - displayListIDs[CA_FRAGMENT_PROGRAM_NEIGHBOR_FORCE_CALC_2] = gl.glGenLists(1); - initNeighborForceCalcStep2(gl, displayListIDs[CA_FRAGMENT_PROGRAM_NEIGHBOR_FORCE_CALC_2]); - - /////////////////////////////////////////////////////////////////////////// - // fragment program setup to apply force - /////////////////////////////////////////////////////////////////////////// - displayListIDs[CA_FRAGMENT_PROGRAM_APPLY_FORCE] = gl.glGenLists(1); - initApplyForce(gl, displayListIDs[CA_FRAGMENT_PROGRAM_APPLY_FORCE]); - - /////////////////////////////////////////////////////////////////////////// - // fragment program setup to apply velocity - /////////////////////////////////////////////////////////////////////////// - displayListIDs[CA_FRAGMENT_PROGRAM_APPLY_VELOCITY] = gl.glGenLists(1); - initApplyVelocity(gl, displayListIDs[CA_FRAGMENT_PROGRAM_APPLY_VELOCITY]); - - /////////////////////////////////////////////////////////////////////////// - // fragment program setup to create a normal map - /////////////////////////////////////////////////////////////////////////// - displayListIDs[CA_FRAGMENT_PROGRAM_CREATE_NORMAL_MAP] = gl.glGenLists(1); - initCreateNormalMap(gl, displayListIDs[CA_FRAGMENT_PROGRAM_CREATE_NORMAL_MAP]); - - /////////////////////////////////////////////////////////////////////////// - // fragment program setup for dot product reflection - /////////////////////////////////////////////////////////////////////////// - displayListIDs[CA_FRAGMENT_PROGRAM_REFLECT] = gl.glGenLists(1); - initDotProductReflect(gl, displayListIDs[CA_FRAGMENT_PROGRAM_REFLECT]); - - /////////////////////////////////////////////////////////////////////////// - // display list to render a single screen space quad. - /////////////////////////////////////////////////////////////////////////// - displayListIDs[CA_DRAW_SCREEN_QUAD] = gl.glGenLists(1); - gl.glNewList(displayListIDs[CA_DRAW_SCREEN_QUAD], GL.GL_COMPILE); - gl.glColor4f(1, 1, 1, 1); - gl.glBegin(GL.GL_TRIANGLE_STRIP); - gl.glTexCoord2f(0, 1); gl.glVertex2f(-1, 1); - gl.glTexCoord2f(0, 0); gl.glVertex2f(-1, -1); - gl.glTexCoord2f(1, 1); gl.glVertex2f( 1, 1); - gl.glTexCoord2f(1, 0); gl.glVertex2f( 1, -1); - gl.glEnd(); - gl.glEndList(); - } - - private void checkExtension(GL gl, String extensionName) { - if (!gl.isExtensionAvailable(extensionName)) { - throw new GLException("Unable to initialize " + extensionName + " OpenGL extension"); - } - } - - private void doSingleTimeStep(GL gl) { - int temp; - - // Swap texture source & target indices & pointers - // 0 = start from initial loaded texture - // 1/2 = flip flop back and forth between targets & sources - - switch (flipState) { - case 0: - texHeightInput = dynamicTextures[CA_TEXTURE_HEIGHT_SOURCE].getTextureObject(); // initial height map. - texHeightOutput = dynamicTextures[CA_TEXTURE_HEIGHT_TARGET].getTextureObject(); // next height map. - - texVelocityInput = dynamicTextures[CA_TEXTURE_VELOCITY_SOURCE].getTextureObject(); // initial velocity. - texVelocityOutput = dynamicTextures[CA_TEXTURE_VELOCITY_TARGET].getTextureObject(); // next velocity. - - // Clear initial velocity texture to 0x80 == gray - gl.glClearColor(0.5f, 0.5f, 0.5f, 1.0f); - gl.glClear(GL.GL_COLOR_BUFFER_BIT); - - // Now we need to copy the resulting pixels into the intermediate force field texture - gl.glActiveTexture(GL.GL_TEXTURE0); - gl.glBindTexture(GL.GL_TEXTURE_2D, texVelocityInput); - - // use CopyTexSubImage for speed (even though we copy all of it) since we pre-allocated the texture - gl.glCopyTexSubImage2D(GL.GL_TEXTURE_2D, 0, 0, 0, 0, 0, initialMapDimensions[0], initialMapDimensions[1]); - - break; - - case 1: - temp = texHeightInput; - texHeightInput = texHeightOutput; - texHeightOutput = temp; - - temp = texVelocityInput; - texVelocityInput = texVelocityOutput; - texVelocityOutput = temp; - - break; - - case 2: - temp = texHeightInput; - texHeightInput = texHeightOutput; - texHeightOutput = temp; - - temp = texVelocityInput; - texVelocityInput = texVelocityOutput; - texVelocityOutput = temp; - break; - } - - // even if wireframe mode, render to texture as solid - gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_FILL); - - ///////////////////////////////////////////////////////////// - // Render first 3 components of force from three neighbors - // Offsets selected are 1 center texel for center height - // and 3 of the 4 nearest neighbors. Texture selected - // is same for all stages as we're turning height difference - // of nearest neightbor texels into a force value. - - gl.glCallList(displayListIDs[CA_FRAGMENT_PROGRAM_NEIGHBOR_FORCE_CALC_1]); - - // set current source texture for stage 0 texture - for (int i = 0; i < 4; i++) - { - gl.glActiveTexture(GL.GL_TEXTURE0 + i); - gl.glBindTexture(GL.GL_TEXTURE_2D, texHeightInput); - gl.glEnable(GL.GL_TEXTURE_2D); - } - - int wrapMode = wrap ? GL.GL_REPEAT : GL.GL_CLAMP_TO_EDGE; - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, wrapMode); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, wrapMode); - - // disable blending - gl.glDisable(GL.GL_BLEND); - - // render using offset 1 (type 1 -- center + 3 of 4 nearest neighbors). - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, CV_UV_OFFSET_TO_USE, 1, 0, 0, 0); - - // bind the vertex program to be used for this step and the next one. - gl.glBindProgramARB(GL.GL_VERTEX_PROGRAM_ARB, vertexProgramID); - gl.glEnable(GL.GL_VERTEX_PROGRAM_ARB); - - // render a screen quad. with texture coords doing difference of nearby texels for force calc. - gl.glCallList(displayListIDs[CA_DRAW_SCREEN_QUAD]); - - gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB); - - // Now we need to copy the resulting pixels into the intermediate force field texture - gl.glActiveTexture(GL.GL_TEXTURE2); - dynamicTextures[CA_TEXTURE_FORCE_INTERMEDIATE].bind(); - - // use CopyTexSubImage for speed (even though we copy all of it) since we pre-allocated the texture - gl.glCopyTexSubImage2D(GL.GL_TEXTURE_2D, 0, 0, 0, 0, 0, initialMapDimensions[0], initialMapDimensions[1]); - - //////////////////////////////////////////////////////////////// - // Now add in last component of force for the 4th neighbor - // that we didn't have enough texture lookups to do in the - // first pass - - gl.glCallList(displayListIDs[CA_FRAGMENT_PROGRAM_NEIGHBOR_FORCE_CALC_2]); - - // Cannot use additive blending as the force contribution might - // be negative and would have to subtract from the dest. - // We must instead use an additional texture as target and read - // the previous partial 3-neighbor result into the pixel shader - // for possible subtraction - - // Alphablend must be false - - //; t0 = center (same as last phase) - //; t1 = 2nd axis final point (same as last phase) - //; t2 = previous partial result texture sampled at center (result of last phase copied to texture) - //; t3 = not used (disable now) - - gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, wrapMode); - gl.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, wrapMode); - - gl.glActiveTexture(GL.GL_TEXTURE3); - gl.glDisable(GL.GL_TEXTURE_2D); - - // vertex program already bound. - // render using offset 2 (type 2 -- final nearest neighbor plus center of previous result). - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, CV_UV_OFFSET_TO_USE, 2, 0, 0, 0); - - // render a screen quad - gl.glCallList(displayListIDs[CA_DRAW_SCREEN_QUAD]); - - gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB); - - // Now we need to copy the resulting pixels into the intermediate force field texture - gl.glActiveTexture(GL.GL_TEXTURE1); - dynamicTextures[CA_TEXTURE_FORCE_TARGET].bind(); - - // use CopyTexSubImage for speed (even though we copy all of it) since we pre-allocated the texture - gl.glCopyTexSubImage2D(GL.GL_TEXTURE_2D, 0, 0, 0, 0, 0, initialMapDimensions[0], initialMapDimensions[1]); - - ///////////////////////////////////////////////////////////////// - // Apply the force with a scale factor to reduce it's magnitude. - // Add this to the current texture representing the water height. - - gl.glCallList(displayListIDs[CA_FRAGMENT_PROGRAM_APPLY_FORCE]); - - // use offsets of zero - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, CV_UV_OFFSET_TO_USE, 0, 0, 0, 0); - - // bind the vertex program to be used for this step and the next one. - - gl.glActiveTexture(GL.GL_TEXTURE0); - gl.glBindTexture(GL.GL_TEXTURE_2D, texVelocityInput); - gl.glActiveTexture(GL.GL_TEXTURE1); - dynamicTextures[CA_TEXTURE_FORCE_TARGET].bind(); - gl.glActiveTexture(GL.GL_TEXTURE2); - gl.glDisable(GL.GL_TEXTURE_2D); - gl.glActiveTexture(GL.GL_TEXTURE3); - gl.glDisable(GL.GL_TEXTURE_2D); - - // Draw the quad to add in force. - gl.glCallList(displayListIDs[CA_DRAW_SCREEN_QUAD]); - - gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB); - - /////////////////////////////////////////////////////////////////// - // With velocity texture selected, render new excitation droplets - // at random freq. - - float randomFrequency = (float) Math.random(); - - if (dropletFrequency > randomFrequency) { - // a drop falls - decide where - Droplet drop = new Droplet(2 * ((float)Math.random() - 0.5f), - 2 * ((float)Math.random() - 0.5f), - 0.02f + 0.1f * ((float)Math.random())); - addDroplet(drop); - } - - // Now draw the droplets: - if (!droplets.isEmpty()) { - drawDroplets(gl); - droplets.clear(); - } - - // Now we need to copy the resulting pixels into the velocity texture - gl.glActiveTexture(GL.GL_TEXTURE1); - gl.glBindTexture(GL.GL_TEXTURE_2D, texVelocityOutput); - - // use CopyTexSubImage for speed (even though we copy all of it) since we pre-allocated the texture - gl.glCopyTexSubImage2D(GL.GL_TEXTURE_2D, 0, 0, 0, 0, 0, initialMapDimensions[0], initialMapDimensions[1]); - - ////////////////////////////////////////////////////////////////////// - // Apply velocity to position - gl.glCallList(displayListIDs[CA_FRAGMENT_PROGRAM_APPLY_VELOCITY]); - gl.glEnable(GL.GL_VERTEX_PROGRAM_ARB); - - gl.glActiveTexture(GL.GL_TEXTURE0); - gl.glBindTexture(GL.GL_TEXTURE_2D, texHeightInput); - gl.glActiveTexture(GL.GL_TEXTURE1); // velocity output already bound - gl.glEnable(GL.GL_TEXTURE_2D); - - // use offsets of zero - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, CV_UV_OFFSET_TO_USE, 0, 0, 0, 0); - - // Draw the quad to add in force. - gl.glCallList(displayListIDs[CA_DRAW_SCREEN_QUAD]); - - gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB); - - // Now we need to copy the resulting pixels into the input height texture - gl.glActiveTexture(GL.GL_TEXTURE0); - gl.glBindTexture(GL.GL_TEXTURE_2D, texHeightInput); - - // use CopyTexSubImage for speed (even though we copy all of it) since we pre-allocated the texture - gl.glCopyTexSubImage2D(GL.GL_TEXTURE_2D, 0, 0, 0, 0, 0, initialMapDimensions[0], initialMapDimensions[1]); - - /////////////////////////////////////////////////////////////////// - // blur positions to smooth noise & generaly dampen things - // degree of blur is controlled by magnitude of 4 neighbor texel - // offsets with bilinear on - - for (int i = 1; i < 4; i++) { - gl.glActiveTexture(GL.GL_TEXTURE0 + i); - gl.glBindTexture(GL.GL_TEXTURE_2D, texHeightInput); - gl.glEnable(GL.GL_TEXTURE_2D); - } - - // use offsets of 3 - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, CV_UV_OFFSET_TO_USE, 3, 0, 0, 0); - - gl.glCallList(displayListIDs[CA_FRAGMENT_PROGRAM_EQ_WEIGHT_COMBINE]); - - gl.glCallList(displayListIDs[CA_DRAW_SCREEN_QUAD]); - gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB); - - // Draw the logo in the water. - if (applyInteriorBoundaries) { - gl.glDisable(GL.GL_VERTEX_PROGRAM_ARB); - drawInteriorBoundaryObjects(gl); - } - - // Now we need to copy the resulting pixels into the velocity texture - gl.glActiveTexture(GL.GL_TEXTURE0); - gl.glBindTexture(GL.GL_TEXTURE_2D, texHeightOutput); - - // use CopyTexSubImage for speed (even though we copy all of it) since we pre-allocated the texture - gl.glCopyTexSubImage2D(GL.GL_TEXTURE_2D, 0, 0, 0, 0, 0, initialMapDimensions[0], initialMapDimensions[1]); - - /////////////////////////////////////////////////////////////////// - // If selected, create a normal map from the height - - if (createNormalMap) { - createNormalMap(gl); - } - - /////////////////////////////////////////////////////////// - // Flip the state variable for the next round of rendering - switch (flipState) { - case 0: - flipState = 1; - break; - case 1: - flipState = 2; - break; - case 2: - flipState = 1; - break; - } - } - - private void createNormalMap(GL gl) { - // use the height output on all four texture stages - for (int i = 0; i < 4; i++) { - gl.glActiveTexture(GL.GL_TEXTURE0 + i); - gl.glBindTexture(GL.GL_TEXTURE_2D, texHeightOutput); - gl.glEnable(GL.GL_TEXTURE_2D); - } - - // Set constants for red & green scale factors (also essential color masks) - // Red mask first - float[] pixMasks = new float[] { normalSTScale, 0.0f, 0.0f, 0.0f }; - - gl.glProgramEnvParameter4fvARB(GL.GL_FRAGMENT_PROGRAM_ARB, 0, pixMasks, 0); - - // Now green mask & scale: - pixMasks[0] = 0.0f; - pixMasks[1] = normalSTScale; - gl.glProgramEnvParameter4fvARB(GL.GL_FRAGMENT_PROGRAM_ARB, 1, pixMasks, 0); - - gl.glCallList(displayListIDs[CA_FRAGMENT_PROGRAM_CREATE_NORMAL_MAP]); - - // set vp offsets to nearest neighbors - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, CV_UV_OFFSET_TO_USE, 4, 0, 0, 0); - gl.glEnable(GL.GL_VERTEX_PROGRAM_ARB); - - gl.glCallList(displayListIDs[CA_DRAW_SCREEN_QUAD]); - - gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB); - - // Now we need to copy the resulting pixels into the normal map - gl.glActiveTexture(GL.GL_TEXTURE0); - dynamicTextures[CA_TEXTURE_NORMAL_MAP].bind(); - - // use CopyTexSubImage for speed (even though we copy all of it) since we pre-allocated the texture - gl.glCopyTexSubImage2D(GL.GL_TEXTURE_2D, 0, 0, 0, 0, 0, initialMapDimensions[0], initialMapDimensions[1]); - } - - private void drawInteriorBoundaryObjects(GL gl) { - gl.glDisable(GL.GL_REGISTER_COMBINERS_NV); - - gl.glActiveTexture(GL.GL_TEXTURE0); - initialMapTex.bind(); - initialMapTex.enable(); - - gl.glEnable(GL.GL_ALPHA_TEST); - - // disable other texture units. - for (int i = 1; i < 4; i++) { - gl.glActiveTexture(GL.GL_TEXTURE0 + i); - gl.glDisable(GL.GL_TEXTURE_2D); - } - - gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA); - gl.glEnable(GL.GL_BLEND); - - gl.glCallList(displayListIDs[CA_DRAW_SCREEN_QUAD]); - - if (spinLogo) { - gl.glActiveTexture(GL.GL_TEXTURE0); - spinTex.bind(); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glPushMatrix(); - gl.glRotatef(angle, 0, 0, 1); - angle += 1; - - gl.glCallList(displayListIDs[CA_DRAW_SCREEN_QUAD]); - - gl.glPopMatrix(); - } - - gl.glDisable(GL.GL_ALPHA_TEST); - gl.glDisable(GL.GL_BLEND); - } - - private void loadTextures(GL gl, - String spinFilename, - String dropletFilename, - String cubeMapFilenamePrefix, - String cubeMapFilenameSuffix) throws IOException { - if (initialMapData == null) { - throw new GLException("Must call loadInitialTexture ahead of time"); - } - - initialMapTex = TextureIO.newTexture(initialMapData); - spinTex = TextureIO.newTexture(getClass().getClassLoader().getResourceAsStream(spinFilename), false, - FileUtil.getFileSuffix(spinFilename)); - dropletTex = TextureIO.newTexture(getClass().getClassLoader().getResourceAsStream(dropletFilename), false, - FileUtil.getFileSuffix(dropletFilename)); - - // load the cubemap texture - cubemap = Cubemap.loadFromStreams(getClass().getClassLoader(), - cubeMapFilenamePrefix, - cubeMapFilenameSuffix, - true); - - // now create dummy intermediate textures from the initial map texture - for (int i = 0; i < CA_NUM_DYNAMIC_TEXTURES; i++) { - dynamicTextures[i] = TextureIO.newTexture(initialMapData); - } - - initialMapData = null; - - texHeightInput = initialMapTex.getTextureObject(); // initial height map. - texHeightOutput = dynamicTextures[CA_TEXTURE_HEIGHT_TARGET].getTextureObject(); // next height map. - - texVelocityInput = dynamicTextures[CA_TEXTURE_VELOCITY_SOURCE].getTextureObject(); // initial velocity. - texVelocityOutput = dynamicTextures[CA_TEXTURE_VELOCITY_TARGET].getTextureObject(); // next velocity. - } - - private void createAndWriteUVOffsets(GL gl, int width, int height) { - // This sets vertex shader constants used to displace the - // source texture over several additive samples. This is - // used to accumulate neighboring texel information that we - // need to run the game - the 8 surrounding texels, and the - // single source texel which will either spawn or die in the - // next generation. - // Label the texels as follows, for a source texel "e" that - // we want to compute for the next generation: - // - // abc - // def - // ghi: - - // first the easy one: no offsets for sampling center - // occupied or unoccupied - // Use index offset value 0.0 to access these in the - // vertex shader. - - perTexelWidth = 1.0f / width; - perTexelHeight = 1.0f / height; - - // Offset set 0 : center texel sampling - float[] noOffsetX = new float[] { 0, 0, 0, 0 }; - float[] noOffsetY = new float[] { 0, 0, 0, 0 }; - - // Offset set 1: For use with neighbor force pixel shader 1 - // samples center with 0, +u, -u, and +v, - // ie the 'e','d', 'f', and 'h' texels - float dist = 1.5f; - float[] type1OffsetX = new float[] { 0.0f, -dist * perTexelWidth, dist * perTexelWidth, dist * perTexelWidth }; - float[] type1OffsetY = new float[] { 0.0f, dist * perTexelHeight, dist * perTexelHeight, -dist * perTexelHeight }; - - // Offset set 2: for use with neighbor force pixel shader 2 - // samples center with 0, and -v texels - // ie the 'e' and 'b' texels - // This completes a pattern of sampling center texel and it's - // 4 nearest neighbors to run the height-based water simulation - // 3rd must be 0 0 to sample texel center from partial result - // texture. - - float[] type2OffsetX = new float[] { 0.0f, -dist * perTexelWidth, 0.0f, 0.0f }; - float[] type2OffsetY = new float[] { 0.0f, -dist * perTexelHeight, 0.0f, 0.0f }; - - // type 3 offsets - updateBlurVertOffset(gl); - - ///////////////////////////////////////////////////////////// - // Nearest neighbor offsets: - - float[] type4OffsetX = new float[] { -perTexelWidth, perTexelWidth, 0.0f, 0.0f }; - float[] type4OffsetY = new float[] { 0.0f, 0.0f, -perTexelHeight, perTexelHeight }; - - // write all these offsets to constant memory - for (int i = 0; i < 4; ++i) { - float noOffset[] = { noOffsetX[i], noOffsetY[i], 0.0f, 0.0f }; - float type1Offset[] = { type1OffsetX[i], type1OffsetY[i], 0.0f, 0.0f }; - float type2Offset[] = { type2OffsetX[i], type2OffsetY[i], 0.0f, 0.0f }; - float type4Offset[] = { type4OffsetX[i], type4OffsetY[i], 0.0f, 0.0f }; - - gl.glProgramEnvParameter4fvARB(GL.GL_VERTEX_PROGRAM_ARB, CV_UV_T0_NO_OFFSET + 5 * i, noOffset, 0); - gl.glProgramEnvParameter4fvARB(GL.GL_VERTEX_PROGRAM_ARB, CV_UV_T0_TYPE1 + 5 * i, type1Offset, 0); - gl.glProgramEnvParameter4fvARB(GL.GL_VERTEX_PROGRAM_ARB, CV_UV_T0_TYPE2 + 5 * i, type2Offset, 0); - gl.glProgramEnvParameter4fvARB(GL.GL_VERTEX_PROGRAM_ARB, CV_UV_T0_TYPE4 + 5 * i, type4Offset, 0); - } - } - - private void updateBlurVertOffset(GL gl) { - float[] type3OffsetX = new float[] { -perTexelWidth * 0.5f, - perTexelWidth, - perTexelWidth * 0.5f, - -perTexelWidth - }; - float[] type3OffsetY = new float[] { perTexelHeight, - perTexelHeight * 0.5f, - -perTexelHeight, - -perTexelHeight * 0.5f - }; - float[] offsets = new float[] { 0, 0, 0, 0 }; - - for (int i = 0; i < 4; ++i) { - offsets[0] = blurDist * ( type3OffsetX[i]); - offsets[1] = blurDist * ( type3OffsetY[i]); - gl.glProgramEnvParameter4fvARB(GL.GL_VERTEX_PROGRAM_ARB, CV_UV_T0_TYPE3 + 5 * i, offsets, 0); - } - } - - private synchronized void drawDroplets(GL gl) { - gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB); - gl.glDisable(GL.GL_VERTEX_PROGRAM_ARB); - - gl.glActiveTexture(GL.GL_TEXTURE0); - dropletTex.bind(); - dropletTex.enable(); - - gl.glActiveTexture(GL.GL_TEXTURE1); - gl.glDisable(GL.GL_TEXTURE_2D); - - gl.glBlendFunc(GL.GL_ONE, GL.GL_ONE); - gl.glEnable(GL.GL_BLEND); - - gl.glBegin(GL.GL_QUADS); - gl.glColor4f(1, 1, 1, 1); - for (Iterator iter = droplets.iterator(); iter.hasNext(); ) { - Droplet droplet = (Droplet) iter.next(); - // coords in [-1,1] range - - // Draw a single quad to the texture render target - // The quad is textured with the initial droplet texture, and - // covers some small portion of the render target - // Draw the droplet - - gl.glTexCoord2f(0, 0); gl.glVertex2f(droplet.rX() - droplet.rScale(), droplet.rY() - droplet.rScale()); - gl.glTexCoord2f(1, 0); gl.glVertex2f(droplet.rX() + droplet.rScale(), droplet.rY() - droplet.rScale()); - gl.glTexCoord2f(1, 1); gl.glVertex2f(droplet.rX() + droplet.rScale(), droplet.rY() + droplet.rScale()); - gl.glTexCoord2f(0, 1); gl.glVertex2f(droplet.rX() - droplet.rScale(), droplet.rY() + droplet.rScale()); - } - gl.glEnd(); - - gl.glDisable(GL.GL_BLEND); - } - - //---------------------------------------------------------------------- - // Inlined register combiner and texture shader programs - // (don't want to port nvparse as it's a dead-end; we'll focus on Cg instead) - - private void initEqWeightCombine_PostMult(GL gl, int displayListID) { - // Take samples of all four texture inputs and average them, - // adding on a bias - // - // Original register combiner program: - // - // Stage 0 - // rgb - // { - // discard = half_bias(tex0); - // discard = half_bias(tex1); - // spare0 = sum(); - // scale_by_one_half(); - // } - // Stage 1 - // rgb - // { - // discard = half_bias(tex2); - // discard = half_bias(tex3); - // spare1 = sum(); - // scale_by_one_half(); - // } - // Stage 2 - // rgb - // { - // discard = spare0; - // discard = spare1; - // spare0 = sum(); - // scale_by_one_half(); - // } - // Stage 3 - // rgb - // { - // discard = const0; - // discard = spare0; - // spare0 = sum(); - // } - - float[] const0 = new float[] { 0.5f, 0.5f, 0.5f, 1.0f }; - - int[] tmpInt = new int[1]; - gl.glGenProgramsARB(1, tmpInt, 0); - int fragProg = tmpInt[0]; - gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, fragProg); - - String program = -"!!ARBfp1.0\n" + -"PARAM const0 = program.env[0];\n" + -"PARAM oneQtr = { 0.25, 0.25, 0.25, 0.25 };\n" + -"PARAM two = { 2.0, 2.0, 2.0, 2.0 };\n" + -"TEMP texSamp0, texSamp1, texSamp2, texSamp3;\n" + -"TEMP spare0, spare1;\n" + -"\n" + -"TEX texSamp0, fragment.texcoord[0], texture[0], 2D;\n" + -"TEX texSamp1, fragment.texcoord[1], texture[1], 2D;\n" + -"TEX texSamp2, fragment.texcoord[2], texture[2], 2D;\n" + -"TEX texSamp3, fragment.texcoord[3], texture[3], 2D;\n" + -"ADD spare0, texSamp0, texSamp1;\n" + -"ADD spare1, texSamp2, texSamp3;\n" + -"ADD spare0, spare0, spare1;\n" + -"SUB spare0, spare0, two;\n" + -"MAD result.color, oneQtr, spare0, const0;\n" + -"\n" + -"END\n"; - - loadProgram(gl, GL.GL_FRAGMENT_PROGRAM_ARB, program); - - gl.glNewList(displayListID, GL.GL_COMPILE); - gl.glProgramEnvParameter4fvARB(GL.GL_FRAGMENT_PROGRAM_ARB, 0, const0, 0); - gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, fragProg); - gl.glEnable(GL.GL_FRAGMENT_PROGRAM_ARB); - gl.glEndList(); - } - - private void initNeighborForceCalcStep1(GL gl, int displayListID) { - // Step one in the nearest-neighbor force calculation for height-based water - // simulation. NeighborForceCalc2 is the second step. - // - // This step takes the center point and three neighboring points, and computes - // the texel difference as the "force" acting to pull the center texel. - // - // The amount to which the computed force is applied to the texel is controlled - // in a separate shader. - - // get colors from all 4 texture stages - // tex0 = center texel - // tex1 = 1st neighbor - // tex2 = 2nd neighbor - same axis as 1st neighbor point - // so force for that axis == t1 - t0 + t2 - t0 - // tex3 = 3rd neighbor on other axis - - // Original register combiner program: - // - // Stage 0 - // rgb - // { - // //s0 = t1 - t0; - // discard = -tex0; - // discard = tex1; - // spare0 = sum(); - // } - // Stage 1 - // rgb - // { - // //s1 = t2 - t0; - // discard = -tex0; - // discard = tex2; - // spare1 = sum(); - // } - // Stage 2 - // // 'force' for 1st axis - // rgb - // { - // //s0 = s0 + s1 = t1 - t0 + t2 - t0; - // discard = spare0; - // discard = spare1; - // spare0 = sum(); - // } - // Stage 3 - // // one more point for 2nd axis - // rgb - // { - // //s1 = t3 - t0; - // discard = -tex0; - // discard = tex3; - // spare1 = sum(); - // } - // Stage 4 - // rgb - // { - // //s0 = s0 + s1 = t3 - t0 + t2 - t0 + t1 - t0; - // discard = spare0; - // discard = spare1; - // spare0 = sum(); - // } - // Stage 5 - // // Now add in a force to gently pull the center texel's - // // value to 0.5. The strength of this is controlled by - // // the PCN_EQ_REST_FAC - restoration factor - // // Without this, the simulation will fade to zero or fly - // // away to saturate at 1.0 - // rgb - // { - // //s1 = 0.5 - t0; - // discard = -tex0; - // discard = const0; - // spare1 = sum(); - // } - // Stage 6 - // { - // rgb - // { - // discard = spare1 * const0; - // discard = spare0; - // spare0 = sum(); - // } - // } - // Stage 7 - // rgb - // { - // discard = spare0; - // discard = const0; - // spare0 = sum(); - // } - - float[] const0 = new float[] { 0.5f, 0.5f, 0.5f, 1.0f }; - - int[] tmpInt = new int[1]; - gl.glGenProgramsARB(1, tmpInt, 0); - int fragProg = tmpInt[0]; - gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, fragProg); - - String program = -"!!ARBfp1.0\n" + -"PARAM const0 = program.env[0];\n" + -"PARAM three = { 3, 3, 3, 1.0 };\n" + -"TEMP texSamp0, texSamp1, texSamp2, texSamp3;\n" + -"TEMP spare0, spare1;\n" + -"\n" + -"TEX texSamp0, fragment.texcoord[0], texture[0], 2D;\n" + -"TEX texSamp1, fragment.texcoord[1], texture[1], 2D;\n" + -"TEX texSamp2, fragment.texcoord[2], texture[2], 2D;\n" + -"TEX texSamp3, fragment.texcoord[3], texture[3], 2D;\n" + -"ADD spare0, texSamp1, texSamp2;\n" + -"MAD spare1, const0, const0, const0;\n" + -"ADD spare0, texSamp3, spare0;\n" + -"ADD spare0, spare1, spare0;\n" + -"ADD spare1, three, const0;\n" + -"MAD result.color, -spare1, texSamp0, spare0;\n" + - -// Faster version which hardcodes in value of const0: -//"ADD spare0, texSamp1, texSamp2;\n" + -//"ADD spare1, texSamp3, pointSevenFive;\n" + -//"ADD spare0, spare0, spare1;\n" + -//"MAD result.color, minusThreePointFive, texSamp0, spare0;\n" + - -// Straightforward port: -//"SUB spare0, texSamp1, texSamp0;\n" + -//"SUB spare1, texSamp2, texSamp0;\n" + -//"ADD spare0, spare0, spare1;\n" + -//"SUB spare1, texSamp3, texSamp0;\n" + -//"ADD spare0, spare0, spare1;\n" + -//"SUB spare1, const0, texSamp0;\n" + -//"MAD spare0, const0, spare1, spare0;\n" + -//"ADD result.color, spare0, const0;\n" + - -"\n" + -"END\n"; - - loadProgram(gl, GL.GL_FRAGMENT_PROGRAM_ARB, program); - - gl.glNewList(displayListID, GL.GL_COMPILE); - gl.glProgramEnvParameter4fvARB(GL.GL_FRAGMENT_PROGRAM_ARB, 0, const0, 0); - gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, fragProg); - gl.glEnable(GL.GL_FRAGMENT_PROGRAM_ARB); - gl.glEndList(); - } - - private void initNeighborForceCalcStep2(GL gl, int displayListID) { - // 2nd step of force calc for render-to-texture - // water simulation. - // - // Adds the 4th & final neighbor point to the - // force calc.. - // - // Bias and scale the values so 0 force is 0.5, - // full negative force is 0.0, and full pos is - // 1.0 - // - // tex0 Center texel - // tex1 2nd axis neighbor point - // tex2 previous partial force amount - // Result from t1 - t0 is added to this t2 - // partial result & output - - // Original register combiner program: - // - // Stage 0 - // last element of neighbor force - // rgb - // { - // discard = -tex0; - // discard = tex1; - // spare0 = sum(); - // } - // Stage 1 - // add with previous partial force amount - // rgb - // { - // discard = spare0; - // discard = tex2; - // spare0 = sum(); - // } - - int[] tmpInt = new int[1]; - gl.glGenProgramsARB(1, tmpInt, 0); - int fragProg = tmpInt[0]; - gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, fragProg); - - String program = -"!!ARBfp1.0\n" + -"PARAM const0 = program.env[0];\n" + -"TEMP texSamp0, texSamp1, texSamp2;\n" + -"TEMP spare0;\n" + -"\n" + -"TEX texSamp0, fragment.texcoord[0], texture[0], 2D;\n" + -"TEX texSamp1, fragment.texcoord[1], texture[1], 2D;\n" + -"TEX texSamp2, fragment.texcoord[2], texture[2], 2D;\n" + -"SUB spare0, texSamp1, texSamp0;\n" + -"ADD result.color, spare0, texSamp2;\n" + -"\n" + -"END\n"; - - loadProgram(gl, GL.GL_FRAGMENT_PROGRAM_ARB, program); - - gl.glNewList(displayListID, GL.GL_COMPILE); - gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, fragProg); - gl.glEnable(GL.GL_FRAGMENT_PROGRAM_ARB); - gl.glEndList(); - } - - private void initApplyForce(GL gl, int displayListID) { - // This shader samples t1, biases its value to a signed number, and applies this - // value multiplied by a scale factor to the t0 sample. - // - // This is used to apply a "force" texture value to a "velocity" state texture - // for nearest-neighbor height-based water simulations. The output pixel is - // the new "velocity" value to replace the t0 sample in rendering to a new - // texture which will replace the texture selected into t0. - // - // A nearly identical shader using a different scaling constant is used to - // apply the "velocity" value to a "height" texture at each texel. - // - // t1 comes in the range [0,1] but needs to hold signed values, so a value of - // 0.5 in t1 represents zero force. This is biased to a signed value in - // computing the new velocity. - // - // tex0 = previous velocity - // tex1 = force - // - // Bias the force so that 0.5 input = no change in t0 value - // and 0.0 input means -0.5 * scale change in t0 value - // - // New velocity = force * scale + previous velocity - - // Original register combiner program: - // - // Stage 0 - // rgb - // { - // discard = expand(tex1) * const0; - // discard = expand(tex0); - // spare0 = sum(); - // scale_by_one_half(); - // } - // Stage 1 - // rgb - // { - // discard = spare0; - // discard = const1; - // spare0 = sum(); - // } - - float[] const0 = new float[] { 0.25f, 0.25f, 0.25f, 1.0f }; - float[] const1 = new float[] { 0.5f, 0.5f, 0.5f, 1.0f }; - - int[] tmpInt = new int[1]; - gl.glGenProgramsARB(1, tmpInt, 0); - int fragProg = tmpInt[0]; - gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, fragProg); - - String program = -"!!ARBfp1.0\n" + -"PARAM const0 = program.env[0];\n" + -"PARAM const1 = program.env[1];\n" + -"PARAM one = { 1.0, 1.0, 1.0, 0.0 };\n" + -"PARAM oneHalf = { 0.5, 0.5, 0.5, 1.0 };\n" + -"PARAM two = { 2.0, 2.0, 2.0, 1.0 };\n" + -"TEMP texSamp0, texSamp1;\n" + -"TEMP spare0, spare1;\n" + -"\n" + -"TEX texSamp0, fragment.texcoord[0], texture[0], 2D;\n" + -"TEX texSamp1, fragment.texcoord[1], texture[1], 2D;\n" + -"MAD spare0, two, texSamp1, -one;\n" + -"MAD spare1, two, texSamp0, -one;\n" + -"MAD spare0, spare0, const0, spare1;\n" + -"MAD result.color, oneHalf, spare0, const1;\n" + -"\n" + -"END\n"; - - loadProgram(gl, GL.GL_FRAGMENT_PROGRAM_ARB, program); - - gl.glNewList(displayListID, GL.GL_COMPILE); - gl.glProgramEnvParameter4fvARB(GL.GL_FRAGMENT_PROGRAM_ARB, 0, const0, 0); - gl.glProgramEnvParameter4fvARB(GL.GL_FRAGMENT_PROGRAM_ARB, 1, const1, 0); - gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, fragProg); - gl.glEnable(GL.GL_FRAGMENT_PROGRAM_ARB); - gl.glEndList(); - } - - private void initApplyVelocity(GL gl, int displayListID) { - // This shader samples t1, biases its value to a signed number, and applies this - // value multiplied by a scale factor to the t0 sample. - // - // This is used to apply a "velocity" texture value to a "height" state texture - // for nearest-neighbor height-based water simulations. The output pixel is - // the new "height" value to replace the t0 sample in rendering to a new - // texture which will replace the texture selected into t0. - // - // A nearly identical shader using a different scaling constant is used to - // apply the "force" value to the "velocity" texture at each texel. - // - // t1 comes in the range [0,1] but needs to hold signed values, so a value of - // 0.5 in t1 represents zero velocity. This is biased to a signed value in - // computing the new position. - // - // tex0 = height field - // tex1 = velocity - // - // Bias the force/velocity to a signed value so we can subtract from - // the t0 position sample. - // - // New height = velocity * scale factor + old height - - // Original register combiner program: - // - // Stage 0 - // rgb - // { - // discard = expand(tex1) * const0; - // discard = expand(tex0); - // spare0 = sum(); - // scale_by_one_half(); - // } - // Stage 1 - // rgb - // { - // discard = spare0; - // discard = const0; - // spare0 = sum(); - // } - // } - - float[] const0 = new float[] { 0.5f, 0.5f, 0.5f, 1.0f }; - - int[] tmpInt = new int[1]; - gl.glGenProgramsARB(1, tmpInt, 0); - int fragProg = tmpInt[0]; - gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, fragProg); - - String program = -"!!ARBfp1.0\n" + -"PARAM const0 = program.env[0];\n" + -"PARAM one = { 1.0, 1.0, 1.0, 0.0 };\n" + -"PARAM oneHalf = { 0.5, 0.5, 0.5, 1.0 };\n" + -"PARAM two = { 2.0, 2.0, 2.0, 1.0 };\n" + -"TEMP texSamp0, texSamp1;\n" + -"TEMP spare0, spare1;\n" + -"\n" + -"TEX texSamp0, fragment.texcoord[0], texture[0], 2D;\n" + -"TEX texSamp1, fragment.texcoord[1], texture[1], 2D;\n" + -"MAD spare0, two, texSamp1, -one;\n" + -"MAD spare1, two, texSamp0, -one;\n" + -"MAD spare0, spare0, const0, spare1;\n" + -"MAD result.color, oneHalf, spare0, const0;\n" + -"\n" + -"END\n"; - - loadProgram(gl, GL.GL_FRAGMENT_PROGRAM_ARB, program); - - gl.glNewList(displayListID, GL.GL_COMPILE); - gl.glProgramEnvParameter4fvARB(GL.GL_FRAGMENT_PROGRAM_ARB, 0, const0, 0); - gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, fragProg); - gl.glEnable(GL.GL_FRAGMENT_PROGRAM_ARB); - gl.glEndList(); - } - - private void initCreateNormalMap(GL gl, int displayListID) { - // Neighbor-differencing for RGB normal map creation. Scale factors for s and t - // axis components are set in program code. - // This does a crude 1-s^2-t^2 calculation for the blue component in order to - // approximately normalize the RGB normal map vector. For s^2+t^2 close to 1.0, - // this is a close approximation to blue = sqrt(1 - s^2 - t^2) which would give a - // normalized vector. - // An additional pass with a dependent texture lookup (alpha-red or green-blue) - // could be used to produce an exactly normalized normal. - - // colors from all 4 texture stages - // tex0 = -s, 0 - // tex1 = +s, 0 - // tex2 = 0, +t - // tex3 = 0, -t - - // Original register combiner program: - // - // Stage 0 - // rgb - // { - // // (t0 - t1)*4 : 4 for higher scale - // discard = -tex1; - // discard = tex0; - // spare0 = sum(); - // scale_by_four(); - // } - // Stage 1 - // rgb - // { - // // (t3 - t2)*4 : 4 for higher scale - // discard = -tex2; - // discard = tex3; - // spare1 = sum(); - // scale_by_four(); - // } - // Stage 2 - // Define const0 in the third general combiner as RGBA = (scale, 0, 0, 0) - // Where scale [0,1] is applied to reduce the magnitude - // of the s axis component of the normal. - // Define const1 in the third combiner similarly to affect the t axis component - // define these by "ramboing" them in the C++ code that uses this combiner script. - // Note: these variables have been renamed to "redMask" and "greenMask" in - // the fragment program below. - // rgb - // { - // // see comment about consts above! - // // t0 = s result in red only - // discard = spare0 * const0; - // discard = spare1 * const1; - // spare0 = sum(); - // } - // Stage 3 - // rgb - // { - // tex1 = spare0 * spare0; - // scale_by_two(); - // } - // Stage 4 - // const0 = (1, 1, 0, 0); - // rgb - // { - // spare1 = unsigned_invert(tex1) . const0; - // scale_by_one_half(); - // } - // Stage 5 - // const0 = (0.5, 0.5, 0, 0); - // rgb - // { - // discard = spare0; - // discard = const0; - // spare0 = sum(); - // } - // Stage 6 - // const0 = (0, 0, 1, 1); - // rgb - // { - // discard = spare1 * const0; - // discard = spare0; - // spare0 = sum(); - // } - - - float[] const0 = new float[] { 0.5f, 0.5f, 0.5f, 1.0f }; - - int[] tmpInt = new int[1]; - gl.glGenProgramsARB(1, tmpInt, 0); - int fragProg = tmpInt[0]; - gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, fragProg); - - String program = -"!!ARBfp1.0\n" + -"PARAM redMask = program.env[0];\n" + -"PARAM greenMask = program.env[1];\n" + -"PARAM const0 = { 1.0, 1.0, 0.0, 0.0 };\n" + -"PARAM const1 = { 0.5, 0.5, 0.0, 0.0 };\n" + -"PARAM const2 = { 0.0, 0.0, 1.0, 1.0 };\n" + -"PARAM one = { 1.0, 1.0, 1.0, 0.0 };\n" + -"PARAM oneHalf = { 0.5, 0.5, 0.5, 1.0 };\n" + -"PARAM two = { 2.0, 2.0, 2.0, 1.0 };\n" + -"PARAM four = { 4.0, 4.0, 4.0, 1.0 };\n" + -"TEMP texSamp0, texSamp1, texSamp2, texSamp3;\n" + -"TEMP spare0, spare1, spare2;\n" + -"\n" + -"TEX texSamp0, fragment.texcoord[0], texture[0], 2D;\n" + -"TEX texSamp1, fragment.texcoord[1], texture[1], 2D;\n" + -"TEX texSamp2, fragment.texcoord[2], texture[2], 2D;\n" + -"TEX texSamp3, fragment.texcoord[3], texture[3], 2D;\n" + -"SUB spare0, texSamp0, texSamp1;\n" + -"MUL spare0, spare0, four;\n" + -"SUB spare1, texSamp3, texSamp2;\n" + -"MUL spare1, spare1, four;\n" + -"MUL spare0, spare0, redMask;\n" + -"MAD spare0, greenMask, spare1, spare0;\n" + -"MUL_SAT spare2, spare0, spare0;\n" + -"SUB spare2, one, spare2;\n" + -"DP3 spare1, spare2, const0;\n" + -"ADD spare0, spare0, const1;\n" + -"MAD result.color, const2, spare1, spare0;\n" + -"\n" + -"END\n"; - - loadProgram(gl, GL.GL_FRAGMENT_PROGRAM_ARB, program); - - gl.glNewList(displayListID, GL.GL_COMPILE); - gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, fragProg); - gl.glEnable(GL.GL_FRAGMENT_PROGRAM_ARB); - gl.glEndList(); - } - - private void initDotProductReflect(GL gl, int displayListID) { - // Pseudocode for this operation, derived from the NVidia - // texture_shader.txt documentation at - // http://oss.sgi.com/projects/ogl-sample/registry/NV/texture_shader.txt - - // TEX texSamp0, fragment.texcoord[0], texture[0], 2D; - // MAD texSamp0, two, texSamp0, minusOne; - // TEMP dotPP = texSamp0 . texcoord[1]; - // TEMP dotP = texSamp0 . texcoord[2]; - // TEMP dotC = texSamp0 . texcoord[3]; - // TEMP R, N, E; - // N = [dotPP, dotP, dotC]; - // ooNLength = N dot N; - // RCP ooNLength, ooNLength; - // E = [texcoord[1].w, texcoord[2].w, texcoord[3].w]; - // nDotE = N dot E; - // MUL R, nDotE, N; - // MUL R, R, two; - // MUL R, R, ooNLength; - // SUB R, R, E; - // TEX result.color, R, texture[3], CUBE; - - // This fragment program is pretty length-sensitive; making it too - // big causes the frame rate to be cut in half on my machine - // (Quadro FX Go700) due to sync-to-vertical-refresh. The program - // below is more optimized in its use of temporaries. Some of the - // scaling operations on the first component of the normal vector - // (before subtracting off the E vector) don't appear to make much - // of a visual difference so they are skipped as well. - - int[] tmpInt = new int[1]; - gl.glGenProgramsARB(1, tmpInt, 0); - int fragProg = tmpInt[0]; - gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, fragProg); - - String program = -"!!ARBfp1.0\n" + -"PARAM minusOne = { -1.0, -1.0, -1.0, 0.0 };\n" + -"PARAM two = { 2.0, 2.0, 2.0, 0.0 };\n" + -"TEMP texSamp0, R, N, E;\n" + -"\n" + -"TEX texSamp0, fragment.texcoord[0], texture[0], 2D;\n" + -"MAD texSamp0, two, texSamp0, minusOne;\n" + -"DP3 N.x, texSamp0, fragment.texcoord[1];\n" + -"DP3 N.y, texSamp0, fragment.texcoord[2];\n" + -"DP3 N.z, texSamp0, fragment.texcoord[3];\n" + -"MOV E.x, fragment.texcoord[1].w;\n" + -"MOV E.y, fragment.texcoord[2].w;\n" + -"MOV E.z, fragment.texcoord[3].w;\n" + -"MUL N, N, two;\n" + -"SUB R, N, E;\n" + -"TEX result.color, R, texture[3], CUBE;\n" + -"\n" + -"END"; - - loadProgram(gl, GL.GL_FRAGMENT_PROGRAM_ARB, program); - - gl.glNewList(displayListID, GL.GL_COMPILE); - gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, fragProg); - gl.glEnable(GL.GL_FRAGMENT_PROGRAM_ARB); - gl.glEndList(); - } - - private void loadProgram(GL gl, - int target, - String programBuffer) { - gl.glProgramStringARB(target, GL.GL_PROGRAM_FORMAT_ASCII_ARB, programBuffer.length(), programBuffer); - int[] errPos = new int[1]; - gl.glGetIntegerv(GL.GL_PROGRAM_ERROR_POSITION_ARB, errPos, 0); - if (errPos[0] >= 0) { - String kind = "Program"; - if (target == GL.GL_VERTEX_PROGRAM_ARB) { - kind = "Vertex program"; - } else if (target == GL.GL_FRAGMENT_PROGRAM_ARB) { - kind = "Fragment program"; - } - System.out.println(kind + " failed to load:"); - String errMsg = gl.glGetString(GL.GL_PROGRAM_ERROR_STRING_ARB); - if (errMsg == null) { - System.out.println("[No error message available]"); - } else { - System.out.println("Error message: \"" + errMsg + "\""); - } - System.out.println("Error occurred at position " + errPos[0] + " in program:"); - int endPos = errPos[0]; - while (endPos < programBuffer.length() && programBuffer.charAt(endPos) != '\n') { - ++endPos; - } - System.out.println(programBuffer.substring(errPos[0], endPos)); - throw new GLException("Error loading " + kind); - } else { - if (target == GL.GL_FRAGMENT_PROGRAM_ARB) { - int[] isNative = new int[1]; - gl.glGetProgramivARB(GL.GL_FRAGMENT_PROGRAM_ARB, - GL.GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB, - isNative, 0); - if (isNative[0] != 1) { - System.out.println("WARNING: fragment program is over native resource limits"); - Thread.dumpStack(); - } - } - } - } -} diff --git a/src/demos/tess/Tess.java b/src/demos/tess/Tess.java deleted file mode 100644 index 555214f..0000000 --- a/src/demos/tess/Tess.java +++ /dev/null @@ -1,243 +0,0 @@ -/* - * Portions Copyright (C) 2003 Sun Microsystems, Inc. - * All rights reserved. - */ - -/* - * Copyright (c) 1993-1999, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -package demos.tess; - -/** - * tess.java - * This program demonstrates polygon tessellation. - * Two tesselated objects are drawn. The first is a - * rectangle with a triangular hole. The second is a - * smooth shaded, self-intersecting star. - * - * Note the exterior rectangle is drawn with its vertices - * in counter-clockwise order, but its interior clockwise. - * Note the combineCallback is needed for the self-intersecting - * star. Also note that removing the TessProperty for the - * star will make the interior unshaded (WINDING_ODD). - * - * @author Ported by Nathan Parker Burg, July 2003 - */ - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; - -import java.awt.*; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; - -public class Tess { - public static void main(String[] args) { - try { - Frame frame = new Frame("Tess Demo"); - frame.setSize(500, 500); - - GLCanvas canvas = new GLCanvas(); - frame.add(canvas); - canvas.addGLEventListener(new TessRenderer()); - - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - // Run this on another thread than the AWT event queue to - // avoid deadlocks on shutdown on some platforms - new Thread(new Runnable() { - public void run() { - System.exit(0); - } - }).start(); - } - }); - frame.show(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public static class TessRenderer implements GLEventListener { - private GL gl; - private GLU glu = new GLU(); - private int startList; - - public void init(GLAutoDrawable drawable) { - drawable.setGL(new DebugGL(drawable.getGL())); - - gl = drawable.getGL(); - - double[][] rect = new double[][]{{50.0, 50.0, 0.0}, - {200.0, 50.0, 0.0}, - {200.0, 200.0, 0.0}, - {50.0, 200.0, 0.0}}; - double[][] tri = new double[][]{{75.0, 75.0, 0.0}, - {125.0, 175.0, 0.0}, - {175.0, 75.0, 0.0}}; - double[][] star = new double[][]{{250.0, 50.0, 0.0, 1.0, 0.0, 1.0}, - {325.0, 200.0, 0.0, 1.0, 1.0, 0.0}, - {400.0, 50.0, 0.0, 0.0, 1.0, 1.0}, - {250.0, 150.0, 0.0, 1.0, 0.0, 0.0}, - {400.0, 150.0, 0.0, 0.0, 1.0, 0.0}}; - - gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - - startList = gl.glGenLists(2); - GLUtessellator tobj = glu.gluNewTess(); - - TessCallback tessCallback = new TessCallback(gl, glu); - - glu.gluTessCallback(tobj, GLU.GLU_TESS_VERTEX, tessCallback); - glu.gluTessCallback(tobj, GLU.GLU_TESS_BEGIN, tessCallback); - glu.gluTessCallback(tobj, GLU.GLU_TESS_END, tessCallback); - glu.gluTessCallback(tobj, GLU.GLU_TESS_ERROR, tessCallback); - - gl.glNewList(startList, GL.GL_COMPILE); - gl.glShadeModel(GL.GL_FLAT); - glu.gluTessBeginPolygon(tobj, null); - glu.gluTessBeginContour(tobj); - glu.gluTessVertex(tobj, rect[0], 0, rect[0]); - glu.gluTessVertex(tobj, rect[1], 0, rect[1]); - glu.gluTessVertex(tobj, rect[2], 0, rect[2]); - glu.gluTessVertex(tobj, rect[3], 0, rect[3]); - glu.gluTessEndContour(tobj); - glu.gluTessBeginContour(tobj); - glu.gluTessVertex(tobj, tri[0], 0, tri[0]); - glu.gluTessVertex(tobj, tri[1], 0, tri[1]); - glu.gluTessVertex(tobj, tri[2], 0, tri[2]); - glu.gluTessEndContour(tobj); - glu.gluTessEndPolygon(tobj); - gl.glEndList(); - - glu.gluTessCallback(tobj, GLU.GLU_TESS_VERTEX, tessCallback); - glu.gluTessCallback(tobj, GLU.GLU_TESS_BEGIN, tessCallback); - glu.gluTessCallback(tobj, GLU.GLU_TESS_END, tessCallback); - glu.gluTessCallback(tobj, GLU.GLU_TESS_ERROR, tessCallback); - glu.gluTessCallback(tobj, GLU.GLU_TESS_COMBINE, tessCallback); - - gl.glNewList(startList + 1, GL.GL_COMPILE); - gl.glShadeModel(GL.GL_SMOOTH); - glu.gluTessProperty(tobj, GLU.GLU_TESS_WINDING_RULE, GLU.GLU_TESS_WINDING_POSITIVE); - glu.gluTessBeginPolygon(tobj, null); - glu.gluTessBeginContour(tobj); - glu.gluTessVertex(tobj, star[0], 0, star[0]); - glu.gluTessVertex(tobj, star[1], 0, star[1]); - glu.gluTessVertex(tobj, star[2], 0, star[2]); - glu.gluTessVertex(tobj, star[3], 0, star[3]); - glu.gluTessVertex(tobj, star[4], 0, star[4]); - glu.gluTessEndContour(tobj); - glu.gluTessEndPolygon(tobj); - gl.glEndList(); - glu.gluDeleteTess(tobj); - }//end init - - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - gl.glOrtho( 0, 450, 0, 250, -1, 1 ); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - } - - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) { - } - - public void display(GLAutoDrawable drawable) { - gl.glClear(GL.GL_COLOR_BUFFER_BIT); - gl.glColor3d(1.0, 1.0, 1.0); - gl.glCallList(startList); - gl.glCallList(startList + 1); - - gl.glFlush(); - } - }//end TessRenderer - - - public static class TessCallback extends javax.media.opengl.glu.GLUtessellatorCallbackAdapter { - GL gl; - GLU glu; - - public TessCallback(GL gl, GLU glu) { - this.gl = gl; - this.glu = glu; - }; - public void begin(int type) { - gl.glBegin(type); - } - - public void end() { - gl.glEnd(); - } - - public void vertex(Object data) { - if (data instanceof double[]) { - double[] d = (double[]) data; - if (d.length == 6) { - gl.glColor3dv(d, 3); - } - gl.glVertex3dv(d, 0); - } - } - - public void error(int errnum) { - String estring; - estring = glu.gluErrorString(errnum); - System.out.println("Tessellation Error: " + estring); - //System.exit(0); - throw new RuntimeException(); - } - - public void combine(double[] coords, Object[] data, - float[] weight, Object[] outData) { - double[] vertex = new double[6]; - - int i; - vertex[0] = coords[0]; - vertex[1] = coords[1]; - vertex[2] = coords[2]; - for (i = 3; i < 6; i++) - vertex[i] = weight[0] * ((double[]) data[0])[i] + - weight[1] * ((double[]) data[1])[i] + - weight[2] * ((double[]) data[2])[i] + - weight[3] * ((double[]) data[3])[i]; - outData[0] = vertex; - } - }//End TessCallback -}//End Tess diff --git a/src/demos/testContextDestruction/TestContextDestruction.java b/src/demos/testContextDestruction/TestContextDestruction.java deleted file mode 100755 index 1355d11..0000000 --- a/src/demos/testContextDestruction/TestContextDestruction.java +++ /dev/null @@ -1,362 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.testContextDestruction; - -import java.awt.*; -import java.awt.event.*; -import java.util.*; -import javax.swing.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; - -/** A simple demonstration exercising context creation and destruction - as a GLCanvas is added to and removed from its parent container. */ - -public class TestContextDestruction { - private int gearDisplayList; - private Frame frame1, frame2; - private Component frame1ContainedComponent; - private Component frame1RemovedComponent; - private Component frame2ContainedComponent; - private Component frame2RemovedComponent; - private GLCanvas canvas; - private Canvas emptyCanvas; - private boolean frame1IsTarget = true; - private float angle = 0.0f; - private static final int BORDER_WIDTH = 6; - - public static void main(String[] args) { - new TestContextDestruction().run(args); - } - - public void run(String[] args) { - GLCanvas canvas = new GLCanvas(); - canvas.addGLEventListener(new Listener()); - canvas.setSize(256, 256); - - frame1 = new Frame("Frame 1"); - frame1.setLayout(new BorderLayout()); - frame1.add(canvas, BorderLayout.CENTER); - - emptyCanvas = new Canvas(); - emptyCanvas.setBackground(Color.GRAY); - emptyCanvas.setSize(256, 256); - - frame2 = new Frame("Frame 2"); - frame2.setLayout(new BorderLayout()); - frame2.add(emptyCanvas, BorderLayout.CENTER); - - frame1ContainedComponent = canvas; - frame2ContainedComponent = emptyCanvas; - - frame1.pack(); - frame1.show(); - frame2.pack(); - frame2.show(); - frame2.setLocation(256 + BORDER_WIDTH, 0); - - JFrame uiFrame = new JFrame("Controls"); - uiFrame.getContentPane().setLayout(new GridLayout(3, 1)); - JButton button = new JButton("Toggle Frame 1's component"); - button.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - if (frame1ContainedComponent == null) { - frame1ContainedComponent = frame1RemovedComponent; - frame1RemovedComponent = null; - frame1.add(frame1ContainedComponent); - } else { - frame1RemovedComponent = frame1ContainedComponent; - frame1ContainedComponent = null; - frame1.remove(frame1RemovedComponent); - } - } - }); - uiFrame.getContentPane().add(button); - button = new JButton("Swap Frame 1's and Frame 2's components"); - button.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - System.out.println("Swapping Frame 1's and Frame 2's components"); - Component t1 = null, t2 = null; - t1 = frame1ContainedComponent; - t2 = frame2ContainedComponent; - if (t1 != null) { - frame1.remove(t1); - } - if (t2 != null) { - frame2.remove(t2); - } - if (t1 != null) { - frame2.add(t1); - } - if (t2 != null) { - frame1.add(t2); - } - frame1ContainedComponent = t2; - frame2ContainedComponent = t1; - t1 = frame1RemovedComponent; - frame1RemovedComponent = frame2RemovedComponent; - frame2RemovedComponent = t1; - } - }); - uiFrame.getContentPane().add(button); - button = new JButton("Toggle Frame 2's component"); - button.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - if (frame2ContainedComponent == null) { - frame2ContainedComponent = frame2RemovedComponent; - frame2RemovedComponent = null; - frame2.add(frame2ContainedComponent); - } else { - frame2RemovedComponent = frame2ContainedComponent; - frame2ContainedComponent = null; - frame2.remove(frame2RemovedComponent); - } - } - }); - uiFrame.getContentPane().add(button); - uiFrame.pack(); - uiFrame.show(); - uiFrame.setLocation(512 + BORDER_WIDTH + BORDER_WIDTH, 0); - - final Animator animator = new Animator(canvas); - WindowListener windowListener = new WindowAdapter() { - public void windowClosing(WindowEvent e) { - // Run this on another thread than the AWT event queue to - // make sure the call to Animator.stop() completes before - // exiting - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } - }; - frame1.addWindowListener(windowListener); - frame2.addWindowListener(windowListener); - uiFrame.addWindowListener(windowListener); - animator.start(); - } - - class Listener implements GLEventListener { - public void init(GLAutoDrawable drawable) { - System.out.println("Listener.init()"); - drawable.setGL(new DebugGL(drawable.getGL())); - - GL gl = drawable.getGL(); - - float pos[] = { 5.0f, 5.0f, 10.0f, 0.0f }; - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, pos, 0); - gl.glEnable(GL.GL_CULL_FACE); - gl.glEnable(GL.GL_LIGHTING); - gl.glEnable(GL.GL_LIGHT0); - gl.glEnable(GL.GL_DEPTH_TEST); - - initializeDisplayList(gl); - - gl.glEnable(GL.GL_NORMALIZE); - - reshape(drawable, 0, 0, drawable.getWidth(), drawable.getHeight()); - } - - public void display(GLAutoDrawable drawable) { - angle += 2.0f; - - GL gl = drawable.getGL(); - - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - gl.glPushMatrix(); - gl.glRotatef(angle, 0.0f, 0.0f, 1.0f); - gl.glCallList(gearDisplayList); - gl.glPopMatrix(); - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { - System.out.println("Listener.reshape()"); - GL gl = drawable.getGL(); - - float h = (float)height / (float)width; - - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - gl.glFrustum(-1.0f, 1.0f, -h, h, 5.0f, 60.0f); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - gl.glTranslatef(0.0f, 0.0f, -40.0f); - } - - public void destroy(GLAutoDrawable drawable) { - System.out.println("Listener.destroy()"); - GL gl = drawable.getGL(); - gl.glDeleteLists(gearDisplayList, 1); - gearDisplayList = 0; - } - - // Unused routines - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - } - - private synchronized void initializeDisplayList(GL gl) { - gearDisplayList = gl.glGenLists(1); - gl.glNewList(gearDisplayList, GL.GL_COMPILE); - float red[] = { 0.8f, 0.1f, 0.0f, 1.0f }; - gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE, red, 0); - gear(gl, 1.0f, 4.0f, 1.0f, 20, 0.7f); - gl.glEndList(); - } - - private void gear(GL gl, - float inner_radius, - float outer_radius, - float width, - int teeth, - float tooth_depth) - { - int i; - float r0, r1, r2; - float angle, da; - float u, v, len; - - r0 = inner_radius; - r1 = outer_radius - tooth_depth / 2.0f; - r2 = outer_radius + tooth_depth / 2.0f; - - da = 2.0f * (float) Math.PI / teeth / 4.0f; - - gl.glShadeModel(GL.GL_FLAT); - - gl.glNormal3f(0.0f, 0.0f, 1.0f); - - /* draw front face */ - gl.glBegin(GL.GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) - { - angle = i * 2.0f * (float) Math.PI / teeth; - gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), width * 0.5f); - if(i < teeth) - { - gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle + 3.0f * da), r1 * (float)Math.sin(angle + 3.0f * da), width * 0.5f); - } - } - gl.glEnd(); - - /* draw front sides of teeth */ - gl.glBegin(GL.GL_QUADS); - for (i = 0; i < teeth; i++) - { - angle = i * 2.0f * (float) Math.PI / teeth; - gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), width * 0.5f); - gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), width * 0.5f); - gl.glVertex3f(r2 * (float)Math.cos(angle + 2.0f * da), r2 * (float)Math.sin(angle + 2.0f * da), width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle + 3.0f * da), r1 * (float)Math.sin(angle + 3.0f * da), width * 0.5f); - } - gl.glEnd(); - - /* draw back face */ - gl.glBegin(GL.GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) - { - angle = i * 2.0f * (float) Math.PI / teeth; - gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), -width * 0.5f); - gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), -width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), -width * 0.5f); - gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), -width * 0.5f); - } - gl.glEnd(); - - /* draw back sides of teeth */ - gl.glBegin(GL.GL_QUADS); - for (i = 0; i < teeth; i++) - { - angle = i * 2.0f * (float) Math.PI / teeth; - gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), -width * 0.5f); - gl.glVertex3f(r2 * (float)Math.cos(angle + 2 * da), r2 * (float)Math.sin(angle + 2 * da), -width * 0.5f); - gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), -width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), -width * 0.5f); - } - gl.glEnd(); - - /* draw outward faces of teeth */ - gl.glBegin(GL.GL_QUAD_STRIP); - for (i = 0; i < teeth; i++) - { - angle = i * 2.0f * (float) Math.PI / teeth; - gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), -width * 0.5f); - u = r2 * (float)Math.cos(angle + da) - r1 * (float)Math.cos(angle); - v = r2 * (float)Math.sin(angle + da) - r1 * (float)Math.sin(angle); - len = (float)Math.sqrt(u * u + v * v); - u /= len; - v /= len; - gl.glNormal3f(v, -u, 0.0f); - gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), width * 0.5f); - gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), -width * 0.5f); - gl.glNormal3f((float)Math.cos(angle), (float)Math.sin(angle), 0.0f); - gl.glVertex3f(r2 * (float)Math.cos(angle + 2 * da), r2 * (float)Math.sin(angle + 2 * da), width * 0.5f); - gl.glVertex3f(r2 * (float)Math.cos(angle + 2 * da), r2 * (float)Math.sin(angle + 2 * da), -width * 0.5f); - u = r1 * (float)Math.cos(angle + 3 * da) - r2 * (float)Math.cos(angle + 2 * da); - v = r1 * (float)Math.sin(angle + 3 * da) - r2 * (float)Math.sin(angle + 2 * da); - gl.glNormal3f(v, -u, 0.0f); - gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), -width * 0.5f); - gl.glNormal3f((float)Math.cos(angle), (float)Math.sin(angle), 0.0f); - } - gl.glVertex3f(r1 * (float)Math.cos(0), r1 * (float)Math.sin(0), width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(0), r1 * (float)Math.sin(0), -width * 0.5f); - gl.glEnd(); - - gl.glShadeModel(GL.GL_SMOOTH); - - /* draw inside radius cylinder */ - gl.glBegin(GL.GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) - { - angle = i * 2.0f * (float) Math.PI / teeth; - gl.glNormal3f(-(float)Math.cos(angle), -(float)Math.sin(angle), 0.0f); - gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), -width * 0.5f); - gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), width * 0.5f); - } - gl.glEnd(); - } -} diff --git a/src/demos/testContextSharing/TestContextSharing.java b/src/demos/testContextSharing/TestContextSharing.java deleted file mode 100644 index d0be0c1..0000000 --- a/src/demos/testContextSharing/TestContextSharing.java +++ /dev/null @@ -1,270 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.testContextSharing; - -import java.awt.*; -import java.util.*; - -import javax.media.opengl.*; - -/** A simple demonstration of sharing of display lists between drawables. */ - -public class TestContextSharing { - private int gearDisplayList; - private Frame delayedFrame; - - public static void main(String[] args) { - new TestContextSharing().run(args); - } - - public void run(String[] args) { - GLCanvas canvas1 = new GLCanvas(); - canvas1.addGLEventListener(new Listener()); - canvas1.setSize(256, 256); - Frame frame1 = new Frame("Canvas 1"); - frame1.setLayout(new BorderLayout()); - frame1.add(canvas1, BorderLayout.CENTER); - - GLCanvas canvas2 = new GLCanvas(null, null, canvas1.getContext(), null); - canvas2.addGLEventListener(new Listener()); - canvas2.setSize(256, 256); - Frame frame2 = new Frame("Canvas 2"); - frame2.setLayout(new BorderLayout()); - frame2.add(canvas2, BorderLayout.CENTER); - - Random random = new Random(System.currentTimeMillis()); - Frame frame; - if (random.nextBoolean()) { - frame = frame1; - delayedFrame = frame2; - } else { - frame = frame2; - delayedFrame = frame1; - } - System.err.println("Showing first frame"); - frame.pack(); - frame.show(); - new Thread(new Runnable() { - public void run() { - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - } - System.err.println("Showing other frame"); - delayedFrame.pack(); - delayedFrame.show(); - delayedFrame.setLocation(256, 0); - } - }).start(); - } - - class Listener implements GLEventListener { - public void init(GLAutoDrawable drawable) { - drawable.setGL(new DebugGL(drawable.getGL())); - - GL gl = drawable.getGL(); - - float pos[] = { 5.0f, 5.0f, 10.0f, 0.0f }; - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, pos, 0); - gl.glEnable(GL.GL_CULL_FACE); - gl.glEnable(GL.GL_LIGHTING); - gl.glEnable(GL.GL_LIGHT0); - gl.glEnable(GL.GL_DEPTH_TEST); - - initializeDisplayList(gl); - - gl.glEnable(GL.GL_NORMALIZE); - } - - public void display(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - System.err.println("Drawing display list " + gearDisplayList); - gl.glCallList(gearDisplayList); - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { - GL gl = drawable.getGL(); - - float h = (float)height / (float)width; - - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - gl.glFrustum(-1.0f, 1.0f, -h, h, 5.0f, 60.0f); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - gl.glTranslatef(0.0f, 0.0f, -40.0f); - } - - // Unused routines - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - } - - private synchronized void initializeDisplayList(GL gl) { - if (gearDisplayList != 0) { - return; - } - - gearDisplayList = gl.glGenLists(1); - gl.glNewList(gearDisplayList, GL.GL_COMPILE); - float red[] = { 0.8f, 0.1f, 0.0f, 1.0f }; - gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE, red, 0); - gear(gl, 1.0f, 4.0f, 1.0f, 20, 0.7f); - gl.glEndList(); - } - - private void gear(GL gl, - float inner_radius, - float outer_radius, - float width, - int teeth, - float tooth_depth) - { - int i; - float r0, r1, r2; - float angle, da; - float u, v, len; - - r0 = inner_radius; - r1 = outer_radius - tooth_depth / 2.0f; - r2 = outer_radius + tooth_depth / 2.0f; - - da = 2.0f * (float) Math.PI / teeth / 4.0f; - - gl.glShadeModel(GL.GL_FLAT); - - gl.glNormal3f(0.0f, 0.0f, 1.0f); - - /* draw front face */ - gl.glBegin(GL.GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) - { - angle = i * 2.0f * (float) Math.PI / teeth; - gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), width * 0.5f); - if(i < teeth) - { - gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle + 3.0f * da), r1 * (float)Math.sin(angle + 3.0f * da), width * 0.5f); - } - } - gl.glEnd(); - - /* draw front sides of teeth */ - gl.glBegin(GL.GL_QUADS); - for (i = 0; i < teeth; i++) - { - angle = i * 2.0f * (float) Math.PI / teeth; - gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), width * 0.5f); - gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), width * 0.5f); - gl.glVertex3f(r2 * (float)Math.cos(angle + 2.0f * da), r2 * (float)Math.sin(angle + 2.0f * da), width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle + 3.0f * da), r1 * (float)Math.sin(angle + 3.0f * da), width * 0.5f); - } - gl.glEnd(); - - /* draw back face */ - gl.glBegin(GL.GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) - { - angle = i * 2.0f * (float) Math.PI / teeth; - gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), -width * 0.5f); - gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), -width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), -width * 0.5f); - gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), -width * 0.5f); - } - gl.glEnd(); - - /* draw back sides of teeth */ - gl.glBegin(GL.GL_QUADS); - for (i = 0; i < teeth; i++) - { - angle = i * 2.0f * (float) Math.PI / teeth; - gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), -width * 0.5f); - gl.glVertex3f(r2 * (float)Math.cos(angle + 2 * da), r2 * (float)Math.sin(angle + 2 * da), -width * 0.5f); - gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), -width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), -width * 0.5f); - } - gl.glEnd(); - - /* draw outward faces of teeth */ - gl.glBegin(GL.GL_QUAD_STRIP); - for (i = 0; i < teeth; i++) - { - angle = i * 2.0f * (float) Math.PI / teeth; - gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), -width * 0.5f); - u = r2 * (float)Math.cos(angle + da) - r1 * (float)Math.cos(angle); - v = r2 * (float)Math.sin(angle + da) - r1 * (float)Math.sin(angle); - len = (float)Math.sqrt(u * u + v * v); - u /= len; - v /= len; - gl.glNormal3f(v, -u, 0.0f); - gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), width * 0.5f); - gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), -width * 0.5f); - gl.glNormal3f((float)Math.cos(angle), (float)Math.sin(angle), 0.0f); - gl.glVertex3f(r2 * (float)Math.cos(angle + 2 * da), r2 * (float)Math.sin(angle + 2 * da), width * 0.5f); - gl.glVertex3f(r2 * (float)Math.cos(angle + 2 * da), r2 * (float)Math.sin(angle + 2 * da), -width * 0.5f); - u = r1 * (float)Math.cos(angle + 3 * da) - r2 * (float)Math.cos(angle + 2 * da); - v = r1 * (float)Math.sin(angle + 3 * da) - r2 * (float)Math.sin(angle + 2 * da); - gl.glNormal3f(v, -u, 0.0f); - gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), -width * 0.5f); - gl.glNormal3f((float)Math.cos(angle), (float)Math.sin(angle), 0.0f); - } - gl.glVertex3f(r1 * (float)Math.cos(0), r1 * (float)Math.sin(0), width * 0.5f); - gl.glVertex3f(r1 * (float)Math.cos(0), r1 * (float)Math.sin(0), -width * 0.5f); - gl.glEnd(); - - gl.glShadeModel(GL.GL_SMOOTH); - - /* draw inside radius cylinder */ - gl.glBegin(GL.GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) - { - angle = i * 2.0f * (float) Math.PI / teeth; - gl.glNormal3f(-(float)Math.cos(angle), -(float)Math.sin(angle), 0.0f); - gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), -width * 0.5f); - gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), width * 0.5f); - } - gl.glEnd(); - } -} diff --git a/src/demos/texture/TestSubImage.java b/src/demos/texture/TestSubImage.java deleted file mode 100755 index b4e395e..0000000 --- a/src/demos/texture/TestSubImage.java +++ /dev/null @@ -1,303 +0,0 @@ -/* - * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.texture; - -import java.awt.AlphaComposite; -import java.awt.Color; -import java.awt.GradientPaint; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.Rectangle; -import java.awt.event.*; -import java.awt.image.*; -import javax.swing.*; -import java.util.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.texture.*; - -/** Demonstrates and tests updates of sub-rectangles of a Texture - generated from a BufferedImage. Draws a cursor in texel space - around the cursor using Java 2D's XOR mode and pushes those - updates to an underlying OpenGL texture using - Texture.updateSubImage(). */ - -public class TestSubImage { - private boolean haveForcedImageType; - private int forcedImageType; - private List imageTypeMenuItems = new ArrayList(); - private GLU glu = new GLU(); - private GLCanvas mainCanvas; - private Rectangle curRect; - private Rectangle lastRect; - private TextureData textureData; - private Texture texture; - private BufferedImage baseImage; - private BufferedImage convertedImage; - private int CURSOR_SIZE = 10; - - class Listener implements GLEventListener { - public void init(GLAutoDrawable drawable) {} - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { - GL gl = drawable.getGL(); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluOrtho2D(0, 1, 0, 1); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - } - - public void display(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - if (convertedImage == null) { - // Get rid of any previously allocated texture - if (texture != null) { - texture.dispose(); - texture = null; - } - - // Convert the base image - // Note that for simplicity in handling of the XOR cursor, we - // always make a copy of the base image - int imageType = BufferedImage.TYPE_INT_RGB; - if (haveForcedImageType) { - imageType = forcedImageType; - } - convertedImage = new BufferedImage(baseImage.getWidth(), - baseImage.getHeight(), - imageType); - Graphics2D g = convertedImage.createGraphics(); - g.setComposite(AlphaComposite.Src); - g.drawImage(baseImage, 0, 0, null); - g.dispose(); - - // Create a TextureData and Texture from it - textureData = TextureIO.newTextureData(convertedImage, false); - texture = TextureIO.newTexture(textureData); - } - - Graphics2D g = convertedImage.createGraphics(); - g.setColor(Color.RED); - g.setXORMode(Color.WHITE); - if (lastRect != null) { - // Paint with XOR in this area - g.fillRect(lastRect.x, lastRect.y, lastRect.width, lastRect.height); - } - if (curRect != null) { - // Paint with XOR in this area - g.fillRect(curRect.x, curRect.y, curRect.width, curRect.height); - } - // Compute the union of these rectangles, if any - Rectangle union = null; - if (lastRect != null) { - union = new Rectangle(lastRect); - if (curRect != null) { - union.add(curRect); - } - } else if (curRect != null) { - union = curRect; - } - - // Move these down - lastRect = curRect; - curRect = null; - - // Update the affected area of the texture (if there is one) - // Note: this one API call is basically what this demo is illustrating - if (union != null) { - int yOrigin = union.y; - - // Note: if the Y origin of the texture data didn't match Java - // 2D's Y origin, we would need to correct the Y coordinate - // passed down here. This code path is not taken in the - // current Texture implementation. - if (!texture.getMustFlipVertically()) { - yOrigin = texture.getHeight() - yOrigin; - } - - texture.updateSubImage(textureData, 0, - union.x, yOrigin, - union.x, yOrigin, - union.width, union.height); - } - - // Now draw one quad with the texture - texture.enable(); - texture.bind(); - gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_REPLACE); - TextureCoords coords = texture.getImageTexCoords(); - gl.glBegin(GL.GL_QUADS); - gl.glTexCoord2f(coords.left(), coords.bottom()); - gl.glVertex3f(0, 0, 0); - gl.glTexCoord2f(coords.right(), coords.bottom()); - gl.glVertex3f(1, 0, 0); - gl.glTexCoord2f(coords.right(), coords.top()); - gl.glVertex3f(1, 1, 0); - gl.glTexCoord2f(coords.left(), coords.top()); - gl.glVertex3f(0, 1, 0); - gl.glEnd(); - texture.disable(); - } - - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - } - - private JMenuItem newItem(final int imageType, String imageTypeName) { - final JCheckBoxMenuItem item = new JCheckBoxMenuItem(imageTypeName); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - if (item.isSelected()) { - // Disable all other checkbox menu items - for (Iterator iter = imageTypeMenuItems.iterator(); iter.hasNext(); ) { - JCheckBoxMenuItem cb = (JCheckBoxMenuItem) iter.next(); - if (cb != item) - cb.setSelected(false); - } - - haveForcedImageType = true; - forcedImageType = imageType; - } else { - // No longer have a forced image type - haveForcedImageType = false; - } - - // Get rid of the previously created converted image, if any - if (convertedImage != null) { - convertedImage.flush(); - convertedImage = null; - } - - lastRect = null; - mainCanvas.repaint(); - } - }); - imageTypeMenuItems.add(item); - return item; - } - - private void run() { - JPopupMenu.setDefaultLightWeightPopupEnabled(false); - - // Create top-level window and menus - JFrame frame = new JFrame("Texture Sub Image Test"); - JMenuBar menuBar = new JMenuBar(); - JMenu menu = new JMenu("File"); - menu.setMnemonic(KeyEvent.VK_F); - JMenuItem item = new JMenuItem("Quit"); - item.setMnemonic(KeyEvent.VK_Q); - item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK)); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - System.exit(0); - } - }); - menu.add(item); - - menuBar.add(menu); - - menu = new JMenu("Tools"); - menu.setMnemonic(KeyEvent.VK_T); - JMenu submenu = new JMenu("Force BufferedImage Type"); - submenu.setMnemonic(KeyEvent.VK_F); - submenu.add(newItem(BufferedImage.TYPE_3BYTE_BGR, "TYPE_3BYTE_BGR")); - submenu.add(newItem(BufferedImage.TYPE_4BYTE_ABGR, "TYPE_4BYTE_ABGR")); - submenu.add(newItem(BufferedImage.TYPE_4BYTE_ABGR_PRE, "TYPE_4BYTE_ABGR_PRE")); - submenu.add(newItem(BufferedImage.TYPE_BYTE_BINARY, "TYPE_BYTE_BINARY")); - submenu.add(newItem(BufferedImage.TYPE_BYTE_GRAY, "TYPE_BYTE_GRAY")); - submenu.add(newItem(BufferedImage.TYPE_BYTE_INDEXED, "TYPE_BYTE_INDEXED")); - submenu.add(newItem(BufferedImage.TYPE_INT_ARGB, "TYPE_INT_ARGB")); - submenu.add(newItem(BufferedImage.TYPE_INT_ARGB_PRE, "TYPE_INT_ARGB_PRE")); - submenu.add(newItem(BufferedImage.TYPE_INT_BGR, "TYPE_INT_BGR")); - submenu.add(newItem(BufferedImage.TYPE_INT_RGB, "TYPE_INT_RGB")); - submenu.add(newItem(BufferedImage.TYPE_USHORT_555_RGB, "TYPE_USHORT_555_RGB")); - submenu.add(newItem(BufferedImage.TYPE_USHORT_565_RGB, "TYPE_USHORT_565_RGB")); - submenu.add(newItem(BufferedImage.TYPE_USHORT_GRAY, "TYPE_USHORT_GRAY")); - menu.add(submenu); - - menuBar.add(menu); - - frame.setJMenuBar(menuBar); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - - // Set up the base image we'll use to draw with - baseImage = new BufferedImage(256, 256, BufferedImage.TYPE_INT_RGB); - Graphics2D g = baseImage.createGraphics(); - g.setPaint(new GradientPaint(0, 0, Color.CYAN, - baseImage.getWidth(), baseImage.getHeight(), Color.BLUE)); - g.fillRect(0, 0, baseImage.getWidth(), baseImage.getHeight()); - g.dispose(); - - // Now set up the main GLCanvas - mainCanvas = new GLCanvas(); - mainCanvas.addGLEventListener(new Listener()); - mainCanvas.addMouseListener(new MouseAdapter() { - public void mouseExited(MouseEvent e) { - curRect = null; - mainCanvas.repaint(); - } - }); - mainCanvas.addMouseMotionListener(new MouseMotionAdapter() { - public void mouseMoved(MouseEvent e) { - // Scale x and y into coordinate system of texture - int x = (int) (e.getX() * (float) baseImage.getWidth() / (float) e.getComponent().getWidth()); - int y = (int) (e.getY() * (float) baseImage.getHeight() / (float) e.getComponent().getHeight()); - // Paint cursor on texture around this point - int minx = Math.max(0, x - CURSOR_SIZE); - int maxx = Math.min(baseImage.getWidth(), x + CURSOR_SIZE); - int miny = Math.max(0, y - CURSOR_SIZE); - int maxy = Math.min(baseImage.getHeight(), y + CURSOR_SIZE); - curRect = new Rectangle(minx, miny, maxx - minx, maxy - miny); - mainCanvas.repaint(); - } - }); - - frame.getContentPane().add(mainCanvas); - frame.setSize(512, 512); - frame.setVisible(true); - } - - public static void main(String[] args) { - new TestSubImage().run(); - } -} diff --git a/src/demos/texture/TestTexture.java b/src/demos/texture/TestTexture.java deleted file mode 100755 index ff0ff14..0000000 --- a/src/demos/texture/TestTexture.java +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.texture; - -import java.awt.geom.*; -import java.awt.event.*; -import java.io.*; -import javax.swing.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.texture.*; - -/** Demonstrates simple use of the TextureIO texture loader. */ - -public class TestTexture implements GLEventListener { - public static void main(String[] args) { - new TestTexture().run(args); - } - - private File curDir; - - private void run(String[] args) { - JPopupMenu.setDefaultLightWeightPopupEnabled(false); - - JFrame frame = new JFrame("Texture Loader Demo"); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - final GLCanvas canvas = new GLCanvas(); - - JMenuBar menuBar = new JMenuBar(); - JMenu menu = new JMenu("File"); - JMenuItem item = new JMenuItem("Open texture..."); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - JFileChooser chooser = new JFileChooser(curDir); - int res = chooser.showOpenDialog(null); - if (res == JFileChooser.APPROVE_OPTION) { - File chosen = chooser.getSelectedFile(); - if (chosen != null) { - curDir = chosen.getParentFile(); - setTextureFile(chosen); - canvas.repaint(); - } - } - } - }); - item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK)); - menu.add(item); - - item = new JMenuItem("Flush texture"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - flushTexture(); - canvas.repaint(); - } - }); - item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK)); - menu.add(item); - - item = new JMenuItem("Exit"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - System.exit(0); - } - }); - item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK)); - menu.add(item); - - menuBar.add(menu); - - canvas.addGLEventListener(this); - frame.getContentPane().add(canvas); - frame.setJMenuBar(menuBar); - frame.setSize(800, 600); - frame.show(); - } - - private boolean newTexture; - private boolean flushTexture; - private File file; - private Texture texture; - private GLU glu = new GLU(); - - public void setTextureFile(File file) { - this.file = file; - newTexture = true; - } - - public void flushTexture() { - flushTexture = true; - } - - public void init(GLAutoDrawable drawable) { - drawable.setGL(new DebugGL(drawable.getGL())); - - GL gl = drawable.getGL(); - gl.glClearColor(0, 0, 0, 0); - gl.glEnable(GL.GL_DEPTH_TEST); - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { - GL gl = drawable.getGL(); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluOrtho2D(0, 1, 0, 1); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - } - - public void display(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - if (flushTexture) { - flushTexture = false; - if (texture != null) { - texture.dispose(); - texture = null; - } - } - - if (newTexture) { - newTexture = false; - - if (texture != null) { - texture.dispose(); - texture = null; - } - - try { - System.err.println("Loading texture..."); - texture = TextureIO.newTexture(file, true); - System.err.println("Texture estimated memory size = " + texture.getEstimatedMemorySize()); - } catch (IOException e) { - e.printStackTrace(); - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - e.printStackTrace(new PrintStream(bos)); - JOptionPane.showMessageDialog(null, - bos.toString(), - "Error loading texture", - JOptionPane.ERROR_MESSAGE); - return; - } - } - - if (texture != null) { - texture.enable(); - texture.bind(); - gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_REPLACE); - TextureCoords coords = texture.getImageTexCoords(); - - gl.glBegin(GL.GL_QUADS); - gl.glTexCoord2f(coords.left(), coords.bottom()); - gl.glVertex3f(0, 0, 0); - gl.glTexCoord2f(coords.right(), coords.bottom()); - gl.glVertex3f(1, 0, 0); - gl.glTexCoord2f(coords.right(), coords.top()); - gl.glVertex3f(1, 1, 0); - gl.glTexCoord2f(coords.left(), coords.top()); - gl.glVertex3f(0, 1, 0); - gl.glEnd(); - texture.disable(); - } - } - - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} -} diff --git a/src/demos/texture/TextureConvert.java b/src/demos/texture/TextureConvert.java deleted file mode 100755 index 728aa9c..0000000 --- a/src/demos/texture/TextureConvert.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.texture; - -import java.io.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.texture.*; - -/** Demonstrates how the TextureIO subsystem may be used to convert - textures between multiple file formats, including texture - compression where available. */ - -public class TextureConvert { - public static void main(String[] args) throws IOException { - if (args.length != 2) { - System.out.println("Usage: java demos.texture.TextureConvert [input file] [output file]"); - System.out.println("Converts texture from input file format to output file format."); - System.out.println("If output file format is DDS, compresses texture with DXT3 compression"); - System.out.println("if available."); - System.exit(1); - } - - String inputFile = args[0]; - String outputFile = args[1]; - - // Make a pbuffer to get an offscreen context - if (!GLDrawableFactory.getFactory().canCreateGLPbuffer()) { - System.out.println("Pbuffer support not available (required to run this demo)"); - System.exit(1); - } - GLCapabilities caps = new GLCapabilities(); - caps.setDoubleBuffered(false); - GLPbuffer pbuffer = GLDrawableFactory.getFactory().createGLPbuffer(caps, null, 2, 2, null); - pbuffer.getContext().makeCurrent(); - GL gl = pbuffer.getGL(); - - boolean attemptCompression = false; - if (TextureIO.DDS.equals(FileUtil.getFileSuffix(outputFile))) { - if (gl.isExtensionAvailable("GL_EXT_texture_compression_s3tc") || - gl.isExtensionAvailable("GL_NV_texture_compression_vtc")) { - attemptCompression = true; - } - } - - TextureData inputData = TextureIO.newTextureData(new File(inputFile), false, null); - if (attemptCompression && !inputData.isDataCompressed()) { - inputData.setInternalFormat(GL.GL_COMPRESSED_RGBA_S3TC_DXT3_EXT); - } - Texture tex = TextureIO.newTexture(inputData); - - // Now read it back and save to the output file - TextureIO.write(tex, new File(outputFile)); - } -} diff --git a/src/demos/util/Bunny.java b/src/demos/util/Bunny.java deleted file mode 100644 index b9565d6..0000000 --- a/src/demos/util/Bunny.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.util; - -import java.io.*; - -import javax.media.opengl.*; - -/** Renders a bunny. - - <P> This file was produced by 3D Exploration Plugin: CPP Export filter. - - <P> 3D Exploration - - <P> Copyright (c) 1999-2000 X Dimension Software - - <P>WWW http://www.xdsoft.com/explorer/ <BR> - eMail [email protected] -*/ -public class Bunny { - - /** Generates and returns a display list for the bunny model. */ - public static int gen3DObjectList(GL gl) throws IOException { - StreamTokenizer tok = new StreamTokenizer(new BufferedReader(new InputStreamReader( - Bunny.class.getClassLoader().getResourceAsStream("demos/data/models/bunny.txt")))); - // Reset tokenizer's syntax so numbers are not parsed - tok.resetSyntax(); - tok.wordChars('a', 'z'); - tok.wordChars('A', 'Z'); - tok.wordChars('0', '9'); - tok.wordChars('-', '-'); - tok.wordChars('.', '.'); - tok.wordChars(128 + 32, 255); - tok.whitespaceChars(0, ' '); - tok.whitespaceChars(',', ','); - tok.whitespaceChars('{', '{'); - tok.whitespaceChars('}', '}'); - tok.commentChar('/'); - tok.quoteChar('"'); - tok.quoteChar('\''); - tok.slashSlashComments(true); - tok.slashStarComments(true); - - // Read in file - int numFaceIndices = nextInt(tok, "number of face indices"); - short[] faceIndices = new short[numFaceIndices * 6]; - for (int i = 0; i < numFaceIndices * 6; i++) { - faceIndices[i] = (short) nextInt(tok, "face index"); - } - int numVertices = nextInt(tok, "number of vertices"); - float[] vertices = new float[numVertices * 3]; - for (int i = 0; i < numVertices * 3; i++) { - vertices[i] = nextFloat(tok, "vertex"); - } - int numNormals = nextInt(tok, "number of normals"); - float[] normals = new float[numNormals * 3]; - for (int i = 0; i < numNormals * 3; i++) { - normals[i] = nextFloat(tok, "normal"); - } - - int lid = gl.glGenLists(1); - gl.glNewList(lid, GL.GL_COMPILE); - - gl.glBegin(GL.GL_TRIANGLES); - for (int i = 0; i < faceIndices.length; i += 6) { - for (int j = 0; j < 3; j++) { - int vi = faceIndices[i + j]; - int ni = faceIndices[i + j + 3]; - gl.glNormal3f(normals[3 * ni], - normals[3 * ni + 1], - normals[3 * ni + 2]); - gl.glVertex3f(vertices[3 * vi], - vertices[3 * vi + 1], - vertices[3 * vi + 2]); - } - } - gl.glEnd(); - - gl.glEndList(); - return lid; - } - - private static int nextInt(StreamTokenizer tok, String error) throws IOException { - if (tok.nextToken() != StreamTokenizer.TT_WORD) { - throw new IOException("Parse error reading " + error + " at line " + tok.lineno()); - } - try { - return Integer.parseInt(tok.sval); - } catch (NumberFormatException e) { - throw new IOException("Parse error reading " + error + " at line " + tok.lineno()); - } - } - - private static float nextFloat(StreamTokenizer tok, String error) throws IOException { - if (tok.nextToken() != StreamTokenizer.TT_WORD) { - throw new IOException("Parse error reading " + error + " at line " + tok.lineno()); - } - try { - return Float.parseFloat(tok.sval); - } catch (NumberFormatException e) { - throw new IOException("Parse error reading " + error + " at line " + tok.lineno()); - } - } -} diff --git a/src/demos/util/Cubemap.java b/src/demos/util/Cubemap.java deleted file mode 100755 index 52e2977..0000000 --- a/src/demos/util/Cubemap.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2003-2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.util; - -import java.io.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.texture.*; - -/** Helper class for loading cubemaps from a set of textures. */ - -public class Cubemap { - private static final String[] suffixes = { "posx", "negx", "posy", "negy", "posz", "negz" }; - private static final int[] targets = { GL.GL_TEXTURE_CUBE_MAP_POSITIVE_X, - GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_X, - GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Y, - GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, - GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Z, - GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z }; - - public static Texture loadFromStreams(ClassLoader scope, - String basename, - String suffix, - boolean mipmapped) throws IOException, GLException { - Texture cubemap = TextureIO.newTexture(GL.GL_TEXTURE_CUBE_MAP); - - for (int i = 0; i < suffixes.length; i++) { - String resourceName = basename + suffixes[i] + "." + suffix; - TextureData data = TextureIO.newTextureData(scope.getResourceAsStream(resourceName), - mipmapped, - FileUtil.getFileSuffix(resourceName)); - if (data == null) { - throw new IOException("Unable to load texture " + resourceName); - } - cubemap.updateImage(data, targets[i]); - } - - return cubemap; - } -} diff --git a/src/demos/util/DurationTimer.java b/src/demos/util/DurationTimer.java deleted file mode 100644 index c0f88e7..0000000 --- a/src/demos/util/DurationTimer.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.util; - -/** Simple class for helping measure frames-per-second. */ - -public class DurationTimer { - private long startTime; - private long accumulatedTime; - - public void reset() { - accumulatedTime = 0; - } - - public void start() { - startTime = System.currentTimeMillis(); - } - - public void stop() { - long curTime = System.currentTimeMillis(); - accumulatedTime += (curTime - startTime); - } - - public long getDuration() { - return accumulatedTime; - } - - public float getDurationAsSeconds() { - return (float) accumulatedTime / 1000.0f; - } -} diff --git a/src/demos/util/DxTex.java b/src/demos/util/DxTex.java deleted file mode 100644 index 433a2b4..0000000 --- a/src/demos/util/DxTex.java +++ /dev/null @@ -1,376 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.util; - -import java.io.*; -import java.nio.*; -import java.awt.image.*; -import java.awt.event.*; -import javax.swing.*; -import javax.swing.event.*; -import javax.swing.filechooser.*; - -import com.sun.opengl.util.texture.spi.*; - -/** Simplified clone of DxTex tool from the DirectX SDK, written in - Java using the DDSImage; tests fetching of texture data */ - -public class DxTex { - private InternalFrameListener frameListener; - private File defaultDirectory; - private JDesktopPane desktop; - private static String endl = System.getProperty("line.separator"); - private JMenu mipMapMenu; - - public static void main(String[] args) { - new DxTex().run(args); - } - - private void run(String[] args) { - defaultDirectory = new File(System.getProperty("user.dir")); - JFrame frame = new JFrame("DirectX Texture Tool"); - frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); - JMenuBar menuBar = new JMenuBar(); - JMenu menu = createMenu("File", 'F', 0); - JMenuItem item = - createMenuItem("Open...", - new ActionListener() { - public void actionPerformed(ActionEvent e) { - openFile(); - } - }, - KeyEvent.VK_O, InputEvent.CTRL_MASK, - 'O', 0); - menu.add(item); - item = - createMenuItem("Exit", - new ActionListener() { - public void actionPerformed(ActionEvent e) { - System.exit(0); - } - }, - KeyEvent.VK_Q, InputEvent.CTRL_MASK, - 'x', 1); - menu.add(item); - menuBar.add(menu); - - menu = createMenu("MipMap", 'M', 0); - menu.setEnabled(false); - mipMapMenu = menu; - menuBar.add(menu); - - frame.setJMenuBar(menuBar); - - desktop = new JDesktopPane(); - frame.getContentPane().add(desktop); - frame.setSize(640, 480); - frame.show(); - - frameListener = new InternalFrameAdapter() { - public void internalFrameActivated(InternalFrameEvent e) { - JInternalFrame ifr = e.getInternalFrame(); - if (ifr instanceof ImageFrame) { - // Recompute entries in mip map menu - final ImageFrame frame = (ImageFrame) ifr; - if (frame.getNumMipMaps() > 0) { - mipMapMenu.removeAll(); - // Add entries - for (int i = 0; i < frame.getNumMipMaps(); i++) { - final int map = i; - JMenuItem item; - String title = "Level " + (i + 1); - ActionListener listener = new ActionListener() { - public void actionPerformed(ActionEvent e) { - SwingUtilities.invokeLater(new Runnable() { - public void run() { - frame.setMipMapLevel(map); - } - }); - } - }; - if (i < 9) { - char c = (char) ('0' + i + 1); - item = createMenuItem(title, listener, c, 6); - } else { - item = createMenuItem(title, listener); - } - mipMapMenu.add(item); - } - mipMapMenu.setEnabled(true); - } else { - mipMapMenu.setEnabled(false); - } - } else { - mipMapMenu.setEnabled(false); - } - } - - public void internalFrameClosing(InternalFrameEvent e) { - desktop.remove(e.getInternalFrame()); - desktop.invalidate(); - desktop.validate(); - desktop.repaint(); - // THIS SHOULD NOT BE NECESSARY - desktop.requestFocus(); - } - - public void internalFrameClosed(InternalFrameEvent e) { - JInternalFrame ifr = e.getInternalFrame(); - if (ifr instanceof ImageFrame) { - ((ImageFrame) ifr).close(); - } - } - }; - - for (int i = 0; i < args.length; i++) { - final File file = new File(args[i]); - SwingUtilities.invokeLater(new Runnable() { - public void run() { - openFile(file); - } - }); - } - } - - //---------------------------------------------------------------------- - // Actions - // - - private void openFile() { - JFileChooser chooser = new JFileChooser(defaultDirectory); - chooser.setMultiSelectionEnabled(false); - chooser.addChoosableFileFilter(new javax.swing.filechooser.FileFilter() { - public boolean accept(File f) { - return (f.isDirectory() || - f.getName().endsWith(".dds")); - } - - public String getDescription() { - return "Texture files (*.dds)"; - } - }); - - int res = chooser.showOpenDialog(null); - if (res == JFileChooser.APPROVE_OPTION) { - final File file = chooser.getSelectedFile(); - defaultDirectory = file.getParentFile(); - SwingUtilities.invokeLater(new Runnable() { - public void run() { - openFile(file); - } - }); - } - } - - private void openFile(File file) { - try { - DDSImage image = DDSImage.read(file); - showImage(file.getName(), image, 0); - } catch (IOException e) { - showMessageDialog("Error while opening file:" + endl + - exceptionToString(e), - "Error opening file", - JOptionPane.WARNING_MESSAGE); - } - } - - //---------------------------------------------------------------------- - // Image display - // - - private void showImage(String filename, DDSImage image, int mipMapLevel) { - try { - ImageFrame fr = new ImageFrame(filename, image, mipMapLevel); - desktop.add(fr); - fr.show(); - } catch (Exception e) { - showMessageDialog("Error while loading file:" + endl + - exceptionToString(e), - "Error loading file", - JOptionPane.WARNING_MESSAGE); - } - } - - class ImageFrame extends JInternalFrame { - private String filename; - private DDSImage image; - private int mipMapLevel; - private int curWidth; - private int curHeight; - private JLabel label; - - ImageFrame(String filename, DDSImage image, int mipMapLevel) { - super(); - this.filename = filename; - this.image = image; - - addInternalFrameListener(frameListener); - label = new JLabel(); - JScrollPane scroller = new JScrollPane(label); - getContentPane().add(scroller); - setSize(400, 400); - setResizable(true); - setIconifiable(true); - setClosable(true); - setMipMapLevel(mipMapLevel); - } - - int getNumMipMaps() { - return image.getNumMipMaps(); - } - - void setMipMapLevel(int level) { - mipMapLevel = level; - computeImage(); - resetTitle(); - } - - void close() { - System.err.println("Closing files"); - image.close(); - } - - private void computeImage() { - // Get image data - image.getNumMipMaps(); - DDSImage.ImageInfo info = image.getMipMap(mipMapLevel); - int width = info.getWidth(); - int height = info.getHeight(); - curWidth = width; - curHeight = height; - ByteBuffer data = info.getData(); - - // Build ImageIcon out of image data - BufferedImage img = new BufferedImage(width, height, - BufferedImage.TYPE_3BYTE_BGR); - WritableRaster dst = img.getRaster(); - - int skipSize; - if (image.getPixelFormat() == DDSImage.D3DFMT_A8R8G8B8) { - skipSize = 4; - } else if (image.getPixelFormat() == DDSImage.D3DFMT_R8G8B8) { - skipSize = 3; - } else { - image.close(); - throw new RuntimeException("Unsupported pixel format " + image.getPixelFormat()); - } - - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - // NOTE: highly suspicious that A comes fourth in - // A8R8G8B8...not really ARGB, but RGBA (like OpenGL) - dst.setSample(x, y, 0, data.get(skipSize * (width * y + x) + 2) & 0xFF); - dst.setSample(x, y, 1, data.get(skipSize * (width * y + x) + 1) & 0xFF); - dst.setSample(x, y, 2, data.get(skipSize * (width * y + x) + 0) & 0xFF); - } - } - - label.setIcon(new ImageIcon(img)); - } - - private void resetTitle() { - setTitle(filename + " (" + curWidth + "x" + curHeight + - ", mipmap " + (1 + mipMapLevel) + " of " + - image.getNumMipMaps() + ")"); - } - } - - - //---------------------------------------------------------------------- - // Menu and menu item creation - // - - private static JMenu createMenu(String name, char mnemonic, int mnemonicPos) { - JMenu menu = new JMenu(name); - menu.setMnemonic(mnemonic); - menu.setDisplayedMnemonicIndex(mnemonicPos); - return menu; - } - - private static JMenuItem createMenuItem(String name, ActionListener l) { - JMenuItem item = new JMenuItem(name); - item.addActionListener(l); - return item; - } - - private static JMenuItem createMenuItemInternal(String name, ActionListener l, int accelerator, int modifiers) { - JMenuItem item = createMenuItem(name, l); - item.setAccelerator(KeyStroke.getKeyStroke(accelerator, modifiers)); - return item; - } - - private static JMenuItem createMenuItem(String name, ActionListener l, int accelerator) { - return createMenuItemInternal(name, l, accelerator, 0); - } - - private static JMenuItem createMenuItem(String name, ActionListener l, char mnemonic, int mnemonicPos) { - JMenuItem item = createMenuItem(name, l); - item.setMnemonic(mnemonic); - item.setDisplayedMnemonicIndex(mnemonicPos); - return item; - } - - private static JMenuItem createMenuItem(String name, - ActionListener l, - int accelerator, - int acceleratorMods, - char mnemonic, - int mnemonicPos) { - JMenuItem item = createMenuItemInternal(name, l, accelerator, acceleratorMods); - item.setMnemonic(mnemonic); - item.setDisplayedMnemonicIndex(mnemonicPos); - return item; - } - - private void showMessageDialog(final String message, final String title, final int jOptionPaneKind) { - SwingUtilities.invokeLater(new Runnable() { - public void run() { - JOptionPane.showInternalMessageDialog(desktop, message, title, jOptionPaneKind); - } - }); - } - - private static String exceptionToString(Exception e) { - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - PrintStream s = new PrintStream(bos); - e.printStackTrace(s); - return bos.toString(); - } -} diff --git a/src/demos/util/FPSCounter.java b/src/demos/util/FPSCounter.java deleted file mode 100755 index b0ca200..0000000 --- a/src/demos/util/FPSCounter.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright (c) 2007 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.util; - -import java.awt.Font; -import java.awt.geom.*; -import java.text.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.j2d.*; - -/** A simple class which uses the TextRenderer to provide an FPS - counter overlaid on top of the scene. */ - -public class FPSCounter { - // Placement constants - public static final int UPPER_LEFT = 1; - public static final int UPPER_RIGHT = 2; - public static final int LOWER_LEFT = 3; - public static final int LOWER_RIGHT = 4; - - private int textLocation = LOWER_RIGHT; - private GLDrawable drawable; - private TextRenderer renderer; - private DecimalFormat format = new DecimalFormat("####.00"); - private int frameCount; - private long startTime; - private String fpsText; - private int fpsMagnitude; - private int fpsWidth; - private int fpsHeight; - private int fpsOffset; - - /** Creates a new FPSCounter with the given font size. An OpenGL - context must be current at the time the constructor is called. - - @param drawable the drawable to render the text to - @param textSize the point size of the font to use - @throws GLException if an OpenGL context is not current when the constructor is called - */ - public FPSCounter(GLDrawable drawable, int textSize) throws GLException { - this(drawable, new Font("SansSerif", Font.BOLD, textSize)); - } - - /** Creates a new FPSCounter with the given font. An OpenGL context - must be current at the time the constructor is called. - - @param drawable the drawable to render the text to - @param font the font to use - @throws GLException if an OpenGL context is not current when the constructor is called - */ - public FPSCounter(GLDrawable drawable, Font font) throws GLException { - this(drawable, font, true, true); - } - - /** Creates a new FPSCounter with the given font and rendering - attributes. An OpenGL context must be current at the time the - constructor is called. - - @param drawable the drawable to render the text to - @param font the font to use - @param antialiased whether to use antialiased fonts - @param useFractionalMetrics whether to use fractional font - @throws GLException if an OpenGL context is not current when the constructor is called - */ - public FPSCounter(GLDrawable drawable, - Font font, - boolean antialiased, - boolean useFractionalMetrics) throws GLException { - this.drawable = drawable; - renderer = new TextRenderer(font, antialiased, useFractionalMetrics); - } - - /** Gets the relative location where the text of this FPSCounter - will be drawn: one of UPPER_LEFT, UPPER_RIGHT, LOWER_LEFT, or - LOWER_RIGHT. Defaults to LOWER_RIGHT. */ - public int getTextLocation() { - return textLocation; - } - - /** Sets the relative location where the text of this FPSCounter - will be drawn: one of UPPER_LEFT, UPPER_RIGHT, LOWER_LEFT, or - LOWER_RIGHT. Defaults to LOWER_RIGHT. */ - public void setTextLocation(int textLocation) { - if (textLocation < UPPER_LEFT || textLocation > LOWER_RIGHT) { - throw new IllegalArgumentException("textLocation"); - } - this.textLocation = textLocation; - } - - /** Changes the current color of this TextRenderer to the supplied - one, where each component ranges from 0.0f - 1.0f. The alpha - component, if used, does not need to be premultiplied into the - color channels as described in the documentation for {@link - Texture Texture}, although premultiplied colors are used - internally. The default color is opaque white. - - @param r the red component of the new color - @param g the green component of the new color - @param b the blue component of the new color - @param alpha the alpha component of the new color, 0.0f = - completely transparent, 1.0f = completely opaque - @throws GLException If an OpenGL context is not current when this method is called - */ - public void setColor(float r, float g, float b, float a) throws GLException { - renderer.setColor(r, g, b, a); - } - - /** Updates the FPSCounter's internal timer and counter and draws - the computed FPS. It is assumed this method will be called only - once per frame. - */ - public void draw() { - if (startTime == 0) { - startTime = System.currentTimeMillis(); - } - - if (++frameCount >= 100) { - long endTime = System.currentTimeMillis(); - float fps = 100.0f / (float) (endTime - startTime) * 1000; - recomputeFPSSize(fps); - frameCount = 0; - startTime = System.currentTimeMillis(); - - fpsText = "FPS: " + format.format(fps); - } - - if (fpsText != null) { - renderer.beginRendering(drawable.getWidth(), drawable.getHeight()); - // Figure out the location at which to draw the text - int x = 0; - int y = 0; - switch (textLocation) { - case UPPER_LEFT: - x = fpsOffset; - y = drawable.getHeight() - fpsHeight - fpsOffset; - break; - - case UPPER_RIGHT: - x = drawable.getWidth() - fpsWidth - fpsOffset; - y = drawable.getHeight() - fpsHeight - fpsOffset; - break; - - case LOWER_LEFT: - x = fpsOffset; - y = fpsOffset; - break; - - case LOWER_RIGHT: - x = drawable.getWidth() - fpsWidth - fpsOffset; - y = fpsOffset; - break; - } - - renderer.draw(fpsText, x, y); - renderer.endRendering(); - } - } - - private void recomputeFPSSize(float fps) { - String fpsText; - int fpsMagnitude; - if (fps >= 10000) { - fpsText = "10000.00"; - fpsMagnitude = 5; - } else if (fps >= 1000) { - fpsText = "1000.00"; - fpsMagnitude = 4; - } else if (fps >= 100) { - fpsText = "100.00"; - fpsMagnitude = 3; - } else if (fps >= 10) { - fpsText = "10.00"; - fpsMagnitude = 2; - } else { - fpsText = "9.00"; - fpsMagnitude = 1; - } - - if (fpsMagnitude > this.fpsMagnitude) { - Rectangle2D bounds = renderer.getBounds("FPS: " + fpsText); - fpsWidth = (int) bounds.getWidth(); - fpsHeight = (int) bounds.getHeight(); - fpsOffset = (int) (fpsHeight * 0.5f); - this.fpsMagnitude = fpsMagnitude; - } - } -} diff --git a/src/demos/util/FileUtils.java b/src/demos/util/FileUtils.java deleted file mode 100755 index 442485d..0000000 --- a/src/demos/util/FileUtils.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.util; - -import java.io.*; - -public class FileUtils { - public static String loadStreamIntoString(InputStream stream) throws IOException { - if (stream == null) { - throw new java.io.IOException("null stream"); - } - stream = new java.io.BufferedInputStream(stream); - int avail = stream.available(); - byte[] data = new byte[avail]; - int numRead = 0; - int pos = 0; - do { - if (pos + avail > data.length) { - byte[] newData = new byte[pos + avail]; - System.arraycopy(data, 0, newData, 0, pos); - data = newData; - } - numRead = stream.read(data, pos, avail); - if (numRead >= 0) { - pos += numRead; - } - avail = stream.available(); - } while (avail > 0 && numRead >= 0); - return new String(data, 0, pos, "US-ASCII"); - } -} diff --git a/src/demos/util/FloatList.java b/src/demos/util/FloatList.java deleted file mode 100644 index fe06e2e..0000000 --- a/src/demos/util/FloatList.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.util; - -/** Growable array of floats. */ - -public class FloatList { - private static final int DEFAULT_SIZE = 10; - - private float[] data = new float[DEFAULT_SIZE]; - private int numElements; - - public void add(float f) { - if (numElements == data.length) { - resize(1 + numElements); - } - data[numElements++] = f; - assert numElements <= data.length; - } - - public int size() { - return numElements; - } - - public float get(int index) { - if (index >= numElements) { - throw new ArrayIndexOutOfBoundsException(index); - } - return data[index]; - } - - public void put(int index, float val) { - if (index >= numElements) { - throw new ArrayIndexOutOfBoundsException(index); - } - data[index] = val; - } - - public void trim() { - if (data.length > numElements) { - float[] newData = new float[numElements]; - System.arraycopy(data, 0, newData, 0, numElements); - data = newData; - } - } - - public float[] getData() { - return data; - } - - private void resize(int minCapacity) { - int newCapacity = 2 * data.length; - if (newCapacity == 0) { - newCapacity = DEFAULT_SIZE; - } - if (newCapacity < minCapacity) { - newCapacity = minCapacity; - } - float[] newData = new float[newCapacity]; - System.arraycopy(data, 0, newData, 0, data.length); - data = newData; - } -} diff --git a/src/demos/util/IntList.java b/src/demos/util/IntList.java deleted file mode 100644 index 54a4745..0000000 --- a/src/demos/util/IntList.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.util; - -/** Growable array of ints. */ - -public class IntList { - private static final int DEFAULT_SIZE = 10; - - private int[] data = new int[DEFAULT_SIZE]; - private int numElements; - - public void add(int f) { - if (numElements == data.length) { - resize(1 + numElements); - } - data[numElements++] = f; - assert numElements <= data.length; - } - - public int size() { - return numElements; - } - - public int get(int index) { - if (index >= numElements) { - throw new ArrayIndexOutOfBoundsException(index); - } - return data[index]; - } - - public void put(int index, int val) { - if (index >= numElements) { - throw new ArrayIndexOutOfBoundsException(index); - } - data[index] = val; - } - - public void trim() { - if (data.length > numElements) { - int[] newData = new int[numElements]; - System.arraycopy(data, 0, newData, 0, numElements); - data = newData; - } - } - - public int[] getData() { - return data; - } - - private void resize(int minCapacity) { - int newCapacity = 2 * data.length; - if (newCapacity == 0) { - newCapacity = DEFAULT_SIZE; - } - if (newCapacity < minCapacity) { - newCapacity = minCapacity; - } - int[] newData = new int[newCapacity]; - System.arraycopy(data, 0, newData, 0, data.length); - data = newData; - } -} diff --git a/src/demos/util/MD2.java b/src/demos/util/MD2.java deleted file mode 100644 index 8e43c79..0000000 --- a/src/demos/util/MD2.java +++ /dev/null @@ -1,702 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.util; - -import java.io.*; -import java.nio.*; -import java.nio.channels.*; -import java.util.*; - -/** Reader for MD2 models, used by Quake II. */ - -public class MD2 { - public static Model loadMD2(String filename) throws IOException { - List/*<IFrame>*/ ifr = new ArrayList/*<IFrame>*/(); - loadFrames(filename, ifr); - return computeModel(ifr); - } - - public static Model loadMD2(InputStream in) throws IOException { - List/*<IFrame>*/ ifr = new ArrayList/*<IFrame>*/(); - loadFrames(in, ifr); - return computeModel(ifr); - } - - public static class FileHeader { - public int ident; - public int version; - public int skinwidth; - public int skinheight; - public int framesize; // byte size of each frame - public int num_skins; - public int num_xyz; - public int num_st; // greater than num_xyz for seams - public int num_tris; - public int num_glcmds; // dwords in strip/fan command list - public int num_frames; - public int ofs_skins; // each skin is a MAX_SKINNAME string - public int ofs_st; // byte offset from start for stverts - public int ofs_tris; // offset for dtriangles - public int ofs_frames; // offset for first frame - public int ofs_glcmds; - public int ofs_end; // end of file - }; - - public static class FileCompressedVertex { - public byte[] v = new byte[3]; // scaled byte to fit in frame mins/maxs - public byte lightnormalindex; - } - - public static class FileFrame { - public float[] scale = new float[3]; // multiply byte verts by this - public float[] translate = new float[3]; // then add this - public String name; // frame name from grabbing - public FileCompressedVertex[] verts; // variable sized - } - - public static class FileModel { - public int[] glcmds; - public FileFrame[] frames; - } - - public static class PositionNormal implements Cloneable { - public float x, y, z; - public float nx, ny, nz; - public Object clone() { - try { - return super.clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - } - } - - public static class TexCoord { - public float s,t; - } - - public static class Vertex { - public int pn_index; - public TexCoord tc = new TexCoord(); - } - - public static class Triangle { - public Vertex[] v = new Vertex[3]; - public boolean kill; - } - - public static class WingedEdge { - public int[] e = new int[2]; // vertex index - public int[] w = new int[2]; // triangle index: for "open" models, w[1] == -1 on open edges - } - - public static class Plane implements Cloneable { - public float a,b,c,d; - public Object clone() { - try { - return super.clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - } - } - - public static class Frame implements Cloneable { - public PositionNormal[] pn; // [pn_index] - public Plane[] triplane; // [tri_num] - - public Object clone() { - Frame res = new Frame(); - res.pn = new PositionNormal[pn.length]; - for (int i = 0; i < pn.length; i++) { - res.pn[i] = (PositionNormal) pn[i].clone(); - } - res.triplane = new Plane[triplane.length]; - for (int i = 0; i < triplane.length; i++) { - res.triplane[i] = (Plane) triplane[i].clone(); - } - return res; - } - } - - public static class Model { - public Frame[] f; - public Triangle[] tri; // [tri_num] - public WingedEdge[] edge; // [edge_num] - } - - public static void computePlane(PositionNormal a, PositionNormal b, PositionNormal c, Plane p) { - float[] v0 = new float[3]; - v0[0] = b.x - a.x; - v0[1] = b.y - a.y; - v0[2] = b.z - a.z; - float[] v1 = new float[3]; - v1[0] = c.x - a.x; - v1[1] = c.y - a.y; - v1[2] = c.z - a.z; - float[] cr = new float[3]; - cr[0] = v0[1] * v1[2] - v0[2] * v1[1]; - cr[1] = v0[2] * v1[0] - v0[0] * v1[2]; - cr[2] = v0[0] * v1[1] - v0[1] * v1[0]; - float l = (float) Math.sqrt(cr[0] * cr[0] + cr[1] * cr[1] + cr[2] * cr[2]); - if (l == 0) { - // degenerate triangle - p.a = p.b = p.c = p.d = 0; - return; - } - p.a = cr[0] / l; - p.b = cr[1] / l; - p.c = cr[2] / l; - - p.d = -(p.a * a.x + p.b * a.y + p.c * a.z); // signed distance of a point on the plane from the origin - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private static Model computeModel(List/*<IFrame>*/ ifr) throws IOException { - if (!compareFrames(ifr)) { - throw new IOException("unsuitable model -- frames aren't same"); - } - Model m = new Model(); - m.tri = ((IFrame) ifr.get(0)).tri; - m.f = new Frame[ifr.size()]; - for (int i = 0; i < ifr.size(); i++) { - Frame f = new Frame(); - m.f[i] = f; - IFrame it = (IFrame) ifr.get(i); - f.pn = it.pn; - computeFramePlanes(m.tri, f); - } - computeWingedEdges(m); - return m; - } - - private static class IFrame { - PositionNormal[] pn; - Triangle[] tri; - } - - // normal table lifted from Mark Kilgard's md2bump demo - private static final float[] normalTable = new float[] { - -0.525731f, 0.000000f, 0.850651f, - -0.442863f, 0.238856f, 0.864188f, - -0.295242f, 0.000000f, 0.955423f, - -0.309017f, 0.500000f, 0.809017f, - -0.162460f, 0.262866f, 0.951056f, - 0.000000f, 0.000000f, 1.000000f, - 0.000000f, 0.850651f, 0.525731f, - -0.147621f, 0.716567f, 0.681718f, - 0.147621f, 0.716567f, 0.681718f, - 0.000000f, 0.525731f, 0.850651f, - 0.309017f, 0.500000f, 0.809017f, - 0.525731f, 0.000000f, 0.850651f, - 0.295242f, 0.000000f, 0.955423f, - 0.442863f, 0.238856f, 0.864188f, - 0.162460f, 0.262866f, 0.951056f, - -0.681718f, 0.147621f, 0.716567f, - -0.809017f, 0.309017f, 0.500000f, - -0.587785f, 0.425325f, 0.688191f, - -0.850651f, 0.525731f, 0.000000f, - -0.864188f, 0.442863f, 0.238856f, - -0.716567f, 0.681718f, 0.147621f, - -0.688191f, 0.587785f, 0.425325f, - -0.500000f, 0.809017f, 0.309017f, - -0.238856f, 0.864188f, 0.442863f, - -0.425325f, 0.688191f, 0.587785f, - -0.716567f, 0.681718f, -0.147621f, - -0.500000f, 0.809017f, -0.309017f, - -0.525731f, 0.850651f, 0.000000f, - 0.000000f, 0.850651f, -0.525731f, - -0.238856f, 0.864188f, -0.442863f, - 0.000000f, 0.955423f, -0.295242f, - -0.262866f, 0.951056f, -0.162460f, - 0.000000f, 1.000000f, 0.000000f, - 0.000000f, 0.955423f, 0.295242f, - -0.262866f, 0.951056f, 0.162460f, - 0.238856f, 0.864188f, 0.442863f, - 0.262866f, 0.951056f, 0.162460f, - 0.500000f, 0.809017f, 0.309017f, - 0.238856f, 0.864188f, -0.442863f, - 0.262866f, 0.951056f, -0.162460f, - 0.500000f, 0.809017f, -0.309017f, - 0.850651f, 0.525731f, 0.000000f, - 0.716567f, 0.681718f, 0.147621f, - 0.716567f, 0.681718f, -0.147621f, - 0.525731f, 0.850651f, 0.000000f, - 0.425325f, 0.688191f, 0.587785f, - 0.864188f, 0.442863f, 0.238856f, - 0.688191f, 0.587785f, 0.425325f, - 0.809017f, 0.309017f, 0.500000f, - 0.681718f, 0.147621f, 0.716567f, - 0.587785f, 0.425325f, 0.688191f, - 0.955423f, 0.295242f, 0.000000f, - 1.000000f, 0.000000f, 0.000000f, - 0.951056f, 0.162460f, 0.262866f, - 0.850651f, -0.525731f, 0.000000f, - 0.955423f, -0.295242f, 0.000000f, - 0.864188f, -0.442863f, 0.238856f, - 0.951056f, -0.162460f, 0.262866f, - 0.809017f, -0.309017f, 0.500000f, - 0.681718f, -0.147621f, 0.716567f, - 0.850651f, 0.000000f, 0.525731f, - 0.864188f, 0.442863f, -0.238856f, - 0.809017f, 0.309017f, -0.500000f, - 0.951056f, 0.162460f, -0.262866f, - 0.525731f, 0.000000f, -0.850651f, - 0.681718f, 0.147621f, -0.716567f, - 0.681718f, -0.147621f, -0.716567f, - 0.850651f, 0.000000f, -0.525731f, - 0.809017f, -0.309017f, -0.500000f, - 0.864188f, -0.442863f, -0.238856f, - 0.951056f, -0.162460f, -0.262866f, - 0.147621f, 0.716567f, -0.681718f, - 0.309017f, 0.500000f, -0.809017f, - 0.425325f, 0.688191f, -0.587785f, - 0.442863f, 0.238856f, -0.864188f, - 0.587785f, 0.425325f, -0.688191f, - 0.688191f, 0.587785f, -0.425325f, - -0.147621f, 0.716567f, -0.681718f, - -0.309017f, 0.500000f, -0.809017f, - 0.000000f, 0.525731f, -0.850651f, - -0.525731f, 0.000000f, -0.850651f, - -0.442863f, 0.238856f, -0.864188f, - -0.295242f, 0.000000f, -0.955423f, - -0.162460f, 0.262866f, -0.951056f, - 0.000000f, 0.000000f, -1.000000f, - 0.295242f, 0.000000f, -0.955423f, - 0.162460f, 0.262866f, -0.951056f, - -0.442863f, -0.238856f, -0.864188f, - -0.309017f, -0.500000f, -0.809017f, - -0.162460f, -0.262866f, -0.951056f, - 0.000000f, -0.850651f, -0.525731f, - -0.147621f, -0.716567f, -0.681718f, - 0.147621f, -0.716567f, -0.681718f, - 0.000000f, -0.525731f, -0.850651f, - 0.309017f, -0.500000f, -0.809017f, - 0.442863f, -0.238856f, -0.864188f, - 0.162460f, -0.262866f, -0.951056f, - 0.238856f, -0.864188f, -0.442863f, - 0.500000f, -0.809017f, -0.309017f, - 0.425325f, -0.688191f, -0.587785f, - 0.716567f, -0.681718f, -0.147621f, - 0.688191f, -0.587785f, -0.425325f, - 0.587785f, -0.425325f, -0.688191f, - 0.000000f, -0.955423f, -0.295242f, - 0.000000f, -1.000000f, 0.000000f, - 0.262866f, -0.951056f, -0.162460f, - 0.000000f, -0.850651f, 0.525731f, - 0.000000f, -0.955423f, 0.295242f, - 0.238856f, -0.864188f, 0.442863f, - 0.262866f, -0.951056f, 0.162460f, - 0.500000f, -0.809017f, 0.309017f, - 0.716567f, -0.681718f, 0.147621f, - 0.525731f, -0.850651f, 0.000000f, - -0.238856f, -0.864188f, -0.442863f, - -0.500000f, -0.809017f, -0.309017f, - -0.262866f, -0.951056f, -0.162460f, - -0.850651f, -0.525731f, 0.000000f, - -0.716567f, -0.681718f, -0.147621f, - -0.716567f, -0.681718f, 0.147621f, - -0.525731f, -0.850651f, 0.000000f, - -0.500000f, -0.809017f, 0.309017f, - -0.238856f, -0.864188f, 0.442863f, - -0.262866f, -0.951056f, 0.162460f, - -0.864188f, -0.442863f, 0.238856f, - -0.809017f, -0.309017f, 0.500000f, - -0.688191f, -0.587785f, 0.425325f, - -0.681718f, -0.147621f, 0.716567f, - -0.442863f, -0.238856f, 0.864188f, - -0.587785f, -0.425325f, 0.688191f, - -0.309017f, -0.500000f, 0.809017f, - -0.147621f, -0.716567f, 0.681718f, - -0.425325f, -0.688191f, 0.587785f, - -0.162460f, -0.262866f, 0.951056f, - 0.442863f, -0.238856f, 0.864188f, - 0.162460f, -0.262866f, 0.951056f, - 0.309017f, -0.500000f, 0.809017f, - 0.147621f, -0.716567f, 0.681718f, - 0.000000f, -0.525731f, 0.850651f, - 0.425325f, -0.688191f, 0.587785f, - 0.587785f, -0.425325f, 0.688191f, - 0.688191f, -0.587785f, 0.425325f, - -0.955423f, 0.295242f, 0.000000f, - -0.951056f, 0.162460f, 0.262866f, - -1.000000f, 0.000000f, 0.000000f, - -0.850651f, 0.000000f, 0.525731f, - -0.955423f, -0.295242f, 0.000000f, - -0.951056f, -0.162460f, 0.262866f, - -0.864188f, 0.442863f, -0.238856f, - -0.951056f, 0.162460f, -0.262866f, - -0.809017f, 0.309017f, -0.500000f, - -0.864188f, -0.442863f, -0.238856f, - -0.951056f, -0.162460f, -0.262866f, - -0.809017f, -0.309017f, -0.500000f, - -0.681718f, 0.147621f, -0.716567f, - -0.681718f, -0.147621f, -0.716567f, - -0.850651f, 0.000000f, -0.525731f, - -0.688191f, 0.587785f, -0.425325f, - -0.587785f, 0.425325f, -0.688191f, - -0.425325f, 0.688191f, -0.587785f, - -0.425325f, -0.688191f, -0.587785f, - -0.587785f, -0.425325f, -0.688191f, - -0.688191f, -0.587785f, -0.425325f - }; - - private static void loadFrames(String filename, List/*<IFrame>*/ md2p) throws IOException { - FileModel mf = loadMD2File(filename); - computeFrames(mf, md2p); - } - - private static void loadFrames(InputStream in, List/*<IFrame>*/ md2p) throws IOException { - FileModel mf = loadMD2File(in); - computeFrames(mf, md2p); - } - - private static void computeFrames(FileModel mf, List/*<IFrame>*/ md2p) throws IOException { - for (int i = 0; i < mf.frames.length; i++) { - IFrame f = new IFrame(); - md2p.add(f); - FileFrame curframe = mf.frames[i]; - f.pn = new PositionNormal[curframe.verts.length]; - for (int j = 0; j < curframe.verts.length; j++) { - PositionNormal pn = new PositionNormal(); - pn.x = (((curframe.verts[j].v[0] & 0xFF) * curframe.scale[0]) + curframe.translate[0]) * .025f; - pn.y = (((curframe.verts[j].v[1] & 0xFF) * curframe.scale[1]) + curframe.translate[1]) * .025f; - pn.z = (((curframe.verts[j].v[2] & 0xFF) * curframe.scale[2]) + curframe.translate[2]) * .025f; - int normal_index = curframe.verts[j].lightnormalindex & 0xFF; - pn.nx = normalTable[3 * normal_index + 0]; - pn.ny = normalTable[3 * normal_index + 1]; - pn.nz = normalTable[3 * normal_index + 2]; - f.pn[j] = pn; - } - - List/*<Triangle>*/ tris = new ArrayList(); - int[] idx = new int[1]; - while (mf.glcmds[idx[0]] != 0) { - int vertnum; - boolean is_strip; - if (mf.glcmds[idx[0]] > 0) { - vertnum = mf.glcmds[idx[0]++]; is_strip = true; // triangle strip - } else { - vertnum = -mf.glcmds[idx[0]++]; is_strip = false; // triangle fan - } - - if (is_strip) { - Vertex[] prev = new Vertex[2]; - prev[0] = extractVertex(mf.glcmds, idx); - prev[1] = extractVertex(mf.glcmds, idx); - for (int j = 2; j < vertnum; j++) { - Triangle tri = new Triangle(); - if ((j % 2) == 0) { - tri.v[0] = prev[0]; - tri.v[1] = prev[1]; - tri.v[2] = extractVertex(mf.glcmds, idx); - prev[0] = tri.v[2]; - } else { - tri.v[0] = prev[1]; - tri.v[1] = extractVertex(mf.glcmds, idx); - tri.v[2] = prev[0]; - prev[1] = tri.v[1]; - } - // swap v[1] and v[2] to fix triangle winding - Vertex hold = tri.v[1]; - tri.v[1] = tri.v[2]; - tri.v[2] = hold; - tris.add(tri); - } - } else { - // is fan - Vertex ctr = extractVertex(mf.glcmds, idx); - Vertex prev = extractVertex(mf.glcmds, idx); - for (int j = 2; j < vertnum; j++) { - Triangle tri = new Triangle(); - tri.v[0] = ctr; - tri.v[1] = prev; - tri.v[2] = extractVertex(mf.glcmds, idx); - prev = tri.v[2]; - // swap v[1] and v[2] to fix triangle winding - Vertex hold = tri.v[1]; - tri.v[1] = tri.v[2]; - tri.v[2] = hold; - tris.add(tri); - } - } - } - f.tri = (Triangle[]) tris.toArray(new Triangle[0]); - } - } - - private static FileModel loadMD2File(ByteBuffer buf) throws IOException { - buf.order(ByteOrder.LITTLE_ENDIAN); - FileModel md2p = new FileModel(); - FileHeader header = readHeader(buf); - buf.position(header.ofs_frames); - readFrames(buf, header, md2p); - buf.position(header.ofs_glcmds); - readGLCommands(buf, header, md2p); - return md2p; - } - - private static FileModel loadMD2File(InputStream in) throws IOException { - in = new BufferedInputStream(in); - int avail = in.available(); - byte[] data = new byte[avail]; - int numRead = 0; - int pos = 0; - do { - if (pos + avail > data.length) { - byte[] newData = new byte[pos + avail]; - System.arraycopy(data, 0, newData, 0, pos); - data = newData; - } - numRead = in.read(data, pos, avail); - if (numRead >= 0) { - pos += numRead; - } - avail = in.available(); - } while (avail > 0 && numRead >= 0); - ByteBuffer buf = ByteBuffer.allocateDirect(pos); - buf.put(data, 0, pos); - buf.rewind(); - return loadMD2File(buf); - } - - private static FileModel loadMD2File(String filename) throws IOException { - FileInputStream fis = new FileInputStream(filename); - FileChannel chan = fis.getChannel(); - ByteBuffer buf = chan.map(FileChannel.MapMode.READ_ONLY, 0, fis.available()); - FileModel md2p = loadMD2File(buf); - chan.close(); - fis.close(); - return md2p; - } - - private static FileHeader readHeader(ByteBuffer buf) { - FileHeader header = new FileHeader(); - header.ident = buf.getInt(); - header.version = buf.getInt(); - header.skinwidth = buf.getInt(); - header.skinheight = buf.getInt(); - header.framesize = buf.getInt(); - header.num_skins = buf.getInt(); - header.num_xyz = buf.getInt(); - header.num_st = buf.getInt(); - header.num_tris = buf.getInt(); - header.num_glcmds = buf.getInt(); - header.num_frames = buf.getInt(); - header.ofs_skins = buf.getInt(); - header.ofs_st = buf.getInt(); - header.ofs_tris = buf.getInt(); - header.ofs_frames = buf.getInt(); - header.ofs_glcmds = buf.getInt(); - header.ofs_end = buf.getInt(); - return header; - } - - private static int numVerts(int framesize) { - return (framesize >> 2) - 10; - } - - private static void readFrames(ByteBuffer buf, FileHeader header, FileModel md2p) throws IOException { - int numframes = header.num_frames; - int framesize = header.framesize; - int numVerts = numVerts(framesize); - FileFrame[] frames = new FileFrame[numframes]; - byte[] name = new byte[16]; - for (int i = 0; i < numframes; i++) { - FileFrame frame = new FileFrame(); - frame.scale[0] = buf.getFloat(); - frame.scale[1] = buf.getFloat(); - frame.scale[2] = buf.getFloat(); - frame.translate[0] = buf.getFloat(); - frame.translate[1] = buf.getFloat(); - frame.translate[2] = buf.getFloat(); - buf.get(name); - try { - frame.name = new String(name, "US-ASCII"); - } catch (UnsupportedEncodingException e) { - throw new IOException(e.toString()); - } - frame.verts = new FileCompressedVertex[numVerts]; - for (int j = 0; j < numVerts; j++) { - FileCompressedVertex vert = new FileCompressedVertex(); - buf.get(vert.v); - vert.lightnormalindex = buf.get(); - frame.verts[j] = vert; - } - frames[i] = frame; - } - md2p.frames = frames; - } - - private static void readGLCommands(ByteBuffer buf, FileHeader header, FileModel md2p) { - int num_glcmds = header.num_glcmds; - int[] glcmds = new int[num_glcmds]; - for (int i = 0; i < num_glcmds; i++) { - glcmds[i] = buf.getInt(); - } - md2p.glcmds = glcmds; - } - - private static Vertex extractVertex(int[] glcmds, int[] idx) { - Vertex v = new Vertex(); - v.tc.s = Float.intBitsToFloat(glcmds[idx[0]++]); - v.tc.t = Float.intBitsToFloat(glcmds[idx[0]++]); - v.pn_index = glcmds[idx[0]++]; - return v; - } - - private static boolean compareFrames(List/*<IFrame>*/ m) { - IFrame f0 = (IFrame) m.get(0); - boolean same_topology = true; - boolean same_texcoords = true; - - for (int i = 1; i < m.size(); i++) { - IFrame f = (IFrame) m.get(i); - if (f.pn.length != f0.pn.length) { - System.err.println("pn size different for iframe " + i + " : " + f0.pn.length + " != " + f.pn.length); - same_topology = false; - } - if (f.tri.length != f0.tri.length) { - System.err.println("tri size different for iframe " + i + " : " + f0.tri.length + " != " + f.tri.length); - same_topology = false; - } - if (same_topology) { - for (int j = 0; j < f.tri.length; j++) { - Triangle t0 = f0.tri[j]; - Triangle t = f.tri[j]; - for (int k = 0; k < 3; k++) { - if (t0.v[k].pn_index != t.v[k].pn_index) { - System.err.println("tri " + j + " triangle pn_index " + k + " different!"); - same_topology = false; - } - if (t0.v[k].tc.s != t.v[k].tc.s || t0.v[k].tc.t != t.v[k].tc.t) { - System.err.println("tri " + j + " triangle tc " + k + " different!"); - same_texcoords = false; - } - } - } - } - } - - return same_topology && same_texcoords; - } - - /** - Computes the plane equations for each polygon of a frame. - */ - private static void computeFramePlanes(Triangle[] tri, Frame f) { - f.triplane = new Plane[tri.length]; - for (int i = 0; i < tri.length; i++) { - Triangle t = tri[i]; - int ia = t.v[0].pn_index; - int ib = t.v[1].pn_index; - int ic = t.v[2].pn_index; - Plane p = new Plane(); - computePlane(f.pn[ia], f.pn[ib], f.pn[ic], p); - f.triplane[i] = p; - } - } - - private static int computeWingedEdges(Model m) { - Triangle[] tri = m.tri; - List/*<WingedEdge>*/ edge = new ArrayList/*<WingedEdge>*/(); - - // for each triangle, try to add each edge to the winged_edge vector, - // but check first to see if it's already there - int tsize = tri.length; - for (int i = 0; i < tsize; i++) { - Triangle t = tri[i]; - for (int j = 0; j < 3; j++) { - WingedEdge we = new WingedEdge(); - we.e[0] = t.v[ j ].pn_index; - we.e[1] = t.v[(j+1)%3].pn_index; - we.w[0] = i; - we.w[1] = -1; // subsequent attempt to add this edge will replace w[1] - addEdge(edge, we); - } - } - int open_edge = 0; - for (int i = 0; i < edge.size(); i++) { - if (((WingedEdge) edge.get(i)).w[1] == -1) - open_edge++; - } - //fprintf(stderr, "out of % edges, there were %d open edges\n", edge.size(), open_edge); - m.edge = (WingedEdge[]) edge.toArray(new WingedEdge[0]); - return open_edge; - } - - /** - add_edge will look to see if the current edge is already in the list. - If it is not, it will add it. If it is, it will replace the w[1] in - the existing table with w[0] from the edge being added. - */ - private static void addEdge(List/*<WingedEdge>*/ edge, WingedEdge we) { - int esize = edge.size(); - for (int i=0; i < esize; i++) { - WingedEdge we0 = (WingedEdge) edge.get(i); - if (we0.e[0] == we.e[0] && we0.e[1] == we.e[1]) { - System.err.println("facingness different between polys on edge!"); - } - if(we0.e[0] == we.e[1] && we0.e[1] == we.e[0]) { - if(we0.w[1] != -1) { - System.err.println("triple edge! bad..."); - } - we0.w[1] = we.w[0]; // pair the edge and return - return; - } - } - edge.add(we); // otherwise, add the new edge - } - - public static void main(String[] args) { - for (int i = 0; i < args.length; i++) { - try { - MD2.Model model = loadMD2(args[i]); - System.err.println("Successfully parsed " + args[i]); - } catch (IOException e) { - System.err.println("Error parsing " + args[i] + ":"); - e.printStackTrace(); - } - } - } -} diff --git a/src/demos/util/ObjReader.java b/src/demos/util/ObjReader.java deleted file mode 100644 index 51da398..0000000 --- a/src/demos/util/ObjReader.java +++ /dev/null @@ -1,357 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.util; - -import java.io.*; -import java.nio.*; -import java.util.*; - -import com.sun.opengl.util.*; - -/** Simple parser for Wavefront .OBJ files. Does not support all file - options -- currently requires vertices and normals (only) to be - present. */ - -public class ObjReader { - private int verticesPerFace = -1; - private FloatBuffer vertices; - private FloatBuffer normals; - private float[] aabbMin = new float[3]; - private float[] aabbMax = new float[3]; - private float[] center = new float[3]; - private float radius; - // If we wanted this to be really general we'd have an array of - // FloatLists for the various kinds of vertices as well - private FloatList tmpVertices; - private FloatList tmpVertexNormals; - private IntList faceIndices; - private IntList[] tmpFaceIndices; - - public ObjReader(String filename) throws IOException { - this(new File(filename)); - } - - public ObjReader(InputStream in) throws IOException { - this(new InputStreamReader(in)); - } - - public ObjReader(File file) throws IOException { - this (new FileReader(file)); - } - - public ObjReader(Reader r) throws IOException { - BufferedReader reader = new BufferedReader(r); - String line = null; - int lineNo = 0; - float[] floatTmp = new float[3]; - - while ((line = reader.readLine()) != null) { - ++lineNo; - if (line.length() > 0) { - char c = line.charAt(0); - // FIXME: support continuation of lines with trailing '\' - switch (c) { - case '#': - break; - - case 'v': - if (Character.isWhitespace(line.charAt(1))) { - addVertex(parseFloats(line, 3, floatTmp, lineNo)); - } else if (line.startsWith("vn")) { - addVertexNormal(parseFloats(line, 3, floatTmp, lineNo)); - } else { - throw new IOException("Unsupported vertex command on line " + lineNo); - } - break; - - case 'f': - parseIndices(line, lineNo); - - default: - // For now we ignore all other lines - } - } - } - - // Now have all vertex information. - // Make it possible to use same indices for both vertices and normals - condenseIndices(); - - // Compute axis-aligned bounding box and radius - computeBoundingBox(); - } - - public void rescale(float amount) { - for (int i = 0; i < vertices.capacity(); i++) { - vertices.put(i, vertices.get(i) * amount); - } - } - - public FloatBuffer getVertices() { - return vertices; - } - - public FloatBuffer getVertexNormals() { - return normals; - } - - public int[] getFaceIndices() { - return faceIndices.getData(); - } - - public int getVerticesPerFace() { - return verticesPerFace; - } - - public float[] getAABBMin() { - return aabbMin; - } - - public float[] getAABBMax() { - return aabbMax; - } - - public float[] getCenter() { - return center; - } - - public float getRadius() { - return radius; - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private void addVertex(float[] tmp) { - if (tmpVertices == null) { - tmpVertices = new FloatList(); - } - for (int i = 0; i < 3; i++) { - tmpVertices.add(tmp[i]); - } - } - - private void addVertexNormal(float[] tmp) { - if (tmpVertexNormals == null) { - tmpVertexNormals = new FloatList(); - } - for (int i = 0; i < 3; i++) { - tmpVertexNormals.add(tmp[i]); - } - } - - private float[] parseFloats(String line, int num, float[] tmp, int lineNo) throws IOException { - StringTokenizer tok = new StringTokenizer(line); - tok.nextToken(); // skip command - int idx = 0; - while (tok.hasMoreTokens()) { - if (idx >= tmp.length) { - throw new IOException("Too many floating-point values on line " + lineNo); - } - tmp[idx++] = Float.parseFloat(tok.nextToken()); - } - return tmp; - } - - private void parseIndices(String line, int lineNo) throws IOException { - StringTokenizer tok = new StringTokenizer(line); - tok.nextToken(); // skip command - List tokens = new ArrayList(); - while (tok.hasMoreTokens()) { - tokens.add(tok.nextToken()); - } - // This is the number of vertices in this face. - // If we seem to have already found this, it had better match the - // previously read value (for now - don't want to add the - // complexity of supporting some faces with a certain number of - // vertices and some with a different number) - if (verticesPerFace < 0) { - verticesPerFace = tokens.size(); - } else { - if (verticesPerFace != tokens.size()) { - throw new IOException("Face on line " + lineNo + " had " + tokens.size() + - " vertices, but had already previously set the number of vertices per face to " + - verticesPerFace); - } - } - // Now read the individual indices out of each token - for (Iterator iter = tokens.iterator(); iter.hasNext(); ) { - String indices = (String) iter.next(); - if (tmpFaceIndices == null) { - StringTokenizer tmpTok = new StringTokenizer(indices, "/"); - int numIndicesPerVertex = 0; - while (tmpTok.hasMoreTokens()) { - tmpTok.nextToken(); - ++numIndicesPerVertex; - } - tmpFaceIndices = new IntList[numIndicesPerVertex]; - for (int i = 0; i < numIndicesPerVertex; i++) { - tmpFaceIndices[i] = new IntList(); - } - } - - StringTokenizer tok2 = new StringTokenizer(indices, "/"); - int which = 0; - while (tok2.hasMoreTokens()) { - if (which >= tmpFaceIndices.length) { - throw new IOException("Expected all vertices to have " + tmpFaceIndices.length + - " indices based on earlier input, but saw vertex with more on line " + lineNo); - } - String token = tok2.nextToken(); - int index = Integer.parseInt(token); - tmpFaceIndices[which].add(index); - ++which; - } - } - } - - // Don't know the hashing rules for arrays off the top of my head - static class Indices { - int[] data; - Indices(int[] data) { - this.data = data; - } - - public boolean equals(Object obj) { - if ((obj == null) || (!(obj instanceof Indices))) { - return false; - } - - Indices other = (Indices) obj; - - if (data.length != other.data.length) { - return false; - } - - for (int i = 0; i < data.length; i++) { - if (data[i] != other.data[i]) { - return false; - } - } - - return true; - } - - public int hashCode() { - int hash = 0; - for (int i = 0; i < data.length; i++) { - hash ^= data[i]; - } - return hash; - } - } - - private void condenseIndices() { - FloatList newVertices = new FloatList(); - FloatList newVertexNormals = new FloatList(); - IntList newIndices = new IntList(); - int nextIndex = 0; - HashMap condensingMap = new HashMap(); - for (int i = 0; i < tmpFaceIndices[0].size(); i++) { - Indices indices = getIndices(i); - Integer newIndex = (Integer) condensingMap.get(indices); - if (newIndex == null) { - // Fabricate new vertex and normal index for this one - // FIXME: generalize this by putting vertices and vertex - // normals in FloatList[] as well - condensingMap.put(indices, new Integer(nextIndex)); - int vtxIdx = 3 * (indices.data[0] - 1); - int vtxNrmIdx = 3 * (indices.data[1] - 1); - newVertices.add(tmpVertices.get(vtxIdx + 0)); - newVertices.add(tmpVertices.get(vtxIdx + 1)); - newVertices.add(tmpVertices.get(vtxIdx + 2)); - newVertexNormals.add(tmpVertexNormals.get(vtxNrmIdx + 0)); - newVertexNormals.add(tmpVertexNormals.get(vtxNrmIdx + 1)); - newVertexNormals.add(tmpVertexNormals.get(vtxNrmIdx + 2)); - newIndices.add(nextIndex); - ++nextIndex; - } else { - newIndices.add(newIndex.intValue()); - } - } - newVertices.trim(); - newVertexNormals.trim(); - newIndices.trim(); - vertices = BufferUtil.newFloatBuffer(newVertices.size()); - vertices.put(newVertices.getData()); - vertices.rewind(); - normals = BufferUtil.newFloatBuffer(newVertexNormals.size()); - normals.put(newVertexNormals.getData()); - normals.rewind(); - faceIndices = newIndices; - tmpVertices = null; - tmpVertexNormals = null; - } - - private void computeBoundingBox() { - for (int i = 0; i < vertices.capacity(); i += 3) { - if (i == 0) { - aabbMin[0] = vertices.get(i + 0); - aabbMin[1] = vertices.get(i + 1); - aabbMin[2] = vertices.get(i + 2); - aabbMax[0] = vertices.get(i + 0); - aabbMax[1] = vertices.get(i + 1); - aabbMax[2] = vertices.get(i + 2); - } else { - aabbMin[0] = Math.min(aabbMin[0], vertices.get(i + 0)); - aabbMin[1] = Math.min(aabbMin[1], vertices.get(i + 1)); - aabbMin[2] = Math.min(aabbMin[2], vertices.get(i + 2)); - aabbMax[0] = Math.max(aabbMax[0], vertices.get(i + 0)); - aabbMax[1] = Math.max(aabbMax[1], vertices.get(i + 1)); - aabbMax[2] = Math.max(aabbMax[2], vertices.get(i + 2)); - } - } - center[0] = 0.5f * (aabbMin[0] + aabbMax[0]); - center[1] = 0.5f * (aabbMin[1] + aabbMax[1]); - center[2] = 0.5f * (aabbMin[2] + aabbMax[2]); - radius = (float) Math.sqrt((aabbMax[0] - center[0]) * (aabbMax[0] - center[0]) + - (aabbMax[1] - center[1]) * (aabbMax[1] - center[1]) + - (aabbMax[2] - center[2]) * (aabbMax[2] - center[2])); - } - - private Indices getIndices(int index) { - int[] indices = new int[tmpFaceIndices.length]; - for (int i = 0; i < tmpFaceIndices.length; i++) { - indices[i] = tmpFaceIndices[i].get(index); - } - return new Indices(indices); - } -} diff --git a/src/demos/util/ScreenResSelector.java b/src/demos/util/ScreenResSelector.java deleted file mode 100755 index 5b085de..0000000 --- a/src/demos/util/ScreenResSelector.java +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.util; - -import java.awt.*; -import java.awt.event.*; -import java.util.*; -import javax.swing.*; - -public class ScreenResSelector { - static interface DisplayModeFilter { - public boolean filter(DisplayMode mode); - } - - public static java.util.List getAvailableDisplayModes() { - java.util.List modes = getDisplayModes(); - final DisplayMode curMode = getCurrentDisplayMode(); - // Filter everything which is higher frequency than the current - // display mode - modes = filterDisplayModes(modes, new DisplayModeFilter() { - public boolean filter(DisplayMode mode) { - return (mode.getRefreshRate() <= curMode.getRefreshRate()); - } - }); - // Filter everything that is not at least 24-bit - modes = filterDisplayModes(modes, new DisplayModeFilter() { - public boolean filter(DisplayMode mode) { - // Bit depth < 0 means "multi-depth" -- can't reason about it - return (mode.getBitDepth() < 0 || mode.getBitDepth() >= 24); - } - }); - // Filter everything less than 640x480 - modes = filterDisplayModes(modes, new DisplayModeFilter() { - public boolean filter(DisplayMode mode) { - return (mode.getWidth() >= 640 && mode.getHeight() >= 480); - } - }); - if (modes.size() == 0) { - throw new RuntimeException("Couldn't find any valid display modes"); - } - return modes; - } - - /** Shows a modal dialog containing the available screen resolutions - and requests selection of one of them. Returns the selected one. */ - public static DisplayMode showSelectionDialog() { - SelectionDialog dialog = new SelectionDialog(); - dialog.setVisible(true); - dialog.waitFor(); - return dialog.selected(); - } - - public static void main(String[] args) { - DisplayMode mode = showSelectionDialog(); - if (mode != null) { - System.err.println("Selected display mode:"); - System.err.println(modeToString(mode)); - } else { - System.err.println("No display mode selected."); - } - System.exit(0); - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private static DisplayMode getCurrentDisplayMode() { - GraphicsDevice dev = getDefaultScreenDevice(); - return dev.getDisplayMode(); - } - - private static java.util.List/*<DisplayMode>*/ getDisplayModes() { - GraphicsDevice dev = getDefaultScreenDevice(); - DisplayMode[] modes = dev.getDisplayModes(); - return toList(modes); - } - - private static GraphicsDevice getDefaultScreenDevice() { - return GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); - } - - private static java.util.List/*<DisplayMode>*/ toList(DisplayMode[] modes) { - java.util.List res = new ArrayList(); - for (int i = 0; i < modes.length; i++) { - res.add(modes[i]); - } - return res; - } - - private static String modeToString(DisplayMode mode) { - return (((mode.getBitDepth() > 0) ? (mode.getBitDepth() + " bits, ") : "") + - mode.getWidth() + "x" + mode.getHeight() + ", " + - mode.getRefreshRate() + " Hz"); - } - - private static String[] modesToString(java.util.List/*<DisplayMode>*/ modes) { - String[] res = new String[modes.size()]; - int i = 0; - for (Iterator iter = modes.iterator(); iter.hasNext(); ) { - res[i++] = modeToString((DisplayMode) iter.next()); - } - return res; - } - - private static java.util.List/*<DisplayMode>*/ filterDisplayModes(java.util.List/*<DisplayMode>*/ modes, - DisplayModeFilter filter) { - java.util.List res = new ArrayList(); - for (Iterator iter = modes.iterator(); iter.hasNext(); ) { - DisplayMode mode = (DisplayMode) iter.next(); - if (filter.filter(mode)) { - res.add(mode); - } - } - return res; - } - - static class SelectionDialog extends JFrame { - private Object monitor = new Object(); - private java.util.List modes; - private volatile boolean done = false; - private volatile int selectedIndex; - - public SelectionDialog() { - super(); - - setTitle("Display Modes"); - modes = getAvailableDisplayModes(); - String[] strings = modesToString(modes); - final JList modeList = new JList(strings); - modeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - modeList.setSelectedIndex(0); - JScrollPane scroller = new JScrollPane(modeList); - getContentPane().setLayout(new BorderLayout()); - JPanel panel = new JPanel(); - panel.setLayout(new BorderLayout()); - panel.add(new JLabel("Select full-screen display mode,"), BorderLayout.NORTH); - panel.add(new JLabel("or Cancel for windowed mode:"), BorderLayout.CENTER); - getContentPane().add(BorderLayout.NORTH, panel); - getContentPane().add(BorderLayout.CENTER, scroller); - JPanel buttonPanel = new JPanel(); - buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS)); - buttonPanel.add(Box.createGlue()); - JButton button = new JButton("OK"); - button.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - selectedIndex = modeList.getSelectedIndex(); - done = true; - synchronized(monitor) { - monitor.notify(); - } - setVisible(false); - dispose(); - } - }); - buttonPanel.add(button); - buttonPanel.add(Box.createHorizontalStrut(10)); - button = new JButton("Cancel"); - button.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - selectedIndex = -1; - done = true; - synchronized(monitor) { - monitor.notify(); - } - setVisible(false); - dispose(); - } - }); - buttonPanel.add(button); - buttonPanel.add(Box.createGlue()); - getContentPane().add(BorderLayout.SOUTH, buttonPanel); - setSize(300, 200); - center(this, Toolkit.getDefaultToolkit().getScreenSize()); - } - - public void waitFor() { - synchronized(monitor) { - while (!done) { - try { - monitor.wait(); - } catch (InterruptedException e) { - } - } - } - } - - public DisplayMode selected() { - if (selectedIndex < 0) { - return null; - } else { - return (DisplayMode) modes.get(selectedIndex); - } - } - } - - private static void center(Component component, - Dimension containerDimension) { - Dimension sz = component.getSize(); - int x = ((containerDimension.width - sz.width) / 2); - int y = ((containerDimension.height - sz.height) / 2); - component.setLocation(x, y); - } -} diff --git a/src/demos/util/SystemTime.java b/src/demos/util/SystemTime.java deleted file mode 100644 index b6a154b..0000000 --- a/src/demos/util/SystemTime.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.util; - -/** Implementation of {@link demos.util.Time} interface based - on {@link java.lang.System.currentTimeMillis}. Performs smoothing - internally to avoid effects of poor granularity of - currentTimeMillis on Windows platform in particular. */ - -public class SystemTime implements Time { - private static final int DEFAULT_NUM_SMOOTHING_SAMPLES = 10; - private long[] samples = new long[DEFAULT_NUM_SMOOTHING_SAMPLES]; - private int numSmoothingSamples; - private int curSmoothingSample; // Index of current sample to be replaced - private long baseTime = System.currentTimeMillis(); - private boolean hasCurTime; - private double curTime; - private double deltaT; - - /** Sets number of smoothing samples. Defaults to 10. Note that - there may be a discontinuity in the reported time after a call - to this method. */ - public void setNumSmoothingSamples(int num) { - samples = new long[num]; - numSmoothingSamples = 0; - curSmoothingSample = 0; - hasCurTime = false; - } - - /** Returns number of smoothing samples; default is 10. */ - public int getNumSmoothingSamples() { - return samples.length; - } - - /** Rebases this timer. After very long periods of time the - resolution of this timer may decrease; the application can call - this to restore higher resolution. Note that there may be a - discontinuity in the reported time after a call to this - method. */ - public void rebase() { - baseTime = System.currentTimeMillis(); - setNumSmoothingSamples(samples.length); - } - - public void update() { - long tmpTime = System.currentTimeMillis(); - long diffSinceBase = tmpTime - baseTime; - samples[curSmoothingSample] = diffSinceBase; - curSmoothingSample = (curSmoothingSample + 1) % samples.length; - numSmoothingSamples = Math.min(1 + numSmoothingSamples, samples.length); - // Average of samples is current time - double newCurTime = 0.0; - for (int i = 0; i < numSmoothingSamples; i++) { - newCurTime += samples[i]; - } - newCurTime /= (1000.0f * numSmoothingSamples); - double lastTime = curTime; - if (!hasCurTime) { - lastTime = newCurTime; - hasCurTime = true; - } - deltaT = newCurTime - lastTime; - curTime = newCurTime; - } - - public double time() { - return curTime; - } - - public double deltaT() { - return deltaT; - } -} diff --git a/src/demos/util/Time.java b/src/demos/util/Time.java deleted file mode 100644 index f3ede1f..0000000 --- a/src/demos/util/Time.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.util; - -/** Interface abstracting concept of time from applications. */ - -public interface Time { - /** Updates this Time object. Call update() each frame before - calling the accessor routines. */ - public void update(); - /** Time in seconds since beginning of application. */ - public double time(); - /** Time in seconds since last update. */ - public double deltaT(); -} diff --git a/src/demos/util/Triceratops.java b/src/demos/util/Triceratops.java deleted file mode 100644 index c7fa115..0000000 --- a/src/demos/util/Triceratops.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.util; - -import java.io.*; - -import javax.media.opengl.*; - -/** Renders a triceratops. <P> - - Copyright by Thomas Baier ([email protected])<br> - Created by OpenGL Export Plugin 1.0 at Fri Oct 27 22:04:55 2000<br> - OpenGL-Structure <br><p> - - Ported to Java by Kenneth Russell -*/ -public class Triceratops { - - /** Draws the triceratops object. Callers should capture the result - in a display list. */ - public static void drawObject(GL gl) throws IOException { - Reader reader = new BufferedReader(new InputStreamReader( - Triceratops.class.getClassLoader().getResourceAsStream("demos/data/models/triceratops.txt"))); - StreamTokenizer tok = new StreamTokenizer(reader); - // Reset tokenizer's syntax so numbers are not parsed - tok.resetSyntax(); - tok.wordChars('a', 'z'); - tok.wordChars('A', 'Z'); - tok.wordChars('0', '9'); - tok.wordChars('-', '-'); - tok.wordChars('.', '.'); - tok.wordChars(128 + 32, 255); - tok.whitespaceChars(0, ' '); - tok.whitespaceChars(',', ','); - tok.whitespaceChars('{', '{'); - tok.whitespaceChars('}', '}'); - tok.commentChar('/'); - tok.quoteChar('"'); - tok.quoteChar('\''); - tok.slashSlashComments(true); - tok.slashStarComments(true); - - // Read in file - int numVertices = nextInt(tok, "number of vertices"); - float[] vertices = new float[numVertices * 3]; - for (int i = 0; i < numVertices * 3; i++) { - vertices[i] = nextFloat(tok, "vertex"); - } - int numNormals = nextInt(tok, "number of normals"); - float[] normals = new float[numNormals * 3]; - for (int i = 0; i < numNormals * 3; i++) { - normals[i] = nextFloat(tok, "normal"); - } - int numFaceIndices = nextInt(tok, "number of face indices"); - short[] faceIndices = new short[numFaceIndices * 9]; - for (int i = 0; i < numFaceIndices * 9; i++) { - faceIndices[i] = (short) nextInt(tok, "face index"); - } - - reader.close(); - - float sf = 0.1f; - gl.glBegin(GL.GL_TRIANGLES); - for (int i = 0; i < faceIndices.length; i += 9) { - for (int j = 0; j < 3; j++) { - int vi = faceIndices[i + j ] & 0xFFFF; - int ni = faceIndices[i + j + 3] & 0xFFFF; - gl.glNormal3f(normals[3 * ni], - normals[3 * ni + 1], - normals[3 * ni + 2]); - gl.glVertex3f(sf * vertices[3 * vi], - sf * vertices[3 * vi + 1], - sf * vertices[3 * vi + 2]); - } - } - gl.glEnd(); - } - - private static int nextInt(StreamTokenizer tok, String error) throws IOException { - if (tok.nextToken() != StreamTokenizer.TT_WORD) { - throw new IOException("Parse error reading " + error + " at line " + tok.lineno()); - } - try { - return Integer.parseInt(tok.sval); - } catch (NumberFormatException e) { - throw new IOException("Parse error reading " + error + " at line " + tok.lineno()); - } - } - - private static float nextFloat(StreamTokenizer tok, String error) throws IOException { - if (tok.nextToken() != StreamTokenizer.TT_WORD) { - throw new IOException("Parse error reading " + error + " at line " + tok.lineno()); - } - try { - return Float.parseFloat(tok.sval); - } catch (NumberFormatException e) { - throw new IOException("Parse error reading " + error + " at line " + tok.lineno()); - } - } -} diff --git a/src/demos/vertexArrayRange/VertexArrayRange.java b/src/demos/vertexArrayRange/VertexArrayRange.java deleted file mode 100644 index 8007232..0000000 --- a/src/demos/vertexArrayRange/VertexArrayRange.java +++ /dev/null @@ -1,722 +0,0 @@ -/* - * Portions Copyright (C) 2003 Sun Microsystems, Inc. - * All rights reserved. - */ - -/* - * - * COPYRIGHT NVIDIA CORPORATION 2003. ALL RIGHTS RESERVED. - * BY ACCESSING OR USING THIS SOFTWARE, YOU AGREE TO: - * - * 1) ACKNOWLEDGE NVIDIA'S EXCLUSIVE OWNERSHIP OF ALL RIGHTS - * IN AND TO THE SOFTWARE; - * - * 2) NOT MAKE OR DISTRIBUTE COPIES OF THE SOFTWARE WITHOUT - * INCLUDING THIS NOTICE AND AGREEMENT; - * - * 3) ACKNOWLEDGE THAT TO THE MAXIMUM EXTENT PERMITTED BY - * APPLICABLE LAW, THIS SOFTWARE IS PROVIDED *AS IS* AND - * THAT NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, - * EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED - * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY - * SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES - * WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS - * OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS - * INFORMATION, OR ANY OTHER PECUNIARY LOSS), INCLUDING ATTORNEYS' - * FEES, RELATING TO THE USE OF OR INABILITY TO USE THIS SOFTWARE, - * EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.vertexArrayRange; - -import java.awt.*; -import java.awt.event.*; -import java.nio.*; -import java.util.*; -import javax.swing.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.*; -import demos.common.*; -import demos.util.*; - -/** <P> A port of NVidia's [tm] Vertex Array Range demonstration to - OpenGL[tm] for Java[tm] and the Java programming language. The - current web site for the demo (which does not appear to contain - the original C++ source code for this demo) is <a href = - "http://developer.nvidia.com/view.asp?IO=Using_GL_NV_fence">here</a>. </P> - - <P> This demonstration requires the following: - - <ul> - <li> A JDK 1.4 implementation - <li> an NVidia GeForce-based card - <li> a recent set of drivers - </ul> - - </P> - - <P> This demonstration illustrates the effective use of the - java.nio direct buffer classes in JDK 1.4 to access memory outside - of the Java garbage-collected heap, in particular that returned - from the NVidia-specific routine wglAllocateMemoryNV. This memory - region is used in conjunction with glVertexArrayRangeNV. </P> - - <P> On a 750 MHz PIII with an SDRAM memory bus and a GeForce 256 - running the Java HotSpot[tm] Client VM and OpenGL for Java 2.8, - this demonstration attains 90% of the speed of the compiled C++ - code, with a frame rate of 27 FPS, compared to 30 FPS for the C++ - version. On higher-end hardware (a dual 667 MHz PIII with RDRAM - and a GeForce 2) the demo currently attains between 65% and 75% of - C++ speed with the HotSpot Client and Server compilers, - respectively. </P> */ - -public class VertexArrayRange extends Demo { - public static void main(String[] args) { - boolean startSlow = false; - - if (args.length > 1) { - usage(); - } - - if (args.length == 1) { - if (args[0].equals("-slow")) { - startSlow = true; - } else { - usage(); - } - } - - GLCanvas canvas = new GLCanvas(); - VertexArrayRange demo = new VertexArrayRange(); - if (startSlow) { - demo.setFlag('v', false); // VAR off - } - canvas.addGLEventListener(demo); - - final Animator animator = new Animator(canvas); - animator.setRunAsFastAsPossible(true); - demo.setDemoListener(new DemoListener() { - public void shutdownDemo() { - runExit(animator); - } - public void repaint() {} - }); - - Frame frame = new Frame("Very Simple NV_vertex_array_range demo"); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - runExit(animator); - } - }); - frame.setLayout(new BorderLayout()); - canvas.setSize(800, 800); - frame.add(canvas, BorderLayout.CENTER); - frame.pack(); - frame.show(); - canvas.requestFocus(); - - animator.start(); - } - - private static void usage() { - System.out.println("usage: java VertexArrayRange [-slow]"); - System.out.println("-slow flag starts up using data in the Java heap"); - System.exit(0); - } - - public VertexArrayRange() { - setFlag(' ', true); // animation on - setFlag('i', true); // infinite viewer and light - setFlag('v', true); // VAR on - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private GLU glu = new GLU(); - private boolean[] b = new boolean[256]; - private static final int SIZEOF_FLOAT = 4; - private static final int STRIP_SIZE = 48; - private int tileSize = 9 * STRIP_SIZE; - private int numBuffers = 4; - private int bufferLength = 1000000; - private int bufferSize = bufferLength * SIZEOF_FLOAT; - private static final int SIN_ARRAY_SIZE = 1024; - - private FloatBuffer bigArrayVar; - private FloatBuffer bigArraySystem; - private FloatBuffer bigArray; - private IntBuffer[] elements; - private float[] xyArray; - - static class VarBuffer { - public FloatBuffer vertices; - public FloatBuffer normals; - public int fence; - } - private VarBuffer[] buffers; - - private float[] sinArray; - private float[] cosArray; - - // Primitive: GL_QUAD_STRIP, GL_LINE_STRIP, or GL_POINTS - private int primitive = GL.GL_QUAD_STRIP; - - // Animation parameters - private float hicoef = .06f; - private float locoef = .10f; - private float hifreq = 6.1f; - private float lofreq = 2.5f; - private float phaseRate = .02f; - private float phase2Rate = -0.12f; - private float phase = 0; - private float phase2 = 0; - - // Temporaries for computation - float[] ysinlo = new float[STRIP_SIZE]; - float[] ycoslo = new float[STRIP_SIZE]; - float[] ysinhi = new float[STRIP_SIZE]; - float[] ycoshi = new float[STRIP_SIZE]; - - // For thread-safety when dealing with keypresses - private volatile boolean toggleVAR = false; - private volatile boolean toggleLighting = false; - private volatile boolean toggleLightingModel = false; - private volatile boolean recomputeElements = false; - - // Frames-per-second computation - private boolean firstProfiledFrame; - private int profiledFrameCount; - private int numDrawElementsCalls; - private long startTimeMillis; - - static class PeriodicIterator { - public PeriodicIterator(int arraySize, - float period, - float initialOffset, - float delta) { - float arrayDelta = arraySize * (delta / period); // floating-point steps-per-increment - increment = (int)(arrayDelta * (1<<16)); // fixed-point steps-per-increment - - float offset = arraySize * (initialOffset / period); // floating-point initial index - initOffset = (int)(offset * (1<<16)); // fixed-point initial index - - arraySizeMask = 0; - int i = 20; // array should be reasonably sized... - while((arraySize & (1<<i)) == 0) { - i--; - } - arraySizeMask = (1<<i)-1; - index = initOffset; - } - - public PeriodicIterator(PeriodicIterator arg) { - this.arraySizeMask = arg.arraySizeMask; - this.increment = arg.increment; - this.initOffset = arg.initOffset; - this.index = arg.index; - } - - public int getIndex() { - return (index >> 16) & arraySizeMask; - } - - public void incr() { - index += increment; - } - - public void decr() { - index -= increment; - } - - public void reset() { - index = initOffset; - } - - private int arraySizeMask; - // fraction bits == 16 - private int increment; - private int initOffset; - private int index; - } - - private void setFlag(char key, boolean val) { - b[((int) key) & 0xFF] = val; - } - - private boolean getFlag(char key) { - return b[((int) key) & 0xFF]; - } - - private void ensurePresent(GL gl, String function) { - if (!gl.isFunctionAvailable(function)) { - final String message = "OpenGL routine \"" + function + "\" not available"; - new Thread(new Runnable() { - public void run() { - JOptionPane.showMessageDialog(null, message, "Unavailable extension", JOptionPane.ERROR_MESSAGE); - shutdownDemo(); - } - }).start(); - throw new RuntimeException(message); - } - } - - public void init(GLAutoDrawable drawable) { - // drawable.setGL(new TraceGL(drawable.getGL(), System.err)); - // drawable.setGL(new DebugGL(drawable.getGL())); - - GL gl = drawable.getGL(); - - // Try and disable synch-to-retrace for fastest framerate - gl.setSwapInterval(0); - - try { - ensurePresent(gl, "glVertexArrayRangeNV"); - ensurePresent(gl, "glGenFencesNV"); - ensurePresent(gl, "glSetFenceNV"); - ensurePresent(gl, "glTestFenceNV"); - ensurePresent(gl, "glFinishFenceNV"); - ensurePresent(gl, "glAllocateMemoryNV"); - } catch (RuntimeException e) { - shutdownDemo(); - throw (e); - } - - gl.glEnable(GL.GL_DEPTH_TEST); - - gl.glClearColor(0, 0, 0, 0); - - gl.glEnable(GL.GL_LIGHT0); - gl.glEnable(GL.GL_LIGHTING); - gl.glEnable(GL.GL_NORMALIZE); - gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT, new float[] {.1f, .1f, 0, 1}, 0); - gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_DIFFUSE, new float[] {.6f, .6f, .1f, 1}, 0); - gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_SPECULAR, new float[] { 1, 1, .75f, 1}, 0); - gl.glMaterialf(GL.GL_FRONT_AND_BACK, GL.GL_SHININESS, 128.f); - - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, new float[] { .5f, 0, .5f, 0}, 0); - gl.glLightModeli(GL.GL_LIGHT_MODEL_LOCAL_VIEWER, 0); - - // NOTE: it looks like GLUT (or something else) sets up the - // projection matrix in the C version of this demo. - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluPerspective(60, 1.0, 0.1, 100); - gl.glMatrixMode(GL.GL_MODELVIEW); - - allocateBigArray(gl, true); - allocateBuffersAndFences(gl); - - sinArray = new float[SIN_ARRAY_SIZE]; - cosArray = new float[SIN_ARRAY_SIZE]; - - for (int i = 0; i < SIN_ARRAY_SIZE; i++) { - double step = i * 2 * Math.PI / SIN_ARRAY_SIZE; - sinArray[i] = (float) Math.sin(step); - cosArray[i] = (float) Math.cos(step); - } - - if (getFlag('v')) { - gl.glEnableClientState(GL.GL_VERTEX_ARRAY_RANGE_NV); - gl.glVertexArrayRangeNV(bufferSize, bigArrayVar); - bigArray = bigArrayVar; - } else { - bigArray = bigArraySystem; - } - setupBuffers(); - gl.glEnableClientState(GL.GL_VERTEX_ARRAY); - gl.glEnableClientState(GL.GL_NORMAL_ARRAY); - - computeElements(); - - drawable.addKeyListener(new KeyAdapter() { - public void keyTyped(KeyEvent e) { - dispatchKey(e.getKeyChar()); - } - }); - } - - private void allocateBuffersAndFences(GL gl) { - buffers = new VarBuffer[numBuffers]; - int[] fences = new int[1]; - for (int i = 0; i < numBuffers; i++) { - buffers[i] = new VarBuffer(); - gl.glGenFencesNV(1, fences, 0); - buffers[i].fence = fences[0]; - } - } - - private void setupBuffers() { - int sliceSize = bufferLength / numBuffers; - for (int i = 0; i < numBuffers; i++) { - int startIndex = i * sliceSize; - buffers[i].vertices = sliceBuffer(bigArray, startIndex, sliceSize); - buffers[i].normals = sliceBuffer(buffers[i].vertices, 3, - buffers[i].vertices.limit() - 3); - } - } - - private void dispatchKey(char k) { - setFlag(k, !getFlag(k)); - // Quit on escape or 'q' - if ((k == (char) 27) || (k == 'q')) { - shutdownDemo(); - return; - } - - if (k == 'r') { - if (getFlag(k)) { - profiledFrameCount = 0; - numDrawElementsCalls = 0; - firstProfiledFrame = true; - } - } - - if (k == 'w') { - if (getFlag(k)) { - primitive = GL.GL_LINE_STRIP; - } else { - primitive = GL.GL_QUAD_STRIP; - } - } - - if (k == 'p') { - if (getFlag(k)) { - primitive = GL.GL_POINTS; - } else { - primitive = GL.GL_QUAD_STRIP; - } - } - - if (k == 'v') { - toggleVAR = true; - } - - if (k == 'd') { - toggleLighting = true; - } - - if (k == 'i') { - toggleLightingModel = true; - } - - if('h'==k) - hicoef += .005; - if('H'==k) - hicoef -= .005; - if('l'==k) - locoef += .005; - if('L'==k) - locoef -= .005; - if('1'==k) - lofreq += .1f; - if('2'==k) - lofreq -= .1f; - if('3'==k) - hifreq += .1f; - if('4'==k) - hifreq -= .1f; - if('5'==k) - phaseRate += .01f; - if('6'==k) - phaseRate -= .01f; - if('7'==k) - phase2Rate += .01f; - if('8'==k) - phase2Rate -= .01f; - - if('t'==k) { - if(tileSize < 864) { - tileSize += STRIP_SIZE; - recomputeElements = true; - System.err.println("tileSize = " + tileSize); - } - } - - if('T'==k) { - if(tileSize > STRIP_SIZE) { - tileSize -= STRIP_SIZE; - recomputeElements = true; - System.err.println("tileSize = " + tileSize); - } - } - } - - public void display(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - - // Check to see whether to animate - if (getFlag(' ')) { - phase += phaseRate; - phase2 += phase2Rate; - - if (phase > (float) (20 * Math.PI)) { - phase = 0; - } - - if (phase2 < (float) (-20 * Math.PI)) { - phase2 = 0; - } - } - - PeriodicIterator loX = - new PeriodicIterator(SIN_ARRAY_SIZE, (float) (2 * Math.PI), phase, (float) ((1.f/tileSize)*lofreq*Math.PI)); - PeriodicIterator loY = new PeriodicIterator(loX); - PeriodicIterator hiX = - new PeriodicIterator(SIN_ARRAY_SIZE, (float) (2 * Math.PI), phase2, (float) ((1.f/tileSize)*hifreq*Math.PI)); - PeriodicIterator hiY = new PeriodicIterator(hiX); - - if (toggleVAR) { - if (getFlag('v')) { - gl.glEnableClientState(GL.GL_VERTEX_ARRAY_RANGE_NV); - gl.glVertexArrayRangeNV(bufferSize, bigArrayVar); - bigArray = bigArrayVar; - } else { - gl.glDisableClientState(GL.GL_VERTEX_ARRAY_RANGE_NV); - bigArray = bigArraySystem; - } - toggleVAR = false; - setupBuffers(); - } - - if (toggleLighting) { - if (getFlag('d')) { - gl.glDisable(GL.GL_LIGHTING); - } else { - gl.glEnable(GL.GL_LIGHTING); - } - toggleLighting = false; - } - - if (toggleLightingModel) { - if(getFlag('i')) { - // infinite light - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, new float[] { .5f, 0, .5f, 0 }, 0); - gl.glLightModeli(GL.GL_LIGHT_MODEL_LOCAL_VIEWER, 0); - } else { - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, new float[] { .5f, 0, -.5f, 1 }, 0); - gl.glLightModeli(GL.GL_LIGHT_MODEL_LOCAL_VIEWER, 1); - } - toggleLightingModel = false; - } - - if (recomputeElements) { - computeElements(); - recomputeElements = false; - } - - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - gl.glPushMatrix(); - - final float[] modelViewMatrix = new float[] { - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, -1, 1 - }; - gl.glLoadMatrixf(modelViewMatrix, 0); - - // FIXME: add mouse interaction - // camera.apply_inverse_transform(); - // object.apply_transform(); - - int cur = 0; - int numSlabs = tileSize / STRIP_SIZE; - - for(int slab = numSlabs; --slab>=0; ) { - cur = slab % numBuffers; - if (slab >= numBuffers) { - if (!gl.glTestFenceNV(buffers[cur].fence)) { - gl.glFinishFenceNV(buffers[cur].fence); - } - } - - FloatBuffer v = buffers[cur].vertices; - int vertexIndex = 0; - - gl.glVertexPointer(3, GL.GL_FLOAT, 6 * SIZEOF_FLOAT, v); - gl.glNormalPointer(GL.GL_FLOAT, 6 * SIZEOF_FLOAT, buffers[cur].normals); - - for(int jj=STRIP_SIZE; --jj>=0; ) { - ysinlo[jj] = sinArray[loY.getIndex()]; - ycoslo[jj] = cosArray[loY.getIndex()]; loY.incr(); - ysinhi[jj] = sinArray[hiY.getIndex()]; - ycoshi[jj] = cosArray[hiY.getIndex()]; hiY.incr(); - } - loY.decr(); - hiY.decr(); - - for(int i = tileSize; --i>=0; ) { - float x = xyArray[i]; - int loXIndex = loX.getIndex(); - int hiXIndex = hiX.getIndex(); - - int jOffset = (STRIP_SIZE-1)*slab; - float nx = locoef * -cosArray[loXIndex] + hicoef * -cosArray[hiXIndex]; - - // Help the HotSpot Client Compiler by hoisting loop - // invariant variables into locals. Note that this may be - // good practice for innermost loops anyway since under - // the new memory model operations like accidental - // synchronization may force any compiler to reload these - // fields from memory, destroying their ability to - // optimize. - float locoef_tmp = locoef; - float hicoef_tmp = hicoef; - float[] ysinlo_tmp = ysinlo; - float[] ysinhi_tmp = ysinhi; - float[] ycoslo_tmp = ycoslo; - float[] ycoshi_tmp = ycoshi; - float[] sinArray_tmp = sinArray; - float[] xyArray_tmp = xyArray; - - for(int j = STRIP_SIZE; --j>=0; ) { - float y; - - y = xyArray_tmp[j + jOffset]; - - float ny; - - v.put(vertexIndex, x); - v.put(vertexIndex + 1, y); - v.put(vertexIndex + 2, (locoef_tmp * (sinArray_tmp[loXIndex] + ysinlo_tmp[j]) + - hicoef_tmp * (sinArray_tmp[hiXIndex] + ysinhi_tmp[j]))); - v.put(vertexIndex + 3, nx); - ny = locoef_tmp * -ycoslo_tmp[j] + hicoef_tmp * -ycoshi_tmp[j]; - v.put(vertexIndex + 4, ny); - v.put(vertexIndex + 5, .15f); //.15f * (1.f - sqrt(nx * nx + ny * ny)); - vertexIndex += 6; - } - loX.incr(); - hiX.incr(); - } - loX.reset(); - hiX.reset(); - - for (int i = 0; i < elements.length; i++) { - ++numDrawElementsCalls; - gl.glDrawElements(primitive, elements[i].capacity(), GL.GL_UNSIGNED_INT, elements[i]); - if(getFlag('f')) { - gl.glFlush(); - } - } - - gl.glSetFenceNV(buffers[cur].fence, GL.GL_ALL_COMPLETED_NV); - } - - gl.glPopMatrix(); - - gl.glFinishFenceNV(buffers[cur].fence); - - if (getFlag('r')) { - if (!firstProfiledFrame) { - if (++profiledFrameCount == 30) { - long endTimeMillis = System.currentTimeMillis(); - double secs = (endTimeMillis - startTimeMillis) / 1000.0; - double fps = 30.0 / secs; - double ppf = tileSize * tileSize * 2; - double mpps = ppf * fps / 1000000.0; - System.err.println("fps: " + fps + " polys/frame: " + ppf + " million polys/sec: " + mpps + - " DrawElements calls/frame: " + (numDrawElementsCalls / 30)); - profiledFrameCount = 0; - numDrawElementsCalls = 0; - startTimeMillis = System.currentTimeMillis(); - } - } else { - startTimeMillis = System.currentTimeMillis(); - firstProfiledFrame = false; - - } - } - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} - - // Unused routines - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - - private void allocateBigArray(GL gl, boolean tryAgain) { - float priority = .5f; - - bigArraySystem = setupBuffer(ByteBuffer.allocateDirect(bufferSize)); - - float megabytes = (bufferSize / 1000000.f); - try { - bigArrayVar = setupBuffer(gl.glAllocateMemoryNV(bufferSize, 0, 0, priority)); - } - catch (OutOfMemoryError e1) { - // Try a higher priority - try { - bigArrayVar = setupBuffer(gl.glAllocateMemoryNV(bufferSize, 0, 0, 1.f)); - } - catch (OutOfMemoryError e2) { - if (!tryAgain) { - throw new RuntimeException("Unable to allocate " + megabytes + - " megabytes of fast memory. Giving up."); - } - - System.err.println("Unable to allocate " + megabytes + - " megabytes of fast memory. Trying less."); - bufferSize /= 2; - numBuffers /= 2; - allocateBigArray(gl, false); - return; - } - } - - System.err.println("Allocated " + megabytes + " megabytes of fast memory"); - } - - private FloatBuffer setupBuffer(ByteBuffer buf) { - buf.order(ByteOrder.nativeOrder()); - return buf.asFloatBuffer(); - } - - private FloatBuffer sliceBuffer(FloatBuffer array, - int sliceStartIndex, int sliceLength) { - array.position(sliceStartIndex); - FloatBuffer ret = array.slice(); - array.position(0); - ret.limit(sliceLength); - return ret; - } - - private void computeElements() { - xyArray = new float[tileSize]; - for (int i = 0; i < tileSize; i++) { - xyArray[i] = i / (tileSize - 1.0f) - 0.5f; - } - - elements = new IntBuffer[tileSize - 1]; - for (int i = 0; i < tileSize - 1; i++) { - elements[i] = IntBuffer.allocate(2 * STRIP_SIZE); - for (int j = 0; j < 2 * STRIP_SIZE; j += 2) { - elements[i].put(j, i * STRIP_SIZE + (j / 2)); - elements[i].put(j+1, (i + 1) * STRIP_SIZE + (j / 2)); - } - } - } - - private static void runExit(final Animator animator) { - // Note: calling System.exit() synchronously inside the draw, - // reshape or init callbacks can lead to deadlocks on certain - // platforms (in particular, X11) because the JAWT's locking - // routines cause a global AWT lock to be grabbed. Run the - // exit routine in another thread. - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } -} diff --git a/src/demos/vertexBufferObject/VertexBufferObject.java b/src/demos/vertexBufferObject/VertexBufferObject.java deleted file mode 100644 index e58d0fa..0000000 --- a/src/demos/vertexBufferObject/VertexBufferObject.java +++ /dev/null @@ -1,758 +0,0 @@ -/* - * Portions Copyright (C) 2003 Sun Microsystems, Inc. - * All rights reserved. - */ - -/* - * - * COPYRIGHT NVIDIA CORPORATION 2003. ALL RIGHTS RESERVED. - * BY ACCESSING OR USING THIS SOFTWARE, YOU AGREE TO: - * - * 1) ACKNOWLEDGE NVIDIA'S EXCLUSIVE OWNERSHIP OF ALL RIGHTS - * IN AND TO THE SOFTWARE; - * - * 2) NOT MAKE OR DISTRIBUTE COPIES OF THE SOFTWARE WITHOUT - * INCLUDING THIS NOTICE AND AGREEMENT; - * - * 3) ACKNOWLEDGE THAT TO THE MAXIMUM EXTENT PERMITTED BY - * APPLICABLE LAW, THIS SOFTWARE IS PROVIDED *AS IS* AND - * THAT NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, - * EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED - * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY - * SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES - * WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS - * OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS - * INFORMATION, OR ANY OTHER PECUNIARY LOSS), INCLUDING ATTORNEYS' - * FEES, RELATING TO THE USE OF OR INABILITY TO USE THIS SOFTWARE, - * EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.vertexBufferObject; - -import java.awt.*; -import java.awt.event.*; -import java.nio.*; -import java.util.*; -import javax.swing.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; -import demos.common.*; -import demos.util.*; - -/** <P> A port of NVidia's [tm] Vertex Array Range demonstration to - OpenGL[tm] for Java[tm], the Java programming language, and the - vendor-neutral Vertex Buffer Object extension. The current web - site for the demo is <a href = - "http://developer.nvidia.com/object/vardemo.html">here</a>. </P> - - <P> This demonstration requires the following: - - <ul> - <li> A JDK 1.4 implementation - <li> A card supporting the GL_ARB_vertex_buffer_object extension - (only in recent drivers) - </ul> - - </P> - - <P> This demonstration illustrates the use of the java.nio direct - buffer classes in JDK 1.4 to access memory outside of the Java - garbage-collected heap, in particular that returned from the call - glMapBufferARB, to achieve higher performance than accessing the - same data in system memory allows. </P> -*/ - -public class VertexBufferObject extends Demo { - public static void main(String[] args) { - boolean vboEnabled = true; - - if (args.length > 1) { - usage(); - } - - if (args.length == 1) { - if (args[0].equals("-slow")) { - vboEnabled = false; - } else { - usage(); - } - } - - GLCanvas canvas = new GLCanvas(); - VertexBufferObject demo = new VertexBufferObject(); - demo.vboEnabled = vboEnabled; - canvas.addGLEventListener(demo); - - final Animator animator = new Animator(canvas); - animator.setRunAsFastAsPossible(true); - demo.setDemoListener(new DemoListener() { - public void shutdownDemo() { - runExit(animator); - } - public void repaint() {} - }); - - Frame frame = new Frame("Very Simple vertex_buffer_object demo"); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - runExit(animator); - } - }); - frame.setLayout(new BorderLayout()); - canvas.setSize(800, 800); - frame.add(canvas, BorderLayout.CENTER); - frame.pack(); - frame.show(); - canvas.requestFocus(); - - animator.start(); - } - - private static void usage() { - System.out.println("usage: java VertexBufferObject [-slow]"); - System.out.println("-slow flag starts up using data in the Java heap"); - System.exit(0); - } - - public VertexBufferObject() { - setFlag(' ', true); // animation on - setFlag('i', true); // infinite viewer and light - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private GLU glu = new GLU(); - private boolean initComplete; - private boolean[] b = new boolean[256]; - private static final int SIZEOF_FLOAT = 4; - // private static final int STRIP_SIZE = 48; - private static final int STRIP_SIZE = 144; - // private int tileSize = 9 * STRIP_SIZE; - private int tileSize = 3 * STRIP_SIZE; - private int numBuffers = 1; - private int bufferLength = 1000000; - private int bufferSize = bufferLength * SIZEOF_FLOAT; - private static final int SIN_ARRAY_SIZE = 1024; - - private int bigBufferObject; - private boolean vboEnabled = true; - private ByteBuffer bigArrayVBOBytes; - private FloatBuffer bigArrayVBO; - private FloatBuffer bigArraySystem; - private FloatBuffer bigArray; - private IntBuffer[] elements; - private int elementBufferObject; - private float[] xyArray; - - static class VBOBuffer { - public FloatBuffer vertices; - public FloatBuffer normals; - public int vertexOffset; - public int normalOffset; - } - private VBOBuffer[] buffers; - - private float[] sinArray; - private float[] cosArray; - - // Primitive: GL_QUAD_STRIP, GL_LINE_STRIP, or GL_POINTS - private int primitive = GL.GL_QUAD_STRIP; - - // Animation parameters - private float hicoef = .06f; - private float locoef = .10f; - private float hifreq = 6.1f; - private float lofreq = 2.5f; - private float phaseRate = .02f; - private float phase2Rate = -0.12f; - private float phase = 0; - private float phase2 = 0; - - // Temporaries for computation - float[] ysinlo = new float[STRIP_SIZE]; - float[] ycoslo = new float[STRIP_SIZE]; - float[] ysinhi = new float[STRIP_SIZE]; - float[] ycoshi = new float[STRIP_SIZE]; - - // For thread-safety when dealing with keypresses - private volatile boolean toggleVBO = false; - private volatile boolean toggleLighting = false; - private volatile boolean toggleLightingModel = false; - private volatile boolean recomputeElements = false; - private volatile boolean quit = false; - - // Frames-per-second computation - private boolean firstProfiledFrame; - private int profiledFrameCount; - private int numDrawElementsCalls; - private long startTimeMillis; - - static class PeriodicIterator { - public PeriodicIterator(int arraySize, - float period, - float initialOffset, - float delta) { - float arrayDelta = arraySize * (delta / period); // floating-point steps-per-increment - increment = (int)(arrayDelta * (1<<16)); // fixed-point steps-per-increment - - float offset = arraySize * (initialOffset / period); // floating-point initial index - initOffset = (int)(offset * (1<<16)); // fixed-point initial index - - arraySizeMask = 0; - int i = 20; // array should be reasonably sized... - while((arraySize & (1<<i)) == 0) { - i--; - } - arraySizeMask = (1<<i)-1; - index = initOffset; - } - - public PeriodicIterator(PeriodicIterator arg) { - this.arraySizeMask = arg.arraySizeMask; - this.increment = arg.increment; - this.initOffset = arg.initOffset; - this.index = arg.index; - } - - public int getIndex() { - return (index >> 16) & arraySizeMask; - } - - public void incr() { - index += increment; - } - - public void decr() { - index -= increment; - } - - public void reset() { - index = initOffset; - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private int arraySizeMask; - // fraction bits == 16 - private int increment; - private int initOffset; - private int index; - } - - private void setFlag(char key, boolean val) { - b[((int) key) & 0xFF] = val; - } - - private boolean getFlag(char key) { - return b[((int) key) & 0xFF]; - } - - private void initExtension(GL gl, String glExtensionName) { - if (!gl.isExtensionAvailable(glExtensionName)) { - final String message = "OpenGL extension \"" + glExtensionName + "\" not available"; - new Thread(new Runnable() { - public void run() { - JOptionPane.showMessageDialog(null, message, "Unavailable extension", JOptionPane.ERROR_MESSAGE); - shutdownDemo(); - } - }).start(); - throw new RuntimeException(message); - } - } - - public void init(GLAutoDrawable drawable) { - initComplete = false; - // drawable.setGL(new TraceGL(drawable.getGL(), System.err)); - // drawable.setGL(new DebugGL(drawable.getGL())); - - GL gl = drawable.getGL(); - - // Try and disable synch-to-retrace for fastest framerate - gl.setSwapInterval(0); - - try { - initExtension(gl, "GL_ARB_vertex_buffer_object"); - } catch (RuntimeException e) { - throw (e); - } - - gl.glEnable(GL.GL_DEPTH_TEST); - - gl.glClearColor(0, 0, 0, 0); - - gl.glEnable(GL.GL_LIGHT0); - gl.glEnable(GL.GL_LIGHTING); - gl.glEnable(GL.GL_NORMALIZE); - gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT, new float[] {.1f, .1f, 0, 1}, 0); - gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_DIFFUSE, new float[] {.6f, .6f, .1f, 1}, 0); - gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_SPECULAR, new float[] { 1, 1, .75f, 1}, 0); - gl.glMaterialf(GL.GL_FRONT_AND_BACK, GL.GL_SHININESS, 128.f); - - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, new float[] { .5f, 0, .5f, 0}, 0); - gl.glLightModeli(GL.GL_LIGHT_MODEL_LOCAL_VIEWER, 0); - - // NOTE: it looks like GLUT (or something else) sets up the - // projection matrix in the C version of this demo. - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluPerspective(60, 1.0, 0.1, 100); - gl.glMatrixMode(GL.GL_MODELVIEW); - - allocateBigArray(gl); - allocateBuffers(gl); - - sinArray = new float[SIN_ARRAY_SIZE]; - cosArray = new float[SIN_ARRAY_SIZE]; - - for (int i = 0; i < SIN_ARRAY_SIZE; i++) { - double step = i * 2 * Math.PI / SIN_ARRAY_SIZE; - sinArray[i] = (float) Math.sin(step); - cosArray[i] = (float) Math.cos(step); - } - - if (vboEnabled) { - bigArray = bigArrayVBO; - } else { - bigArray = bigArraySystem; - } - setupBuffers(); - gl.glEnableClientState(GL.GL_VERTEX_ARRAY); - gl.glEnableClientState(GL.GL_NORMAL_ARRAY); - - computeElements(gl); - - drawable.addKeyListener(new KeyAdapter() { - public void keyTyped(KeyEvent e) { - dispatchKey(e.getKeyChar()); - } - }); - initComplete = true; - } - - private void allocateBuffers(GL gl) { - buffers = new VBOBuffer[numBuffers]; - for (int i = 0; i < numBuffers; i++) { - buffers[i] = new VBOBuffer(); - } - } - - private void setupBuffers() { - int sliceSize = bufferLength / numBuffers; - for (int i = 0; i < numBuffers; i++) { - int startIndex = i * sliceSize; - buffers[i].vertices = sliceBuffer(bigArray, startIndex, sliceSize); - buffers[i].normals = sliceBuffer(buffers[i].vertices, 3, - buffers[i].vertices.limit() - 3); - buffers[i].vertexOffset = startIndex * BufferUtil.SIZEOF_FLOAT; - buffers[i].normalOffset = (startIndex + 3) * BufferUtil.SIZEOF_FLOAT; - } - } - - private void dispatchKey(char k) { - setFlag(k, !getFlag(k)); - // Quit on escape or 'q' - if ((k == (char) 27) || (k == 'q')) { - shutdownDemo(); - return; - } - - if (k == 'r') { - if (getFlag(k)) { - profiledFrameCount = 0; - numDrawElementsCalls = 0; - firstProfiledFrame = true; - } - } - - if (k == 'w') { - if (getFlag(k)) { - primitive = GL.GL_LINE_STRIP; - } else { - primitive = GL.GL_QUAD_STRIP; - } - } - - if (k == 'p') { - if (getFlag(k)) { - primitive = GL.GL_POINTS; - } else { - primitive = GL.GL_QUAD_STRIP; - } - } - - if (k == 'v') { - toggleVBO = true; - } - - if (k == 'd') { - toggleLighting = true; - } - - if (k == 'i') { - toggleLightingModel = true; - } - - if('h'==k) - hicoef += .005; - if('H'==k) - hicoef -= .005; - if('l'==k) - locoef += .005; - if('L'==k) - locoef -= .005; - if('1'==k) - lofreq += .1f; - if('2'==k) - lofreq -= .1f; - if('3'==k) - hifreq += .1f; - if('4'==k) - hifreq -= .1f; - if('5'==k) - phaseRate += .01f; - if('6'==k) - phaseRate -= .01f; - if('7'==k) - phase2Rate += .01f; - if('8'==k) - phase2Rate -= .01f; - - if('t'==k) { - if(tileSize < 864) { - tileSize += STRIP_SIZE; - recomputeElements = true; - System.err.println("tileSize = " + tileSize); - } - } - - if('T'==k) { - if(tileSize > STRIP_SIZE) { - tileSize -= STRIP_SIZE; - recomputeElements = true; - System.err.println("tileSize = " + tileSize); - } - } - } - - public void display(GLAutoDrawable drawable) { - if (!initComplete) { - return; - } - - GL gl = drawable.getGL(); - - // Check to see whether to animate - if (getFlag(' ')) { - phase += phaseRate; - phase2 += phase2Rate; - - if (phase > (float) (20 * Math.PI)) { - phase = 0; - } - - if (phase2 < (float) (-20 * Math.PI)) { - phase2 = 0; - } - } - - PeriodicIterator loX = - new PeriodicIterator(SIN_ARRAY_SIZE, (float) (2 * Math.PI), phase, (float) ((1.f/tileSize)*lofreq*Math.PI)); - PeriodicIterator loY = new PeriodicIterator(loX); - PeriodicIterator hiX = - new PeriodicIterator(SIN_ARRAY_SIZE, (float) (2 * Math.PI), phase2, (float) ((1.f/tileSize)*hifreq*Math.PI)); - PeriodicIterator hiY = new PeriodicIterator(hiX); - - if (toggleVBO) { - vboEnabled = !vboEnabled; - if (!vboEnabled) { - bigArray = bigArraySystem; - setupBuffers(); - } - toggleVBO = false; - } - - if (toggleLighting) { - if (getFlag('d')) { - gl.glDisable(GL.GL_LIGHTING); - } else { - gl.glEnable(GL.GL_LIGHTING); - } - toggleLighting = false; - } - - if (toggleLightingModel) { - if(getFlag('i')) { - // infinite light - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, new float[] { .5f, 0, .5f, 0 }, 0); - gl.glLightModeli(GL.GL_LIGHT_MODEL_LOCAL_VIEWER, 0); - } else { - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, new float[] { .5f, 0, -.5f,1 }, 0); - gl.glLightModeli(GL.GL_LIGHT_MODEL_LOCAL_VIEWER, 1); - } - toggleLightingModel = false; - } - - if (recomputeElements) { - computeElements(gl); - recomputeElements = false; - } - - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - gl.glPushMatrix(); - - final float[] modelViewMatrix = new float[] { - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, -1, 1 - }; - gl.glLoadMatrixf(modelViewMatrix, 0); - - // FIXME: add mouse interaction - // camera.apply_inverse_transform(); - // object.apply_transform(); - - int cur = 0; - int numSlabs = tileSize / STRIP_SIZE; - - if (vboEnabled) { - gl.glBindBufferARB(GL.GL_ARRAY_BUFFER_ARB, bigBufferObject); - } else { - gl.glBindBufferARB(GL.GL_ARRAY_BUFFER_ARB, 0); - } - - for(int slab = numSlabs; --slab>=0; ) { - cur = slab % numBuffers; - - if (vboEnabled) { - ByteBuffer tmp = gl.glMapBufferARB(GL.GL_ARRAY_BUFFER_ARB, GL.GL_WRITE_ONLY_ARB); - if (tmp == null) { - throw new RuntimeException("Unable to map vertex buffer object"); - } - if (tmp != bigArrayVBOBytes) { - bigArrayVBOBytes = tmp; - bigArrayVBO = setupBuffer(tmp); - } - if (bigArray != bigArrayVBO) { - bigArray = bigArrayVBO; - setupBuffers(); - } - } - - FloatBuffer v = buffers[cur].vertices; - int vertexIndex = 0; - - if (vboEnabled) { - gl.glVertexPointer(3, GL.GL_FLOAT, 6 * SIZEOF_FLOAT, buffers[cur].vertexOffset); - gl.glNormalPointer( GL.GL_FLOAT, 6 * SIZEOF_FLOAT, buffers[cur].normalOffset); - } else { - gl.glVertexPointer(3, GL.GL_FLOAT, 6 * SIZEOF_FLOAT, v); - gl.glNormalPointer( GL.GL_FLOAT, 6 * SIZEOF_FLOAT, buffers[cur].normals); - } - - for(int jj=STRIP_SIZE; --jj>=0; ) { - ysinlo[jj] = sinArray[loY.getIndex()]; - ycoslo[jj] = cosArray[loY.getIndex()]; loY.incr(); - ysinhi[jj] = sinArray[hiY.getIndex()]; - ycoshi[jj] = cosArray[hiY.getIndex()]; hiY.incr(); - } - loY.decr(); - hiY.decr(); - - for(int i = tileSize; --i>=0; ) { - float x = xyArray[i]; - int loXIndex = loX.getIndex(); - int hiXIndex = hiX.getIndex(); - - int jOffset = (STRIP_SIZE-1)*slab; - float nx = locoef * -cosArray[loXIndex] + hicoef * -cosArray[hiXIndex]; - - // Help the HotSpot Client Compiler by hoisting loop - // invariant variables into locals. Note that this may be - // good practice for innermost loops anyway since under - // the new memory model operations like accidental - // synchronization may force any compiler to reload these - // fields from memory, destroying their ability to - // optimize. - float locoef_tmp = locoef; - float hicoef_tmp = hicoef; - float[] ysinlo_tmp = ysinlo; - float[] ysinhi_tmp = ysinhi; - float[] ycoslo_tmp = ycoslo; - float[] ycoshi_tmp = ycoshi; - float[] sinArray_tmp = sinArray; - float[] xyArray_tmp = xyArray; - - for(int j = STRIP_SIZE; --j>=0; ) { - float y; - - y = xyArray_tmp[j + jOffset]; - - float ny; - - v.put(vertexIndex, x); - v.put(vertexIndex + 1, y); - v.put(vertexIndex + 2, (locoef_tmp * (sinArray_tmp[loXIndex] + ysinlo_tmp[j]) + - hicoef_tmp * (sinArray_tmp[hiXIndex] + ysinhi_tmp[j]))); - v.put(vertexIndex + 3, nx); - ny = locoef_tmp * -ycoslo_tmp[j] + hicoef_tmp * -ycoshi_tmp[j]; - v.put(vertexIndex + 4, ny); - v.put(vertexIndex + 5, .15f); //.15f * (1.f - sqrt(nx * nx + ny * ny)); - vertexIndex += 6; - } - loX.incr(); - hiX.incr(); - } - loX.reset(); - hiX.reset(); - - if (vboEnabled) { - gl.glUnmapBufferARB(GL.GL_ARRAY_BUFFER_ARB); - } - - if (getFlag('m')) { - // Elements merged into buffer object (doesn't seem to improve performance) - - int len = tileSize - 1; - gl.glBindBufferARB(GL.GL_ELEMENT_ARRAY_BUFFER_ARB, elementBufferObject); - for (int i = 0; i < len; i++) { - ++numDrawElementsCalls; - gl.glDrawElements(primitive, 2 * STRIP_SIZE, GL.GL_UNSIGNED_INT, - i * 2 * STRIP_SIZE * BufferUtil.SIZEOF_INT); - if(getFlag('f')) { - gl.glFlush(); - } - } - gl.glBindBufferARB(GL.GL_ELEMENT_ARRAY_BUFFER_ARB, 0); - } else { - for (int i = 0; i < elements.length; i++) { - ++numDrawElementsCalls; - gl.glDrawElements(primitive, elements[i].remaining(), GL.GL_UNSIGNED_INT, elements[i]); - if(getFlag('f')) { - gl.glFlush(); - } - } - } - } - - gl.glPopMatrix(); - - if (getFlag('r')) { - if (!firstProfiledFrame) { - if (++profiledFrameCount == 30) { - long endTimeMillis = System.currentTimeMillis(); - double secs = (endTimeMillis - startTimeMillis) / 1000.0; - double fps = 30.0 / secs; - double ppf = tileSize * tileSize * 2; - double mpps = ppf * fps / 1000000.0; - System.err.println("fps: " + fps + " polys/frame: " + ppf + " million polys/sec: " + mpps + - " DrawElements calls/frame: " + (numDrawElementsCalls / 30)); - profiledFrameCount = 0; - numDrawElementsCalls = 0; - startTimeMillis = System.currentTimeMillis(); - } - } else { - startTimeMillis = System.currentTimeMillis(); - firstProfiledFrame = false; - } - } - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} - - // Unused routines - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - - private void allocateBigArray(GL gl) { - bigArraySystem = setupBuffer(ByteBuffer.allocateDirect(bufferSize)); - - int[] tmp = new int[1]; - gl.glGenBuffersARB(1, tmp, 0); - bigBufferObject = tmp[0]; - gl.glBindBufferARB(GL.GL_ARRAY_BUFFER_ARB, bigBufferObject); - // Initialize data store of buffer object - gl.glBufferDataARB(GL.GL_ARRAY_BUFFER_ARB, bufferSize, (Buffer) null, GL.GL_DYNAMIC_DRAW_ARB); - bigArrayVBOBytes = gl.glMapBufferARB(GL.GL_ARRAY_BUFFER_ARB, GL.GL_WRITE_ONLY_ARB); - bigArrayVBO = setupBuffer(bigArrayVBOBytes); - gl.glUnmapBufferARB(GL.GL_ARRAY_BUFFER_ARB); - // Unbind buffer; will be bound again in main loop - gl.glBindBufferARB(GL.GL_ARRAY_BUFFER_ARB, 0); - - float megabytes = (bufferSize / 1000000.f); - System.err.println("Allocated " + megabytes + " megabytes of fast memory"); - } - - private FloatBuffer setupBuffer(ByteBuffer buf) { - buf.order(ByteOrder.nativeOrder()); - return buf.asFloatBuffer(); - } - - private FloatBuffer sliceBuffer(FloatBuffer array, - int sliceStartIndex, int sliceLength) { - array.position(sliceStartIndex); - FloatBuffer ret = array.slice(); - array.position(0); - ret.limit(sliceLength); - return ret; - } - - private void computeElements(GL gl) { - xyArray = new float[tileSize]; - for (int i = 0; i < tileSize; i++) { - xyArray[i] = i / (tileSize - 1.0f) - 0.5f; - } - - elements = new IntBuffer[tileSize - 1]; - for (int i = 0; i < tileSize - 1; i++) { - elements[i] = IntBuffer.allocate(2 * STRIP_SIZE); - for (int j = 0; j < 2 * STRIP_SIZE; j += 2) { - elements[i].put(j, i * STRIP_SIZE + (j / 2)); - elements[i].put(j+1, (i + 1) * STRIP_SIZE + (j / 2)); - } - } - - // Create element array buffer - IntBuffer linearElements = IntBuffer.allocate((tileSize - 1) * (2 * STRIP_SIZE)); - int idx = 0; - for (int i = 0; i < tileSize - 1; i++) { - for (int j = 0; j < 2 * STRIP_SIZE; j += 2) { - linearElements.put(idx++, i * STRIP_SIZE + (j / 2)); - linearElements.put(idx++, (i + 1) * STRIP_SIZE + (j / 2)); - } - } - int[] tmp = new int[1]; - gl.glGenBuffersARB(1, tmp, 0); - elementBufferObject = tmp[0]; - gl.glBindBufferARB(GL.GL_ELEMENT_ARRAY_BUFFER_ARB, elementBufferObject); - gl.glBufferDataARB(GL.GL_ELEMENT_ARRAY_BUFFER_ARB, - linearElements.remaining() * BufferUtil.SIZEOF_INT, - linearElements, - GL.GL_STATIC_DRAW_ARB); - gl.glBindBufferARB(GL.GL_ELEMENT_ARRAY_BUFFER_ARB, 0); - } - - private static void runExit(final Animator animator) { - // Note: calling System.exit() synchronously inside the draw, - // reshape or init callbacks can lead to deadlocks on certain - // platforms (in particular, X11) because the JAWT's locking - // routines cause a global AWT lock to be grabbed. Run the - // exit routine in another thread. - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } -} diff --git a/src/demos/vertexProgRefract/VertexProgRefract.java b/src/demos/vertexProgRefract/VertexProgRefract.java deleted file mode 100644 index 11daed9..0000000 --- a/src/demos/vertexProgRefract/VertexProgRefract.java +++ /dev/null @@ -1,700 +0,0 @@ -/* - * Portions Copyright (C) 2003 Sun Microsystems, Inc. - * All rights reserved. - */ - -/* - * - * COPYRIGHT NVIDIA CORPORATION 2003. ALL RIGHTS RESERVED. - * BY ACCESSING OR USING THIS SOFTWARE, YOU AGREE TO: - * - * 1) ACKNOWLEDGE NVIDIA'S EXCLUSIVE OWNERSHIP OF ALL RIGHTS - * IN AND TO THE SOFTWARE; - * - * 2) NOT MAKE OR DISTRIBUTE COPIES OF THE SOFTWARE WITHOUT - * INCLUDING THIS NOTICE AND AGREEMENT; - * - * 3) ACKNOWLEDGE THAT TO THE MAXIMUM EXTENT PERMITTED BY - * APPLICABLE LAW, THIS SOFTWARE IS PROVIDED *AS IS* AND - * THAT NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, - * EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED - * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY - * SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES - * WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS - * OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS - * INFORMATION, OR ANY OTHER PECUNIARY LOSS), INCLUDING ATTORNEYS' - * FEES, RELATING TO THE USE OF OR INABILITY TO USE THIS SOFTWARE, - * EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.vertexProgRefract; - -import java.awt.*; -import java.awt.event.*; -import java.awt.image.*; -import java.io.*; -import java.nio.*; -import java.util.*; -import javax.imageio.*; -import javax.imageio.stream.*; -import javax.swing.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.texture.*; -import demos.common.*; -import demos.util.*; -import gleem.*; -import gleem.linalg.*; - -/** - Wavelength-dependent refraction demo<br> - It's a chromatic aberration!<br> - [email protected] 4/2001<br><p> - - Currently 3 passes - could do it in 1 with 4 texture units<p> - - Cubemap courtesy of Paul Debevec<p> - - Ported to Java and ARB_fragment_program by Kenneth Russell -*/ - -public class VertexProgRefract extends Demo { - public static void main(String[] args) { - GLCanvas canvas = new GLCanvas(); - VertexProgRefract demo = new VertexProgRefract(); - canvas.addGLEventListener(demo); - - final Animator animator = new Animator(canvas); - demo.setDemoListener(new DemoListener() { - public void shutdownDemo() { - runExit(animator); - } - public void repaint() {} - }); - - Frame frame = new Frame("Refraction Using Vertex Programs"); - frame.setLayout(new BorderLayout()); - canvas.setSize(512, 512); - frame.add(canvas, BorderLayout.CENTER); - frame.pack(); - frame.show(); - canvas.requestFocus(); - - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - runExit(animator); - } - }); - - animator.start(); - } - - private boolean useRegisterCombiners; - private boolean initComplete; - private boolean firstRender = true; - private int vtxProg; - private int fragProg; - private Texture cubemap; - private int bunnydl; - private int obj; - - private GLU glu = new GLU(); - private GLUT glut = new GLUT(); - - private GLAutoDrawable drawable; - private ExaminerViewer viewer; - private boolean doViewAll = true; - - private Time time = new SystemTime(); - private float animRate = (float) Math.toRadians(-6.0f); // Radians / sec - - private float refract = 1.1f; // ratio of indicies of refraction - private float wavelengthDelta = 0.05f; // difference in refraction for each "wavelength" (R,G,B) - private float fresnel = 2.0f; // Fresnel multiplier - - private boolean wire = false; - private boolean toggleWire = false; - - private static final String transformRefract = -"!!ARBvp1.0\n" + -"# Refraction\n" + -"\n" + -"# Parameters\n" + -"PARAM mvp [4] = { state.matrix.mvp }; # modelview projection matrix\n" + -"PARAM mvit[4] = { state.matrix.modelview.invtrans }; # modelview matrix inverse transpose\n" + -"PARAM mv [4] = { state.matrix.modelview }; # modelview matrix\n" + -"PARAM tex [4] = { state.matrix.texture }; # texture matrix\n" + -"PARAM eyePosition = program.env[0]; # eye position\n" + -"PARAM fresnel = program.env[1]; # fresnel multiplier\n" + -"PARAM texScale = program.env[2]; # texture scale\n" + -"PARAM misc = program.env[3]; # misc. constants\n" + -"PARAM refraction = program.env[4]; # refractive index\n" + -"\n" + -"# Per vertex inputs\n" + -"ATTRIB iPos = vertex.position; #position\n" + -"ATTRIB iCol0 = vertex.color; #color\n" + -"ATTRIB iNorm = vertex.normal; #normal\n" + -"\n" + -"# Temporaries\n" + -"TEMP r0;\n" + -"TEMP r1;\n" + -"TEMP r2;\n" + -"TEMP r3;\n" + -"TEMP r8;\n" + -"TEMP r9;\n" + -"TEMP r11;\n" + -"\n" + -"# Outputs\n" + -"OUTPUT oPos = result.position; #position\n" + -"OUTPUT oCol0 = result.color; #primary color\n" + -"OUTPUT oTex0 = result.texcoord[0]; #texture coordinate set 0\n" + -"OUTPUT oTex1 = result.texcoord[1]; #texture coordinate set 1\n" + -"\n" + -"\n" + -"# transform vertex position to eye space\n" + -"DP4 r9.x, mv[0], iPos ;\n" + -"DP4 r9.y, mv[1], iPos ;\n" + -"DP4 r9.z, mv[2], iPos ;\n" + -"DP4 r9.w, mv[3], iPos ;\n" + -"\n" + -"# transform normal to eye space\n" + -"DP3 r11.x, mvit[0], iNorm ;\n" + -"DP3 r11.y, mvit[1], iNorm ;\n" + -"DP3 r11.z, mvit[2], iNorm ;\n" + -"\n" + -"# vertex->eye vector\n" + -"ADD r0, -r9, eyePosition;\n" + -"\n" + -"# normalize\n" + -"DP3 r8.w, r0, r0;\n" + -"RSQ r8.w, r8.w;\n" + -"MUL r8, r0, r8.w; # r8 = eye/incident vector\n" + -"\n" + -"# refraction, Renderman style\n" + -"\n" + -"# float IdotN = I.N;\n" + -"# float k = 1 - eta*eta*(1 - IdotN*IdotN);\n" + -"# return k < 0 ? (0,0,0) : eta*I - (eta*IdotN + sqrt(k))*N;\n" + -"\n" + -"DP3 r0.x, r11, -r8; # r0 = N.I\n" + -"\n" + -"MAD r1.x, -r0.x, r0.x, misc.y; # r1 = -IdotN*IdotN + 1\n" + -"MUL r1.x, r1.x, refraction.y; # r1 = -(r1*eta*eta)+1\n" + -"ADD r1.x, misc.y, -r1.x;\n" + -"\n" + -"RSQ r2.x, r1.x;\n" + -"RCP r2.x, r2.x;\n" + -"MAD r2.x, refraction.x, r0.x, r2.x;\n" + -"MUL r2, r11, r2.x;\n" + -"MAD r2, refraction.x, -r8, r2;\n" + -"\n" + -"# transform refracted ray by cubemap transform\n" + -"DP3 oTex0.x, tex[0], r2;\n" + -"DP3 oTex0.y, tex[1], r2;\n" + -"DP3 oTex0.z, tex[2], r2;\n" + -"\n" + -"# calculate reflection\n" + -"MUL r0, r11, misc.z;\n" + -"DP3 r3.w, r11, r8;\n" + -"MAD r3, r3.w, r0, -r8;\n" + -"\n" + -"# transform reflected ray by cubemap transform\n" + -"DP3 oTex1.x, tex[0], r3;\n" + -"DP3 oTex1.y, tex[1], r3;\n" + -"DP3 oTex1.z, tex[2], r3;\n" + -"\n" + -"# cheesy Fresnel approximation = (1-(I.N))^p\n" + -"DP3 r0.x, r8, r11;\n" + -"ADD r0.x, misc.y, -r0.x;\n" + -"MUL r0.x, r0.x, r0.x;\n" + -"MUL oCol0, r0.x, fresnel;\n" + -"\n" + -"# transform vertex to clip space\n" + -"DP4 oPos.x, mvp[0], iPos ;\n" + -"DP4 oPos.y, mvp[1], iPos ;\n" + -"DP4 oPos.z, mvp[2], iPos ;\n" + -"DP4 oPos.w, mvp[3], iPos ;\n" + -"\n" + -"END\n"; - - public void init(GLAutoDrawable drawable) { - initComplete = false; - GL gl = drawable.getGL(); - float cc = 1.0f; - gl.glClearColor(cc, cc, cc, 1); - gl.glColor3f(1,1,1); - gl.glEnable(GL.GL_DEPTH_TEST); - - try { - initExtension(gl, "GL_ARB_vertex_program"); - initExtension(gl, "GL_VERSION_1_3"); // For multitexturing support - if (!gl.isExtensionAvailable("GL_ARB_fragment_program")) { - if (gl.isExtensionAvailable("GL_NV_register_combiners")) { - useRegisterCombiners = true; - } else { - final String message = "This demo requires either the GL_ARB_fragment_program\n" + - "or GL_NV_register_combiners extension"; - new Thread(new Runnable() { - public void run() { - JOptionPane.showMessageDialog(null, message, "Unavailable extension", JOptionPane.ERROR_MESSAGE); - shutdownDemo(); - } - }).start(); - throw new RuntimeException(message); - } - } - } catch (RuntimeException e) { - shutdownDemo(); - throw(e); - } - - b[' '] = true; // animate by default - - int[] vtxProgTmp = new int[1]; - gl.glGenProgramsARB(1, vtxProgTmp, 0); - vtxProg = vtxProgTmp[0]; - gl.glBindProgramARB (GL.GL_VERTEX_PROGRAM_ARB, vtxProg); - gl.glProgramStringARB(GL.GL_VERTEX_PROGRAM_ARB, GL.GL_PROGRAM_FORMAT_ASCII_ARB, transformRefract.length(), transformRefract); - - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, 0, 0.0f, 0.0f, 0.0f, 1.0f); // eye position - - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, 1, fresnel, fresnel, fresnel, 1.0f); // fresnel multiplier - - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, 2, 1.0f, -1.0f, 1.0f, 0.0f); // texture scale - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, 3, 0.0f, 1.0f, 2.0f, 3.0f); // misc constants - - try { - cubemap = Cubemap.loadFromStreams(getClass().getClassLoader(), - "demos/data/cubemaps/uffizi_", - "png", - true); - } catch (IOException e) { - shutdownDemo(); - throw new RuntimeException(e); - } - - gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_REPLACE); - - gl.glDisable(GL.GL_CULL_FACE); - - if (useRegisterCombiners) { - initCombiners(gl); - } else { - initFragmentProgram(gl); - } - - try { - bunnydl = Bunny.gen3DObjectList(gl); - } catch (IOException e) { - throw new RuntimeException(e); - } - - doViewAll = true; - - // Do this only once per drawable, not once each time the OpenGL - // context is created - if (firstRender) { - firstRender = false; - - drawable.addKeyListener(new KeyAdapter() { - public void keyTyped(KeyEvent e) { - dispatchKey(e.getKeyChar()); - } - }); - - // Register the window with the ManipManager - ManipManager manager = ManipManager.getManipManager(); - manager.registerWindow(drawable); - this.drawable = drawable; - - viewer = new ExaminerViewer(MouseButtonHelper.numMouseButtons()); - viewer.setNoAltKeyMode(true); - viewer.setAutoRedrawMode(false); - viewer.attach(drawable, new BSphereProvider() { - public BSphere getBoundingSphere() { - return new BSphere(new Vec3f(0, 0, 0), 1.0f); - } - }); - viewer.setVertFOV((float) (15.0f * Math.PI / 32.0f)); - viewer.setZNear(0.1f); - viewer.setZFar(10.0f); - } - - initComplete = true; - } - - public void display(GLAutoDrawable drawable) { - if (!initComplete) { - return; - } - - time.update(); - - GL gl = drawable.getGL(); - gl.glClear(GL.GL_COLOR_BUFFER_BIT|GL.GL_DEPTH_BUFFER_BIT); - - if (doViewAll) { - viewer.viewAll(gl); - doViewAll = false; - } - - if (getFlag(' ')) { - viewer.rotateAboutFocalPoint(new Rotf(Vec3f.Y_AXIS, (float) (time.deltaT() * animRate))); - } - - if (toggleWire) { - toggleWire = false; - wire = !wire; - if (wire) { - gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_LINE); - } else { - gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_FILL); - } - } - - // draw background - gl.glDisable(GL.GL_DEPTH_TEST); - drawSkyBox(gl); - gl.glEnable(GL.GL_DEPTH_TEST); - - gl.glPushMatrix(); - - viewer.update(gl); - ManipManager.getManipManager().updateCameraParameters(drawable, viewer.getCameraParameters()); - ManipManager.getManipManager().render(drawable, gl); - - gl.glBindProgramARB(GL.GL_VERTEX_PROGRAM_ARB, vtxProg); - - gl.glEnable(GL.GL_VERTEX_PROGRAM_ARB); - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, 62, fresnel, fresnel, fresnel, 1.0f); - - // set texture transforms - gl.glActiveTexture(GL.GL_TEXTURE0); - cubemap.bind(); - cubemap.enable(); - gl.glMatrixMode(GL.GL_TEXTURE); - gl.glLoadIdentity(); - viewer.updateInverseRotation(gl); - - gl.glActiveTexture(GL.GL_TEXTURE1); - cubemap.bind(); - cubemap.enable(); - gl.glMatrixMode(GL.GL_TEXTURE); - gl.glLoadIdentity(); - viewer.updateInverseRotation(gl); - - if (useRegisterCombiners) { - gl.glEnable(GL.GL_REGISTER_COMBINERS_NV); - } else { - gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, fragProg); - gl.glEnable(GL.GL_FRAGMENT_PROGRAM_ARB); - } - - gl.glColor3f(1.0f, 1.0f, 1.0f); - - if (getFlag('s')) { - // single pass - setRefraction(gl, refract); - drawObj(gl, obj); - - } else { - // red pass - gl.glColorMask(true, false, false, false); - setRefraction(gl, refract); - drawObj(gl, obj); - - gl.glDepthMask(false); - gl.glDepthFunc(GL.GL_EQUAL); - - // green pass - gl.glColorMask(false, true, false, false); - setRefraction(gl, refract + wavelengthDelta); - drawObj(gl, obj); - - // blue pass - gl.glColorMask(false, false, true, false); - setRefraction(gl, refract + (wavelengthDelta * 2)); - drawObj(gl, obj); - - gl.glDepthMask(true); - gl.glDepthFunc(GL.GL_LESS); - gl.glColorMask(true, true, true, false); - } - - if (useRegisterCombiners) { - gl.glDisable(GL.GL_REGISTER_COMBINERS_NV); - } else { - gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB); - } - gl.glDisable(GL.GL_VERTEX_PROGRAM_ARB); - - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glPopMatrix(); - } - - // Unused routines - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - - //---------------------------------------------------------------------- - // Internals only below this point - // - public void shutdownDemo() { - if (drawable != null) { - viewer.detach(); - ManipManager.getManipManager().unregisterWindow(drawable); - drawable.removeGLEventListener(this); - } - super.shutdownDemo(); - } - - private boolean[] b = new boolean[256]; - private void dispatchKey(char k) { - setFlag(k, !getFlag(k)); - - // Quit on escape or 'q' - if ((k == (char) 27) || (k == 'q')) { - shutdownDemo(); - return; - } - - switch (k) { - case '1': - obj = 0; - break; - - case '2': - obj = 1; - break; - - case '3': - obj = 2; - break; - - case '4': - obj = 3; - break; - - case 'v': - doViewAll = true; - break; - - case 'w': - toggleWire = true; - break; - - default: - break; - } - } - - private void setFlag(char key, boolean val) { - b[((int) key) & 0xFF] = val; - } - - private boolean getFlag(char key) { - return b[((int) key) & 0xFF]; - } - - private void initExtension(GL gl, String glExtensionName) { - if (!gl.isExtensionAvailable(glExtensionName)) { - final String message = "OpenGL extension \"" + glExtensionName + "\" not available"; - new Thread(new Runnable() { - public void run() { - JOptionPane.showMessageDialog(null, message, "Unavailable extension", JOptionPane.ERROR_MESSAGE); - shutdownDemo(); - } - }).start(); - throw new RuntimeException(message); - } - } - - // initalize texture combiners to compute: - // refraction*(1-fresnel) + reflection*fresnel - private void initCombiners(GL gl) { - gl.glCombinerParameteriNV(GL.GL_NUM_GENERAL_COMBINERS_NV, 1); - - // combiner 0 - // a*b+c*d - gl.glCombinerInputNV(GL.GL_COMBINER0_NV, GL.GL_RGB, GL.GL_VARIABLE_A_NV, GL.GL_TEXTURE0, GL.GL_UNSIGNED_IDENTITY_NV, GL.GL_RGB); - gl.glCombinerInputNV(GL.GL_COMBINER0_NV, GL.GL_RGB, GL.GL_VARIABLE_B_NV, GL.GL_PRIMARY_COLOR_NV, GL.GL_UNSIGNED_INVERT_NV, GL.GL_RGB); - gl.glCombinerInputNV(GL.GL_COMBINER0_NV, GL.GL_RGB, GL.GL_VARIABLE_C_NV, GL.GL_TEXTURE1, GL.GL_UNSIGNED_IDENTITY_NV, GL.GL_RGB); - gl.glCombinerInputNV(GL.GL_COMBINER0_NV, GL.GL_RGB, GL.GL_VARIABLE_D_NV, GL.GL_PRIMARY_COLOR_NV, GL.GL_UNSIGNED_IDENTITY_NV, GL.GL_RGB); - - // output: - // (stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum) - gl.glCombinerOutputNV(GL.GL_COMBINER0_NV, GL.GL_RGB, GL.GL_DISCARD_NV, GL.GL_DISCARD_NV, GL.GL_SPARE0_NV, GL.GL_NONE, GL.GL_NONE, false, false, false); - - // final combiner - // output: Frgb = A*B + (1-A)*C + D - // (variable, input, mapping, componentUsage); - gl.glFinalCombinerInputNV(GL.GL_VARIABLE_A_NV, GL.GL_SPARE0_NV, GL.GL_UNSIGNED_IDENTITY_NV, GL.GL_RGB); - gl.glFinalCombinerInputNV(GL.GL_VARIABLE_B_NV, GL.GL_ZERO, GL.GL_UNSIGNED_INVERT_NV, GL.GL_RGB); - gl.glFinalCombinerInputNV(GL.GL_VARIABLE_C_NV, GL.GL_ZERO, GL.GL_UNSIGNED_IDENTITY_NV, GL.GL_RGB); - gl.glFinalCombinerInputNV(GL.GL_VARIABLE_D_NV, GL.GL_ZERO, GL.GL_UNSIGNED_IDENTITY_NV, GL.GL_RGB); - } - - private void initFragmentProgram(GL gl) { - int[] fragProgTmp = new int[1]; - gl.glGenProgramsARB(1, fragProgTmp, 0); - fragProg = fragProgTmp[0]; - String combineFragProg = -"!!ARBfp1.0\n" + -"# compute refraction*(1-fresnel) + reflection*fresnel\n" + -"TEMP texSamp0, texSamp1;\n" + -"TEMP invFresnel;\n" + -"PARAM one = { 1.0, 1.0, 1.0, 1.0 };\n" + -"TEX texSamp0, fragment.texcoord[0], texture[0], CUBE;\n" + -"TEX texSamp1, fragment.texcoord[1], texture[1], CUBE;\n" + -"SUB invFresnel, one, fragment.color;\n" + -"MUL texSamp0, texSamp0, invFresnel;\n" + -"MUL texSamp1, texSamp1, fragment.color;\n" + -"ADD texSamp0, texSamp0, texSamp1;\n" + -"MOV result.color, texSamp0;\n" + -"END"; - - gl.glBindProgramARB (GL.GL_FRAGMENT_PROGRAM_ARB, fragProg); - gl.glProgramStringARB(GL.GL_FRAGMENT_PROGRAM_ARB, GL.GL_PROGRAM_FORMAT_ASCII_ARB, - combineFragProg.length(), combineFragProg); - int[] errPos = new int[1]; - gl.glGetIntegerv(GL.GL_PROGRAM_ERROR_POSITION_ARB, errPos, 0); - if (errPos[0] >= 0) { - System.out.println("Fragment program failed to load:"); - String errMsg = gl.glGetString(GL.GL_PROGRAM_ERROR_STRING_ARB); - if (errMsg == null) { - System.out.println("[No error message available]"); - } else { - System.out.println("Error message: \"" + errMsg + "\""); - } - System.out.println("Error occurred at position " + errPos[0] + " in program:"); - int endPos = errPos[0]; - while (endPos < combineFragProg.length() && combineFragProg.charAt(endPos) != '\n') { - ++endPos; - } - System.out.println(combineFragProg.substring(errPos[0], endPos)); - } - } - - private void drawSkyBox(GL gl) { - // Compensates for ExaminerViewer's modification of modelview matrix - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - - gl.glActiveTexture(GL.GL_TEXTURE1); - gl.glDisable(GL.GL_TEXTURE_CUBE_MAP); - - gl.glActiveTexture(GL.GL_TEXTURE0); - cubemap.bind(); - cubemap.enable(); - - // This is a workaround for a driver bug on Mac OS X where the - // normals are not being sent down to the hardware in - // GL_NORMAL_MAP texgen mode. Temporarily enabling lighting - // causes the normals to be sent down. Thanks to Ken Dyke. - gl.glEnable(GL.GL_LIGHTING); - - gl.glTexGeni(GL.GL_S, GL.GL_TEXTURE_GEN_MODE, GL.GL_NORMAL_MAP); - gl.glTexGeni(GL.GL_T, GL.GL_TEXTURE_GEN_MODE, GL.GL_NORMAL_MAP); - gl.glTexGeni(GL.GL_R, GL.GL_TEXTURE_GEN_MODE, GL.GL_NORMAL_MAP); - - gl.glEnable(GL.GL_TEXTURE_GEN_S); - gl.glEnable(GL.GL_TEXTURE_GEN_T); - gl.glEnable(GL.GL_TEXTURE_GEN_R); - - gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_REPLACE); - - gl.glMatrixMode(GL.GL_TEXTURE); - gl.glPushMatrix(); - gl.glLoadIdentity(); - viewer.updateInverseRotation(gl); - - glut.glutSolidSphere(5.0, 40, 20); - - gl.glDisable(GL.GL_LIGHTING); - - gl.glPopMatrix(); - gl.glMatrixMode(GL.GL_MODELVIEW); - - gl.glDisable(GL.GL_TEXTURE_GEN_S); - gl.glDisable(GL.GL_TEXTURE_GEN_T); - gl.glDisable(GL.GL_TEXTURE_GEN_R); - } - - private void drawObj(GL gl, int obj) { - switch(obj) { - case 0: - gl.glCallList(bunnydl); - break; - - case 1: - glut.glutSolidSphere(0.5, 64, 64); - break; - - case 2: - glut.glutSolidTorus(0.25, 0.5, 64, 64); - break; - - case 3: - drawPlane(gl, 1.0f, 1.0f, 50, 50); - break; - } - } - - private void setRefraction(GL gl, float index) { - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, 4, index, index*index, 0.0f, 0.0f); - } - - // draw square subdivided into quad strips - private void drawPlane(GL gl, float w, float h, int rows, int cols) { - int x, y; - float vx, vy, s, t; - float ts, tt, tw, th; - - ts = 1.0f / cols; - tt = 1.0f / rows; - - tw = w / cols; - th = h / rows; - - gl.glNormal3f(0.0f, 0.0f, 1.0f); - - for(y=0; y<rows; y++) { - gl.glBegin(GL.GL_QUAD_STRIP); - for(x=0; x<=cols; x++) { - vx = tw * x -(w/2.0f); - vy = th * y -(h/2.0f); - s = ts * x; - t = tt * y; - - gl.glTexCoord2f(s, t); - gl.glColor3f(s, t, 0.0f); - gl.glVertex3f(vx, vy, 0.0f); - - gl.glColor3f(s, t + tt, 0.0f); - gl.glTexCoord2f(s, t + tt); - gl.glVertex3f(vx, vy + th, 0.0f); - } - gl.glEnd(); - } - } - - private static void runExit(final Animator animator) { - // Note: calling System.exit() synchronously inside the draw, - // reshape or init callbacks can lead to deadlocks on certain - // platforms (in particular, X11) because the JAWT's locking - // routines cause a global AWT lock to be grabbed. Instead run - // the exit routine in another thread. - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } -} diff --git a/src/demos/vertexProgWarp/VertexProgWarp.java b/src/demos/vertexProgWarp/VertexProgWarp.java deleted file mode 100644 index 4eab14d..0000000 --- a/src/demos/vertexProgWarp/VertexProgWarp.java +++ /dev/null @@ -1,1056 +0,0 @@ -/* - * Portions Copyright (C) 2003 Sun Microsystems, Inc. - * All rights reserved. - */ - -/* - * - * COPYRIGHT NVIDIA CORPORATION 2003. ALL RIGHTS RESERVED. - * BY ACCESSING OR USING THIS SOFTWARE, YOU AGREE TO: - * - * 1) ACKNOWLEDGE NVIDIA'S EXCLUSIVE OWNERSHIP OF ALL RIGHTS - * IN AND TO THE SOFTWARE; - * - * 2) NOT MAKE OR DISTRIBUTE COPIES OF THE SOFTWARE WITHOUT - * INCLUDING THIS NOTICE AND AGREEMENT; - * - * 3) ACKNOWLEDGE THAT TO THE MAXIMUM EXTENT PERMITTED BY - * APPLICABLE LAW, THIS SOFTWARE IS PROVIDED *AS IS* AND - * THAT NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, - * EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED - * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY - * SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES - * WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS - * OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS - * INFORMATION, OR ANY OTHER PECUNIARY LOSS), INCLUDING ATTORNEYS' - * FEES, RELATING TO THE USE OF OR INABILITY TO USE THIS SOFTWARE, - * EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.vertexProgWarp; - -import java.awt.*; -import java.awt.event.*; -import java.io.*; -import java.nio.*; -import java.util.*; -import javax.swing.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.util.*; -import demos.common.*; -import demos.util.*; -import gleem.*; -import gleem.linalg.*; - -/** - Simple space-warp/distortion vertex program demo<br> - (Press the space bar to switch through programs)<br><p> - - [email protected] 9/2000, based on Cass's vtxprog_silhouette<br><p> - - Ported to Java by Kenneth Russell -*/ - -public class VertexProgWarp extends Demo { - private Frame frame; - private Animator animator; - private volatile boolean quit; - - private GLAutoDrawable drawable; - private DurationTimer timer = new DurationTimer(); - private boolean firstRender = true; - private int frameCount; - - public static void main(String[] args) { - new VertexProgWarp().run(args); - } - - public void run(String[] args) { - GLCanvas canvas = new GLCanvas(); - VertexProgWarp demo = new VertexProgWarp(); - canvas.addGLEventListener(demo); - - final Animator animator = new Animator(canvas); - demo.setDemoListener(new DemoListener() { - public void shutdownDemo() { - runExit(animator); - } - public void repaint() {} - }); - - final Frame frame = new Frame(); - demo.setTitleSetter(new VertexProgWarp.TitleSetter() { - public void setTitle(String title) { - frame.setTitle(title); - } - }); - frame.setLayout(new BorderLayout()); - canvas.setSize(512, 512); - frame.add(canvas, BorderLayout.CENTER); - frame.pack(); - frame.show(); - canvas.requestFocus(); - - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - runExit(animator); - } - }); - - animator.start(); - } - - public static abstract class TitleSetter { - public abstract void setTitle(String title); - } - - public void setTitleSetter(TitleSetter setter) { - titleSetter = setter; - } - - private TitleSetter titleSetter; - private boolean initComplete; - - // period of 4-term Taylor approximation to sin isn't quite 2*M_PI - private static final float SIN_PERIOD = 3.079f; - private static final int NUM_OBJS = 5; - private static final int NUM_PROGS = 7; - private int[] programs = new int[NUM_PROGS]; - private float zNear = 0.1f; - private float zFar = 10.0f; - private int program = 2; - private int obj = 2; - private boolean[] b = new boolean[256]; - private boolean wire = false; - private boolean toggleWire = false; - private boolean animating = true; - private boolean doViewAll = true; - - private Time time = new SystemTime(); - private float anim = 0.0f; - private float animScale = 7.0f; - private float amp = 0.05f; - private float freq = 8.0f; - private float d = 4.0f; - - private GLU glu = new GLU(); - private ExaminerViewer viewer; - - public void init(GLAutoDrawable drawable) { - initComplete = false; - GL gl = drawable.getGL(); - - float cc = 0.0f; - gl.glClearColor(cc, cc, cc, 1); - - gl.glColor3f(1,1,1); - gl.glEnable(GL.GL_DEPTH_TEST); - gl.glDisable(GL.GL_CULL_FACE); - - try { - initExtension(gl, "GL_ARB_vertex_program"); - } catch (RuntimeException e) { - shutdownDemo(); - throw(e); - } - - for(int i=0; i<NUM_OBJS; i++) { - gl.glNewList(i+1, GL.GL_COMPILE); - drawObject(gl, i); - gl.glEndList(); - } - - for(int i=0; i<NUM_PROGS; i++) { - int[] vtxProgTmp = new int[1]; - gl.glGenProgramsARB(1, vtxProgTmp, 0); - programs[i] = vtxProgTmp[0]; - gl.glBindProgramARB(GL.GL_VERTEX_PROGRAM_ARB, programs[i]); - gl.glProgramStringARB(GL.GL_VERTEX_PROGRAM_ARB, GL.GL_PROGRAM_FORMAT_ASCII_ARB, programTexts[i].length(), programTexts[i]); - } - - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, 0, 0.0f, 0.0f, 1.0f, 0.0f); // light position/direction - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, 1, 0.0f, 1.0f, 0.0f, 0.0f); // diffuse color - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, 2, 1.0f, 1.0f, 1.0f, 0.0f); // specular color - - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, 3, 0.0f, 1.0f, 2.0f, 3.0f); // smoothstep constants - - // sin Taylor series constants - 1, 1/3!, 1/5!, 1/7! - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, 4, 1.0f, 1.0f / (3*2), 1.0f / (5*4*3*2), 1.0f / (7*6*5*4*3*2)); - - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, 5, 1.0f / (2.0f * SIN_PERIOD), 2.0f * SIN_PERIOD, SIN_PERIOD, SIN_PERIOD/2.0f); - - // sin wave frequency, amplitude - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, 6, 1.0f, 0.2f, 0.0f, 0.0f); - - // phase animation - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, 7, 0.0f, 0.0f, 0.0f, 0.0f); - - // fisheye sphere radius - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, 8, 1.0f, 0.0f, 0.0f, 0.0f); - - setWindowTitle(); - - doViewAll = true; - - b['p'] = true; - - drawable.addKeyListener(new KeyAdapter() { - public void keyPressed(KeyEvent e) { - dispatchKey(e.getKeyCode(), e.getKeyChar()); - } - }); - - // Register the window with the ManipManager - ManipManager manager = ManipManager.getManipManager(); - manager.registerWindow(drawable); - this.drawable = drawable; - - viewer = new ExaminerViewer(MouseButtonHelper.numMouseButtons()); - viewer.setNoAltKeyMode(true); - viewer.setAutoRedrawMode(false); - viewer.attach(drawable, new BSphereProvider() { - public BSphere getBoundingSphere() { - return new BSphere(new Vec3f(0, 0, 0), 1.0f); - } - }); - viewer.setVertFOV((float) Math.toRadians(60)); - viewer.setZNear(zNear); - viewer.setZFar(zFar); - initComplete = true; - } - - public void display(GLAutoDrawable drawable) { - if (!initComplete) { - return; - } - - if (!firstRender) { - if (++frameCount == 30) { - timer.stop(); - System.err.println("Frames per second: " + (30.0f / timer.getDurationAsSeconds())); - timer.reset(); - timer.start(); - frameCount = 0; - } - } else { - firstRender = false; - timer.start(); - } - - time.update(); - - GL gl = drawable.getGL(); - - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - if (toggleWire) { - wire = !wire; - if (wire) - gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_LINE); - else - gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_FILL); - toggleWire = false; - } - - gl.glPushMatrix(); - - if (doViewAll) { - viewer.viewAll(gl); - doViewAll = false; - } - - if (animating) { - anim -= (float) (animScale * time.deltaT()); - } - - viewer.update(gl); - ManipManager.getManipManager().updateCameraParameters(drawable, viewer.getCameraParameters()); - ManipManager.getManipManager().render(drawable, gl); - - gl.glBindProgramARB(GL.GL_VERTEX_PROGRAM_ARB, programs[program]); - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, 7, anim, 0.0f, 0.0f, 0.0f); - - if (program==6) - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, 6, (float) Math.sin(anim)*amp*50.0f, 0.0f, 0.0f, 0.0f); - else - gl.glProgramEnvParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, 6, freq, amp, d, d+1); - - if (b['p']) - gl.glEnable(GL.GL_VERTEX_PROGRAM_ARB); - - gl.glDisable(GL.GL_TEXTURE_2D); - gl.glCallList(obj+1); - - gl.glDisable(GL.GL_VERTEX_PROGRAM_ARB); - - gl.glPopMatrix(); - } - - // Unused routines - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - - //---------------------------------------------------------------------- - // Internals only below this point - // - public void shutdownDemo() { - ManipManager.getManipManager().unregisterWindow(drawable); - drawable.removeGLEventListener(this); - super.shutdownDemo(); - } - - private void initExtension(GL gl, String glExtensionName) { - if (!gl.isExtensionAvailable(glExtensionName)) { - final String message = "OpenGL extension \"" + glExtensionName + "\" not available"; - new Thread(new Runnable() { - public void run() { - JOptionPane.showMessageDialog(null, message, "Unavailable extension", JOptionPane.ERROR_MESSAGE); - shutdownDemo(); - } - }).start(); - throw new RuntimeException(message); - } - } - - private void dispatchKey(int keyCode, char k) { - if (k < 256) - b[k] = !b[k]; - - switch (keyCode) { - case KeyEvent.VK_HOME: - case KeyEvent.VK_R: - anim = 0.0f; - amp = 0.05f; - freq = 8.0f; - d = 4.0f; - doViewAll = true; - break; - - case KeyEvent.VK_LEFT: - case KeyEvent.VK_KP_LEFT: - program--; - if (program < 0) - program = NUM_PROGS-1; - setWindowTitle(); - break; - - case KeyEvent.VK_RIGHT: - case KeyEvent.VK_KP_RIGHT: - program = (program + 1) % NUM_PROGS; - setWindowTitle(); - break; - - case KeyEvent.VK_F1: - case KeyEvent.VK_H: - String endl = System.getProperty("line.separator"); - endl = endl + endl; - String msg = ("F1/h - Help" + endl + - "Home - Reset" + endl + - "Left Button & Mouse - Rotate viewpoint" + endl + - "1..5 - Switch object (Sphere, Torus, Triceratop, Cube, Cylinder)" + endl + - "- / + - Change amplitude" + endl + - "[ / ] - Change frequency" + endl + - ", / . - Change square fisheye size" + endl + - "Left - Next vertex program" + endl + - "Right - Previous vertex program" + endl + - "W - Toggle wireframe" + endl + - "Space - Toggle animation" + endl + - "Esc/q - Exit program" + endl); - JOptionPane.showMessageDialog(null, msg, "Help", JOptionPane.INFORMATION_MESSAGE); - break; - - case KeyEvent.VK_ESCAPE: - case KeyEvent.VK_Q: - shutdownDemo(); - return; - - case KeyEvent.VK_W: - toggleWire = true; - break; - - case KeyEvent.VK_EQUALS: - case KeyEvent.VK_PLUS: - amp += 0.01; - break; - - case KeyEvent.VK_MINUS: - amp -= 0.01; - break; - - case KeyEvent.VK_CLOSE_BRACKET: - freq += 0.5; - break; - - case KeyEvent.VK_OPEN_BRACKET: - freq -= 0.5; - break; - - case KeyEvent.VK_PERIOD: - d += 0.1; - break; - - case KeyEvent.VK_COMMA: - d -= 0.1; - break; - - case KeyEvent.VK_SPACE: - // Could also start/stop Animator here - animating = !animating; - break; - - case KeyEvent.VK_1: - obj = 0; - break; - - case KeyEvent.VK_2: - obj = 1; - break; - - case KeyEvent.VK_3: - obj = 2; - break; - - case KeyEvent.VK_4: - obj = 3; - break; - - case KeyEvent.VK_5: - obj = 4; - break; - } - } - - private void setWindowTitle() { - titleSetter.setTitle("SpaceWarp - " + programNames[program]); - } - - private void drawObject(GL gl, int which) { - switch(which) { - case 0: - drawSphere(gl, 0.5f, 100, 100); - break; - - case 1: - drawTorus(gl, 0.25f, 0.5f, 100, 100); - break; - - case 2: - try { - Triceratops.drawObject(gl); - } catch (IOException e) { - shutdownDemo(); - throw new RuntimeException(e); - } - break; - - case 3: - drawCube(gl); - break; - - case 4: - drawCylinder(gl); - break; - } - } - - private void drawSphere(GL gl, float radius, int slices, int stacks) { - int J = stacks; - int I = slices; - for(int j = 0; j < J; j++) { - float v = j/(float) J; - float phi = (float) (v * 2 * Math.PI); - float v2 = (j+1)/(float) J; - float phi2 = (float) (v2 * 2 * Math.PI); - - gl.glBegin(GL.GL_QUAD_STRIP); - for(int i = 0; i < I; i++) { - float u = i/(I-1.0f); - float theta = (float) (u * Math.PI); - float x,y,z,nx,ny,nz; - - nx = (float) (Math.cos(theta)*Math.cos(phi)); - ny = (float) (Math.sin(theta)*Math.cos(phi)); - nz = (float) (Math.sin(phi)); - x = radius * nx; - y = radius * ny; - z = radius * nz; - - gl.glColor3f ( u, v, 0.0f); - gl.glNormal3f(nx, ny, nz); - gl.glVertex3f( x, y, z); - - nx = (float) (Math.cos(theta)*Math.cos(phi2)); - ny = (float) (Math.sin(theta)*Math.cos(phi2)); - nz = (float) (Math.sin(phi2)); - x = radius * nx; - y = radius * ny; - z = radius * nz; - - gl.glColor3f ( u, v+(1.0f/(J-1.0f)), 0.0f); - gl.glNormal3f(nx, ny, nz); - gl.glVertex3f( x, y, z); - } - gl.glEnd(); - } - } - - private void drawTorus(GL gl, float meridian_radius, float core_radius, - int meridian_slices, int core_slices) { - int J = meridian_slices; - int I = core_slices; - for(int j = 0; j < J-1; j++) { - float v = j/(J-1.0f); - float rho = (float) (v * 2.0f * Math.PI); - float v2 = (j+1)/(J-1.0f); - float rho2 = (float) (v2 * 2.0f * Math.PI); - gl.glBegin(GL.GL_QUAD_STRIP); - for(int i = 0; i < I; i++) { - float u = i/(I-1.0f); - float theta = (float) (u * 2.0f * Math.PI); - float x,y,z,nx,ny,nz; - - x = (float) (core_radius*Math.cos(theta) + meridian_radius*Math.cos(theta)*Math.cos(rho)); - y = (float) (core_radius*Math.sin(theta) + meridian_radius*Math.sin(theta)*Math.cos(rho)); - z = (float) (meridian_radius*Math.sin(rho)); - nx = (float) (Math.cos(theta)*Math.cos(rho)); - ny = (float) (Math.sin(theta)*Math.cos(rho)); - nz = (float) (Math.sin(rho)); - - gl.glColor3f ( u, v, 0.0f); - gl.glNormal3f(nx, ny, nz); - gl.glVertex3f( x, y, z); - - x = (float) (core_radius*Math.cos(theta) + meridian_radius*Math.cos(theta)*Math.cos(rho2)); - y = (float) (core_radius*Math.sin(theta) + meridian_radius*Math.sin(theta)*Math.cos(rho2)); - z = (float) (meridian_radius*Math.sin(rho2)); - nx = (float) (Math.cos(theta)*Math.cos(rho2)); - ny = (float) (Math.sin(theta)*Math.cos(rho2)); - nz = (float) (Math.sin(rho2)); - - gl.glColor3f ( u, v, 0.0f); - gl.glNormal3f(nx, ny, nz); - gl.glVertex3f( x, y, z); - } - gl.glEnd(); - } - } - - private void drawCube(GL gl) { - int cr = 40; - float scaleFactor = 0.5f; - - // back - gl.glColor3f(1.0f, 0.0f, 0.0f); - gl.glNormal3f(0.0f, 0.0f, -1.0f); - drawGrid(gl, cr, cr, scaleFactor, -1.0f, -1.0f, -1.0f, 2.0f, 0.0f, 0.0f, 0.0f, 2.0f, 0.0f); - - // front - gl.glColor3f(1.0f, 0.0f, 0.0f); - gl.glNormal3f(0.0f, 0.0f, 1.0f); - drawGrid(gl, cr, cr, scaleFactor, -1.0f, -1.0f, 1.0f, 2.0f, 0.0f, 0.0f, 0.0f, 2.0f, 0.0f); - - // left - gl.glColor3f(0.0f, 1.0f, 0.0f); - gl.glNormal3f(-1.0f, 0.0f, 0.0f); - drawGrid(gl, cr, cr, scaleFactor, -1.0f, -1.0f, -1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 2.0f, 0.0f); - - // right - gl.glColor3f(0.0f, 0.0f, 1.0f); - gl.glNormal3f(1.0f, 0.0f, 0.0f); - drawGrid(gl, cr, cr, scaleFactor, 1.0f, -1.0f, -1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 2.0f, 0.0f); - - // bottom - gl.glColor3f(1.0f, 1.0f, 0.0f); - gl.glNormal3f(0.0f,-1.0f, 0.0f); - drawGrid(gl, cr, cr, scaleFactor, -1.0f, -1.0f, -1.0f, 2.0f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f); - - // top - gl.glColor3f(0.0f, 1.0f, 1.0f); - gl.glNormal3f(0.0f, 1.0f, 0.0f); - drawGrid(gl, cr, cr, scaleFactor, -1.0f, 1.0f, -1.0f, 2.0f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f); - } - - private void drawGrid(GL gl, int rows, int cols, - float scaleFactor, - float sx, float sy, float sz, - float ux, float uy, float uz, - float vx, float vy, float vz) { - int x, y; - - for(y=0; y<rows; y++) { - gl.glBegin(GL.GL_QUAD_STRIP); - for(x=0; x<=cols; x++) { - float u = x / (float) cols; - float v = y / (float) rows; - float v2 = v + (1.0f / (float) rows); - - gl.glTexCoord2f(u, v); - gl.glVertex3f(scaleFactor * (sx + (u*ux) + (v*vx)), - scaleFactor * (sy + (u*uy) + (v*vy)), - scaleFactor * (sz + (u*uz) + (v*vz))); - - gl.glTexCoord2f(u, v2); - gl.glVertex3f(scaleFactor * (sx + (u*ux) + (v2*vx)), - scaleFactor * (sy + (u*uy) + (v2*vy)), - scaleFactor * (sz + (u*uz) + (v2*vz))); - } - gl.glEnd(); - } - } - - private void drawCylinder(GL gl) { - GLUquadric quad; - - quad = glu.gluNewQuadric(); - glu.gluQuadricDrawStyle (quad, GLU.GLU_FILL); - glu.gluQuadricOrientation(quad, GLU.GLU_OUTSIDE); - glu.gluQuadricNormals (quad, GLU.GLU_SMOOTH); - glu.gluQuadricTexture (quad, true); - - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glPushMatrix(); - gl.glTranslatef(-1.0f, 0.0f, 0.0f); - gl.glRotatef (90.0f, 0.0f, 1.0f, 0.0f); - - glu.gluCylinder(quad, 0.25f, 0.25f, 2.0f, 60, 30); - gl.glPopMatrix(); - - glu.gluDeleteQuadric(quad); - } - - private static final String[] programNames = new String[] { - "Normal", - "Pulsate", - "Wave", - "Square fisheye", - "Spherical fisheye", - "Ripple", - "Twist" - }; - - private static final String programSetup = - "PARAM mvp [4] = { state.matrix.mvp }; # modelview projection matrix\n" + - "PARAM mvit[4] = { state.matrix.modelview.invtrans }; # modelview matrix inverse transpose\n" + - "PARAM mv [4] = { state.matrix.modelview }; # modelview matrix\n" + - "PARAM proj[4] = { state.matrix.projection }; # projection matrix\n" + - "PARAM lightPos = program.env[0]; # light position/direction\n" + - "PARAM diffuseCol = program.env[1]; # diffuse color\n" + - "PARAM specularCol = program.env[2]; # specular color\n" + - "PARAM smoothstep = program.env[3]; # smoothstep constants\n" + - "PARAM sinTaylorConst1 = program.env[4]; # sin Taylor series constants 1 of 2\n" + - "PARAM sinTaylorConst2 = program.env[5]; # sin Taylor series constants 2 of 2\n" + - "PARAM sinFreqAmplitude = program.env[6]; # sin wave frequency, amplitude\n" + - "PARAM phaseAnim = program.env[7]; # phase animation\n" + - "PARAM fisheyeRadius = program.env[8]; # fisheye sphere radius\n" + - "\n" + - "# Per vertex inputs\n" + - "ATTRIB iPos = vertex.position; # position\n" + - "ATTRIB iTex = vertex.texcoord; # tex coord\n" + - "ATTRIB iNorm = vertex.normal; # normal\n" + - "\n" + - "# Outputs\n" + - "OUTPUT oPos = result.position; # position\n" + - "OUTPUT oCol0 = result.color; # color\n" + - "OUTPUT oTex0 = result.texcoord; # tex coord\n" + - "\n" + - "# Temporaries\n" + - "TEMP r0;\n" + - "TEMP r1;\n" + - "TEMP r2;\n" + - "TEMP r3;\n" + - "TEMP r4;\n"; - - private static final String[] programTexts = new String[] { - // - // Transform with diffuse lighting - // - "!!ARBvp1.0\n" + - "#Simple transform and diffuse lighting\n" + - programSetup + - "DP4 oPos.x, mvp[0], iPos ; # object x MVP -> clip\n" + - "DP4 oPos.y, mvp[1], iPos ;\n" + - "DP4 oPos.z, mvp[2], iPos ;\n" + - "DP4 oPos.w, mvp[3], iPos ;\n" + - "\n" + - "DP3 r1.x, mvit[0], iNorm ; # normal x MV-1T -> lighting normal\n" + - "DP3 r1.y, mvit[1], iNorm ;\n" + - "DP3 r1.z, mvit[2], iNorm ;\n" + - "\n" + - "DP3 r0, lightPos, r1 ; # L.N\n" + - "MUL oCol0.xyz, r0, diffuseCol ; # col = L.N * diffuse\n" + - "MOV oTex0, iTex;\n" + - "END\n", - - // - // Pulsate - // - "!!ARBvp1.0\n" + - "#Displace geometry along normal based on sine function of distance from origin\n" + - "#(in object space)\n" + - "#sinFreqAmplitude.x = wave frequency\n" + - "#sinFreqAmplitude.y = wave amplitude\n" + - "#sinTaylorConst2 = PI constants\n" + - "#sinTaylorConst1 = Taylor series constants (see below)\n" + - "\n" + - programSetup + - "MOV r0, iPos; \n" + - "\n" + - "#calculate distance from (0, 0, 0)\n" + - "DP3 r3.x, r0, r0;\n" + - "RSQ r3.x, r3.x;\n" + - "RCP r3.x, r3.x;\n" + - "\n" + - "MUL r3.x, r3.x, sinFreqAmplitude.x; # wave frequency\n" + - "ADD r3.x, r3.x, phaseAnim.x; # phase animation\n" + - "\n" + - "#reduce to period of 2*PI\n" + - "MUL r2, r3.x, sinTaylorConst2.x;\n" + - "EXP r4, r2.x; # r4.y = r2.x - floor(r2.x)\n" + - "MUL r3.x, r4.y, sinTaylorConst2.y;\n" + - "\n" + - "# offset to -PI - PI\n" + - "ADD r3.x, r3.x, -sinTaylorConst2.z;\n" + - "\n" + - "#Sine approximation using Taylor series (accurate between -PI and PI) :\n" + - "#sin(x) = x - (x^3)/3! + (x^5)/5! - (x^7)/7! + ...\n" + - "#sin(x) ~= x*(1 - (x^2)*(1/3! - (x^2)(1/5! - (x^2)/7! )))\n" + - "# = x * (a - y*(b - y*(c - y*d)))\n" + - "#where\n" + - "#a = 1.0 sinTaylorConst1.x\n" + - "#b = 1/3! sinTaylorConst1.y\n" + - "#c = 1/5! sinTaylorConst1.z\n" + - "#d = 1/7! sinTaylorConst1.w\n" + - "#y = x^2 r2\n" + - "\n" + - "#r1.x = sin(r3.x);\n" + - "\n" + - "MUL r2, r3.x, r3.x;\n" + - "MAD r1, -r2, sinTaylorConst1.w, sinTaylorConst1.z;\n" + - "MAD r1, r1, -r2, sinTaylorConst1.y;\n" + - "MAD r1, r1, -r2, sinTaylorConst1.x;\n" + - "MUL r1, r1, r3.x;\n" + - "\n" + - "#displace vertex along normal\n" + - "MUL r1.x, r1.x, sinFreqAmplitude.y;\n" + - "MAX r1.x, r1.x, smoothstep.x; # r1.x = max(r1.x, 0.0);\n" + - "MUL r2.xyz, iNorm, r1.x;\n" + - "ADD r0.xyz, r0, r2;\n" + - "\n" + - "#simple lighting\n" + - "DP3 r1.x, mvit[0], iNorm ; # normal x MV-1T -> lighting normal\n" + - "DP3 r1.y, mvit[1], iNorm ;\n" + - "DP3 r1.z, mvit[2], iNorm ;\n" + - "\n" + - "DP3 r2, lightPos, r1 ; # light position DOT normal\n" + - "MUL oCol0.xyz, r2, diffuseCol ; # col = ldotn * diffuse\n" + - "\n" + - "MOV oTex0, iTex;\n" + - "\n" + - "DP4 oPos.x, mvp[0], r0 ; # object x MVP -> clip\n" + - "DP4 oPos.y, mvp[1], r0 ;\n" + - "DP4 oPos.z, mvp[2], r0 ;\n" + - "DP4 oPos.w, mvp[3], r0 ;\n" + - "\n" + - "END\n", - - // - // Wave - // - "!!ARBvp1.0\n" + - "# Perturb vertices in clip space with sine wave\n" + - "# x += sin((y*freq)+anim) * amp\n" + - programSetup + - "DP4 r0.x, mvp[0], iPos ;\n" + - "DP4 r0.y, mvp[1], iPos ;\n" + - "DP4 r0.z, mvp[2], iPos ;\n" + - "DP4 r0.w, mvp[3], iPos ;\n" + - "\n" + - "MUL r3.x, r0.y, sinFreqAmplitude.x; # wave frequency\n" + - "ADD r3.x, r3.x, phaseAnim.x; # phase animation\n" + - "\n" + - "# reduce to period of 2*PI\n" + - "MUL r2, r3.x, sinTaylorConst2.x;\n" + - "EXP r4, r2.x; # r4.y = r2.x - floor(r2.x)\n" + - "MUL r3.x, r4.y, sinTaylorConst2.y;\n" + - "\n" + - "# offset to -PI - PI\n" + - "ADD r3.x, r3.x, -sinTaylorConst2.z;\n" + - "\n" + - "# r1.x = sin(r3.x);\n" + - "MUL r2, r3.x, r3.x;\n" + - "MAD r1, -r2, sinTaylorConst1.w, sinTaylorConst1.z;\n" + - "MAD r1, r1, -r2, sinTaylorConst1.y;\n" + - "MAD r1, r1, -r2, sinTaylorConst1.x;\n" + - "MUL r1, r1, r3.x;\n" + - "\n" + - "MAD r0.x, r1.x, sinFreqAmplitude.y, r0.x;\n" + - "\n" + - "# simple lighting\n" + - "DP3 r1.x, mvit[0], iNorm ; # normal x MV-1T -> lighting normal\n" + - "DP3 r1.y, mvit[1], iNorm ;\n" + - "DP3 r1.z, mvit[2], iNorm ;\n" + - "DP3 r2, lightPos, r1 ; # light position DOT normal\n" + - "MUL oCol0.xyz, r2, diffuseCol ; # col = ldotn * diffuse\n" + - "MOV oTex0, iTex;\n" + - "\n" + - "MOV oPos, r0;\n" + - "\n" + - "END\n", - - // - // Fisheye - // - "!!ARBvp1.0\n" + - "#Fisheye distortion based on function:\n" + - "#f(x)=(d+1)/(d+(1/x))\n" + - "#maps the [0,1] interval monotonically onto [0,1]\n" + - "\n" + - "#sinFreqAmplitude.z = d\n" + - "#sinFreqAmplitude.w = d+1\n" + - programSetup + - "\n" + - "DP4 r0.x, mvp[0], iPos ;\n" + - "DP4 r0.y, mvp[1], iPos ;\n" + - "DP4 r0.z, mvp[2], iPos ;\n" + - "DP4 r0.w, mvp[3], iPos ;\n" + - "\n" + - "# do perspective divide\n" + - "RCP r1, r0.w;\n" + - "MUL r0, r0, r1.w;\n" + - "\n" + - "MAX r1, r0, -r0; # r1 = abs(r0)\n" + - "\n" + - "SLT r2, r0, smoothstep.x; # r2 = (r0 < 0.0) ? 1.0 : 0.0\n" + - "SGE r3, r0, smoothstep.x; # r3 = (r0 >= 0.0) ? 1.0 : 0.0\n" + - "\n" + - "# distort x\n" + - "# h(x)=(d+1)/(d+(1/x))\n" + - "RCP r1.x, r1.x; # r1 = 1 / r1\n" + - "ADD r1.x, r1.x, sinFreqAmplitude.z; # r1 += d\n" + - "RCP r1.x, r1.x; # r1 = 1 / r1\n" + - "MUL r1.x, r1.x, sinFreqAmplitude.w; # r1 *= d + 1\n" + - "\n" + - "# distort y\n" + - "RCP r1.y, r1.y; # r1 = 1 / r1\n" + - "ADD r1.y, r1.y, sinFreqAmplitude.z; # r1 += d\n" + - "RCP r1.y, r1.y; # r1 = 1 / r1\n" + - "MUL r1.y, r1.y, sinFreqAmplitude.w; # r1 *= d + 1\n" + - "\n" + - "# handle negative cases\n" + - "MUL r4.xy, r1, r3; # r4 = r1 * r3\n" + - "MAD r1.xy, r1, -r2, r4; # r1 = r1 * -r2 + r4\n" + - "\n" + - "# simple lighting\n" + - "DP3 r2.x, mvit[0], iNorm ; # normal x MV-1T -> lighting normal\n" + - "DP3 r2.y, mvit[1], iNorm ;\n" + - "DP3 r2.z, mvit[2], iNorm ;\n" + - "DP3 r3, lightPos, r2 ; # light position DOT normal\n" + - "MUL oCol0.xyz, r3, diffuseCol ; # col = ldotn * diffuse\n" + - "\n" + - "MOV oTex0, iTex;\n" + - "\n" + - "MOV oPos, r1;\n" + - "\n" + - "END\n", - - // - // Spherize - // - "!!ARBvp1.0\n" + - "# Spherical fish-eye distortion\n" + - "# in clip space\n" + - programSetup + - "DP4 r0.x, mvp[0], iPos;\n" + - "DP4 r0.y, mvp[1], iPos;\n" + - "DP4 r0.z, mvp[2], iPos;\n" + - "DP4 r0.w, mvp[3], iPos;\n" + - "\n" + - "# do perspective divide\n" + - "RCP r1.x, r0.w;\n" + - "MUL r2, r0, r1.x;\n" + - "\n" + - "# calculate distance from centre\n" + - "MUL r1.x, r2.x, r2.x;\n" + - "MAD r1.x, r2.y, r2.y, r1.x;\n" + - "RSQ r1.x, r1.x; # r1.x = 1 / sqrt(x*x+y*y)\n" + - "\n" + - "# calculate r3 = normalized direction vector\n" + - "MUL r3.xy, r0, r1.x;\n" + - "\n" + - "RCP r1.x, r1.x; # r1.x = actual distance\n" + - "MIN r1.x, r1.x, smoothstep.y; # r1.x = min(r1.x, 1.0)\n" + - "\n" + - "# remap based on: f(x) = sqrt(1-x^2)\n" + - "ADD r1.x, smoothstep.y, -r1.x;\n" + - "MAD r1.x, -r1.x, r1.x, smoothstep.y;\n" + - "RSQ r1.x, r1.x;\n" + - "RCP r1.x, r1.x;\n" + - "\n" + - "# move vertex to new distance from centre\n" + - "MUL r0.xy, r3, r1.x;\n" + - "\n" + - "# simple lighting\n" + - "DP3 r2.x, mvit[0], iNorm; # normal x MV-1T -> lighting normal\n" + - "DP3 r2.y, mvit[1], iNorm;\n" + - "DP3 r2.z, mvit[2], iNorm;\n" + - "DP3 r3, lightPos, r2 ; # light position DOT normal\n" + - "MUL oCol0.xyz, r3, diffuseCol ; # col = ldotn * diffuse\n" + - "\n" + - "MOV oTex0, iTex;\n" + - "\n" + - "MOV oPos, r0;\n" + - "\n" + - "END\n", - - // - // Ripple - // - "!!ARBvp1.0\n" + - "# Ripple distortion\n" + - programSetup + - "DP4 r0.x, mvp[0], iPos;\n" + - "DP4 r0.y, mvp[1], iPos;\n" + - "DP4 r0.z, mvp[2], iPos;\n" + - "DP4 r0.w, mvp[3], iPos;\n" + - "\n" + - "# do perspective divide\n" + - "RCP r1.x, r0.w;\n" + - "MUL r4, r0, r1.x;\n" + - "\n" + - "# calculate distance from centre\n" + - "MUL r1.x, r4.x, r4.x;\n" + - "MAD r1.x, r4.y, r4.y, r1.x;\n" + - "RSQ r1.x, r1.x;\n" + - "\n" + - "RCP r1.x, r1.x;\n" + - "\n" + - "MUL r1.x, r1.x, sinFreqAmplitude.x; # wave frequency\n" + - "ADD r1.x, r1.x, phaseAnim.x; # phase animation\n" + - "\n" + - "# reduce to period of 2*PI\n" + - "MUL r2, r1.x, sinTaylorConst2.x; # r2 = r1 / 2.0 * PI\n" + - "EXP r4, r2.x; # r4.y = r2.x - floor(r2.x)\n" + - "MUL r1.x, r4.y, sinTaylorConst2.y;\n" + - "\n" + - "# offset to -PI - PI\n" + - "ADD r1.x, r1.x, -sinTaylorConst2.z;\n" + - "\n" + - "# r3.x = sin(r1.x)\n" + - "MUL r2, r1.x, r1.x;\n" + - "MAD r3, -r2, sinTaylorConst1.w, sinTaylorConst1.z;\n" + - "MAD r3, r3, -r2, sinTaylorConst1.y;\n" + - "MAD r3, r3, -r2, sinTaylorConst1.x;\n" + - "MUL r3, r3, r1.x;\n" + - "\n" + - "MUL r3.x, r3.x, sinFreqAmplitude.y;\n" + - "\n" + - "# move vertex towards centre based on distance\n" + - "MAD r0.xy, r0, -r3.x, r0;\n" + - "\n" + - "# lighting\n" + - "DP3 r2.x, mvit[0], iNorm; # normal x MV-1T -> lighting normal\n" + - "DP3 r2.y, mvit[1], iNorm;\n" + - "DP3 r2.z, mvit[2], iNorm;\n" + - "DP3 r3, lightPos, r2; # light position DOT normal\n" + - "MUL oCol0.xyz, r3, diffuseCol; # col = ldotn * diffuse\n" + - "\n" + - "MOV oTex0, iTex;\n" + - "\n" + - "MOV oPos, r0;\n" + - "\n" + - "END\n", - - // - // Twist - // - "!!ARBvp1.0\n" + - "# Twist\n" + - programSetup + - "MOV r0, iPos;\n" + - "\n" + - "MUL r1.x, r0.x, sinFreqAmplitude.x; # frequency\n" + - "\n" + - "# calculate sin(angle) and cos(angle)\n" + - "ADD r1.y, r1.x, -sinTaylorConst2.w; # r1.y = r1.x + PI/2.0\n" + - "\n" + - "# reduce to period of 2*PI\n" + - "MUL r2, r1, sinTaylorConst2.x; # r2 = r1 / 2.0 * PI\n" + - "EXP r3.y, r2.x; # r2.y = r2.x - floor(r2.x)\n" + - "MOV r3.x, r3.y;\n" + - "EXP r3.y, r2.y; # r2.y = r2.x - floor(r2.x)\n" + - "MAD r2, r3, sinTaylorConst2.y, -sinTaylorConst2.z; # r2 = (r3 * 2.0*PI) - M_PI\n" + - "\n" + - "# r4.x = sin(r2.x);\n" + - "# r4.y = cos(r2.y);\n" + - "# parallel taylor series\n" + - "MUL r3, r2, r2;\n" + - "MAD r4, -r3, sinTaylorConst1.w, sinTaylorConst1.z;\n" + - "MAD r4, r4, -r3, sinTaylorConst1.y;\n" + - "MAD r4, r4, -r3, sinTaylorConst1.x;\n" + - "MUL r4, r4, r2;\n" + - "\n" + - "# x y z w\n" + - "# R:\n" + - "# 1 0 0 0\n" + - "# 0 c -s 0\n" + - "# 0 s c 0\n" + - "# 0 0 0 1\n" + - "\n" + - "# c = cos(a)\n" + - "# s = sin(a)\n" + - "\n" + - "# calculate rotation around X\n" + - "MOV r1, r0;\n" + - "\n" + - "MUL r1.y, r0.y, r4.y;\n" + - "MAD r1.y, r0.z, -r4.x, r1.y; # ny = y*cos(a) - z*sin(a)\n" + - "\n" + - "MUL r1.z, r0.y, r4.x;\n" + - "MAD r1.z, r0.z, r4.y, r1.z; # nz = y*sin(a) + z*cos(a)\n" + - "\n" + - "DP4 oPos.x, mvp[0], r1; # object x MVP -> clip\n" + - "DP4 oPos.y, mvp[1], r1;\n" + - "DP4 oPos.z, mvp[2], r1;\n" + - "DP4 oPos.w, mvp[3], r1;\n" + - "\n" + - "# rotate normal\n" + - "MOV r2, iNorm;\n" + - "MUL r2.y, iNorm.y, r4.y;\n" + - "MAD r2.y, iNorm.z, -r4.x, r2.y; # ny = y*cos(a) - z*sin(a)\n" + - "\n" + - "MUL r2.z, iNorm.y, r4.x;\n" + - "MAD r2.z, iNorm.z, r4.y, r2.z; # nz = y*sin(a) + z*cos(a)\n" + - "\n" + - "# diffuse lighting\n" + - "DP3 r1.x, mvit[0], r2; # normal x MV-1T -> lighting normal\n" + - "DP3 r1.y, mvit[1], r2;\n" + - "DP3 r1.z, mvit[2], r2;\n" + - "\n" + - "DP3 r3, lightPos, r1; # light position DOT normal\n" + - "MUL oCol0.xyz, r3, diffuseCol; # col = ldotn * diffuse\n" + - "\n" + - "MOV oTex0, iTex;\n" + - "\n" + - "END\n" - }; - - private static void runExit(final Animator animator) { - // Note: calling System.exit() synchronously inside the draw, - // reshape or init callbacks can lead to deadlocks on certain - // platforms (in particular, X11) because the JAWT's locking - // routines cause a global AWT lock to be grabbed. Instead run - // the exit routine in another thread. - new Thread(new Runnable() { - public void run() { - animator.stop(); - System.exit(0); - } - }).start(); - } -} diff --git a/src/demos/xtrans/InterpolatedFloat.java b/src/demos/xtrans/InterpolatedFloat.java deleted file mode 100755 index 4ac570b..0000000 --- a/src/demos/xtrans/InterpolatedFloat.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.xtrans; - -import gleem.linalg.*; - -/** A floating-point value which interpolates between specified start - * and end values. - * - * @author Kenneth Russell - */ - -public class InterpolatedFloat { - private float start; - private float end; - - /** Returns the starting value for the interpolation. */ - public float getStart() { return start; } - - /** Sets the starting value for the interpolation. */ - public void setStart(float val) { start = val; } - - /** Returns the ending value for the interpolation. */ - public float getEnd() { return end; } - - /** Sets the ending value for the interpolation. */ - public void setEnd(float val) { end = val; } - - /** Gets the current interpolated value at the specified fraction of - interpolation (0.0 - 1.0). */ - public float getCurrent(float fraction) { - return (start * (1.0f - fraction)) + (end * fraction); - } -} diff --git a/src/demos/xtrans/InterpolatedQuad2f.java b/src/demos/xtrans/InterpolatedQuad2f.java deleted file mode 100755 index 4afaa8c..0000000 --- a/src/demos/xtrans/InterpolatedQuad2f.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.xtrans; - -import gleem.linalg.*; - -/** A quadrilateral of two-dimensional floating-point values which - * interpolates between specified start and end values. - * - * @author Kenneth Russell - */ - -public class InterpolatedQuad2f { - private Quad2f start; - private Quad2f end; - - /** Constructs a new InterpolatedQuad2f. By default both the start - and end quadrilaterals have all of their points set to the - origin. */ - public InterpolatedQuad2f() { - start = new Quad2f(); - end = new Quad2f(); - } - - /** Returns the starting value for the interpolation. */ - public Quad2f getStart() { - return start; - } - - /** Sets the starting value for the interpolation. */ - public void setStart(Quad2f quad) { - start.set(quad); - } - - /** Returns the ending value for the interpolation. */ - public Quad2f getEnd() { - return end; - } - - /** Sets the ending value for the interpolation. */ - public void setEnd(Quad2f quad) { - end.set(quad); - } - - /** Gets the current interpolated value at the specified fraction of - interpolation (0.0 - 1.0). */ - public Quad2f getCurrent(float fraction) { - return start.times(1.0f - fraction).plus(end.times(fraction)); - } -} diff --git a/src/demos/xtrans/InterpolatedQuad3f.java b/src/demos/xtrans/InterpolatedQuad3f.java deleted file mode 100755 index a508f47..0000000 --- a/src/demos/xtrans/InterpolatedQuad3f.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.xtrans; - -import gleem.linalg.*; - -/** A quadrilateral of three-dimensional floating-point values which - * interpolates between specified start and end values. - * - * @author Kenneth Russell - */ - -public class InterpolatedQuad3f { - private Quad3f start; - private Quad3f end; - - /** Constructs a new InterpolatedQuad3f. By default both the start - and end quadrilaterals have all of their points set to the - origin. */ - public InterpolatedQuad3f() { - start = new Quad3f(); - end = new Quad3f(); - } - - /** Returns the starting value for the interpolation. */ - public Quad3f getStart() { - return start; - } - - /** Sets the starting value for the interpolation. */ - public void setStart(Quad3f quad) { - start.set(quad); - } - - /** Returns the ending value for the interpolation. */ - public Quad3f getEnd() { - return end; - } - - /** Sets the ending value for the interpolation. */ - public void setEnd(Quad3f quad) { - end.set(quad); - } - - /** Gets the current interpolated value at the specified fraction of - interpolation (0.0 - 1.0). */ - public Quad3f getCurrent(float fraction) { - return start.times(1.0f - fraction).plus(end.times(fraction)); - } -} diff --git a/src/demos/xtrans/InterpolatedVec3f.java b/src/demos/xtrans/InterpolatedVec3f.java deleted file mode 100755 index 722d8ad..0000000 --- a/src/demos/xtrans/InterpolatedVec3f.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.xtrans; - -import gleem.linalg.*; - -/** A vector of three-dimensional floating-point values which - * interpolates between specified start and end values. - * - * @author Kenneth Russell - */ - -public class InterpolatedVec3f { - private Vec3f start; - private Vec3f end; - - /** Constructs a new InterpolatedQuad2f. By default both the start - and end quadrilaterals have all of their points set to the - origin. */ - public InterpolatedVec3f() { - start = new Vec3f(); - end = new Vec3f(); - } - - /** Returns the starting value for the interpolation. */ - public Vec3f getStart() { return start; } - - /** Sets the starting value for the interpolation. */ - public void setStart(Vec3f vec) { start.set(vec); } - - /** Returns the ending value for the interpolation. */ - public Vec3f getEnd() { return end; } - - /** Sets the ending value for the interpolation. */ - public void setEnd(Vec3f vec) { end.set(vec); } - - /** Gets the current interpolated value at the specified fraction of - interpolation (0.0 - 1.0). */ - public Vec3f getCurrent(float fraction) { - return start.times(1.0f - fraction).plus(end.times(fraction)); - } -} diff --git a/src/demos/xtrans/Main.java b/src/demos/xtrans/Main.java deleted file mode 100755 index 783e7eb..0000000 --- a/src/demos/xtrans/Main.java +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.xtrans; - -import java.awt.*; -import java.awt.event.*; -import java.util.*; -import javax.swing.*; -import javax.swing.event.*; -import javax.swing.table.*; -import javax.swing.tree.*; - -/** Demonstration showing off XTDesktopPane. - * - * @author Kenneth Russell - */ - -public class Main { - private XTDesktopPane desktop; - private XTBasicTransitionManager transManager; - - private static final int TABLE = 1; - private static final int TREE = 2; - - private Point loc = new Point(); - - private boolean scrollingEnabled = true; - private boolean rotationEnabled = true; - private boolean fadesEnabled = true; - private Random random; - - private void chooseNextTransition() { - // Only choose one if the user's constraints force us to - if (scrollingEnabled && rotationEnabled && fadesEnabled) { - return; - } - if (random == null) { - random = new Random(); - } - boolean fade = random.nextBoolean(); - if (!fadesEnabled) { - fade = false; - } - - XTBasicTransitionManager.Style style = XTBasicTransitionManager.STYLE_NO_MOTION; - if (scrollingEnabled) { - style = XTBasicTransitionManager.STYLE_SCROLL; - } else if (rotationEnabled) { - style = XTBasicTransitionManager.STYLE_ROTATE; - } - XTBasicTransitionManager.Direction direction = null; - switch (random.nextInt(4)) { - case 0: direction = XTBasicTransitionManager.DIR_LEFT; break; - case 1: direction = XTBasicTransitionManager.DIR_RIGHT; break; - case 2: direction = XTBasicTransitionManager.DIR_UP; break; - default: direction = XTBasicTransitionManager.DIR_DOWN; break; - } - transManager.setNextTransition(style, direction, fade); - } - - private void addWindow(int which) { - JInternalFrame frame = new JInternalFrame(); - frame.setResizable(true); - frame.setClosable(true); - frame.setVisible(true); - - switch (which) { - case TABLE: - { - frame.setTitle("Table Example"); - Object[][] data = produceTableData(3, 20); - DefaultTableModel model = new DefaultTableModel(data, new String[] { "A", "B", "C" }); - JTable table = new JTable(model); - JScrollPane scrollPane = new JScrollPane(table); - frame.getContentPane().add(scrollPane); - break; - } - - case TREE: - { - frame.setTitle("Tree Example"); - DefaultMutableTreeNode root = new DefaultMutableTreeNode(); - populateTree(root, 2); - JTree tree = new JTree(root); - tree.setRootVisible(false); - frame.getContentPane().add(tree); - break; - } - - default: - throw new IllegalArgumentException(); - } - - frame.setLocation(loc); - loc = new Point((loc.x + 20) % desktop.getWidth(), (loc.y + 20) % desktop.getHeight()); - frame.addInternalFrameListener(new InternalFrameAdapter() { - public void internalFrameClosing(InternalFrameEvent e) { - chooseNextTransition(); - } - }); - frame.pack(); - int sz = Math.min(desktop.getWidth() / 3, desktop.getHeight()); - frame.setSize(sz, sz); - chooseNextTransition(); - desktop.add(frame); - desktop.moveToFront(frame); - } - - private Object[][] produceTableData(int cols, int rows) { - Object[][] res = new Object[rows][]; - - Random r = new Random(); - - for (int i = 0; i < rows; i++) { - Object[] row = new Object[cols]; - for (int j = 0; j < cols; j++) { - row[j] = new Integer(r.nextInt(1000)); - } - res[i] = row; - } - - return res; - } - - private void populateTree(DefaultMutableTreeNode node, int depth) { - node.add(new DefaultMutableTreeNode("A")); - node.add(new DefaultMutableTreeNode("B")); - node.add(new DefaultMutableTreeNode("C")); - - if (depth > 0) { - for (Enumeration e = node.children(); e.hasMoreElements(); ) { - populateTree((DefaultMutableTreeNode) e.nextElement(), depth - 1); - } - } - } - - private void run(String[] args) { - JFrame frame = new JFrame("Desktop Demo"); - - JMenu menu = new JMenu("Actions"); - JMenuBar menuBar = new JMenuBar(); - JMenuItem item; - - item = new JMenuItem("Add Table"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - addWindow(TABLE); - } - }); - menu.add(item); - - item = new JMenuItem("Add Tree"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - addWindow(TREE); - } - }); - menu.add(item); - - item = new JMenuItem("Close all"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - Component[] cs = desktop.getComponents(); - for (int i = 0; i < cs.length; i++) { - chooseNextTransition(); - desktop.remove(cs[i]); - } - } - }); - menu.add(item); - - item = new JMenuItem("Quit"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - System.exit(0); - } - }); - item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK)); - menu.add(item); - - menuBar.add(menu); - - menu = new JMenu("Options"); - JCheckBoxMenuItem ckitem = new JCheckBoxMenuItem("Enable Scrolling"); - ckitem.setState(true); - ckitem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - scrollingEnabled = ((JCheckBoxMenuItem) e.getSource()).getState(); - } - }); - menu.add(ckitem); - - ckitem = new JCheckBoxMenuItem("Enable Rotation"); - ckitem.setState(true); - ckitem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - rotationEnabled = ((JCheckBoxMenuItem) e.getSource()).getState(); - } - }); - menu.add(ckitem); - - ckitem = new JCheckBoxMenuItem("Enable Fades"); - ckitem.setState(true); - ckitem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - fadesEnabled = ((JCheckBoxMenuItem) e.getSource()).getState(); - } - }); - menu.add(ckitem); - - menuBar.add(menu); - - frame.setJMenuBar(menuBar); - - desktop = new XTDesktopPane(); - transManager = (XTBasicTransitionManager) desktop.getTransitionManager(); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.getContentPane().add(desktop); - - DisplayMode cur = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDisplayMode(); - int width = (int) (cur.getWidth() * 0.75f); - int height = (int) (width * 3.0f / 4.0f); - if (height >= 95.0f * cur.getHeight()) { - height = (int) (cur.getHeight() * 0.75f); - width = (int) (height * 4.0f / 3.0f); - } - frame.setSize(width, height); - frame.setVisible(true); - } - - public static void main(String[] args) { - new Main().run(args); - } -} diff --git a/src/demos/xtrans/OffscreenComponentWrapper.java b/src/demos/xtrans/OffscreenComponentWrapper.java deleted file mode 100755 index fa7ad03..0000000 --- a/src/demos/xtrans/OffscreenComponentWrapper.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.xtrans; - -import java.awt.*; -import javax.swing.*; - -// Internal JOGL API references -import com.sun.opengl.impl.Debug; -// FIXME: debugging only -import com.sun.opengl.impl.Java2D; - -/** Provides an interposition point where we can install a new - * Graphics object in the rendering pipeline. Because lightweight - * components always delegate up to their parents to fetch Graphics - * objects, we can use this point to swap in the off-screen - * VolatileImage we're using for rendering. Applications should not - * need to construct instances of this class directly, though they may - * encounter them when traversing the component hierarchy created by - * the OffscreenDesktopPane, since they are automatically inserted - * during add operations. - * - * @author Kenneth Russell - */ - -public class OffscreenComponentWrapper extends JComponent { - private static final boolean DEBUG = Debug.debug("OffscreenComponentWrapper"); - - /** Instantiates an OffscreenComponentWrapper. This should not be - called directly by applications. */ - public OffscreenComponentWrapper(Component arg) { - if (arg == null) { - throw new RuntimeException("Null argument"); - } - add(arg); - setOpaque(false); - } - - protected void addImpl(Component c, Object constraints, int index) { - if (getComponentCount() != 0) { - throw new RuntimeException("May only add one child"); - } - super.addImpl(c, constraints, index); - } - - /** Returns the sole child component of this one. */ - public Component getChild() { - if (getComponentCount() == 0) { - throw new RuntimeException("No child found"); - } - return getComponent(0); - } - - public void remove(int i) { - super.remove(i); - throw new RuntimeException("Should not call this"); - } - - public void remove(Component c) { - super.remove(c); - throw new RuntimeException("Should not call this"); - } - - /** Overrides the superclass's getGraphics() in order to provide a - correctly-translated Graphics object on the - OffscreenDesktopPane's back buffer. */ - public Graphics getGraphics() { - Component parent = getParent(); - if ((parent != null) && (parent instanceof OffscreenDesktopPane)) { - OffscreenDesktopPane desktop = (OffscreenDesktopPane) parent; - OffscreenDesktopManager manager = (OffscreenDesktopManager) desktop.getDesktopManager(); - // Find out where the component we're rendering lives on the back buffer - Graphics g = manager.getOffscreenGraphics(); - Rectangle bounds = manager.getBoundsOnBackBuffer(getChild()); - if (bounds == null) { - if (DEBUG) { - System.err.println("No bounds for child"); - } - - // Not yet laid out on back buffer; however, avoid painting to - // screen - return g; - } - if (DEBUG) { - System.err.println("Graphics.translate(" + bounds.x + "," + bounds.y + ")"); - System.err.println(" Surface identifier = " + Java2D.getOGLSurfaceIdentifier(g)); - } - - g.translate(bounds.x, bounds.y); - // Also take into account the translation of the child - Component c = getChild(); - g.translate(-c.getX(), -c.getY()); - // Make sure any changes the user made to the double-buffering - // of child components don't mess up the rendering results - OffscreenDesktopManager.switchDoubleBuffering(this, false); - // A child component will be performing drawing and therefore - // get the OpenGL copy of the back buffer out of sync; will need - // to repair it - // NOTE: in theory we should only need to set the copy back - // state on the OffscreenDesktopManager. However it seems that - // there are certain operations (like scrolling in a - // JScrollPane) that have unanticipated consequences, such as - // drawing into the Swing back buffer (which is heavily - // undesirable, because it can cause on-screen visual artifacts - // in our rendering paradigm) as well as potentially - // inadvertently copying regions of the back buffer from one - // place to another. Since we don't know the side effects of - // such operations we currently need to treat the entire back - // buffer as being dirty. - manager.setNeedsRedraw(); - // NOTE: this is a bit of a hack but we need to indicate to the - // parent desktop that it is dirty as well since one of its - // children (being painted by alternate means) needs to be - // redrawn - desktop.repaint(); - return g; - } else { - return super.getGraphics(); - } - } - - public void paintComponent(Graphics g) { - } - - protected void paintChildren(Graphics g) { - } -} diff --git a/src/demos/xtrans/OffscreenDesktopManager.java b/src/demos/xtrans/OffscreenDesktopManager.java deleted file mode 100755 index 1aabb67..0000000 --- a/src/demos/xtrans/OffscreenDesktopManager.java +++ /dev/null @@ -1,826 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.xtrans; - -import java.awt.*; -import java.awt.geom.*; -import java.awt.image.*; -import java.beans.*; -import java.nio.*; -import java.util.*; -import javax.swing.*; - -// Internal JOGL API references -import com.sun.opengl.impl.Debug; -// FIXME: debugging only -import com.sun.opengl.impl.Java2D; - -// FIXME: we need a way to lock a portion of the off-screen back -// buffer to be persistent for a while during component removals. It -// turns out that the removal process of JInternalFrames "mostly" -// works OK with temporarily preserving a region of the back buffer -// but in the case of redraws of the target component occurring after -// it has been removed (such as in the case of a GLJPanel being -// animated) we need to preserve that region. - -/** A DesktopManager implementation supporting off-screen rendering - * and management of components' images for later compositing. - * - * @author Kenneth Russell - */ - -public class OffscreenDesktopManager implements DesktopManager { - protected final static String HAS_BEEN_ICONIFIED_PROPERTY = "wasIconOnce"; - - protected VolatileImage offscreenBackBuffer; - - // Verious dirty states. - // - // STATE_CLEAN indicates that the OpenGL texture is in sync with the - // VolatileImage back buffer and that no (relatively expensive) copy - // back operations need be performed. - // - // STATE_COPY_BACK indicates that the VolatileImage back buffer must - // be copied back e.g. into an OpenGL texture, but that the back - // buffer's contents are clean. - // - // STATE_REDRAW indicates that all components need to be repainted - // on the back buffer. STATE_REDRAW implies STATE_COPY_BACK. - // - // STATE_RELAYOUT is the most expensive state, in which all - // components are re-laid out on the back buffer and repainted - // completely. This implies STATE_REDRAW, which in turn implies - // STATE_COPY_BACK. - public static final int STATE_CLEAN = 0; - public static final int STATE_COPY_BACK = 1; - public static final int STATE_REDRAW = 2; - public static final int STATE_RELAYOUT = 3; - - // We start off assuming that we need to lay out everything - protected int dirtyState = STATE_RELAYOUT; - - protected Map/*<Component, Rectangle>*/ componentPositionsOnBackBuffer = new WeakHashMap(); - - // For debugging - private static final boolean DEBUG = Debug.debug("OffscreenDesktopManager"); - private static final boolean VERBOSE = Debug.verbose(); - private JFrame debuggingFrame; - private JPanel debuggingPanel; - - public OffscreenDesktopManager() { - if (DEBUG) { - debuggingFrame = new JFrame("Debugging frame"); - debuggingPanel = new JPanel() { - public void paintComponent(Graphics g) { - if (offscreenBackBuffer != null) { - g.drawImage(offscreenBackBuffer, 0, 0, null); - } - } - }; - debuggingPanel.setDoubleBuffered(false); - debuggingFrame.getContentPane().add(debuggingPanel); - debuggingFrame.pack(); - debuggingFrame.setLocation(GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDisplayMode().getWidth() / 2, 0); - debuggingFrame.setSize(256, 256); - debuggingFrame.setVisible(true); - } - } - - /** Sets the state bit in the desktop manager indicating that the - offscreen texture has changed and may need to be copied back - e.g. to an OpenGL texture. */ - public void setNeedsCopyBack() { - dirtyState = Math.max(dirtyState, STATE_COPY_BACK); - } - - /** Sets the state bit in the desktop manager indicating that the - child components need to be redrawn to the off-screen buffer. */ - public void setNeedsRedraw() { - dirtyState = Math.max(dirtyState, STATE_REDRAW); - } - - /** Sets the state bit in the desktop manager indicating that the - components need to be re-laid out on the off-screen back buffer. - This implies that all of these components need to be repainted - and also implies that the off-screen back buffer may need to be - copied back (needsCopyBack()). */ - public void setNeedsReLayout() { - dirtyState = Math.max(dirtyState, STATE_RELAYOUT); - } - - /** Returns the state bit in the desktop manager indicating that the - offscreen texture has changed and may need to be copied back - e.g. to an OpenGL texture. */ - public boolean needsCopyBack() { - return (dirtyState >= STATE_COPY_BACK); - } - - /** Returns the state bit in the desktop manager indicating that the - child components need to be redrawn to the off-screen buffer. */ - public boolean needsRedraw() { - return (dirtyState >= STATE_REDRAW); - } - - /** Returns the state bit in the desktop manager indicating that the - components need to be re-laid out on the off-screen back buffer. - This implies that all of these components need to be repainted - and also implies that the off-screen back buffer may need to be - copied back (needsCopyBack()). */ - public boolean needsReLayout() { - return (dirtyState >= STATE_RELAYOUT); - } - - /** Returns the default graphics configuration of the default screen - device for the local graphics environment. */ - protected GraphicsConfiguration getDefaultConfiguration() { - return GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration(); - } - - /** Fetches the Graphics object corresponding to the off-screen back - buffer. */ - public Graphics getOffscreenGraphics() { - return offscreenBackBuffer.getGraphics(); - } - - /** Fetches the Image being used as the back buffer. */ - public Image getOffscreenBackBuffer() { - return offscreenBackBuffer; - } - - /** Returns the width of the off-screen back buffer at this point in - time, or -1 if it has not been created yet. */ - public int getOffscreenBackBufferWidth() { - return offscreenBackBuffer.getWidth(); - } - - /** Returns the height of the off-screen back buffer at this point - in time, or -1 if it has not been created yet. */ - public int getOffscreenBackBufferHeight() { - return offscreenBackBuffer.getHeight(); - } - - /** Fetches the Rectangle corresponding to the bounds of the given - child component on the off-screen back buffer. This portion of - the back buffer can be drawn manually by the end user to display - the given component. */ - public Rectangle getBoundsOnBackBuffer(Component c) { - return (Rectangle) componentPositionsOnBackBuffer.get(c); - } - - /** Updates the layouts of the components on the off-screen back - buffer without repainting the back buffer. This should always be - called after adding, removing or resizing child components. It - is called automatically by {@link #updateOffscreenBuffer - updateOffscreenBuffer}. */ - public void layoutOffscreenBuffer(OffscreenDesktopPane parent) { - if (needsReLayout()) { - // Must do the following: - // 1. Lay out the desktop pane's children on the off-screen back - // buffer, keeping track of where they went - // 2. Draw the children to the off-screen buffer - // (Not done here: 3. Use JOGL to copy the off-screen buffer to a - // texture for later consumption by the XTDesktopPane) - - ////////////////////////////////////////////////////////////////// - // // - // FIXME: must use a more efficient packing algorithm than this // - // // - ////////////////////////////////////////////////////////////////// - - // NOTE: this is the rectangle packing problem, which is NP-hard. - // We could go to arbitrary lengths in order to improve the - // efficiency of this packing. Ideally we would like to minimize - // wasted space and (probably) shoot for a somewhat-square layout. - // Because currently we're just trying to get things working, - // we're going to do the simplest layout possible: just line - // things up left-to-right. - int maxHeight = -1; - int widthSum = 0; - - // Two-pass algorithm, one getting maximum height and summing - // widths, and one laying things out - for (int i = 0; i < parent.getComponentCount(); i++) { - Component c = ((OffscreenComponentWrapper) parent.getComponent(i)).getChild(); - int w = c.getWidth(); - int h = c.getHeight(); - maxHeight = Math.max(maxHeight, h); - widthSum += w; - } - int curX = 0; - for (int i = 0; i < parent.getComponentCount(); i++) { - Component c = ((OffscreenComponentWrapper) parent.getComponent(i)).getChild(); - int w = c.getWidth(); - int h = c.getHeight(); - Rectangle r = new Rectangle(curX, 0, w, h); - componentPositionsOnBackBuffer.put(c, r); - curX += w; - } - - // Re-create off-screen buffer if necessary - int offscreenWidth = nextPowerOf2(widthSum); - int offscreenHeight = nextPowerOf2(maxHeight); - if ((offscreenBackBuffer == null) || - (offscreenWidth != offscreenBackBuffer.getWidth()) || - (offscreenHeight != offscreenBackBuffer.getHeight())) { - if (offscreenBackBuffer != null) { - offscreenBackBuffer.flush(); - } - offscreenBackBuffer = - getDefaultConfiguration().createCompatibleVolatileImage(offscreenWidth, - offscreenHeight); - } - - if (DEBUG) { - debuggingPanel.setPreferredSize(new Dimension(offscreenWidth, offscreenHeight)); - debuggingFrame.setSize(offscreenWidth + 10, offscreenHeight + 30); - } - - dirtyState = STATE_REDRAW; - } - } - - /** Updates the image on the off-screen back buffer. This should - always be called before attempting to draw the child components' - contents on the screen. If the child components' states are - clean, this method does nothing. Note that this changes the - state bits back to clean, so subclasses should capture the - current state before calling the superclass implementation. */ - public void updateOffscreenBuffer(OffscreenDesktopPane parent) { - if (!needsCopyBack()) { - // Cleanest possible state - return; - } - - layoutOffscreenBuffer(parent); - - boolean validated = false; - boolean done = false; - while (!done) { - if (needsRedraw()) { - boolean redrawn = false; - - do { - // Validate it - int res = offscreenBackBuffer.validate(getDefaultConfiguration()); - if (!((res == VolatileImage.IMAGE_OK) || - (res == VolatileImage.IMAGE_RESTORED))) { - // FIXME: fail more gracefully - throw new RuntimeException("Unable to validate VolatileImage"); - } - validated = true; - - // Lay out and render components - final Graphics g = offscreenBackBuffer.getGraphics(); - int curX = 0; - for (int i = 0; i < parent.getComponentCount(); i++) { - Component c = ((OffscreenComponentWrapper) parent.getComponent(i)).getChild(); - - if (c.isVisible()) { - // Ensure this component and all children have double - // buffering disabled to prevent incorrect rendering results. - // Should try to make this more efficient, but doesn't look - // like there's any way to listen for setDoubleBuffered - // changes; could however listen for hierarchy change events, - // which are more likely to break things, but these are - // expensive to deliver as well - switchDoubleBuffering(c, false); - - // NOTE: should probably be smarter about this and only - // paint components which really need it (consult - // RepaintManager?). However, experimentation has shown - // that at this point the RepaintManager is already in - // the process of painting the child components and its - // notion of the dirty regions has already been cleared. - - Rectangle r = (Rectangle) componentPositionsOnBackBuffer.get(c); - if (r == null) { - // May be bug or race condition; for now just skip this one - continue; - } - Graphics g2 = g.create(); - if (DEBUG && VERBOSE) { - System.err.println("Translating Graphics to (" + r.x + "," + r.y + ")"); - System.err.println(" Surface identifier = " + Java2D.getOGLSurfaceIdentifier(g2)); - } - g2.translate(r.x, r.y); - c.paint(g2); - g2.dispose(); - } - } - g.dispose(); - if (!offscreenBackBuffer.contentsLost()) { - redrawn = true; - done = true; - } - } while (!redrawn); - } - - // If we didn't need to re-layout and draw the components, we - // might still need to copy back their results to an OpenGL - // texture. Subclasses should override this method to do - // additional work afterward. - - if (!validated) { - int res = offscreenBackBuffer.validate(getDefaultConfiguration()); - if (!((res == VolatileImage.IMAGE_OK) || - (res == VolatileImage.IMAGE_RESTORED))) { - // FIXME: fail more gracefully - throw new RuntimeException("Unable to validate VolatileImage"); - } - if (res == VolatileImage.IMAGE_RESTORED) { - // The contents were blown away since the time of the last - // render, so force a re-render - setNeedsRedraw(); - } else { - done = true; - } - } - } - - dirtyState = STATE_CLEAN; - - // Subclasses would do the copy back here - - if (DEBUG) { - debuggingPanel.repaint(); - } - } - - public void openFrame(JInternalFrame f) { - if(getDesktopPaneParent(f.getDesktopIcon()) != null) { - getDesktopPaneParent(f.getDesktopIcon()).add(f); - removeIconFor(f); - } - - setNeedsReLayout(); - } - - public void closeFrame(JInternalFrame f) { - boolean findNext = f.isSelected(); - JDesktopPane c = getDesktopPaneParent(f); - if (findNext) - try { f.setSelected(false); } catch (PropertyVetoException e2) { } - if(c != null) { - c.remove(f.getParent()); - repaintPortionOfDesktop(c, f); - } - removeIconFor(f); - if(f.getNormalBounds() != null) - f.setNormalBounds(null); - if(wasIcon(f)) - setWasIcon(f, null); - if (findNext) activateNextFrame(c); - - setNeedsReLayout(); - } - - public void maximizeFrame(JInternalFrame f) { - if (f.isIcon()) { - try { - // In turn calls deiconifyFrame in the desktop manager. - // That method will handle the maximization of the frame. - f.setIcon(false); - } catch (PropertyVetoException e2) { - } - } else { - f.setNormalBounds(f.getBounds()); - Rectangle desktopBounds = getDesktopPaneParent(f).getBounds(); - setBoundsForFrame(f, 0, 0, - desktopBounds.width, desktopBounds.height); - } - - // Set the maximized frame as selected. - try { - f.setSelected(true); - } catch (PropertyVetoException e2) { - } - - setNeedsReLayout(); - } - - public void minimizeFrame(JInternalFrame f) { - // If the frame was an icon restore it back to an icon. - if (f.isIcon()) { - iconifyFrame(f); - return; - } - - if ((f.getNormalBounds()) != null) { - Rectangle r = f.getNormalBounds(); - f.setNormalBounds(null); - try { f.setSelected(true); } catch (PropertyVetoException e2) { } - setBoundsForFrame(f, r.x, r.y, r.width, r.height); - } - - setNeedsReLayout(); - } - - public void iconifyFrame(JInternalFrame f) { - JInternalFrame.JDesktopIcon desktopIcon; - Container c = getDesktopPaneParent(f); - JDesktopPane d = f.getDesktopPane(); - boolean findNext = f.isSelected(); - - desktopIcon = f.getDesktopIcon(); - if(!wasIcon(f)) { - Rectangle r = getBoundsForIconOf(f); - desktopIcon.setBounds(r.x, r.y, r.width, r.height); - setWasIcon(f, Boolean.TRUE); - } - - if (c == null) { - return; - } - - if (c instanceof JLayeredPane) { - JLayeredPane lp = (JLayeredPane)c; - int layer = lp.getLayer(f); - lp.putLayer(desktopIcon, layer); - } - - // If we are maximized we already have the normal bounds recorded - // don't try to re-record them, otherwise we incorrectly set the - // normal bounds to maximized state. - if (!f.isMaximum()) { - f.setNormalBounds(f.getBounds()); - } - c.remove(f); - c.add(desktopIcon); - try { - f.setSelected(false); - } catch (PropertyVetoException e2) { - } - - // Get topmost of the remaining frames - if (findNext) { - activateNextFrame(c); - } - - setNeedsReLayout(); - } - - protected void activateNextFrame(Container c) { - int i; - JInternalFrame nextFrame = null; - if (c == null) return; - for (i = 0; i < c.getComponentCount(); i++) { - if (c.getComponent(i) instanceof JInternalFrame) { - nextFrame = (JInternalFrame) c.getComponent(i); - break; - } - } - if (nextFrame != null) { - try { nextFrame.setSelected(true); } - catch (PropertyVetoException e2) { } - moveToFront(nextFrame); - } - else { - c.requestFocus(); - } - - // This operation will change the graphic contents of the - // offscreen buffer but not the positions of any of the windows - setNeedsCopyBack(); - } - - public void deiconifyFrame(JInternalFrame f) { - JInternalFrame.JDesktopIcon desktopIcon = f.getDesktopIcon(); - Container c = getDesktopPaneParent(desktopIcon); - if (c != null) { - c.add(f); - // If the frame is to be restored to a maximized state make - // sure it still fills the whole desktop. - if (f.isMaximum()) { - Rectangle desktopBounds = c.getBounds(); - if (f.getWidth() != desktopBounds.width || - f.getHeight() != desktopBounds.height) { - setBoundsForFrame(f, 0, 0, - desktopBounds.width, desktopBounds.height); - } - } - removeIconFor(f); - if (f.isSelected()) { - moveToFront(f); - } else { - try { - f.setSelected(true); - } catch (PropertyVetoException e2) { - } - } - } - - setNeedsReLayout(); - } - - public void activateFrame(JInternalFrame f) { - Container p = getDesktopPaneParent(f); - Component[] c; - JDesktopPane d = f.getDesktopPane(); - JInternalFrame currentlyActiveFrame = - (d == null) ? null : d.getSelectedFrame(); - // fix for bug: 4162443 - if(p == null) { - // If the frame is not in parent, its icon maybe, check it - p = getDesktopPaneParent(f.getDesktopIcon()); - if(p == null) - return; - } - // we only need to keep track of the currentActive InternalFrame, if any - if (currentlyActiveFrame == null){ - if (d != null) { d.setSelectedFrame(f);} - } else if (currentlyActiveFrame != f) { - // if not the same frame as the current active - // we deactivate the current - if (currentlyActiveFrame.isSelected()) { - try { - currentlyActiveFrame.setSelected(false); - } - catch(PropertyVetoException e2) {} - } - if (d != null) { d.setSelectedFrame(f);} - } - moveToFront(f); - - // This operation will change the graphic contents of the - // offscreen buffer but not the positions of any of the windows - // setNeedsCopyBack(); - setNeedsRedraw(); - - repaintPortionOfDesktop(f); - } - - public void deactivateFrame(JInternalFrame f) { - JDesktopPane d = f.getDesktopPane(); - JInternalFrame currentlyActiveFrame = - (d == null) ? null : d.getSelectedFrame(); - if (currentlyActiveFrame == f) - d.setSelectedFrame(null); - - // This operation will change the graphic contents of the - // offscreen buffer but not the positions of any of the windows - setNeedsRedraw(); - - repaintPortionOfDesktop(f); - } - - public void beginDraggingFrame(JComponent f) { - // Nothing to do any more because the DesktopPane handles this by - // redrawing from the off-screen buffer - } - - public void dragFrame(JComponent f, int newX, int newY) { - f.setLocation(newX, newY); - repaintPortionOfDesktop(f); - } - - public void endDraggingFrame(JComponent f) { - // NOTE: nothing to do any more because OffscreenDesktopPane - // subclasses handle this - } - - public void beginResizingFrame(JComponent f, int direction) { - } - - public void resizeFrame(JComponent f, int newX, int newY, int newWidth, int newHeight) { - setBoundsForFrame(f, newX, newY, newWidth, newHeight); - repaintPortionOfDesktop(f); - } - - public void endResizingFrame(JComponent f) { - repaintPortionOfDesktop(f); - } - - public void setBoundsForFrame(JComponent f, int newX, int newY, int newWidth, int newHeight) { - boolean didResize = (f.getWidth() != newWidth || f.getHeight() != newHeight); - f.setBounds(newX, newY, newWidth, newHeight); - if(didResize) { - f.validate(); - } - setNeedsReLayout(); - } - - protected void removeIconFor(JInternalFrame f) { - JInternalFrame.JDesktopIcon di = f.getDesktopIcon(); - JDesktopPane c = getDesktopPaneParent(di); - if(c != null) { - c.remove(di); - repaintPortionOfDesktop(c, di); - } - } - - protected Rectangle getBoundsForIconOf(JInternalFrame f) { - // - // Get the icon for this internal frame and its preferred size - // - - JInternalFrame.JDesktopIcon icon = f.getDesktopIcon(); - Dimension prefSize = icon.getPreferredSize(); - // - // Get the parent bounds and child components. - // - - Container c = getDesktopPaneParent(f); - if (c == null) { - c = getDesktopPaneParent(f.getDesktopIcon()); - } - - if (c == null) { - /* the frame has not yet been added to the parent; how about (0,0) ?*/ - return new Rectangle(0, 0, prefSize.width, prefSize.height); - } - - Rectangle parentBounds = c.getBounds(); - Component [] components = c.getComponents(); - - - // - // Iterate through valid default icon locations and return the - // first one that does not intersect any other icons. - // - - Rectangle availableRectangle = null; - JInternalFrame.JDesktopIcon currentIcon = null; - - int x = 0; - int y = parentBounds.height - prefSize.height; - int w = prefSize.width; - int h = prefSize.height; - - boolean found = false; - - while (!found) { - - availableRectangle = new Rectangle(x,y,w,h); - - found = true; - - for ( int i=0; i<components.length; i++ ) { - - // - // Get the icon for this component - // - - if ( components[i] instanceof JInternalFrame ) { - currentIcon = ((JInternalFrame)components[i]).getDesktopIcon(); - } - else if ( components[i] instanceof JInternalFrame.JDesktopIcon ){ - currentIcon = (JInternalFrame.JDesktopIcon)components[i]; - } else - /* found a child that's neither an internal frame nor - an icon. I don't believe this should happen, but at - present it does and causes a null pointer exception. - Even when that gets fixed, this code protects against - the npe. hania */ - continue; - - // - // If this icon intersects the current location, get next location. - // - - if ( !currentIcon.equals(icon) ) { - if ( availableRectangle.intersects(currentIcon.getBounds()) ) { - found = false; - break; - } - } - } - - if (currentIcon == null) - /* didn't find any useful children above. This probably shouldn't - happen, but this check protects against an npe if it ever does - (and it's happening now) */ - return availableRectangle; - - x += currentIcon.getBounds().width; - - if ( x + w > parentBounds.width ) { - x = 0; - y -= h; - } - } - - return(availableRectangle); - } - - protected void setWasIcon(JInternalFrame f, Boolean value) { - if (value != null) { - f.putClientProperty(HAS_BEEN_ICONIFIED_PROPERTY, value); - } - } - - protected boolean wasIcon(JInternalFrame f) { - return (f.getClientProperty(HAS_BEEN_ICONIFIED_PROPERTY) == Boolean.TRUE); - } - - protected JDesktopPane getDesktopPaneParent(Component f) { - Container c = f.getParent(); - if (c == null) { - return null; - } - if (!(c instanceof OffscreenComponentWrapper)) { - throw new RuntimeException("Illegal component structure"); - } - Container parent = c.getParent(); - if (parent == null) { - return null; - } - if (!(parent instanceof JDesktopPane)) { - throw new RuntimeException("Illegal component structure"); - } - return (JDesktopPane) parent; - } - - private void moveToFront(Component f) { - Container c = getDesktopPaneParent(f); - if (c instanceof JDesktopPane) { - ((JDesktopPane) c).moveToFront(f.getParent()); - } - } - - private static int nextPowerOf2(int number) { - // Workaround for problems where 0 width or height are transiently - // seen during layout - if (number == 0) { - return 2; - } - - if (((number-1) & number) == 0) { - //ex: 8 -> 0b1000; 8-1=7 -> 0b0111; 0b1000&0b0111 == 0 - return number; - } - int power = 0; - while (number > 0) { - number = number>>1; - power++; - } - return (1<<power); - } - - /** Repaints the portion of the desktop pane parent corresponding to - the given component. */ - protected void repaintPortionOfDesktop(Component comp) { - repaintPortionOfDesktop(getDesktopPaneParent(comp), comp); - } - - /** Repaints the portion of the passed desktop pane corresponding to - the given component. */ - protected void repaintPortionOfDesktop(JDesktopPane desktop, Component comp) { - // Indicate to the desktop pane that a certain portion of the - // on-screen representation is dirty. The desktop can map these - // coordinates to the positions of the windows if they are - // different. - Rectangle r = comp.getBounds(); - desktop.repaint(r.x, r.y, r.width, r.height); - } - - /** Helper function to force the double-buffering of an entire - component hierarchy to the on or off state. */ - public static void switchDoubleBuffering(Component root, boolean val) { - if (root instanceof JComponent) { - ((JComponent) root).setDoubleBuffered(val); - } - if (root instanceof Container) { - Container container = (Container) root; - for (int i = 0; i < container.getComponentCount(); i++) { - switchDoubleBuffering(container.getComponent(i), val); - } - } - } -} diff --git a/src/demos/xtrans/OffscreenDesktopPane.java b/src/demos/xtrans/OffscreenDesktopPane.java deleted file mode 100755 index 7bd1f6c..0000000 --- a/src/demos/xtrans/OffscreenDesktopPane.java +++ /dev/null @@ -1,231 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.xtrans; - -import java.awt.*; -import java.awt.geom.*; -import java.util.*; -import javax.swing.*; - -// Internal JOGL API references -import com.sun.opengl.impl.Debug; - -/** A subclass of JDesktopPane which performs all of the rendering of - * its child components into an off-screen buffer. Provides access to - * this back buffer so subclasses can determine how to draw the - * contents of the child windows to the screen. - * - * @author Kenneth Russell - */ - -public class OffscreenDesktopPane extends JDesktopPane { - // - // Debugging functionality only - // - private static final boolean DEBUG = Debug.debug("OffscreenDesktopPane"); - private static final Color[] colors = { - Color.LIGHT_GRAY, - Color.CYAN, - Color.PINK, - Color.GRAY, - Color.MAGENTA, - Color.BLUE, - Color.ORANGE, - Color.DARK_GRAY, - Color.RED, - Color.YELLOW - }; - private int colorIdx; - - private Color getNextColor() { - Color c = colors[colorIdx]; - colorIdx = (colorIdx + 1) % colors.length; - return c; - } - - private Map/*<Component, Color>*/ componentColorMap; - - /** Constructs a new OffscreenDesktopPane. */ - public OffscreenDesktopPane() { - super(); - if (DEBUG) { - componentColorMap = new WeakHashMap(); - } - // Only use an OffscreenDesktopManager instance directly if we - // have not been subclassed - if (getClass() == OffscreenDesktopPane.class) { - setDesktopManager(new OffscreenDesktopManager()); - } - } - - /** Overrides superclass's addImpl to insert an - OffscreenComponentWrapper between the added component and this - one. The wrapper component produces Graphics objects used when - children repaint themselves directly. */ - protected void addImpl(Component c, Object constraints, int index) { - if (c instanceof OffscreenComponentWrapper) { - throw new RuntimeException("Should not add OffscreenComponentWrappers directly"); - } - OffscreenComponentWrapper wrapper = new OffscreenComponentWrapper(c); - // Note: this is essential in order to keep mouse events - // propagating correctly down the hierarchy - wrapper.setBounds(getBounds()); - OffscreenDesktopManager.switchDoubleBuffering(wrapper, false); - super.addImpl(wrapper, constraints, index); - if (DEBUG) { - componentColorMap.put(c, getNextColor()); - } - getOffscreenDesktopManager().setNeedsReLayout(); - repaint(); - } - - // In order to hide the presence of the OffscreenComponentWrapper a - // little more, we override remove to make it look like we can - // simply pass in the JInternalFrames inside the - // OffscreenComponentWrappers. There are some situations where we - // can't hide the presence of the OffscreenComponentWrapper (such as - // when calling getParent() of the JInternalFrame) so to avoid - // incorrect behavior of the rest of the toolkit we don't override - // getComponent() to skip the OffscreenComponentWrappers. - - /** Removes the component at the given index. */ - public void remove(int index) { - Component c = getComponent(index); - super.remove(index); - OffscreenDesktopManager.switchDoubleBuffering(c, true); - } - - /** Removes the specified component from this - OffscreenDesktopPane. This method accepts either the components - added by the application (which are not direct children of this - one) or the OffscreenComponentWrappers added implicitly by the - add() method. */ - public void remove(Component comp) { - comp = getWrapper(comp); - if (comp == null) { - // This component must not be one of our children - return; - } - super.remove(comp); - OffscreenDesktopManager.switchDoubleBuffering(comp, true); - } - - public void reshape(int x, int y, int w, int h) { - super.reshape(x, y, w, h); - Rectangle rect = new Rectangle(x, y, w, h); - Component[] cs = getComponents(); - for (int i = 0; i < cs.length; i++) { - // Note: this is essential in order to keep mouse events - // propagating correctly down the hierarchy - ((OffscreenComponentWrapper) cs[i]).setBounds(rect); - } - } - - /** Overridden from JLayeredPane for convenience when manipulating - child components. Accepts either the component added by the - application or the OffscreenComponentWrapper added implicitly by - the add() method. */ - public void setPosition(Component c, int position) { - super.setPosition(getWrapper(c), position); - } - - /** Paints all children of this OffscreenDesktopPane to the internal - off-screen buffer. Does no painting to the passed Graphics - object; this is the responsibility of subclasses. */ - protected void paintChildren(Graphics g) { - // Update desktop manager's offscreen buffer if necessary - getOffscreenDesktopManager().updateOffscreenBuffer(this); - - if (DEBUG) { - // Subclasses will need to override this behavior anyway, so - // only enable an on-screen representation if debugging is - // enabled. For now, simply paint colored rectangles indicating - // the on-screen locations of the windows. - final Component[] components = getRealChildComponents(); - int compCount = components.length; - for (int i = compCount - 1; i >= 0; i--) { - Component c = components[i]; - Rectangle r = c.getBounds(); - Color col = (Color) componentColorMap.get(c); - g.setColor(col); - g.fillRect(r.x, r.y, r.width, r.height); - } - } - } - - /** Fetches the real child components of this OffscreenDesktopPane, - skipping all OffscreenComponentWrappers implicitly added. */ - protected Component[] getRealChildComponents() { - Component[] cs = getComponents(); - for (int i = 0; i < cs.length; i++) { - cs[i] = ((OffscreenComponentWrapper) cs[i]).getChild(); - } - return cs; - } - - /** Returns the OffscreenDesktopManager associated with this - pane. */ - public OffscreenDesktopManager getOffscreenDesktopManager() { - return (OffscreenDesktopManager) getDesktopManager(); - } - - /** Returns the real child component of this OffscreenDesktopPane, - skipping the OffscreenComponentWrapper implicitly added. */ - protected static Component getRealComponent(Component c) { - if (c instanceof OffscreenComponentWrapper) { - return ((OffscreenComponentWrapper) c).getChild(); - } - return c; - } - - /** Returns the OffscreenComponentWrapper corresponding to the given - child component, or the passed component if it is already the - wrapper. */ - protected static Component getWrapper(Component c) { - if (c instanceof OffscreenComponentWrapper) { - return c; - } - Component parent = c.getParent(); - if (parent instanceof OffscreenComponentWrapper) { - return parent; - } - return null; - } -} diff --git a/src/demos/xtrans/Quad2f.java b/src/demos/xtrans/Quad2f.java deleted file mode 100755 index 2d26445..0000000 --- a/src/demos/xtrans/Quad2f.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.xtrans; - -import gleem.linalg.*; - -/** A quadrilateral in which the vertices are two-dimensional - * floating-point values. - * - * @author Kenneth Russell - */ - -public class Quad2f { - private Vec2f[] vecs; - - public static final int UPPER_LEFT = 0; - public static final int LOWER_LEFT = 1; - public static final int LOWER_RIGHT = 2; - public static final int UPPER_RIGHT = 2; - - private static final int NUM_VECS = 4; - - /** Constructs a Quad2f in which all the vertices are set to the - origin. */ - public Quad2f() { - vecs = new Vec2f[NUM_VECS]; - for (int i = 0; i < NUM_VECS; i++) { - vecs[i] = new Vec2f(); - } - } - - /** Constructs a Quad2f in which the vertices are set to the - specified values. */ - public Quad2f(Vec2f upperLeft, - Vec2f lowerLeft, - Vec2f lowerRight, - Vec2f upperRight) { - this(); - setVec(0, upperLeft); - setVec(1, lowerLeft); - setVec(2, lowerRight); - setVec(3, upperRight); - } - - /** Sets the specified vertex to the specified value. */ - public void setVec(int which, Vec2f val) { - vecs[which].set(val); - } - - /** Returns the specified vertex. */ - public Vec2f getVec(int which) { - return vecs[which]; - } - - /** Sets all four points of this quadrilateral. */ - public void set(Quad2f quad) { - for (int i = 0; i < NUM_VECS; i++) { - setVec(i, quad.getVec(i)); - } - } - - /** Returns a newly-constructed Quad2f in which all vertices have - been multiplied in scalar fashion by the passed value. */ - public Quad2f times(float val) { - return new Quad2f(getVec(0).times(val), - getVec(1).times(val), - getVec(2).times(val), - getVec(3).times(val)); - } - - /** Returns a newly-constructed Quad2f in which the vertices are the - component-wise sums of this quad and the passed quad. */ - public Quad2f plus(Quad2f val) { - return new Quad2f(getVec(0).plus(val.getVec(0)), - getVec(1).plus(val.getVec(1)), - getVec(2).plus(val.getVec(2)), - getVec(3).plus(val.getVec(3))); - } -} diff --git a/src/demos/xtrans/Quad3f.java b/src/demos/xtrans/Quad3f.java deleted file mode 100755 index 0964a74..0000000 --- a/src/demos/xtrans/Quad3f.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.xtrans; - -import gleem.linalg.*; - -/** A quadrilateral in which the vertices are three-dimensional - * floating-point values. - * - * @author Kenneth Russell - */ - -public class Quad3f { - private Vec3f[] vecs; - - public static final int UPPER_LEFT = 0; - public static final int LOWER_LEFT = 1; - public static final int LOWER_RIGHT = 2; - public static final int UPPER_RIGHT = 3; - - private static final int NUM_VECS = 4; - - /** Constructs a Quad3f in which all the vertices are set to the - origin. */ - public Quad3f() { - vecs = new Vec3f[NUM_VECS]; - for (int i = 0; i < NUM_VECS; i++) { - vecs[i] = new Vec3f(); - } - } - - /** Constructs a Quad3f in which the vertices are set to the - specified values. */ - public Quad3f(Vec3f upperLeft, - Vec3f lowerLeft, - Vec3f lowerRight, - Vec3f upperRight) { - this(); - setVec(0, upperLeft); - setVec(1, lowerLeft); - setVec(2, lowerRight); - setVec(3, upperRight); - } - - /** Sets the specified vertex to the specified value. */ - public void setVec(int which, Vec3f val) { - vecs[which].set(val); - } - - /** Returns the specified vertex. */ - public Vec3f getVec(int which) { - return vecs[which]; - } - - /** Sets all four points of this quadrilateral. */ - public void set(Quad3f quad) { - for (int i = 0; i < NUM_VECS; i++) { - setVec(i, quad.getVec(i)); - } - } - - /** Returns a newly-constructed Quad2f in which all vertices have - been multiplied in scalar fashion by the passed value. */ - public Quad3f times(float val) { - return new Quad3f(getVec(0).times(val), - getVec(1).times(val), - getVec(2).times(val), - getVec(3).times(val)); - } - - /** Returns a newly-constructed Quad2f in which the vertices are the - component-wise sums of this quad and the passed quad. */ - public Quad3f plus(Quad3f val) { - return new Quad3f(getVec(0).plus(val.getVec(0)), - getVec(1).plus(val.getVec(1)), - getVec(2).plus(val.getVec(2)), - getVec(3).plus(val.getVec(3))); - } -} diff --git a/src/demos/xtrans/XTBasicTransition.java b/src/demos/xtrans/XTBasicTransition.java deleted file mode 100755 index 5621788..0000000 --- a/src/demos/xtrans/XTBasicTransition.java +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.xtrans; - -import javax.media.opengl.*; -import gleem.linalg.*; - -/** A basic transition supporting animated translation, rotation about - * a pivot point, scrolling and fading effects. - * - * @author Kenneth Russell - */ - -public class XTBasicTransition implements XTTransition { - protected Vec3f pivot = new Vec3f(); - protected Vec3f axis = new Vec3f(); - protected InterpolatedFloat angle; - protected InterpolatedVec3f translation; - protected InterpolatedQuad3f vertices; - protected InterpolatedQuad2f texcoords; - protected InterpolatedFloat alpha; - protected float percentage; - - /** Constructs a new transition object with all of its initial state - set to zero. */ - public XTBasicTransition() { - } - - public void update(float percentage) { - this.percentage = percentage; - } - - public void draw(GL gl) { - float percent = percentage; - Quad3f vts = vertices.getCurrent(percent); - Quad2f tex = texcoords.getCurrent(percent); - - if (translation != null) { - Vec3f trans = translation.getCurrent(percent); - gl.glTranslatef(trans.x(), trans.y(), trans.z()); - } - // Rotate about pivot point - gl.glTranslatef(pivot.x(), pivot.y(), pivot.z()); - if (angle != null) { - gl.glRotatef(angle.getCurrent(percent), axis.x(), axis.y(), axis.z()); - } - gl.glTranslatef(-pivot.x(), -pivot.y(), -pivot.z()); - - gl.glBegin(GL.GL_TRIANGLES); - float a = 1.0f; - if (alpha != null) { - a = alpha.getCurrent(percent); - } - gl.glColor4f(1, 1, 1, a); - // Triangle 1 - gl.glTexCoord2f(tex.getVec(0).x(), tex.getVec(0).y()); - gl.glVertex3f (vts.getVec(0).x(), vts.getVec(0).y(), vts.getVec(0).z()); - gl.glTexCoord2f(tex.getVec(1).x(), tex.getVec(1).y()); - gl.glVertex3f (vts.getVec(1).x(), vts.getVec(1).y(), vts.getVec(1).z()); - gl.glTexCoord2f(tex.getVec(3).x(), tex.getVec(3).y()); - gl.glVertex3f (vts.getVec(3).x(), vts.getVec(3).y(), vts.getVec(3).z()); - // Triangle 2 - gl.glTexCoord2f(tex.getVec(3).x(), tex.getVec(3).y()); - gl.glVertex3f (vts.getVec(3).x(), vts.getVec(3).y(), vts.getVec(3).z()); - gl.glTexCoord2f(tex.getVec(1).x(), tex.getVec(1).y()); - gl.glVertex3f (vts.getVec(1).x(), vts.getVec(1).y(), vts.getVec(1).z()); - gl.glTexCoord2f(tex.getVec(2).x(), tex.getVec(2).y()); - gl.glVertex3f (vts.getVec(2).x(), vts.getVec(2).y(), vts.getVec(2).z()); - gl.glEnd(); - } - - /** Returns the rotation axis for this transition. By default this - axis is not set, so if an interpolator is specified for the - rotation angle the axis of rotation must be specified as - well. */ - public Vec3f getRotationAxis() { return axis; } - - /** Sets the rotation axis for this transition. By default this axis - is not set, so if an interpolator is specified for the rotation - angle the axis of rotation must be specified as well. */ - public void setRotationAxis(Vec3f axis) { this.axis.set(axis); } - - /** Returns the interpolator for the rotation angle for this - transition. By default this interpolator is null, meaning that - the transition does not perform any rotation. */ - public InterpolatedFloat getRotationAngle() { return angle; } - - /** Sets the interpolator for the rotation angle for this - transition. By default this interpolator is null, meaning that - the transition does not perform any rotation. */ - public void setRotationAngle(InterpolatedFloat angle) { this.angle = angle; } - - /** Returns the pivot point for this transition's rotation. By - default this is set to the origin, which corresponds to the - upper-left corner of the component being animated. */ - public Vec3f getPivotPoint() { return pivot; } - - /** Sets the pivot point for this transition's rotation. By default - this is set to the origin, which corresponds to the upper-left - corner of the component being animated. */ - public void setPivotPoint(Vec3f point) { pivot.set(point); } - - /** Returns the interpolator for this transition's translation. By - default the translation is a fixed vector from the origin to the - upper left corner of the component being animated; the vertices - are specified relative to that point in the +x and -y - directions. */ - public InterpolatedVec3f getTranslation() { return translation; } - - /** Sets the interpolator for this transition's translation. By - default the translation is a fixed vector from the origin to the - upper left corner of the component being animated; the vertices - are specified relative to that point in the +x and -y - directions. */ - public void setTranslation(InterpolatedVec3f interp) { translation = interp; } - - /** Returns the interpolator for the vertices of this transition's - component when drawn on screen. By default the vertices are - specified with the upper-left corner of the component at the - origin and the component extending in the +x (right) and -y - (down) directions; the units of the vertices correspond to the - on-screen size of the component in pixels. The component's - location is specified using the translation interpolator. */ - public InterpolatedQuad3f getVertices() { return vertices; } - - /** Sets the interpolator for the vertices of this transition's - component when drawn on screen. By default the vertices are - specified with the upper-left corner of the component at the - origin and the component extending in the +x (right) and -y - (down) directions; the units of the vertices correspond to the - on-screen size of the component in pixels. The component's - location is specified using the translation interpolator. */ - public void setVertices(InterpolatedQuad3f interp) { vertices = interp; } - - /** Returns the interpolator for the texture coordinates of this - transition's component when drawn on screen. By default these - are set so that at either the start or end point (depending on - whether this is an "in" or "out" transition) the texture - coordinates specify rendering of the component's entire - contents. */ - public InterpolatedQuad2f getTexCoords() { return texcoords; } - - /** Sets the interpolator for the texture coordinates of this - transition's component when drawn on screen. By default these - are set so that at either the start or end point (depending on - whether this is an "in" or "out" transition) the texture - coordinates specify rendering of the component's entire - contents. */ - public void setTexCoords(InterpolatedQuad2f interp) { texcoords = interp; } - - /** Returns the interpolator for this component's alpha value. */ - public InterpolatedFloat getAlpha() { return alpha; } - - /** Sets the interpolator for this component's alpha value. */ - public void setAlpha(InterpolatedFloat interp) { alpha = interp; } -} diff --git a/src/demos/xtrans/XTBasicTransitionManager.java b/src/demos/xtrans/XTBasicTransitionManager.java deleted file mode 100755 index c850d6b..0000000 --- a/src/demos/xtrans/XTBasicTransitionManager.java +++ /dev/null @@ -1,386 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.xtrans; - -import java.awt.*; -import java.awt.geom.*; -import java.util.*; -import gleem.linalg.*; - -/** A basic transition manager supporting animated scrolling, rotating - * and fading of components. - * - * @author Kenneth Russell - */ - -public class XTBasicTransitionManager implements XTTransitionManager { - /** Indicates the style of the transition (either no motion, - scrolling, or rotating). */ - public static class Style { - private Style() {} - } - - /** Indicates the component has no motion (scrolling or rotation) in - its animation. */ - public static Style STYLE_NO_MOTION = new Style(); - - /** Indicates the component is to be scrolled in to or out of - place. */ - public static Style STYLE_SCROLL = new Style(); - - /** Indicates the component is to be rotated in to or out of - place. */ - public static Style STYLE_ROTATE = new Style(); - - /** Indicates the direction of the transition if it contains any - motion (either up, down, left, or right). */ - public static class Direction { - private Direction() {} - } - - /** Indicates the component's animation is from or toward the left, - depending on whether the transition is an "in" or "out" - transition. */ - public static Direction DIR_LEFT = new Direction(); - - /** Indicates the component's animation is from or toward the right, - depending on whether the transition is an "in" or "out" - transition. */ - public static Direction DIR_RIGHT = new Direction(); - - /** Indicates the component's animation is in the upward - direction. */ - public static Direction DIR_UP = new Direction(); - - /** Indicates the component's animation is in the downward - direction. */ - public static Direction DIR_DOWN = new Direction(); - - private Style nextTransitionStyle; - private Direction nextTransitionDirection; - private boolean nextTransitionFade; - - private Random random; - - /** Sets the next transition to be used by this transition manager - for either an "in" or an "out" transition. By default the - transition manager selects random transitions from those - available. */ - public void setNextTransition(Style style, - Direction direction, - boolean fade) { - if (style == null) { - throw new IllegalArgumentException("Must supply a style"); - } - nextTransitionStyle = style; - nextTransitionDirection = direction; - nextTransitionFade = fade; - } - - /** Creates an XTBasicTransition for the given component. By default - this transition manager chooses a random transition from those - available if one is not specified via {@link #setNextTransition - setNextTransition}. */ - public XTTransition createTransitionForComponent(Component c, - boolean isAddition, - Rectangle oglViewportOfDesktop, - Point viewportOffsetFromOrigin, - Rectangle2D oglTexCoordsOnBackBuffer) { - if (nextTransitionStyle == null) { - chooseRandomTransition(); - } - - // Figure out the final positions of everything - // Keep in mind that the Java2D origin is at the upper left and - // the OpenGL origin is at the lower left - Rectangle bounds = c.getBounds(); - int x = bounds.x; - int y = bounds.y; - int w = bounds.width; - int h = bounds.height; - float tx = (float) oglTexCoordsOnBackBuffer.getX(); - float ty = (float) oglTexCoordsOnBackBuffer.getY(); - float tw = (float) oglTexCoordsOnBackBuffer.getWidth(); - float th = (float) oglTexCoordsOnBackBuffer.getHeight(); - float vx = oglViewportOfDesktop.x; - float vy = oglViewportOfDesktop.y; - float vw = oglViewportOfDesktop.width; - float vh = oglViewportOfDesktop.height; - Quad3f verts = new Quad3f(new Vec3f(0, 0, 0), - new Vec3f(0, -h, 0), - new Vec3f(w, -h, 0), - new Vec3f(w, 0, 0)); - Quad2f texcoords = new Quad2f(new Vec2f(tx, ty + th), - new Vec2f(tx, ty), - new Vec2f(tx + tw, ty), - new Vec2f(tx + tw, ty + th)); - - XTBasicTransition trans = new XTBasicTransition(); - - Vec3f translation = new Vec3f(x - viewportOffsetFromOrigin.x, - vh - y - viewportOffsetFromOrigin.y, - 0); - InterpolatedVec3f transInterp = new InterpolatedVec3f(); - transInterp.setStart(translation); - transInterp.setEnd(translation); - - InterpolatedQuad3f quadInterp = new InterpolatedQuad3f(); - quadInterp.setStart(verts); - quadInterp.setEnd(verts); - - InterpolatedQuad2f texInterp = new InterpolatedQuad2f(); - texInterp.setStart(texcoords); - texInterp.setEnd(texcoords); - - trans.setTranslation(transInterp); - trans.setVertices(quadInterp); - trans.setTexCoords(texInterp); - - // Now decide how we are going to handle this transition - Style transitionStyle = nextTransitionStyle; - Direction transitionDirection = nextTransitionDirection; - boolean fade = nextTransitionFade; - nextTransitionStyle = null; - nextTransitionDirection = null; - nextTransitionFade = false; - - int[] vtIdxs = null; - int[] ttIdxs = null; - Vec3f rotAxis = null; - Vec3f pivot = null; - float startAngle = 0; - float endAngle = 0; - - if (fade) { - InterpolatedFloat alpha = new InterpolatedFloat(); - float start = (isAddition ? 0.0f : 1.0f); - float end = (isAddition ? 1.0f : 0.0f); - alpha.setStart(start); - alpha.setEnd(end); - trans.setAlpha(alpha); - } - - if (transitionDirection != null) { - if (transitionStyle == STYLE_SCROLL) { - if (transitionDirection == DIR_LEFT) { - vtIdxs = new int[] { 3, 2, 2, 3 }; - ttIdxs = new int[] { 0, 1, 1, 0 }; - } else if (transitionDirection == DIR_RIGHT) { - vtIdxs = new int[] { 0, 1, 1, 0 }; - ttIdxs = new int[] { 3, 2, 2, 3 }; - } else if (transitionDirection == DIR_UP) { - vtIdxs = new int[] { 1, 1, 2, 2 }; - ttIdxs = new int[] { 0, 0, 3, 3 }; - } else { - // DIR_DOWN - vtIdxs = new int[] { 0, 0, 3, 3 }; - ttIdxs = new int[] { 1, 1, 2, 2 }; - } - } else if (transitionStyle == STYLE_ROTATE) { - if (transitionDirection == DIR_LEFT) { - rotAxis = new Vec3f(0, 1, 0); - pivot = new Vec3f(); - startAngle = -90; - endAngle = 0; - } else if (transitionDirection == DIR_RIGHT) { - rotAxis = new Vec3f(0, 1, 0); - pivot = new Vec3f(w, 0, 0); - startAngle = 90; - endAngle = 0; - } else if (transitionDirection == DIR_UP) { - rotAxis = new Vec3f(1, 0, 0); - pivot = new Vec3f(0, -h, 0); - startAngle = 90; - endAngle = 0; - } else { - // DIR_DOWN - rotAxis = new Vec3f(1, 0, 0); - pivot = new Vec3f(); - startAngle = -90; - endAngle = 0; - } - } - } - - - /* - switch (transitionType) { - case FADE: - { - InterpolatedFloat alpha = new InterpolatedFloat(); - float start = (isAddition ? 0.0f : 1.0f); - float end = (isAddition ? 1.0f : 0.0f); - alpha.setStart(start); - alpha.setEnd(end); - trans.setAlpha(alpha); - break; - } - case SCROLL_LEFT: - { - vtIdxs = new int[] { 3, 2, 2, 3 }; - ttIdxs = new int[] { 0, 1, 1, 0 }; - break; - } - case SCROLL_RIGHT: - { - vtIdxs = new int[] { 0, 1, 1, 0 }; - ttIdxs = new int[] { 3, 2, 2, 3 }; - break; - } - case SCROLL_UP: - { - vtIdxs = new int[] { 1, 1, 2, 2 }; - ttIdxs = new int[] { 0, 0, 3, 3 }; - break; - } - case SCROLL_DOWN: - { - vtIdxs = new int[] { 0, 0, 3, 3 }; - ttIdxs = new int[] { 1, 1, 2, 2 }; - break; - } - case ROTATE_LEFT: - { - rotAxis = new Vec3f(0, 1, 0); - pivot = new Vec3f(); - startAngle = -90; - endAngle = 0; - break; - } - case ROTATE_RIGHT: - { - rotAxis = new Vec3f(0, 1, 0); - // pivot = translation.plus(new Vec3f(w, 0, 0)); - pivot = new Vec3f(w, 0, 0); - startAngle = 90; - endAngle = 0; - break; - } - case ROTATE_UP: - { - rotAxis = new Vec3f(1, 0, 0); - // pivot = translation.plus(new Vec3f(0, -h, 0)); - pivot = new Vec3f(0, -h, 0); - startAngle = 90; - endAngle = 0; - break; - } - case ROTATE_DOWN: - { - rotAxis = new Vec3f(1, 0, 0); - pivot = new Vec3f(); - startAngle = -90; - endAngle = 0; - break; - } - } - - */ - - if (vtIdxs != null) { - if (isAddition) { - quadInterp.setStart(new Quad3f(verts.getVec(vtIdxs[0]), - verts.getVec(vtIdxs[1]), - verts.getVec(vtIdxs[2]), - verts.getVec(vtIdxs[3]))); - texInterp.setStart(new Quad2f(texcoords.getVec(ttIdxs[0]), - texcoords.getVec(ttIdxs[1]), - texcoords.getVec(ttIdxs[2]), - texcoords.getVec(ttIdxs[3]))); - } else { - // Note: swapping the vertex and texture indices happens to - // have the correct effect - int[] tmp = vtIdxs; - vtIdxs = ttIdxs; - ttIdxs = tmp; - - quadInterp.setEnd(new Quad3f(verts.getVec(vtIdxs[0]), - verts.getVec(vtIdxs[1]), - verts.getVec(vtIdxs[2]), - verts.getVec(vtIdxs[3]))); - texInterp.setEnd(new Quad2f(texcoords.getVec(ttIdxs[0]), - texcoords.getVec(ttIdxs[1]), - texcoords.getVec(ttIdxs[2]), - texcoords.getVec(ttIdxs[3]))); - } - } else if (rotAxis != null) { - if (!isAddition) { - float tmp = endAngle; - endAngle = -startAngle; - startAngle = tmp; - } - - trans.setPivotPoint(pivot); - trans.setRotationAxis(rotAxis); - InterpolatedFloat rotInterp = new InterpolatedFloat(); - rotInterp.setStart(startAngle); - rotInterp.setEnd(endAngle); - trans.setRotationAngle(rotInterp); - } - - return trans; - } - - /** Chooses a random transition from those available. */ - protected void chooseRandomTransition() { - if (random == null) { - random = new Random(); - } - nextTransitionFade = random.nextBoolean(); - nextTransitionStyle = null; - do { - int style = random.nextInt(3); - switch (style) { - // Make no-motion transitions always use fades for effect - // without biasing transitions toward no-motion transitions - case 0: if (nextTransitionFade) nextTransitionStyle = STYLE_NO_MOTION; break; - case 1: nextTransitionStyle = STYLE_SCROLL; break; - default: nextTransitionStyle = STYLE_ROTATE; break; - } - } while (nextTransitionStyle == null); - int dir = random.nextInt(4); - switch (dir) { - case 0: nextTransitionDirection = DIR_LEFT; break; - case 1: nextTransitionDirection = DIR_RIGHT; break; - case 2: nextTransitionDirection = DIR_UP; break; - default: nextTransitionDirection = DIR_DOWN; break; - } - } -} diff --git a/src/demos/xtrans/XTDesktopManager.java b/src/demos/xtrans/XTDesktopManager.java deleted file mode 100755 index 5701d13..0000000 --- a/src/demos/xtrans/XTDesktopManager.java +++ /dev/null @@ -1,206 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.xtrans; - -import java.awt.*; -import java.awt.geom.*; -import java.awt.image.*; -import java.beans.*; -import java.nio.*; -import java.util.*; -import javax.swing.*; -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.impl.*; - -/** A desktop manager implementation supporting accelerated - * transitions of the components on the desktop via OpenGL. This class - * does not need to be instantiated by end users; it is installed - * automatically when an XTDesktopPane is constructed. - * - * @author Kenneth Russell - */ -public class XTDesktopManager extends OffscreenDesktopManager { - private GLContext j2dContext; - private Object j2dContextSurfaceIdentifier; - private int oglTextureId; - private int prevBackBufferWidth; - private int prevBackBufferHeight; - - private int textureTarget = GL.GL_TEXTURE_2D; - - /** Returns the OpenGL texture object ID associated with the - off-screen back buffer for all of the components on the - desktop. */ - public int getOpenGLTextureObject() { - return oglTextureId; - } - - /** Returns a rectangle specifying the OpenGL texture coordinates of - the passed component in the texture object. The x and y - coordinates of the returned rectangle specify the lower left - corner of the component's image. */ - public Rectangle2D getOpenGLTextureCoords(Component c) { - Rectangle rect = getBoundsOnBackBuffer(c); - if (rect == null) { - throw new RuntimeException("Unknown component " + c); - } - double offscreenWidth = getOffscreenBackBufferWidth(); - double offscreenHeight = getOffscreenBackBufferHeight(); - return new Rectangle2D.Double(rect.x / offscreenWidth, - (offscreenHeight - rect.y - rect.height) / offscreenHeight, - rect.width / offscreenWidth, - rect.height / offscreenHeight); - } - - /** Updates the off-screen buffer of this desktop manager and makes - the rendering results available to OpenGL in the form of a - texture object. */ - public void updateOffscreenBuffer(OffscreenDesktopPane parent) { - boolean needsCopy = needsCopyBack(); - boolean hadPrevBackBuffer = false; - super.updateOffscreenBuffer(parent); - Image img = getOffscreenBackBuffer(); - final boolean mustResizeOGLTexture = ((oglTextureId == 0) || - (img == null) || - (prevBackBufferWidth != img.getWidth(null)) || - (prevBackBufferHeight != img.getHeight(null))); - if (needsCopy) { - final Graphics g = getOffscreenGraphics(); - // Capture off-screen buffer contents into OpenGL texture - Java2D.invokeWithOGLContextCurrent(g, new Runnable() { - public void run() { - // Get valid Java2D context - if (j2dContext == null || - j2dContextSurfaceIdentifier != Java2D.getOGLSurfaceIdentifier(g)) { - j2dContext = GLDrawableFactory.getFactory().createExternalGLContext(); - j2dContext.setGL(new DebugGL(j2dContext.getGL())); - j2dContextSurfaceIdentifier = Java2D.getOGLSurfaceIdentifier(g); - } - - j2dContext.makeCurrent(); // No-op - try { - GL gl = j2dContext.getGL(); - - if (oglTextureId == 0) { - // Set up and initialize texture - int[] tmp = new int[1]; - - gl.glGenTextures(1, tmp, 0); - oglTextureId = tmp[0]; - if (oglTextureId == 0) { - throw new RuntimeException("Error generating OpenGL back buffer texture"); - } - assert mustResizeOGLTexture : "Must know we need to resize"; - } - - gl.glBindTexture(textureTarget, oglTextureId); - - int offscreenWidth = getOffscreenBackBufferWidth(); - int offscreenHeight = getOffscreenBackBufferHeight(); - - if (mustResizeOGLTexture) { - prevBackBufferWidth = offscreenWidth; - prevBackBufferHeight = offscreenHeight; - - gl.glTexImage2D(textureTarget, - 0, - GL.GL_RGBA8, - offscreenWidth, - offscreenHeight, - 0, - GL.GL_RGBA, - GL.GL_UNSIGNED_BYTE, - null); - } - - // Copy texture from offscreen buffer - // NOTE: assumes read buffer is set up - // FIXME: could be more efficient by copying only bounding rectangle - - gl.glPixelStorei(GL.GL_UNPACK_SWAP_BYTES, GL.GL_FALSE); - gl.glPixelStorei(GL.GL_PACK_SWAP_BYTES, GL.GL_FALSE); - gl.glPixelStorei(GL.GL_UNPACK_LSB_FIRST, GL.GL_FALSE); - gl.glPixelStorei(GL.GL_PACK_LSB_FIRST, GL.GL_FALSE); - gl.glPixelStorei(GL.GL_UNPACK_ROW_LENGTH, 0); - gl.glPixelStorei(GL.GL_PACK_ROW_LENGTH, 0); - gl.glPixelStorei(GL.GL_UNPACK_SKIP_ROWS, 0); - gl.glPixelStorei(GL.GL_PACK_SKIP_ROWS, 0); - gl.glPixelStorei(GL.GL_UNPACK_SKIP_PIXELS, 0); - gl.glPixelStorei(GL.GL_PACK_SKIP_PIXELS, 0); - gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1); - gl.glPixelStorei(GL.GL_PACK_ALIGNMENT, 1); - gl.glPixelTransferf(GL.GL_RED_SCALE, 1); - gl.glPixelTransferf(GL.GL_GREEN_SCALE, 1); - gl.glPixelTransferf(GL.GL_BLUE_SCALE, 1); - gl.glPixelTransferf(GL.GL_ALPHA_SCALE, 1); - gl.glPixelTransferf(GL.GL_RED_BIAS, 0); - gl.glPixelTransferf(GL.GL_GREEN_BIAS, 0); - gl.glPixelTransferf(GL.GL_BLUE_BIAS, 0); - gl.glPixelTransferf(GL.GL_ALPHA_BIAS, 0); - - // long start = System.currentTimeMillis(); - gl.glCopyTexSubImage2D(textureTarget, - 0, - 0, - 0, - 0, - 0, - offscreenWidth, - offscreenHeight); - // long end = System.currentTimeMillis(); - // System.err.println("glCopyTexSubImage2D " + offscreenWidth + "x" + offscreenHeight + " took " + (end - start) + " ms"); - - } finally { - j2dContext.release(); - } - } - }); - } - } - - // Ideally we would force a repaint only of the 2D bounds of the 3D - // component projected onto the desktop. However for expedience - // we'll currently just repaint the entire desktop to get correct - // results. - protected void repaintPortionOfDesktop(JDesktopPane desktop, Component comp) { - desktop.repaint(); - } -} diff --git a/src/demos/xtrans/XTDesktopPane.java b/src/demos/xtrans/XTDesktopPane.java deleted file mode 100755 index 0786618..0000000 --- a/src/demos/xtrans/XTDesktopPane.java +++ /dev/null @@ -1,486 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.xtrans; - -import java.awt.*; -import java.awt.geom.*; -import java.util.*; -import javax.swing.*; -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.impl.*; - -/** A JDesktopPane subclass supporting Accelerated Transitions (XT) of - * the components contained within. - * - * @author Kenneth Russell - */ - -public class XTDesktopPane extends OffscreenDesktopPane { - private GLContext j2dContext; - private Object j2dContextSurfaceIdentifier; - - private Rectangle oglViewport; - - private XTTransitionManager transitionManager = new XTBasicTransitionManager(); - - private boolean reallyRemove; - - private boolean alwaysRedraw; - - static class TransitionInfo { - boolean isIn; - Component target; - long startTime; - XTTransition trans; - - TransitionInfo(boolean isIn, - Component target, - long startTime, - XTTransition trans) { - this.isIn = isIn; - this.target = target; - this.startTime = startTime; - this.trans = trans; - } - } - - private java.util.List/*<TransitionInfo>*/ transitions = new ArrayList(); - - private float TRANSITION_DURATION = 300.0f; - - private int textureTarget = GL.GL_TEXTURE_2D; - private GLU glu = new GLU(); - - /** Creates a new accelerated transition desktop pane. */ - public XTDesktopPane() { - super(); - if (!Java2D.isOGLPipelineActive()) { - throw new RuntimeException("XTDesktopPane requires new Java2D/JOGL support in Java SE 6 and -Dsun.java2d.opengl=true"); - } - setDesktopManager(new XTDesktopManager()); - } - - /** Overridden to use a transition to display the given - component. */ - protected void addImpl(Component c, Object constraints, int index) { - super.addImpl(c, constraints, index); - getOffscreenDesktopManager().layoutOffscreenBuffer(this); - - // When animating the component's transition, center the - // perspective projection around the center of the newly-added - // component so that the perspective effects appear symmetric. - // This amounts to moving the viewport so the component is in the - // center. - addTransition(true, c, - transitionManager.createTransitionForComponent(c, - true, - getOGLViewport(), - computeViewportOffsetToCenterComponent(c, getOGLViewport()), - getXTDesktopManager().getOpenGLTextureCoords(c))); - } - - /** Overridden to use an animated transition to remove the passed - component. */ - public void remove(int index) { - if (reallyRemove) { - super.remove(index); - } else { - addRemoveTransition(getRealComponent(getComponent(index))); - } - } - - /** Overridden to use an animated transition to remove the passed - component. */ - public void remove(Component c) { - if (reallyRemove) { - super.remove(c); - } else { - addRemoveTransition(getRealComponent(c)); - } - } - - /** Causes the given component to really be removed from this - desktop pane. Called when the removal transition is complete. */ - protected void removeImpl(Component c) { - reallyRemove = true; - try { - remove(c); - } finally { - reallyRemove = false; - } - } - - /** Overridden to draw the child components, including any animated - transitions, using OpenGL. */ - protected void paintChildren(final Graphics g) { - // FIXME: this is a hack to get repainting behavior to work - // properly when we specify that optimized drawing is disabled (so - // that childrens' repaint requests will trickle up to us via the - // Animator) but need to descend to repaint our children -- - // currently don't know how to distinguish between repaint events - // propagated up to us and those initiated by the children (which - // typically go through the OffscreenComponentWrapper's - // getGraphics() method and implicitly cause a redraw of all child - // components as well as the desktop) - if (alwaysRedraw) { - getOffscreenDesktopManager().setNeedsRedraw(); - } - - // Update desktop manager's offscreen buffer if necessary - getOffscreenDesktopManager().updateOffscreenBuffer(this); - - // Draw textured quads using JOGL over current contents of back - // buffer - final Component[] components = getRealChildComponents(); - final ArrayList expiredTransitions = new ArrayList(); - Java2D.invokeWithOGLContextCurrent(g, new Runnable() { - public void run() { - // Get valid Java2D context - if (j2dContext == null || - j2dContextSurfaceIdentifier != Java2D.getOGLSurfaceIdentifier(g)) { - j2dContext = GLDrawableFactory.getFactory().createExternalGLContext(); - j2dContext.setGL(new DebugGL(j2dContext.getGL())); - j2dContextSurfaceIdentifier = Java2D.getOGLSurfaceIdentifier(g); - } - - j2dContext.makeCurrent(); // No-op - try { - GL gl = j2dContext.getGL(); - - // Figure out where JDesktopPane is on the Swing back buffer - Rectangle oglRect = Java2D.getOGLViewport(g, getWidth(), getHeight()); - // Cache this value for adding transitions later - oglViewport = new Rectangle(oglRect); - - // Set up perspective projection so we can do some subtle - // 3D effects. We set up the view volume so that at z=0 - // the lower-left coordinates of the desktop are (0, 0) - // and the upper right coordinates are - // (oglRect.getWidth(), oglRect.getHeight()). The key here - // is to decide on the field of view and then figure out - // how far back we have to put the eye point in order for - // this to occur. - double fovy = 30.0; // degrees - double w = oglRect.getWidth(); - double h = oglRect.getHeight(); - // d is the distance from the eye point to the image plane - // (z=0) - double d = (h / 2) / Math.tan(Math.toRadians(fovy) / 2); - double near = d - (h / 2); - double far = d + (h / 2); - gl.glViewport(oglRect.x, oglRect.y, oglRect.width, oglRect.height); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glPushMatrix(); - gl.glLoadIdentity(); - glu.gluPerspective(fovy, (w / h), near, far); - gl.glMatrixMode(GL.GL_TEXTURE); - gl.glPushMatrix(); - gl.glLoadIdentity(); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glPushMatrix(); - gl.glLoadIdentity(); - double eyeX = w / 2; - double eyeY = h / 2; - // Object x and y are the same as eye x and y since we're - // looking in the -z direction - glu.gluLookAt(eyeX, eyeY, d, - eyeX, eyeY, 0, - 0, 1, 0); - - // Set up a scissor box so we don't blow away other - // components if we shift around the viewport to get the - // animated transitions' perspective effects to be - // centered - gl.glEnable(GL.GL_SCISSOR_TEST); - Rectangle r = Java2D.getOGLScissorBox(g); - if (r != null) { - gl.glScissor(r.x, r.y, r.width, r.height); - } - - /* - - // Orthographic projection for debugging - gl.glViewport(oglRect.x, oglRect.y, oglRect.width, oglRect.height); - // Set up coordinate system for easy access - gl.glMatrixMode(GL.GL_PROJECTION); - // System.err.println("oglRect x = " + oglRect.getX()); - // System.err.println("oglRect y = " + oglRect.getY()); - // System.err.println("oglRect w = " + oglRect.getWidth()); - // System.err.println("oglRect h = " + oglRect.getHeight()); - gl.glPushMatrix(); - gl.glLoadIdentity(); - gl.glOrtho(oglRect.getX(), oglRect.getX() + oglRect.getWidth(), - oglRect.getY(), oglRect.getY() + oglRect.getHeight(), - -1, - 1); - gl.glMatrixMode(GL.GL_TEXTURE); - gl.glPushMatrix(); - gl.glLoadIdentity(); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glPushMatrix(); - gl.glLoadIdentity(); - - */ - - // Enable and bind texture corresponding to internal frames' back buffer - gl.glBindTexture(textureTarget, getXTDesktopManager().getOpenGLTextureObject()); - - gl.glEnable(textureTarget); - gl.glTexParameteri(textureTarget, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP); - gl.glTexParameteri(textureTarget, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP); - gl.glTexParameteri(textureTarget, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); - gl.glTexParameteri(textureTarget, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR); - - gl.glEnable(GL.GL_BLEND); - gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_MODULATE); - gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA); - - // Iterate down children in z order bottom-to-top - int compCount = components.length; - long curTime = currentTimeMillis(); - for (int i = compCount - 1; i >= 0; i--) { - Component c = components[i]; - - // Find transition for this component - TransitionInfo info = transitionForComponent(c); - - if (info != null) { - gl.glPushMatrix(); - // When animating the component's transition, center the - // perspective projection around the center of the newly-added - // component so that the perspective effects appear symmetric. - // This amounts to moving the viewport so the component is in the - // center. - Point viewportOffset = computeViewportOffsetToCenterComponent(c, getOGLViewport()); - gl.glViewport(oglRect.x + viewportOffset.x, - oglRect.y + viewportOffset.y, - oglRect.width, - oglRect.height); - - // Update it - float percent = clamp((curTime - info.startTime) / TRANSITION_DURATION, 0.0f, 1.0f); - XTTransition trans = info.trans; - trans.update(percent); - trans.draw(gl); - // See whether the transition has expired - if (percent == 1.0f) { - transitions.remove(info); - expiredTransitions.add(info); - } - gl.glPopMatrix(); - // Put the viewport back where it was - gl.glViewport(oglRect.x, oglRect.y, oglRect.width, oglRect.height); - } else { - // For each one, get the OpenGL texture coordinates on the offscreen OpenGL texture - Rectangle2D oglTexCoords = getXTDesktopManager().getOpenGLTextureCoords(c); - Rectangle bounds = c.getBounds(); - - int cx = bounds.x; - int cy = bounds.y; - int cw = bounds.width; - int ch = bounds.height; - float tx = (float) oglTexCoords.getX(); - float ty = (float) oglTexCoords.getY(); - float tw = (float) oglTexCoords.getWidth(); - float th = (float) oglTexCoords.getHeight(); - float vx = oglRect.x; - float vy = oglRect.y; - float vw = oglRect.width; - float vh = oglRect.height; - - // Draw a quad per component - gl.glBegin(GL.GL_TRIANGLES); - gl.glColor4f(1, 1, 1, 1); - - // Triangle 1 - gl.glTexCoord2f(tx, ty + th); - gl.glVertex3f (cx, vh - cy, 0); - gl.glTexCoord2f(tx, ty); - gl.glVertex3f (cx, vh - cy - ch, 0); - gl.glTexCoord2f(tx + tw, ty + th); - gl.glVertex3f (cx + cw, vh - cy, 0); - // Triangle 2 - gl.glTexCoord2f(tx + tw, ty + th); - gl.glVertex3f (cx + cw, vh - cy, 0); - gl.glTexCoord2f(tx, ty); - gl.glVertex3f (cx, vh - cy - ch, 0); - gl.glTexCoord2f(tx + tw, ty); - gl.glVertex3f (cx + cw, vh - cy - ch, 0); - - gl.glEnd(); - } - } - gl.glFlush(); - gl.glDisable(textureTarget); - gl.glDisable(GL.GL_BLEND); - - gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_MODULATE); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glPopMatrix(); - gl.glMatrixMode(GL.GL_TEXTURE); - gl.glPopMatrix(); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glPopMatrix(); - gl.glFinish(); - } finally { - j2dContext.release(); - } - } - }); - - for (Iterator iter = expiredTransitions.iterator(); iter.hasNext(); ) { - TransitionInfo info = (TransitionInfo) iter.next(); - if (!info.isIn) { - removeImpl(info.target); - repaint(); - } - } - - if (!transitions.isEmpty()) { - repaint(); - } - } - - /** Overridden from parent to disable optimized drawing so that we - get correct rendering results with embedded GLJPanels */ - public boolean isOptimizedDrawingEnabled() { - return false; - } - - /** Returns the XTDesktopManager for this desktop pane. */ - public XTDesktopManager getXTDesktopManager() { - return (XTDesktopManager) getDesktopManager(); - } - - /** Returns the transition manager for this desktop pane. By default - this is an XTBasicTransitionManager. */ - public XTTransitionManager getTransitionManager() { - return transitionManager; - } - - /** Sets the transition manager for this desktop pane. By default - this is an XTBasicTransitionManager. */ - public void setTransitionManager(XTTransitionManager manager) { - transitionManager = manager; - } - - /** Workaround to get painting behavior to work properly in some - situations. */ - public void setAlwaysRedraw(boolean onOrOff) { - alwaysRedraw = onOrOff; - } - - /** Workaround to get painting behavior to work properly in some - situations. */ - public boolean getAlwaysRedraw() { - return alwaysRedraw; - } - - /** Returns the transition corresponding to the passed Component, or - null if no transition is currently active for this component. */ - private TransitionInfo transitionForComponent(Component c) { - for (Iterator iter = transitions.iterator(); iter.hasNext(); ) { - TransitionInfo info = (TransitionInfo) iter.next(); - if (info.target == c) { - return info; - } - } - return null; - } - - /** Adds a transition for the specified component. An "out" - transition will automatically cause the component to be removed - after it has completed running. */ - protected void addTransition(boolean isIn, - Component target, - XTTransition trans) { - TransitionInfo info = new TransitionInfo(isIn, - target, - currentTimeMillis(), - trans); - transitions.add(info); - } - - /** Adds a removal transition for the given component. */ - protected void addRemoveTransition(Component target) { - addTransition(false, - target, - transitionManager.createTransitionForComponent(target, - false, - getOGLViewport(), - computeViewportOffsetToCenterComponent(target, getOGLViewport()), - getXTDesktopManager().getOpenGLTextureCoords(target))); - } - - /** Computes the offset applied to the OpenGL viewport to center the - given component in the viewport. This is used to make the - perspective effects appear symmetric about the component. */ - protected Point computeViewportOffsetToCenterComponent(Component c, - Rectangle oglViewport) { - Rectangle bounds = c.getBounds(); - return new Point(bounds.x + ((bounds.width - oglViewport.width) / 2), - -bounds.y + ((oglViewport.height - bounds.height) / 2)); - } - - /** Clamps the given value between the specified minimum and - maximum. */ - protected static float clamp(float val, float min, float max) { - return Math.min(max, Math.max(min, val)); - } - - /** Returns the current time in milliseconds. */ - protected static long currentTimeMillis() { - // Avoid 1.5 compilation dependencies since no perceived - // improvement by changing this - // return System.nanoTime() / 1000000; - return System.currentTimeMillis(); - } - - /** Returns the OpenGL viewport corresponding to this desktop pane. */ - protected Rectangle getOGLViewport() { - if (oglViewport != null) { - return oglViewport; - } - - Rectangle b = getBounds(); - return new Rectangle(0, 0, b.width, b.height); - } -} diff --git a/src/demos/xtrans/XTTransition.java b/src/demos/xtrans/XTTransition.java deleted file mode 100755 index b250567..0000000 --- a/src/demos/xtrans/XTTransition.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.xtrans; - -import javax.media.opengl.*; - -/** Specifies the interface by which a transition is updated and drawn - * by the XTDesktopPane. - * - * @author Kenneth Russell - */ - -public interface XTTransition { - /** Updates this transition's state to the given fraction in its - animation cycle (0.0 - 1.0). */ - public void update(float fraction); - - /** Draws this transition using the passed OpenGL object. */ - public void draw(GL gl); -} diff --git a/src/demos/xtrans/XTTransitionManager.java b/src/demos/xtrans/XTTransitionManager.java deleted file mode 100755 index 1f13253..0000000 --- a/src/demos/xtrans/XTTransitionManager.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package demos.xtrans; - -import java.awt.*; -import java.awt.geom.*; - -/** Specifies how the XTDesktopPane creates new transitions. - * - * @author Kenneth Russell - */ - -public interface XTTransitionManager { - /** Create a new transition for the given component. - <ul> - - <li> The passed component's bounds indicate the location of the - component on the desktop. The (x,y) of the bounds correspond to - the upper left of the component; note that this differs from the - OpenGL coordinate system. - - <li> The <code>isAddition</code> parameter indicates whether - the component is being added to or removed from the desktop. - - <li> The <code>oglViewportOfDesktop</code> specifies the - rectangle corresponding to the entire desktop pane in the - default OpenGL coordinate system with the (x, y) origin of the - rectangle at the lower left. This rectangle should be used in - conjunction with the component's bounds and the - <code>viewportOffsetFromOrigin</code> to determine where to draw - the vertices for the component. - - <li> The <code>viewportOffsetFromOrigin</code> specifies the - current OpenGL viewport's offset from the origin of the OpenGL - coordinate system. The XTDesktopPane re-centers the OpenGL - viewport around each component so any perspective effects appear - symmetric. This offset should be subtracted from the translation - of the component or its vertex locations. - - <li> The <code>oglTexCoordsOnBackBuffer</code> specifies the - texture coordinates of the passed component on the back - buffer. The (x,y) of this rectangle specifies the lower-left - corner of the image corresponding to the component. </ul> - */ - public XTTransition createTransitionForComponent(Component c, - boolean isAddition, - Rectangle oglViewportOfDesktop, - Point viewportOffsetFromOrigin, - Rectangle2D oglTexCoordsOnBackBuffer); -} diff --git a/src/gleem/BSphere.java b/src/gleem/BSphere.java deleted file mode 100644 index c628bc9..0000000 --- a/src/gleem/BSphere.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import gleem.linalg.*; - -/** Represents a bounding sphere. */ - -public class BSphere { - private Vec3f center = new Vec3f(); - private float radius; - private float radSq; - - /** Default constructor creates a sphere with center (0, 0, 0) and - radius 0 */ - public BSphere() { - makeEmpty(); - } - - public BSphere(Vec3f center, float radius) { - set(center, radius); - } - - /** Re-initialize this sphere to center (0, 0, 0) and radius 0 */ - public void makeEmpty() { - center.set(0, 0, 0); - radius = radSq = 0; - } - - public void setCenter(Vec3f center) { this.center.set(center); } - public Vec3f getCenter() { return center; } - - public void setRadius(float radius) { this.radius = radius; - radSq = radius * radius; } - public float getRadius() { return radius; } - - public void set(Vec3f center, float radius) { - setCenter(center); setRadius(radius); - } - /** Returns radius and mutates passed "center" vector */ - float get(Vec3f center) { - center.set(this.center); return radius; - } - - /** Mutate this sphere to encompass both itself and the argument. - Ignores zero-size arguments. */ - public void extendBy(BSphere arg) { - if ((radius == 0.0f) || (arg.radius == 0.0f)) - return; - // FIXME: This algorithm is a quick hack -- minimum bounding - // sphere of a set of other spheres is a well studied problem, but - // not by me - Vec3f diff = arg.center.minus(center); - if (diff.lengthSquared() == 0.0f) { - setRadius(Math.max(radius, arg.radius)); - return; - } - IntersectionPoint[] intPt = new IntersectionPoint[4]; - for (int i = 0; i < intPt.length; i++) { - intPt[i] = new IntersectionPoint(); - } - int numIntersections; - numIntersections = intersectRay(center, diff, intPt[0], intPt[1]); - assert numIntersections == 2; - numIntersections = intersectRay(center, diff, intPt[2], intPt[3]); - assert numIntersections == 2; - IntersectionPoint minIntPt = intPt[0]; - IntersectionPoint maxIntPt = intPt[0]; - // Find minimum and maximum t values, take associated intersection - // points, find midpoint and half length of line segment --> - // center and radius. - for (int i = 0; i < 4; i++) { - if (intPt[i].getT() < minIntPt.getT()) { - minIntPt = intPt[i]; - } else if (intPt[i].getT() > maxIntPt.getT()) { - maxIntPt = intPt[i]; - } - } - // Compute the average -- this is the new center - center.add(minIntPt.getIntersectionPoint(), - maxIntPt.getIntersectionPoint()); - center.scale(0.5f); - // Compute half the length -- this is the radius - setRadius( - 0.5f * - minIntPt.getIntersectionPoint(). - minus(maxIntPt.getIntersectionPoint()). - length() - ); - } - - /** Intersect a ray with the sphere. This is a one-sided ray - cast. Mutates one or both of intPt0 and intPt1. Returns number - of intersections which occurred. */ - int intersectRay(Vec3f rayStart, - Vec3f rayDirection, - IntersectionPoint intPt0, - IntersectionPoint intPt1) { - // Solve quadratic equation - float a = rayDirection.lengthSquared(); - if (a == 0.0) - return 0; - float b = 2.0f * (rayStart.dot(rayDirection) - rayDirection.dot(center)); - Vec3f tempDiff = center.minus(rayStart); - float c = tempDiff.lengthSquared() - radSq; - float disc = b * b - 4 * a * c; - if (disc < 0.0f) - return 0; - int numIntersections; - if (disc == 0.0f) - numIntersections = 1; - else - numIntersections = 2; - intPt0.setT((0.5f * (-1.0f * b + (float) Math.sqrt(disc))) / a); - if (numIntersections == 2) - intPt1.setT((0.5f * (-1.0f * b - (float) Math.sqrt(disc))) / a); - Vec3f tmp = new Vec3f(rayDirection); - tmp.scale(intPt0.getT()); - tmp.add(tmp, rayStart); - intPt0.setIntersectionPoint(tmp); - if (numIntersections == 2) { - tmp.set(rayDirection); - tmp.scale(intPt1.getT()); - tmp.add(tmp, rayStart); - intPt1.setIntersectionPoint(tmp); - } - return numIntersections; - } -} diff --git a/src/gleem/BSphereProvider.java b/src/gleem/BSphereProvider.java deleted file mode 100644 index 17b130c..0000000 --- a/src/gleem/BSphereProvider.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -/** Provides a bounding sphere to an arbitrary client. */ - -public interface BSphereProvider { - public BSphere getBoundingSphere(); -} diff --git a/src/gleem/CameraParameters.java b/src/gleem/CameraParameters.java deleted file mode 100644 index c406cda..0000000 --- a/src/gleem/CameraParameters.java +++ /dev/null @@ -1,170 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import gleem.linalg.*; - -/** Container class for camera's parameters. */ - -public class CameraParameters { - private Vec3f position = new Vec3f(); - private Vec3f forwardDirection = new Vec3f(); - private Vec3f upDirection = new Vec3f(); - private Rotf orientation = new Rotf(); - private Mat4f modelviewMatrix = new Mat4f(); - private Mat4f projectionMatrix = new Mat4f(); - float vertFOV; - float imagePlaneAspectRatio; - int xSize; - int ySize; - - public CameraParameters() {} - - public CameraParameters(Vec3f position, - Vec3f forwardDirection, - Vec3f upDirection, - Rotf orientation, - Mat4f modelviewMatrix, - Mat4f projectionMatrix, - float vertFOV, - float imagePlaneAspectRatio, - int xSize, - int ySize) { - setPosition(position); - setForwardDirection(forwardDirection); - setUpDirection(upDirection); - setOrientation(orientation); - setModelviewMatrix(modelviewMatrix); - setProjectionMatrix(projectionMatrix); - setVertFOV(vertFOV); - setImagePlaneAspectRatio(imagePlaneAspectRatio); - setXSize(xSize); - setYSize(ySize); - } - - public void set(CameraParameters params) { - setPosition(params.getPosition()); - setForwardDirection(params.getForwardDirection()); - setUpDirection(params.getUpDirection()); - setOrientation(params.getOrientation()); - setModelviewMatrix(params.getModelviewMatrix()); - setProjectionMatrix(params.getProjectionMatrix()); - setVertFOV(params.getVertFOV()); - setImagePlaneAspectRatio(params.getImagePlaneAspectRatio()); - setXSize(params.getXSize()); - setYSize(params.getYSize()); - } - - public Object clone() { - CameraParameters params = new CameraParameters(); - params.set(this); - return params; - } - - public CameraParameters copy() { - return (CameraParameters) clone(); - } - - /** Sets 3-space origin of camera */ - public void setPosition(Vec3f position) { this.position.set(position); } - /** Gets 3-space origin of camera */ - public Vec3f getPosition() { return position; } - /** Sets 3-space forward direction of camera. Does not need to be - normalized. */ - public void setForwardDirection(Vec3f fwd) { forwardDirection.set(fwd); } - /** Gets 3-space forward direction of camera. */ - public Vec3f getForwardDirection() { return forwardDirection; } - /** Sets 3-space upward direction of camera. This must be orthogonal - to the viewing direction, but does not need to be normalized. */ - public void setUpDirection(Vec3f up) { upDirection.set(up); } - /** Gets 3-space upward direction of camera. */ - public Vec3f getUpDirection() { return upDirection; } - /** Sets orientation of camera. NOTE: user is responsible for - ensuring this corresponds with the up and forward vectors. */ - public void setOrientation(Rotf orientation) { this.orientation.set(orientation); } - /** Gets orientation of camera. */ - public Rotf getOrientation() { return orientation; } - /** Sets the modelview matrix corresponding to the orientation and - position of the camera. NOTE: user is responsible for ensuring - this corresponds to the rest of the camera parameters. */ - public void setModelviewMatrix(Mat4f matrix) { - modelviewMatrix.set(matrix); - } - /** Gets the modelview matrix corresponding to the orientation and - position of the camera. */ - public Mat4f getModelviewMatrix() { - return modelviewMatrix; - } - /** Sets the projection matrix corresponding to the camera's - field-of-view and aspect ratio parameters. NOTE: user is - responsible for ensuring this matrix corresponds to these - parameters.*/ - public void setProjectionMatrix(Mat4f matrix) { - projectionMatrix.set(matrix); - } - /** Gets the projection matrix corresponding to the camera's - field-of-view and aspect ratio parameters. */ - public Mat4f getProjectionMatrix() { - return projectionMatrix; - } - - /** Takes HALF of the vertical angular span of the frustum, - specified in radians. For example, if your <b>fovy</b> argument - to gluPerspective() is 90, then this would be Math.PI / 4. */ - public void setVertFOV(float vertFOV) { this.vertFOV = vertFOV; } - /** Returns HALF of the vertical angular span of the frustum, - specified in radians. */ - public float getVertFOV() { return vertFOV; } - /** Sets the aspect ratio of the image plane. Note that this does not - necessarily have to correspond to the aspect ratio of the - window. */ - public void setImagePlaneAspectRatio(float ratio) { imagePlaneAspectRatio = ratio; } - /** Gets the aspect ratio of the image plane. */ - public float getImagePlaneAspectRatio() { return imagePlaneAspectRatio; } - - /** Sets the horizontal size of the window, in pixels */ - public void setXSize(int xSize) { this.xSize = xSize; } - /** Gets the horizontal size of the window, in pixels */ - public int getXSize() { return xSize; } - /** Sets the vertical size of the window, in pixels */ - public void setYSize(int ySize) { this.ySize = ySize; } - /** Gets the vertical size of the window, in pixels */ - public int getYSize() { return ySize; } -} diff --git a/src/gleem/ExaminerViewer.java b/src/gleem/ExaminerViewer.java deleted file mode 100644 index a7f3d64..0000000 --- a/src/gleem/ExaminerViewer.java +++ /dev/null @@ -1,620 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.awt.Dimension; -import java.awt.event.*; -import java.util.*; - -import gleem.linalg.*; -import javax.media.opengl.*; - -/** <P> This is an application-level class, not part of the - manipulator hierarchy. It is an example of how you might integrate - gleem with another application which uses the mouse. </P> - - <P> For the given GLAutoDrawable, the ExaminerViewer takes over the - setting of the view position. It passes along mouse events it is - not interested in to the ManipManager's mouse routines. </P> - - <P> The ExaminerViewer's controls are similar to those of Open - Inventor's Examiner Viewer. Alt + Left mouse button causes - rotation about the focal point. Alt + Right mouse button causes - translation parallel to the image plane. Alt + both mouse buttons, - combined with up/down mouse motion, causes zooming out and in - along the view vector. (On platforms with a "Meta" key, that key - can be substituted in place of the Alt key.) The method - <code>setNoAltKeyMode</code> can be used to cause the - ExaminerViewer to take control of all mouse interactions in the - window, avoiding the need to hold down the Alt key. </P> - - <P>NOTE: the current ExaminerViewer implementation assumes a - minimum of two mouse buttons. For the Mac OS, the code needs to be - adjusted to use e.g., the Control key as the "right" mouse - button. </P> */ - -public class ExaminerViewer { - private GLAutoDrawable window; - /** Simple state machine for figuring out whether we are grabbing - events */ - private boolean interactionUnderway; - private boolean iOwnInteraction; - - private boolean noAltKeyMode; - private boolean autoRedrawMode = true; - - /** Simple state machine for computing distance dragged */ - private boolean button1Down; - private boolean button2Down; - private int numMouseButtons; - private int oldNumMouseButtons; - private int lastX; - private int lastY; - - /** Camera parameters */ - private float minFocalDist = 1.0f; - private Vec3f dolly = new Vec3f(0, 0, 10); // Amount we have "backed up" from focal point - private Vec3f center = new Vec3f(0, 0, 0); // Position of focal point in world coordinates - private Rotf orientation = new Rotf(); - private float rotateSpeed = 1.0f; - private float minRotateSpeed = 0.0001f; - private float dollySpeed = 2.0f; - private float minDollySpeed = 0.0001f; - private float zNear = 1.0f; - private float zFar = 100.0f; - private float vertFOVScale = 1.0f; - private CameraParameters params = new CameraParameters(); - - /** Our bounding sphere provider (for viewAll()) */ - private BSphereProvider provider; - - private MouseMotionAdapter mouseMotionListener = new MouseMotionAdapter() { - public void mouseDragged(MouseEvent e) { - motionMethod(e, e.getX(), e.getY()); - } - - public void mouseMoved(MouseEvent e) { - passiveMotionMethod(e); - } - }; - - private MouseAdapter mouseListener = new MouseAdapter() { - public void mousePressed(MouseEvent e) { - mouseMethod(e, e.getModifiers(), true, e.getX(), e.getY()); - } - - public void mouseReleased(MouseEvent e) { - mouseMethod(e, e.getModifiers(), false, e.getX(), e.getY()); - } - }; - - private GLEventListener glListener = new GLEventListener() { - public void init(GLAutoDrawable drawable) {} - public void display(GLAutoDrawable drawable) {} - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { - reshapeMethod(width, height); - } - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - }; - - /** The constructor takes the number of mouse buttons on this system - (couldn't figure out how to determine this internally) */ - public ExaminerViewer(int numMouseButtons) { - this.numMouseButtons = numMouseButtons; - oldNumMouseButtons = numMouseButtons; - } - - /** <P> Attaches this ExaminerViewer to the given GLAutoDrawable. This - causes the ManipManager's mouse routines to be removed from the - window (using ManipManager.removeMouseListeners) and the - ExaminerViewer's to be installed. The GLAutoDrawable should be - registered with the ManipManager before the ExaminerViewer is - attached to it. </P> - - <P> In order for the viewer to do anything useful, you need to - provide a BSphereProvider to it to allow "view all" - functionality. </P> */ - public void attach(GLAutoDrawable window, BSphereProvider provider) { - this.window = window; - this.provider = provider; - init(); - setupListeners(); - } - - /** Detaches from the given window. This causes the ManipManager's - mouse listeners to be reinstalled on the GLAutoDrawable and the - ExaminerViewer's to be removed. */ - public void detach() { - removeListeners(); - this.window = null; - this.provider = null; - } - - /** Call this at the end of your display() method to cause the - Modelview matrix to be recomputed for the next frame. */ - public void update(GL gl) { - recalc(gl); - } - - /** Call this to apply the inverse rotation matrix of the camera to - the current matrix. This is useful for drawing a skybox. Does - not update which OpenGL matrix is currently being modified or - the ExaminerViewer's camera parameters. */ - public void updateInverseRotation(GL gl) { - recalcInverseRotation(gl); - } - - /** Call this to force the ExaminerViewer to update its - CameraParameters without touching the OpenGL state. */ - public void update() { - recalc(); - } - - /** Call this from within your display() method to cause the - ExaminerViewer to recompute its position based on the visible - geometry. A BSphereProvider must have already been set or this - method has no effect. */ - public void viewAll(GL gl) { - if (provider == null) { - return; - } - // Figure out how far to move - float vertFOV, horizFOV, minFOV; - float adjustedVertFOV = params.getVertFOV() * vertFOVScale; - vertFOV = 2.0f * adjustedVertFOV; - horizFOV = 2.0f * (float) Math.atan(params.getImagePlaneAspectRatio() * - Math.tan(adjustedVertFOV)); - if (vertFOV < horizFOV) - minFOV = vertFOV; - else - minFOV = horizFOV; - if (minFOV == 0.0f) { - throw new RuntimeException("Minimum field of view was zero"); - } - BSphere bsph = provider.getBoundingSphere(); - float dist = bsph.getRadius() / (float) Math.sin(minFOV / 2.0f); - dolly.setZ(dist); - center.set(bsph.getCenter()); - recalc(gl); - } - - /** Get the camera parameters out of this Examiner Viewer (for - example, to pass to ManipManager.updateCameraParameters()). Note - that mutating the returned object is not recommended but - regardless will have no effect on the ExaminerViewer. */ - public CameraParameters getCameraParameters() { - return params; - } - - /** These routines can be hooked into a GUI by calling them from - ActionEvent listeners for buttons elsewhere in the application. */ - public void rotateFaster() { - rotateSpeed *= 2.0f; - } - - public void rotateSlower() { - if (rotateSpeed < minRotateSpeed) - return; - else - rotateSpeed /= 2.0f; - } - - public void dollyFaster() { - dollySpeed *= 2.0f; - } - - public void dollySlower() { - if (dollySpeed < minDollySpeed) - return; - else - dollySpeed /= 2.0f; - } - - public float getZNear() { - return zNear; - } - - public void setZNear(float zNear) { - this.zNear = zNear; - } - - public float getZFar() { - return zFar; - } - - public void setZFar(float zFar) { - this.zFar = zFar; - } - - /** Takes HALF of the vertical angular span of the frustum, - specified in radians. For example, if your <b>fovy</b> argument - to gluPerspective() is 90, then this would be Math.PI / 4. Note - that the ExaminerViewer's algorithms break down if the vertical - field of view approaches or exceeds 180 degrees, or Math.PI / - 2. */ - public void setVertFOV(float vertFOV) { - vertFOVScale = (float) (vertFOV / (Math.PI / 4)); - } - - /** Sets the position of this ExaminerViewer. */ - public void setPosition(Vec3f position) { - Vec3f tmp = orientation.rotateVector(Vec3f.NEG_Z_AXIS); - tmp.scale(dolly.z()); - center.add(position, tmp); - } - - /** Sets the orientation of this ExaminerViewer. */ - public void setOrientation(Rotf orientation) { - this.orientation.set(orientation); - } - - public void setNoAltKeyMode(boolean noAltKeyMode) { - this.noAltKeyMode = noAltKeyMode; - if (noAltKeyMode) { - // FIXME: this is a hack to work around Windows' apparently - // conflating the alt/meta key with one of the mouse buttons - oldNumMouseButtons = numMouseButtons; - numMouseButtons = 3; - } else { - numMouseButtons = oldNumMouseButtons; - } - } - - public boolean getNoAltKeyMode() { - return noAltKeyMode; - } - - /** Enables or disables the automatic redrawing of the - GLAutoDrawable to which this ExaminerViewer is attached. If the - GLAutoDrawable is already being animated, disabling auto redraw - mode may provide better performance. Defaults to on. */ - public void setAutoRedrawMode(boolean onOrOff) { - autoRedrawMode = onOrOff; - } - - /** Returns whether this ExaminerViewer automatically redraws the - GLAutoDrawable to which it is attached upon updates. */ - public boolean getAutoRedrawMode() { - return autoRedrawMode; - } - - /** Rotates this ExaminerViewer about the focal point by the - specified incremental rotation; performs postmultiplication, - i.e. the incremental rotation is applied after the current - orientation. */ - public void rotateAboutFocalPoint(Rotf rot) { - orientation = rot.times(orientation); - orientation.normalize(); - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private static final float EPSILON = 0.0001f; - - private void setupListeners() { - ManipManager.getManipManager().removeMouseListeners(window); - window.addMouseMotionListener(mouseMotionListener); - window.addMouseListener(mouseListener); - window.addGLEventListener(glListener); - } - - private void removeListeners() { - if (window != null) { - window.removeMouseMotionListener(mouseMotionListener); - window.removeMouseListener(mouseListener); - window.removeGLEventListener(glListener); - ManipManager.getManipManager().setupMouseListeners(window); - } - } - - private void passiveMotionMethod(MouseEvent e) { - ManipManager.getManipManager().mouseMoved(e); - } - - private boolean modifiersMatch(MouseEvent e, int mods) { - if (noAltKeyMode) { - if ((mods & MouseEvent.BUTTON1_MASK) != 0 && - (mods & MouseEvent.BUTTON2_MASK) == 0 && - (mods & MouseEvent.BUTTON3_MASK) == 0) { - return (!e.isAltDown() && !e.isMetaDown() && !e.isControlDown() && !e.isShiftDown()); - } else { - // At least on Windows, meta seems to be declared to be down on right button presses - return !e.isControlDown() && !e.isShiftDown(); - } - } else { - return ((e.isAltDown() || e.isMetaDown()) && - (!e.isControlDown() && !e.isShiftDown())); - } - } - - private void init() { - interactionUnderway = false; - iOwnInteraction = false; - button1Down = false; - button2Down = false; - - int xSize = window.getWidth(); - int ySize = window.getHeight(); - params.setOrientation(orientation); - params.setPosition(computePosition(new Vec3f())); - params.setForwardDirection(Vec3f.NEG_Z_AXIS); - params.setUpDirection(Vec3f.Y_AXIS); - params.setVertFOV((float) Math.PI / 8.0f); - params.setImagePlaneAspectRatio((float) xSize / (float) ySize); - params.setXSize(xSize); - params.setYSize(ySize); - } - - private void motionMethod(MouseEvent e, int x, int y) { - if (interactionUnderway && !iOwnInteraction) { - ManipManager.getManipManager().mouseDragged(e); - } else { - int dx = x - lastX; - int dy = y - lastY; - - lastX = x; - lastY = y; - - if ((button1Down && (!button2Down))) { - - // Rotation functionality - float xRads = (float) Math.PI * -1.0f * dy * rotateSpeed / 1000.0f; - float yRads = (float) Math.PI * -1.0f * dx * rotateSpeed / 1000.0f; - Rotf xRot = new Rotf(Vec3f.X_AXIS, xRads); - Rotf yRot = new Rotf(Vec3f.Y_AXIS, yRads); - Rotf newRot = yRot.times(xRot); - orientation = orientation.times(newRot); - - } else if (button2Down && (!button1Down)) { - - // Translate functionality - // Compute the local coordinate system's difference vector - Vec3f localDiff = new Vec3f(dollySpeed * -1.0f * dx / 100.0f, - dollySpeed * dy / 100.0f, - 0.0f); - // Rotate this by camera's orientation - Vec3f worldDiff = orientation.rotateVector(localDiff); - // Add on to center - center.add(worldDiff); - - } else if (button1Down && button2Down) { - - float diff = dollySpeed * -1.0f * dy / 100.0f; - float newDolly = dolly.z() + diff; - if (newDolly < minFocalDist) { - newDolly = minFocalDist; - } - dolly.setZ(newDolly); - - } - - if (autoRedrawMode) { - // Force redraw - window.repaint(); - } - } - } - - private void mouseMethod(MouseEvent e, int mods, boolean press, - int x, int y) { - if ((interactionUnderway && !iOwnInteraction) || - (!modifiersMatch(e, mods))) { - // Update state and pass this event along to the ManipManager - if (press) { - interactionUnderway = true; - iOwnInteraction = false; - ManipManager.getManipManager().mousePressed(e); - } else { - interactionUnderway = false; - iOwnInteraction = false; - ManipManager.getManipManager().mouseReleased(e); - } - } else { - if ((mods & MouseEvent.BUTTON1_MASK) != 0) { - if (press) { - button1Down = true; - } else { - button1Down = false; - } - } else { - if (numMouseButtons != 3) { - if ((mods & MouseEvent.BUTTON2_MASK) != 0) { - if (press) { - button2Down = true; - } else { - button2Down = false; - } - } - } else { - // FIXME: must test this on 3-button system - if ((mods & MouseEvent.BUTTON3_MASK) != 0) { - if (press) { - button2Down = true; - } else { - button2Down = false; - } - } - } - } - - lastX = x; - lastY = y; - - if (button1Down || button2Down) { - interactionUnderway = true; - iOwnInteraction = true; - } else { - interactionUnderway = false; - iOwnInteraction = false; - } - - if (autoRedrawMode) { - // Force redraw - window.repaint(); - } - } - } - - private void reshapeMethod(int w, int h) { - float aspect, theta; - aspect = (float) w / (float) h; - if (w >= h) - theta = 45; - else - theta = (float) Math.toDegrees(Math.atan(1 / aspect)); - theta *= vertFOVScale; - params.setVertFOV((float) (Math.toRadians(theta) / 2.0)); - params.setImagePlaneAspectRatio(aspect); - params.setXSize(w); - params.setYSize(h); - } - - private void recalc() { - // Recompute position, forward and up vectors - Vec3f tmp = new Vec3f(); - params.setPosition(computePosition(tmp)); - orientation.rotateVector(Vec3f.NEG_Z_AXIS, tmp); - params.setForwardDirection(tmp); - orientation.rotateVector(Vec3f.Y_AXIS, tmp); - params.setUpDirection(tmp); - params.setOrientation(orientation); - - // Compute modelview matrix based on camera parameters, position and - // orientation - Mat4f tmpMat = new Mat4f(); - tmpMat.makeIdent(); - tmpMat.setRotation(orientation); - tmpMat.setTranslation(params.getPosition()); - tmpMat.invertRigid(); - params.setModelviewMatrix(tmpMat); - - // Compute perspective matrix given camera parameters - float deltaZ = zFar - zNear; - float aspect = params.getImagePlaneAspectRatio(); - float radians = params.getVertFOV(); - float sine = (float) Math.sin(radians); - if ((deltaZ == 0) || (sine == 0) || (aspect == 0)) { - tmpMat.makeIdent(); - params.setProjectionMatrix(tmpMat); - return; - } - float cotangent = (float) Math.cos(radians) / sine; - tmpMat.makeIdent(); - tmpMat.set(0, 0, cotangent / aspect); - tmpMat.set(1, 1, cotangent); - tmpMat.set(2, 2, -(zFar + zNear) / deltaZ); - tmpMat.set(3, 2, -1); - tmpMat.set(2, 3, -2 * zNear * zFar / deltaZ); - tmpMat.set(3, 3, 0); - params.setProjectionMatrix(tmpMat); - - - /******************** - - // Recompute position, forward and up vectors - params.setPosition(position); - Vec3f tmp = new Vec3f(); - orientation.rotateVector(Vec3f.NEG_Z_AXIS, tmp); - params.setForwardDirection(tmp); - orientation.rotateVector(Vec3f.Y_AXIS, tmp); - params.setUpDirection(tmp); - params.setOrientation(orientation); - - // Compute modelview matrix based on camera parameters, position and - // orientation - Mat4f tmpMat = new Mat4f(); - tmpMat.makeIdent(); - tmpMat.setRotation(orientation); - tmpMat.setTranslation(position); - tmpMat.invertRigid(); - params.setModelviewMatrix(tmpMat); - - // Compute perspective matrix given camera parameters - float deltaZ = zFar - zNear; - float aspect = params.getImagePlaneAspectRatio(); - float radians = params.getVertFOV(); - float sine = (float) Math.sin(radians); - if ((deltaZ == 0) || (sine == 0) || (aspect == 0)) { - tmpMat.makeIdent(); - params.setProjectionMatrix(tmpMat); - return; - } - float cotangent = (float) Math.cos(radians) / sine; - tmpMat.makeIdent(); - tmpMat.set(0, 0, cotangent / aspect); - tmpMat.set(1, 1, cotangent); - tmpMat.set(2, 2, -(zFar + zNear) / deltaZ); - tmpMat.set(3, 2, -1); - tmpMat.set(2, 3, -2 * zNear * zFar / deltaZ); - tmpMat.set(3, 3, 0); - params.setProjectionMatrix(tmpMat); - - **********************/ - } - - private void recalc(GL gl) { - recalc(); - - gl.glMatrixMode(GL.GL_MODELVIEW); - float[] data = new float[16]; - params.getModelviewMatrix().getColumnMajorData(data); - gl.glLoadMatrixf(data, 0); - - gl.glMatrixMode(GL.GL_PROJECTION); - params.getProjectionMatrix().getColumnMajorData(data); - gl.glLoadMatrixf(data, 0); - } - - private void recalcInverseRotation(GL gl) { - Rotf oriInv = orientation.inverse(); - Vec3f tmp = new Vec3f(); - float ang = orientation.get(tmp); - if (tmp.lengthSquared() > EPSILON) - gl.glRotatef((float) Math.toDegrees(ang), tmp.x(), tmp.y(), tmp.z()); - } - - private Vec3f computePosition(Vec3f tmp) { - orientation.rotateVector(dolly, tmp); - tmp.add(center); - return tmp; - } -} diff --git a/src/gleem/HandleBoxManip.java b/src/gleem/HandleBoxManip.java deleted file mode 100644 index e35ad40..0000000 --- a/src/gleem/HandleBoxManip.java +++ /dev/null @@ -1,948 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.util.*; - -import gleem.linalg.*; -import javax.media.opengl.*; - -/** Patterned after Inventor's HandleBoxManip (by Paul Isaacs and - David Mott) and TransformerManip (by Paul Isaacs). Center box - allows 3-D translation. Outer six handles allow rotation about the - box's six axes. When a handle is clicked, the axis of rotation is - immediately chosen as that which is most parallel to the viewing - direction (note there are at most two possibilities for the axis - of each handle's rotation). Eight corner handles allow aspect - ratio-preserving scaling; shift-dragging these handles allows - non-uniform scaling in one of two possible directions using a - "snap-to-axis" paradigm. These two directions are chosen as the - axes of the adjacent face to the handle whose normal most directly - faces the viewing direction. */ - -public class HandleBoxManip extends Manip { - private ManipPart parts; - private Vec3f translation; - private Vec3f scale; - private Vec3f geometryScale; - private Rotf rotation; - /** Cumulative transform of this object */ - private Mat4f xform; - - /** Dragging state */ - private static final int INACTIVE = 0; - private static final int TRANSLATE = 1; - private static final int ROTATE = 2; - // Scaling based on all three axes, preserving current aspect ratio - private static final int SCALE_XYZ = 3; - // Scaling along one of two axes (shift key + drag scale handle) - private static final int SCALE_SINGLE_AXIS = 4; - - private int dragState; - private Plane dragPlane; - private Vec3f dragOffset; - - /** Scale axes */ - private static final int SCALE_XY = 0; - private static final int SCALE_YZ = 1; - private static final int SCALE_ZX = 2; - - /** All of the line segments comprising the faces */ - private ManipPart[] lineSegs; - - static class FaceInfo { - ManipPart[] lineSegs; - /** The invisible square comprising this face's invisible, but - pickable, geometry */ - ManipPart centerSquare; - Vec3f origNormal; - Vec3f normal; - int scaleAxes; - - FaceInfo() { - lineSegs = new ManipPart[4]; - origNormal = new Vec3f(); - normal = new Vec3f(); - } - } - /** List<FaceInfo> */ - private List faces; - /** List<ManipPart> */ - private List highlightedGeometry; - /** List<ManipPart> */ - private List draggedGeometry; - - /** Each rotation handle points off to two faces corresponding to - the planes in which that handle can rotate. It also points to - two circles which appear during dragging to indicate to the user - in which plane the manipulator is being rotated. */ - static class RotateHandleInfo { - ManipPart geometry; - int faceIdx0; - int faceIdx1; - } - /** List<RotateHandleInfo> */ - private List rotateHandles; - private PlaneUV rotatePlane; - private float startAngle; - private Rotf startRot; - - private int scaleAxes; - /** Each scale handle points off to its three adjacent faces. */ - static class ScaleHandleInfo { - ManipPart geometry; - /** The indices of the three adjacent faces */ - int[] faceIndices; - - ScaleHandleInfo() { - faceIndices = new int[3]; - } - } - /** List<ScaleHandleInfo> */ - private List scaleHandles; - // State variables for XYZ scaling - /** This line's direction must point outward from the center of the - cube. */ - private Line scaleXYZLine; - private float origScaleLen; - private Vec3f origScale; - // State variables for single-axis scaling - private PlaneUV scaleAxisPlane; - private Vec3f scaleAxisOffset; - private Vec2f scaleAxisOrigUV; - - /** Default HandleBoxManip has translation (0, 0, 0) and the - identity orientation */ - public HandleBoxManip() { - parts = new ManipPartTwoWayArrow(); - translation = new Vec3f(0, 0, 0); - scale = new Vec3f(1, 1, 1); - geometryScale = new Vec3f(1, 1, 1); - // Rotf should have a makeIdent() or at least initialize - // itself to the unit quaternion (see NOTES.txt) - rotation = new Rotf(); - xform = new Mat4f(); - - dragState = INACTIVE; - dragPlane = new Plane(); - dragOffset = new Vec3f(); - - lineSegs = new ManipPart[12]; - - faces = new ArrayList(); - highlightedGeometry = new ArrayList(); - draggedGeometry = new ArrayList(); - - rotateHandles = new ArrayList(); - rotatePlane = new PlaneUV(); - startRot = new Rotf(); - - scaleHandles = new ArrayList(); - scaleXYZLine = new Line(); - origScale = new Vec3f(); - scaleAxisPlane = new PlaneUV(); - scaleAxisOffset = new Vec3f(); - scaleAxisOrigUV = new Vec2f(); - - createGeometry(); - recalc(); - } - - /** Set the translation of this HandleBoxManip. This moves its - on-screen representation. Manipulations cause the translation to - be modified, not overwritten. */ - public void setTranslation(Vec3f translation) { - this.translation.set(translation); - recalc(); - } - - /** Get the translation of this Translate1Manip. This corresponds to - the center of its body. */ - public Vec3f getTranslation() { - return new Vec3f(translation); - } - - /** Set the rotation of this HandleBoxManip. */ - public void setRotation(Rotf rotation) { - this.rotation.set(rotation); - recalc(); - } - - /** Get the rotation of this HandleBoxManip. */ - public Rotf getRotation() { - return new Rotf(rotation); - } - - /** Set the scale of the HandleBoxManip. This corresponds to the - scaling the user has performed. */ - public void setScale(Vec3f scale) { - this.scale.set(scale); - recalc(); - } - - public Vec3f getScale() { - return new Vec3f(scale); - } - - /** Set the scale of the HandleBoxManip's geometry. This only - affects its on-screen representation. It is probably a bad idea - to use a non-uniform scale here, because it'd be very confusing - to the user. None of the components of the geometryScale vector - may be negative. */ - public void setGeometryScale(Vec3f geometryScale) { - this.geometryScale.set(geometryScale); - recalc(); - } - - public Vec3f getGeometryScale() { - return new Vec3f(geometryScale); - } - - /** Get the cumulative transformation matrix of this - HandleBoxManip. */ - public Mat4f getTransform() { - // Transform is Scale, Rotation, Translation applied to incoming - // column vectors in that order (SRT, or TRS since column vectors - // are right-multiplied) - Mat4f dest = new Mat4f(); - getTransform(dest); - return dest; - } - - /** Get the cumulative transformation matrix of this HandleBoxManip - into the passed matrix. */ - public void getTransform(Mat4f dest) { - Mat4f tmp1 = new Mat4f(); - Mat4f tmp2 = new Mat4f(); - tmp1.makeIdent(); - tmp2.makeIdent(); - tmp1.setScale(scale); - dest.makeIdent(); - dest.setRotation(rotation); - tmp2.mul(dest, tmp1); - tmp1.makeIdent(); - tmp1.setTranslation(translation); - dest.mul(tmp1, tmp2); - } - - public void render(GL gl) { - int i; - for (i = 0; i < 12; i++) - lineSegs[i].render(gl); - for (i = 0; i < rotateHandles.size(); i++) - ((RotateHandleInfo) rotateHandles.get(i)).geometry.render(gl); - for (i = 0; i < scaleHandles.size(); i++) - ((ScaleHandleInfo) scaleHandles.get(i)).geometry.render(gl); - } - - public void intersectRay(Vec3f rayStart, - Vec3f rayDirection, - List results) { - for (Iterator iter = faces.iterator(); iter.hasNext(); ) { - ((FaceInfo) iter.next()).centerSquare.intersectRay(rayStart, rayDirection, - results, this); - } - for (Iterator iter = rotateHandles.iterator(); iter.hasNext(); ) { - ((RotateHandleInfo) iter.next()).geometry.intersectRay(rayStart, rayDirection, - results, this); - } - for (Iterator iter = scaleHandles.iterator(); iter.hasNext(); ) { - ((ScaleHandleInfo) iter.next()).geometry.intersectRay(rayStart, rayDirection, - results, this); - } - } - - public void highlight(HitPoint hit) { - ManipPart part = hit.manipPart; - // Search for this part in the FaceInfo array - for (Iterator iter = faces.iterator(); iter.hasNext(); ) { - FaceInfo info = (FaceInfo) iter.next(); - if (info.centerSquare == part) { - for (int j = 0; j < 4; j++) { - info.lineSegs[j].highlight(); - highlightedGeometry.add(info.lineSegs[j]); - } - return; - } - } - - // Otherwise, was a rotation or scale handle - part.highlight(); - highlightedGeometry.add(part); - } - - public void clearHighlight() { - for (Iterator iter = highlightedGeometry.iterator(); iter.hasNext(); ) { - ((ManipPart) iter.next()).clearHighlight(); - } - highlightedGeometry.clear(); - } - - public void makeActive(HitPoint hit) { - // Find which piece of geometry it is - for (Iterator iter = faces.iterator(); iter.hasNext(); ) { - FaceInfo face = (FaceInfo) iter.next(); - if (face.centerSquare == hit.manipPart) { - dragState = TRANSLATE; - dragPlane.setPoint(hit.intPt.getIntersectionPoint()); - dragPlane.setNormal(face.normal); - dragOffset.sub(translation, hit.intPt.getIntersectionPoint()); - for (int j = 0; j < 4; j++) { - face.lineSegs[j].highlight(); - draggedGeometry.add(face.lineSegs[j]); - } - return; - } - } - - for (Iterator iter = rotateHandles.iterator(); iter.hasNext(); ) { - RotateHandleInfo rotInfo = (RotateHandleInfo) iter.next(); - if (rotInfo.geometry == hit.manipPart) { - dragState = ROTATE; - // Determine which direction we're rotating by taking dot - // products of the ray direction with the rotating planes' - // normals - float dotp0 = - Math.abs(hit.rayDirection.dot(((FaceInfo) faces.get(rotInfo.faceIdx0)).normal)); - float dotp1 = - Math.abs(hit.rayDirection.dot(((FaceInfo) faces.get(rotInfo.faceIdx1)).normal)); - int faceIdx; - if (dotp0 > dotp1) - faceIdx = rotInfo.faceIdx0; - else - faceIdx = rotInfo.faceIdx1; - FaceInfo face = (FaceInfo) faces.get(faceIdx); - // Set up the rotation plane - rotatePlane.setOrigin(translation); - rotatePlane.setNormal(face.normal); - Vec3f dummy = new Vec3f(); - Vec2f startUV = new Vec2f(); - rotatePlane.projectPoint(hit.intPt.getIntersectionPoint(), dummy, startUV); - startAngle = (float) Math.atan2(startUV.y(), startUV.x()); - startRot.set(rotation); - rotInfo.geometry.highlight(); - draggedGeometry.add(rotInfo.geometry); - return; - } - } - - for (Iterator iter = scaleHandles.iterator(); iter.hasNext(); ) { - ScaleHandleInfo info = (ScaleHandleInfo) iter.next(); - if (info.geometry == hit.manipPart) { - if (hit.shiftDown) { - dragState = SCALE_SINGLE_AXIS; - // Figure out which are the two axes along which we're - // going to allow scaling by taking dot products of the - // ray direction with the normals of the adjacent faces - // to the scale handle. - float dotp = 0.0f; - float tmpDotp; - int faceIdx = 0; - for (int i = 0; i < 3; i++) { - FaceInfo faceInfo = (FaceInfo) faces.get(info.faceIndices[i]); - tmpDotp = faceInfo.normal.dot(hit.rayDirection); - if ((i == 0) || (tmpDotp < dotp)) { - dotp = tmpDotp; - faceIdx = info.faceIndices[i]; - } - } - scaleAxes = ((FaceInfo) faces.get(faceIdx)).scaleAxes; - Vec3f uAxisOrig = new Vec3f(); - Vec3f vAxisOrig = new Vec3f(); - if (scaleAxes == SCALE_XY) { - uAxisOrig.set(1, 0, 0); - vAxisOrig.set(0, 1, 0); - } else if (scaleAxes == SCALE_YZ) { - uAxisOrig.set(0, 1, 0); - vAxisOrig.set(0, 0, 1); - } else { - uAxisOrig.set(0, 0, 1); - vAxisOrig.set(1, 0, 0); - } - Vec3f uAxis = new Vec3f(); - Vec3f vAxis = new Vec3f(); - Mat4f rotationTmpMat = new Mat4f(); - rotationTmpMat.makeIdent(); - rotationTmpMat.setRotation(rotation); - rotationTmpMat.xformDir(uAxisOrig, uAxis); - rotationTmpMat.xformDir(vAxisOrig, vAxis); - Vec3f normal = new Vec3f(); - normal.cross(uAxis, vAxis); - scaleAxisPlane.setNormalAndUV(normal, uAxis, vAxis); - // We need to be able to constrain the scaling to be - // nonnegative. - Vec3f newOrigin = new Vec3f(); - Vec2f foo = new Vec2f(); - scaleAxisPlane.projectPoint(translation, newOrigin, foo); - scaleAxisPlane.setOrigin(newOrigin); - scaleAxisOffset.sub(hit.intPt.getIntersectionPoint(), newOrigin); - // Now project intersection point onto plane - Vec3f bar = new Vec3f(); - scaleAxisPlane.projectPoint(hit.intPt.getIntersectionPoint(), - bar, scaleAxisOrigUV); - // Put the plane back where it was - scaleAxisPlane.setOrigin(hit.intPt.getIntersectionPoint()); - origScale.set(scale); - } else { - dragState = SCALE_XYZ; - scaleXYZLine.setPoint(hit.intPt.getIntersectionPoint()); - Vec3f scaleDiffVec = new Vec3f(); - scaleDiffVec.sub(hit.intPt.getIntersectionPoint(), translation); - scaleXYZLine.setDirection(scaleDiffVec); - origScale.set(scale); - origScaleLen = scaleDiffVec.length(); - } - info.geometry.highlight(); - draggedGeometry.add(info.geometry); - return; - } - } - - throw new RuntimeException("Couldn't find intersected piece of geometry"); - } - - public void drag(Vec3f rayStart, - Vec3f rayDirection) { - if (dragState == TRANSLATE) { - // Algorithm: Find intersection of ray with dragPlane. Add - // dragOffset to this point to get new translation. - IntersectionPoint intPt = new IntersectionPoint(); - if (dragPlane.intersectRay(rayStart, - rayDirection, - intPt) == false) { - // Ray is parallel to plane. Punt. - return; - } - translation.add(intPt.getIntersectionPoint(), dragOffset); - recalc(); - } else if (dragState == ROTATE) { - IntersectionPoint intPt = new IntersectionPoint(); - Vec2f uvCoords = new Vec2f(); - if (rotatePlane.intersectRay(rayStart, - rayDirection, - intPt, - uvCoords) == false) { - // Ray is parallel to plane. Punt. - return; - } - // Compute offset rotation angle - Rotf offsetRot = new Rotf(); - offsetRot.set(rotatePlane.getNormal(), - (float) Math.atan2(uvCoords.y(), uvCoords.x()) - startAngle); - rotation.mul(offsetRot, startRot); - recalc(); - } else if (dragState == SCALE_XYZ) { - Vec3f closestPt = new Vec3f(); - boolean gotPt = scaleXYZLine.closestPointToRay(rayStart, - rayDirection, - closestPt); - if (gotPt) { - // How far have we moved? - // Clamp scale to be positive. - Vec3f newDiffVec = new Vec3f(); - newDiffVec.sub(closestPt, translation); - if (newDiffVec.dot(scaleXYZLine.getDirection()) < 0) { - scale.set(0, 0, 0); - } else { - float scaleChange = newDiffVec.length() / origScaleLen; - scale.set(origScale); - scale.scale(scaleChange); - } - recalc(); - } - } else if (dragState == SCALE_SINGLE_AXIS) { - IntersectionPoint intPt = new IntersectionPoint(); - Vec2f uvCoords = new Vec2f(); - if (scaleAxisPlane.intersectRay(rayStart, rayDirection, intPt, uvCoords)) { - Vec2f faceCenteredUVCoords = new Vec2f(); - Vec3f foo = new Vec3f(); - Vec3f tmp = new Vec3f(); - tmp.set(intPt.getIntersectionPoint()); - tmp.add(scaleAxisOffset); - scaleAxisPlane.projectPoint(tmp, foo, faceCenteredUVCoords); - if ((MathUtil.sgn(faceCenteredUVCoords.x()) == - MathUtil.sgn(scaleAxisOrigUV.x())) && - (MathUtil.sgn(faceCenteredUVCoords.y()) == - MathUtil.sgn(scaleAxisOrigUV.y()))) { - if (faceCenteredUVCoords.x() < 0) - uvCoords.setX(uvCoords.x() * -1); - if (faceCenteredUVCoords.y() < 0) - uvCoords.setY(uvCoords.y() * -1); - Vec3f scaleVec = new Vec3f(); - if (Math.abs(uvCoords.x()) > Math.abs(uvCoords.y())) { - if (scaleAxes == SCALE_XY) - scaleVec.setX(uvCoords.x()); - else if (scaleAxes == SCALE_YZ) - scaleVec.setY(uvCoords.x()); - else - scaleVec.setZ(uvCoords.x()); - } else { - if (scaleAxes == SCALE_XY) - scaleVec.setY(uvCoords.y()); - else if (scaleAxes == SCALE_YZ) - scaleVec.setZ(uvCoords.y()); - else - scaleVec.setX(uvCoords.y()); - } - scaleVec.setX(scaleVec.x() / geometryScale.x()); - scaleVec.setY(scaleVec.y() / geometryScale.y()); - scaleVec.setZ(scaleVec.z() / geometryScale.z()); - scale.add(origScale, scaleVec); - // This shouldn't be necessary anymore - /* - if (scale.x() < 0) - scale.setX(0); - if (scale.y() < 0) - scale.setY(0); - if (scale.z() < 0) - scale.setZ(0); - */ - } else { - if (Math.abs(uvCoords.x()) > Math.abs(uvCoords.y())) { - if (scaleAxes == SCALE_XY) - scale.setX(0); - else if (scaleAxes == SCALE_YZ) - scale.setY(0); - else - scale.setZ(0); - } else { - if (scaleAxes == SCALE_XY) - scale.setY(0); - else if (scaleAxes == SCALE_YZ) - scale.setZ(0); - else - scale.setX(0); - } - } - recalc(); - } - } else { - throw new RuntimeException("HandleBoxManip::drag: ERROR: Unexpected drag state"); - } - super.drag(rayStart, rayDirection); - } - - public void makeInactive() { - dragState = INACTIVE; - for (Iterator iter = draggedGeometry.iterator(); iter.hasNext(); ) { - ((ManipPart) iter.next()).clearHighlight(); - } - draggedGeometry.clear(); - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private void createGeometry() { - ManipPartGroup group = new ManipPartGroup(); - - // - // Lines - // - - // Top face: - // Front line - lineSegs[0] = createLineSeg(new Vec3f(0, 1, 1), - new Vec3f(1, 0, 0), - new Vec3f(0, 1, 0)); - // Left line - lineSegs[1] = createLineSeg(new Vec3f(-1, 1, 0), - new Vec3f(0, 0, 1), - new Vec3f(0, 1, 0)); - // Back line - lineSegs[2] = createLineSeg(new Vec3f(0, 1, -1), - new Vec3f(1, 0, 0), - new Vec3f(0, 1, 0)); - // Right line - lineSegs[3] = createLineSeg(new Vec3f(1, 1, 0), - new Vec3f(0, 0, 1), - new Vec3f(0, 1, 0)); - // Middle segments: - // Front left - lineSegs[4] = createLineSeg(new Vec3f(-1, 0, 1), - new Vec3f(0, -1, 0), - new Vec3f(1, 0, 0)); - // Back left - lineSegs[5] = createLineSeg(new Vec3f(-1, 0, -1), - new Vec3f(0, -1, 0), - new Vec3f(1, 0, 0)); - // Back right - lineSegs[6] = createLineSeg(new Vec3f(1, 0, -1), - new Vec3f(0, -1, 0), - new Vec3f(1, 0, 0)); - // Front right - lineSegs[7] = createLineSeg(new Vec3f(1, 0, 1), - new Vec3f(0, -1, 0), - new Vec3f(1, 0, 0)); - // Bottom face: - // Front line - lineSegs[8] = createLineSeg(new Vec3f(0, -1, 1), - new Vec3f(1, 0, 0), - new Vec3f(0, 1, 0)); - // Left line - lineSegs[9] = createLineSeg(new Vec3f(-1, -1, 0), - new Vec3f(0, 0, 1), - new Vec3f(0, 1, 0)); - // Back line - lineSegs[10] = createLineSeg(new Vec3f(0, -1, -1), - new Vec3f(1, 0, 0), - new Vec3f(0, 1, 0)); - // Right line - lineSegs[11] = createLineSeg(new Vec3f(1, -1, 0), - new Vec3f(0, 0, 1), - new Vec3f(0, 1, 0)); - - for (int i = 0; i < 12; i++) { - group.addChild(lineSegs[i]); - } - - // - // Faces - // - - // Front face (index 0) - FaceInfo info = new FaceInfo(); - info.origNormal.set(0, 0, 1); - info.centerSquare = - createFace(info.origNormal, info.origNormal, new Vec3f(0, 1, 0)); - info.lineSegs[0] = lineSegs[0]; - info.lineSegs[1] = lineSegs[4]; - info.lineSegs[2] = lineSegs[7]; - info.lineSegs[3] = lineSegs[8]; - info.scaleAxes = SCALE_XY; - faces.add(info); - // Right face (index 1) - info = new FaceInfo(); - info.origNormal.set(1, 0, 0); - info.centerSquare = - createFace(info.origNormal, info.origNormal, new Vec3f(0, 1, 0)); - info.lineSegs[0] = lineSegs[3]; - info.lineSegs[1] = lineSegs[6]; - info.lineSegs[2] = lineSegs[7]; - info.lineSegs[3] = lineSegs[11]; - info.scaleAxes = SCALE_YZ; - faces.add(info); - // Back face (index 2) - info = new FaceInfo(); - info.origNormal.set(0, 0, -1); - info.centerSquare = - createFace(info.origNormal, info.origNormal, new Vec3f(0, 1, 0)); - info.lineSegs[0] = lineSegs[2]; - info.lineSegs[1] = lineSegs[5]; - info.lineSegs[2] = lineSegs[6]; - info.lineSegs[3] = lineSegs[10]; - info.scaleAxes = SCALE_XY; - faces.add(info); - // Left face (index 3) - info = new FaceInfo(); - info.origNormal.set(-1, 0, 0); - info.centerSquare = - createFace(info.origNormal, info.origNormal, new Vec3f(0, 1, 0)); - info.lineSegs[0] = lineSegs[1]; - info.lineSegs[1] = lineSegs[4]; - info.lineSegs[2] = lineSegs[5]; - info.lineSegs[3] = lineSegs[9]; - info.scaleAxes = SCALE_YZ; - faces.add(info); - // Top face (index 4) - info = new FaceInfo(); - info.origNormal.set(0, 1, 0); - info.centerSquare = - createFace(info.origNormal, info.origNormal, new Vec3f(0, 0, -1)); - info.lineSegs[0] = lineSegs[0]; - info.lineSegs[1] = lineSegs[1]; - info.lineSegs[2] = lineSegs[2]; - info.lineSegs[3] = lineSegs[3]; - info.scaleAxes = SCALE_ZX; - faces.add(info); - // Bottom face (index 5) - info = new FaceInfo(); - info.origNormal.set(0, -1, 0); - info.centerSquare = - createFace(info.origNormal, info.origNormal, new Vec3f(0, 0, 1)); - info.lineSegs[0] = lineSegs[8]; - info.lineSegs[1] = lineSegs[9]; - info.lineSegs[2] = lineSegs[10]; - info.lineSegs[3] = lineSegs[11]; - info.scaleAxes = SCALE_ZX; - faces.add(info); - - for (Iterator iter = faces.iterator(); iter.hasNext(); ) { - group.addChild(((FaceInfo) iter.next()).centerSquare); - } - - // - // Rotation handles - // - - // Front handle. Rotates about top/bottom and left/right faces. - // Maintain references to top and right faces. - RotateHandleInfo rotInfo = new RotateHandleInfo(); - rotInfo.faceIdx0 = 4; - rotInfo.faceIdx1 = 1; - rotInfo.geometry = createRotateHandle(new Vec3f(0, 0, 1)); - rotateHandles.add(rotInfo); - // Right handle. Rotates about top/bottom and front/back faces. - // Maintain references to top and front faces. - rotInfo = new RotateHandleInfo(); - rotInfo.faceIdx0 = 4; - rotInfo.faceIdx1 = 0; - rotInfo.geometry = createRotateHandle(new Vec3f(1, 0, 0)); - rotateHandles.add(rotInfo); - // Back handle. Rotates about top/bottom and left/right faces. - // Maintain references to top and right faces. - rotInfo = new RotateHandleInfo(); - rotInfo.faceIdx0 = 4; - rotInfo.faceIdx1 = 1; - rotInfo.geometry = createRotateHandle(new Vec3f(0, 0, -1)); - rotateHandles.add(rotInfo); - // Left handle. Rotates about top/bottom and front/back faces. - // Maintain references to top and front faces. - rotInfo = new RotateHandleInfo(); - rotInfo.faceIdx0 = 4; - rotInfo.faceIdx1 = 0; - rotInfo.geometry = createRotateHandle(new Vec3f(-1, 0, 0)); - rotateHandles.add(rotInfo); - // Top handle. Rotates about front/back and left/right faces. - // Maintain references to front and right faces. - rotInfo = new RotateHandleInfo(); - rotInfo.faceIdx0 = 0; - rotInfo.faceIdx1 = 1; - rotInfo.geometry = createRotateHandle(new Vec3f(0, 1, 0)); - rotateHandles.add(rotInfo); - // Bottom handle. Rotates about front/back and left/right faces. - // Maintain references to front and right faces. - rotInfo = new RotateHandleInfo(); - rotInfo.faceIdx0 = 0; - rotInfo.faceIdx1 = 1; - rotInfo.geometry = createRotateHandle(new Vec3f(0, -1, 0)); - rotateHandles.add(rotInfo); - - for (Iterator iter = rotateHandles.iterator(); iter.hasNext(); ) { - group.addChild(((RotateHandleInfo) iter.next()).geometry); - } - - // Scale handles - // Top right front (order: front right top) - ScaleHandleInfo scaleInfo = new ScaleHandleInfo(); - scaleInfo.geometry = createScaleHandle(new Vec3f(1, 1, 1)); - scaleInfo.faceIndices[0] = 0; - scaleInfo.faceIndices[1] = 1; - scaleInfo.faceIndices[2] = 4; - scaleHandles.add(scaleInfo); - // Top right back (order: right back top) - scaleInfo = new ScaleHandleInfo(); - scaleInfo.geometry = createScaleHandle(new Vec3f(1, 1, -1)); - scaleInfo.faceIndices[0] = 1; - scaleInfo.faceIndices[1] = 2; - scaleInfo.faceIndices[2] = 4; - scaleHandles.add(scaleInfo); - // Bottom right front (order: front right bottom) - scaleInfo = new ScaleHandleInfo(); - scaleInfo.geometry = createScaleHandle(new Vec3f(1, -1, 1)); - scaleInfo.faceIndices[0] = 0; - scaleInfo.faceIndices[1] = 1; - scaleInfo.faceIndices[2] = 5; - scaleHandles.add(scaleInfo); - // Bottom right back (order: right back bottom) - scaleInfo = new ScaleHandleInfo(); - scaleInfo.geometry = createScaleHandle(new Vec3f(1, -1, -1)); - scaleInfo.faceIndices[0] = 1; - scaleInfo.faceIndices[1] = 2; - scaleInfo.faceIndices[2] = 5; - scaleHandles.add(scaleInfo); - // Top left front (order: front left top) - scaleInfo = new ScaleHandleInfo(); - scaleInfo.geometry = createScaleHandle(new Vec3f(-1, 1, 1)); - scaleInfo.faceIndices[0] = 0; - scaleInfo.faceIndices[1] = 3; - scaleInfo.faceIndices[2] = 4; - scaleHandles.add(scaleInfo); - // Top left back (order: back left top) - scaleInfo = new ScaleHandleInfo(); - scaleInfo.geometry = createScaleHandle(new Vec3f(-1, 1, -1)); - scaleInfo.faceIndices[0] = 2; - scaleInfo.faceIndices[1] = 3; - scaleInfo.faceIndices[2] = 4; - scaleHandles.add(scaleInfo); - // Bottom left front (order: front left bottom) - scaleInfo = new ScaleHandleInfo(); - scaleInfo.geometry = createScaleHandle(new Vec3f(-1, -1, 1)); - scaleInfo.faceIndices[0] = 0; - scaleInfo.faceIndices[1] = 3; - scaleInfo.faceIndices[2] = 5; - scaleHandles.add(scaleInfo); - // Bottom left back (order: back left bottom) - scaleInfo = new ScaleHandleInfo(); - scaleInfo.geometry = createScaleHandle(new Vec3f(-1, -1, -1)); - scaleInfo.faceIndices[0] = 2; - scaleInfo.faceIndices[1] = 3; - scaleInfo.faceIndices[2] = 5; - scaleHandles.add(scaleInfo); - - for (Iterator iter = scaleHandles.iterator(); iter.hasNext(); ) { - group.addChild(((ScaleHandleInfo) iter.next()).geometry); - } - - parts = group; - } - - private ManipPart createLineSeg(Vec3f translation, - Vec3f xAxis, - Vec3f yAxis) { - ManipPartTransform xform = new ManipPartTransform(); - ManipPartLineSeg lineSeg = new ManipPartLineSeg(); - xform.addChild(lineSeg); - Mat4f offset = new Mat4f(); - offset.makeIdent(); - Vec3f zAxis = new Vec3f(); - zAxis.cross(xAxis, yAxis); - offset.set(0, 0, xAxis.x()); - offset.set(1, 0, xAxis.y()); - offset.set(2, 0, xAxis.z()); - offset.set(0, 1, yAxis.x()); - offset.set(1, 1, yAxis.y()); - offset.set(2, 1, yAxis.z()); - offset.set(0, 2, zAxis.x()); - offset.set(1, 2, zAxis.y()); - offset.set(2, 2, zAxis.z()); - offset.set(0, 3, translation.x()); - offset.set(1, 3, translation.y()); - offset.set(2, 3, translation.z()); - xform.setOffsetTransform(offset); - return xform; - } - - private ManipPart createFace(Vec3f translation, - Vec3f normal, - Vec3f up) { - ManipPartTransform xform = new ManipPartTransform(); - ManipPartSquare square = new ManipPartSquare(); - square.setVisible(false); - xform.addChild(square); - Mat4f offset = new Mat4f(); - offset.makeIdent(); - Vec3f right = new Vec3f(); - right.cross(up, normal); - offset.set(0, 0, right.x()); - offset.set(1, 0, right.y()); - offset.set(2, 0, right.z()); - offset.set(0, 1, up.x()); - offset.set(1, 1, up.y()); - offset.set(2, 1, up.z()); - offset.set(0, 2, normal.x()); - offset.set(1, 2, normal.y()); - offset.set(2, 2, normal.z()); - offset.set(0, 3, translation.x()); - offset.set(1, 3, translation.y()); - offset.set(2, 3, translation.z()); - xform.setOffsetTransform(offset); - return xform; - } - - private ManipPart createRotateHandle(Vec3f direction) { - ManipPartCube handle = new ManipPartCube(); - Mat4f offset = new Mat4f(); - offset.makeIdent(); - offset.set(0, 0, 0.1f); - offset.set(1, 1, 0.1f); - offset.set(2, 2, 0.1f); - Vec3f scaledDirection = new Vec3f(direction); - scaledDirection.scale(2.0f); - offset.setTranslation(scaledDirection); - ManipPartTransform xform = new ManipPartTransform(); - xform.addChild(handle); - xform.setOffsetTransform(offset); - return xform; - } - - private ManipPart createScaleHandle(Vec3f position) { - ManipPartCube handle = new ManipPartCube(); - Mat4f offset = new Mat4f(); - offset.makeIdent(); - offset.set(0, 0, 0.1f); - offset.set(1, 1, 0.1f); - offset.set(2, 2, 0.1f); - offset.setTranslation(position); - ManipPartTransform xform = new ManipPartTransform(); - xform.addChild(handle); - xform.setOffsetTransform(offset); - return xform; - } - - private void recalc() { - // Construct local to world transform for geometry. - // Scale, Rotation, Translation. Since we're right multiplying - // column vectors, the actual matrix composed is TRS. - Mat4f scaleMat = new Mat4f(); - Mat4f rotMat = new Mat4f(); - Mat4f xlateMat = new Mat4f(); - Mat4f tmpMat = new Mat4f(); - scaleMat.makeIdent(); - scaleMat.set(0, 0, scale.x() * geometryScale.x()); - scaleMat.set(1, 1, scale.y() * geometryScale.y()); - scaleMat.set(2, 2, scale.z() * geometryScale.z()); - rotMat.makeIdent(); - rotMat.setRotation(rotation); - xlateMat.makeIdent(); - xlateMat.set(0, 3, translation.x()); - xlateMat.set(1, 3, translation.y()); - xlateMat.set(2, 3, translation.z()); - tmpMat.mul(xlateMat, rotMat); - xform.mul(tmpMat, scaleMat); - int i; - for (i = 0; i < 12; i++) { - lineSegs[i].setTransform(xform); - } - for (i = 0; i < faces.size(); i++) { - FaceInfo face = (FaceInfo) faces.get(i); - face.centerSquare.setTransform(xform); - xform.xformDir(face.origNormal, face.normal); - face.normal.normalize(); - - RotateHandleInfo rotInfo = (RotateHandleInfo) rotateHandles.get(i); - rotInfo.geometry.setTransform(xform); - } - for (i = 0; i < scaleHandles.size(); i++) { - ((ScaleHandleInfo) scaleHandles.get(i)).geometry.setTransform(xform); - } - } -} diff --git a/src/gleem/HitPoint.java b/src/gleem/HitPoint.java deleted file mode 100644 index 1eb7151..0000000 --- a/src/gleem/HitPoint.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import gleem.linalg.*; - -/** Defines an intersection of a ray with a piece of a manipulator */ - -public class HitPoint { - /** Was the shift key down while this HitPoint was computed? */ - public boolean shiftDown; - - /** The manipulator which was intersected */ - public Manip manipulator; - - /** The sub-piece of the manipulator which was actually intersected */ - public ManipPart manipPart; - - /** Start of the ray which was cast. The manipulator part must set - this when an intersection is detected. */ - public Vec3f rayStart; - /** Direction of the ray which was cast. The manipulator part must - set this when an intersection is detected. */ - public Vec3f rayDirection; - - // Not all ManipParts supply all of these pieces of information. - - /** The combination of 3D point and t parameter at which the - intersection occurred. It's important to supply the t parameter - because the ManipManager needs it to disambiguate between - intersections with multiple manipulators. */ - public IntersectionPoint intPt; - - /** Arbitrary user data for extended functionality */ - public Object userData; -} diff --git a/src/gleem/Manip.java b/src/gleem/Manip.java deleted file mode 100644 index 9891501..0000000 --- a/src/gleem/Manip.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.util.*; - -import gleem.linalg.*; -import javax.media.opengl.*; - -/** The base class for all manipulators. Fundamentally a manipulator - must support a ray cast operation with itself and logic to - understand what to do when that ray cast actually made the - manipulator active. */ - -public abstract class Manip { - private List motionListeners; - - public Manip() { - motionListeners = new LinkedList(); - - // FIXME: The ManipManager's list should probably be maintained - // with weak references - // ManipManager.getManipManager().registerManip(this); - } - - /** Returns true if the addition was successful, false otherwise */ - public boolean addMotionListener(ManipMotionListener l) { - return motionListeners.add(l); - } - - /** Returns true if the removal was successful, false otherwise */ - public boolean removeMotionListener(ManipMotionListener l) { - return motionListeners.remove(l); - } - - /** Cast a ray in 3-space from the camera start position in the - specified direction and test for intersections against all live - portions of this manipulator. Add all hits, in arbitrary order, - to the end of the given list in the form of HitPoints. Must not - modify the results vector in any other way (i.e., must not - remove any existing HitPoints from the results vector). */ - public abstract void intersectRay(Vec3f rayStart, - Vec3f rayDirection, - List results); - - /** Tell the manipulator to highlight the current portion of itself. - This is merely visual feedback to the user. */ - public abstract void highlight(HitPoint hit); - - /** Tell the manipulator to clear the current highlight */ - public abstract void clearHighlight(); - - /** If the ManipManager decides that this manipulator is to become - active, it will pass back the HitPoint which made it make its - decision. The manipulator can then change its state to look for - drags of this portion of the manipulator. */ - public abstract void makeActive(HitPoint hit); - - /** When a manipulator is active, drags of the live portion cause - motion of the manipulator. The ManipManager keeps track of which - manipulator (if any) is active and takes care of calling the - drag() method with the current ray start and direction. The - manipulator must keep enough state to understand how it should - position and/or rotate itself. NOTE that the base class provides - an implementation for this method which you must call at the end - of your overriding method. */ - public void drag(Vec3f rayStart, - Vec3f rayDirection) { - for (Iterator iter = motionListeners.iterator(); iter.hasNext(); ) { - ManipMotionListener m = (ManipMotionListener) iter.next(); - m.manipMoved(this); - } - } - - /** When the mouse button is released, makeInactive() is called. The - manipulator should reset its state in preparation for the next - drag. */ - public abstract void makeInactive(); - - /** Render this Manipulator now using the given OpenGL routines and - assuming an OpenGL context is current. */ - public abstract void render(GL gl); -} diff --git a/src/gleem/ManipManager.java b/src/gleem/ManipManager.java deleted file mode 100644 index 4929bae..0000000 --- a/src/gleem/ManipManager.java +++ /dev/null @@ -1,408 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.awt.event.*; -import java.util.*; - -import gleem.linalg.*; - -import javax.media.opengl.*; - -/** The ManipManager handles making manipulators visible in a - window. */ - -public class ManipManager { - // Screen-to-ray mapping - private ScreenToRayMapping mapping; - private static ManipManager soleInstance; - // Maps GLDrawables to WindowInfos - private Map windowToInfoMap = new HashMap(); - // Maps Manips to Set<GLAutoDrawable> - private Map manipToWindowMap = new HashMap(); - - // MouseAdapter for this - private MouseAdapter mouseListener = new MouseAdapter() { - public void mousePressed(MouseEvent e) { - ManipManager.this.mousePressed(e); - } - - public void mouseReleased(MouseEvent e) { - ManipManager.this.mouseReleased(e); - } - }; - private MouseMotionAdapter mouseMotionListener = new MouseMotionAdapter() { - public void mouseDragged(MouseEvent e) { - ManipManager.this.mouseDragged(e); - } - - public void mouseMoved(MouseEvent e) { - ManipManager.this.mouseMoved(e); - } - }; - private WindowUpdateListener defaultWindowListener = new WindowUpdateListener() { - public void update(GLAutoDrawable window) { - window.repaint(); - } - }; - private WindowUpdateListener windowListener; - - class WindowInfo { - /** Set<Manip> */ - Set manips = new HashSet(); - CameraParameters params = new CameraParameters(); - Manip curHighlightedManip; - ManipPart curHighlightedManipPart; - // Current manip - Manip curManip; - // Dragging? - boolean dragging; - } - - /** This class is a singleton. Get the sole instance of the - ManipManager. */ - public static synchronized ManipManager getManipManager() { - if (soleInstance == null) { - soleInstance = new ManipManager(); - } - return soleInstance; - } - - /** Make the ManipManager aware of the existence of a given - window. This causes mouse and mouse motion listeners to be - installed on this window; see setupMouseListeners, below. */ - public synchronized void registerWindow(GLAutoDrawable window) { - windowToInfoMap.put(window, new WindowInfo()); - setupMouseListeners(window); - } - - /** Remove all references to a given window, including removing all - manipulators from it. */ - public synchronized void unregisterWindow(GLAutoDrawable window) { - if (window == null) { - return; - } - WindowInfo info = (WindowInfo) windowToInfoMap.get(window); - if (info != null) { - Object[] manips = info.manips.toArray(); - for (int i = 0; i < manips.length; i++) { - removeManipFromWindow((Manip) manips[i], window); - } - windowToInfoMap.remove(window); - removeMouseListeners(window); - } - } - - /** Make a given manipulator visible and active in a given - window. The window must be registered. */ - public synchronized void showManipInWindow(Manip manip, GLAutoDrawable window) { - WindowInfo info = (WindowInfo) windowToInfoMap.get(window); - if (info == null) { - throw new RuntimeException("Window not registered"); - } - info.manips.add(manip); - Set windows = (Set) manipToWindowMap.get(manip); - if (windows == null) { - windows = new HashSet(); - manipToWindowMap.put(manip, windows); - } - windows.add(window); - } - - /** Remove a given manipulator from a given window. The window must - be registered. */ - public synchronized void removeManipFromWindow(Manip manip, GLAutoDrawable window) { - WindowInfo info = (WindowInfo) windowToInfoMap.get(window); - if (info == null) { - throw new RuntimeException("Window not registered"); - } - if (!info.manips.remove(manip)) { - throw new RuntimeException("Manip not registered in window"); - } - Set windows = (Set) manipToWindowMap.get(manip); - assert windows != null; - windows.remove(window); - } - - /** This must be called for a registered window every time the - camera parameters of the window change. */ - public synchronized void updateCameraParameters(GLAutoDrawable window, CameraParameters params) { - WindowInfo info = (WindowInfo) windowToInfoMap.get(window); - if (info == null) { - throw new RuntimeException("Window not registered"); - } - info.params.set(params); - } - - /** Allows changing of the screen-to-ray mapping. Default is a - RightTruncPyrMapping. */ - public synchronized void setScreenToRayMapping(ScreenToRayMapping mapping) { - this.mapping = mapping; - } - - /** Returns the current screen-to-ray mapping. */ - public synchronized ScreenToRayMapping getScreenToRayMapping() { - return mapping; - } - - /** Sets the WindowUpdateListener the ManipManager uses to force - repainting of windows in which manipulators have moved. The - default implementation, which can be restored by passing a null - listener argument to this method, calls repaint() on the - GLAutoDrawable if it is not a GLRunnable instance (i.e., a - GLAnimCanvas or GLAnimJPanel, which redraw themselves - automatically). */ - public synchronized void setWindowUpdateListener(WindowUpdateListener listener) { - if (listener != null) { - windowListener = listener; - } else { - windowListener = defaultWindowListener; - } - } - - /** Cause the manipulators for a given window to be drawn. The - drawing occurs immediately; this routine must be called when an - OpenGL context is valid, i.e., from within the display() method - of a GLEventListener. */ - public synchronized void render(GLAutoDrawable window, GL gl) { - WindowInfo info = (WindowInfo) windowToInfoMap.get(window); - if (info == null) { - throw new RuntimeException("Window not registered"); - } - for (Iterator iter = info.manips.iterator(); iter.hasNext(); ) { - ((Manip) iter.next()).render(gl); - } - } - - /** Sets up a MouseListener and MouseMotionListener for the given - window. Since an application-level MouseListener or - MouseMotionListener might want to intercept events and not pass - them on to the ManipManager without relying on the ordering of - listeners for the canvas (see the ExaminerViewer class), the - setupMouseListeners and removeMouseListeners routines, as well - as the appropriate delegate routines, are made public here. */ - public synchronized void setupMouseListeners(GLAutoDrawable window) { - window.addMouseMotionListener(mouseMotionListener); - window.addMouseListener(mouseListener); - } - - /** Removes the automatically-installed mouse listeners for the - given window. This allows application code to determine the - policy for intercepting mouse events. */ - public synchronized void removeMouseListeners(GLAutoDrawable window) { - window.removeMouseMotionListener(mouseMotionListener); - window.removeMouseListener(mouseListener); - } - - /** The ManipManager watches for the following events: mouseMoved, - mouseDragged, mousePressed, and mouseReleased. These routines - are exposed so application-level code can intercept events when - certain modifier keys are depressed. */ - public synchronized void mouseMoved(MouseEvent e) { - passiveMotionMethod((GLAutoDrawable) e.getComponent(), e.getX(), e.getY()); - } - - /** The ManipManager watches for the following events: mouseMoved, - mouseDragged, mousePressed, and mouseReleased. These routines - are exposed so application-level code can intercept events when - certain modifier keys are depressed. */ - public synchronized void mouseDragged(MouseEvent e) { - motionMethod((GLAutoDrawable) e.getComponent(), e.getX(), e.getY()); - } - - /** The ManipManager watches for the following events: mouseMoved, - mouseDragged, mousePressed, and mouseReleased. These routines - are exposed so application-level code can intercept events when - certain modifier keys are depressed. */ - public synchronized void mousePressed(MouseEvent e) { - mouseMethod((GLAutoDrawable) e.getComponent(), e.getModifiers(), - true, e.getX(), e.getY()); - } - - /** The ManipManager watches for the following events: mouseMoved, - mouseDragged, mousePressed, and mouseReleased. These routines - are exposed so application-level code can intercept events when - certain modifier keys are depressed. */ - public synchronized void mouseReleased(MouseEvent e) { - mouseMethod((GLAutoDrawable) e.getComponent(), e.getModifiers(), - false, e.getX(), e.getY()); - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private ManipManager() { - mapping = new RightTruncPyrMapping(); - setWindowUpdateListener(null); - } - - private void motionMethod(GLAutoDrawable window, int x, int y) { - WindowInfo info = (WindowInfo) windowToInfoMap.get(window); - if (info.dragging) { - // Compute ray in 3D - Vec3f rayStart = new Vec3f(); - Vec3f rayDirection = new Vec3f(); - computeRay(info.params, x, y, rayStart, rayDirection); - info.curManip.drag(rayStart, rayDirection); - fireUpdate(info.curManip); - } - } - - private void passiveMotionMethod(GLAutoDrawable window, int x, int y) { - WindowInfo info = (WindowInfo) windowToInfoMap.get(window); - // Compute ray in 3D - Vec3f rayStart = new Vec3f(); - Vec3f rayDirection = new Vec3f(); - computeRay(info.params, x, y, rayStart, rayDirection); - // Compute all hits - List hits = new ArrayList(); - for (Iterator iter = info.manips.iterator(); iter.hasNext(); ) { - ((Manip) iter.next()).intersectRay(rayStart, rayDirection, hits); - } - // Find closest one - HitPoint hp = null; - for (Iterator iter = hits.iterator(); iter.hasNext(); ) { - HitPoint cur = (HitPoint) iter.next(); - if ((hp == null) || (cur.intPt.getT() < hp.intPt.getT())) { - hp = cur; - } - } - if (info.curHighlightedManip != null && - (hp == null || - hp.manipulator != info.curHighlightedManip || - hp.manipPart != info.curHighlightedManipPart)) { - info.curHighlightedManip.clearHighlight(); - fireUpdate(info.curHighlightedManip); - } - if (hp != null) { - if (hp.manipulator != info.curHighlightedManip || - hp.manipPart != info.curHighlightedManipPart) { - // Highlight manip - info.curHighlightedManip = hp.manipulator; - info.curHighlightedManipPart = hp.manipPart; - info.curHighlightedManip.highlight(hp); - fireUpdate(info.curHighlightedManip); - } - } else { - info.curHighlightedManip = null; - } - } - - private void mouseMethod(GLAutoDrawable window, int modifiers, - boolean isPress, int x, int y) { - if ((modifiers & InputEvent.BUTTON1_MASK) != 0) { - WindowInfo info = (WindowInfo) windowToInfoMap.get(window); - - if (isPress) { - // Compute ray in 3D - Vec3f rayStart = new Vec3f(); - Vec3f rayDirection = new Vec3f(); - computeRay(info.params, x, y, rayStart, rayDirection); - // Compute all hits - List hits = new ArrayList(); - for (Iterator iter = info.manips.iterator(); iter.hasNext(); ) { - ((Manip) iter.next()).intersectRay(rayStart, rayDirection, hits); - } - // Find closest one - HitPoint hp = null; - for (Iterator iter = hits.iterator(); iter.hasNext(); ) { - HitPoint cur = (HitPoint) iter.next(); - if ((hp == null) || (cur.intPt.getT() < hp.intPt.getT())) { - hp = cur; - } - } - if (hp != null) { - if (info.curHighlightedManip != null) { - info.curHighlightedManip.clearHighlight(); - fireUpdate(info.curHighlightedManip); - info.curHighlightedManip = null; - } - - if ((modifiers & InputEvent.SHIFT_MASK) != 0) { - hp.shiftDown = true; - } - - hp.manipulator.makeActive(hp); - info.curManip = hp.manipulator; - info.dragging = true; - fireUpdate(info.curManip); - } - } else { - if (info.curManip != null) { - info.curManip.makeInactive(); - info.dragging = false; - fireUpdate(info.curManip); - info.curManip = null; - // Check to see where mouse is - passiveMotionMethod(window, x, y); - } - } - } - } - - private Vec2f screenToNormalizedCoordinates(CameraParameters params, - int x, int y) { - // AWT's origin is upper left - return new Vec2f( - (((float) x / (float) (params.xSize - 1)) - 0.5f) * 2.0f, - (0.5f - ((float) y / (float) (params.ySize - 1))) * 2.0f - ); - } - - private void computeRay(CameraParameters params, int x, int y, - Vec3f raySource, Vec3f rayDirection) { - if (mapping == null) { - throw new RuntimeException("Screen to ray mapping was unspecified"); - } - mapping.mapScreenToRay(screenToNormalizedCoordinates(params, x, y), - params, - raySource, - rayDirection); - } - - private void fireUpdate(Manip manip) { - Set windows = (Set) manipToWindowMap.get(manip); - assert windows != null; - for (Iterator iter = windows.iterator(); iter.hasNext(); ) { - windowListener.update((GLAutoDrawable) iter.next()); - } - } -} diff --git a/src/gleem/ManipMotionListener.java b/src/gleem/ManipMotionListener.java deleted file mode 100644 index 45059a7..0000000 --- a/src/gleem/ManipMotionListener.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -/** The interface which clients to the gleem library implement to - receive notification that a manipulator has moved. */ - -public interface ManipMotionListener { - public void manipMoved(Manip manip); -} diff --git a/src/gleem/ManipPart.java b/src/gleem/ManipPart.java deleted file mode 100644 index e0416a0..0000000 --- a/src/gleem/ManipPart.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.util.*; - -import gleem.linalg.*; -import javax.media.opengl.*; - -/** A ManipPart is a visible or invisible sub-part of a manipulator. - ManipParts are organized into trees. */ - -public abstract class ManipPart { - private ManipPartGroup parent; - - /** Get the parent ManipPartGroup, or null if none (NOTE that this - differs from the C++ API) */ - public ManipPartGroup getParent() { - return parent; - } - - /** Set the parent ManipPartGroup of this ManipPart (NOTE that this - differs from the C++ API) */ - public void setParent(ManipPartGroup parent) { - this.parent = parent; - } - - /** Intersect a ray with this part, returning all intersected points - as HitPoints in the result list. The same rules as - Manip.intersectRay() apply. */ - public abstract void intersectRay(Vec3f rayStart, - Vec3f rayDirection, - List results, - Manip caller); - - /** Sets the transform of this part. */ - public abstract void setTransform(Mat4f xform); - - /** Highlight this part */ - public abstract void highlight(); - - /** Unhighlight this part */ - public abstract void clearHighlight(); - - /** Is this part pickable, or just decorative? Not pickable implies - that intersectRay() will return immediately. */ - public abstract void setPickable(boolean pickable); - public abstract boolean getPickable(); - - /** Is this part visible? */ - public abstract void setVisible(boolean visible); - public abstract boolean getVisible(); - - /** Render this ManipPart now using the given OpenGL routines and - assuming an OpenGL context is current. */ - public abstract void render(GL gl); -} diff --git a/src/gleem/ManipPartCube.java b/src/gleem/ManipPartCube.java deleted file mode 100644 index 8e4a2f7..0000000 --- a/src/gleem/ManipPartCube.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.util.*; - -import gleem.linalg.*; - -/** A cube of width, height, and depth 2, centered about the origin - and aligned with the X, Y, and Z axes. */ - -public class ManipPartCube extends ManipPartTriBased { - private static final Vec3f[] vertices = { - // Front side - new Vec3f(-1, 1, 1), - new Vec3f(-1, -1, 1), - new Vec3f(1, -1, 1), - new Vec3f(1, 1, 1), - // Back side - new Vec3f(-1, 1, -1), - new Vec3f(-1, -1, -1), - new Vec3f(1, -1, -1), - new Vec3f(1, 1, -1), - }; - - private static final int[] vertexIndices = { - // Front face - 0, 1, 2, - 0, 2, 3, - // Right face - 3, 2, 6, - 3, 6, 7, - // Back face - 7, 6, 5, - 7, 5, 4, - // Left face - 4, 5, 1, - 4, 1, 0, - // Top face - 4, 0, 3, - 4, 3, 7, - // Bottom face - 1, 5, 6, - 1, 6, 2 - }; - - private static Vec3f[] normals = null; - private static int[] normalIndices = null; - - public ManipPartCube() { - super(); - - if (normals == null) { - NormalCalc.NormalInfo normInfo = - NormalCalc.computeFacetedNormals(vertices, vertexIndices, true); - normals = normInfo.normals; - normalIndices = normInfo.normalIndices; - } - - setVertices(vertices); - setVertexIndices(vertexIndices); - setNormals(normals); - setNormalIndices(normalIndices); - } -} diff --git a/src/gleem/ManipPartGroup.java b/src/gleem/ManipPartGroup.java deleted file mode 100644 index 14a73ef..0000000 --- a/src/gleem/ManipPartGroup.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.util.*; - -import gleem.linalg.*; -import javax.media.opengl.*; - -/** This class groups a set of ManipParts. Makes a set of ManipParts - look like one. */ - -public class ManipPartGroup extends ManipPart { - private boolean pickable = true; - private boolean visible = true; - private List children = new ArrayList(); - - public void addChild(ManipPart child) { - children.add(child); - } - - public void removeChild(ManipPart child) { - children.remove(child); - } - - public int getNumChildren() { - return children.size(); - } - - public ManipPart getChild(int index) { - return (ManipPart) children.get(index); - } - - public void intersectRay(Vec3f rayStart, - Vec3f rayDirection, - List results, - Manip caller) { - if (!pickable) { - return; - } - - int topIdx = results.size(); - for (int i = 0; i < getNumChildren(); i++) { - getChild(i).intersectRay(rayStart, rayDirection, results, caller); - } - - // Fix up all HitPoints so we appear to be the manipulator part - // which caused the intersection - for (int i = topIdx; i < results.size(); i++) { - ((HitPoint) results.get(i)).manipPart = this; - } - } - - public void setTransform(Mat4f xform) { - for (int i = 0; i < getNumChildren(); i++) { - getChild(i).setTransform(xform); - } - } - - public void highlight() { - for (int i = 0; i < getNumChildren(); i++) { - getChild(i).highlight(); - } - } - - public void clearHighlight() { - for (int i = 0; i < getNumChildren(); i++) { - getChild(i).clearHighlight(); - } - } - - public void setPickable(boolean pickable) { - this.pickable = pickable; - } - - public boolean getPickable() { - return pickable; - } - - public void setVisible(boolean visible) { - this.visible = visible; - for (Iterator iter = children.iterator(); iter.hasNext(); ) { - ((ManipPart) iter.next()).setVisible(visible); - } - } - - public boolean getVisible() { - return visible; - } - - public void render(GL gl) { - for (Iterator iter = children.iterator(); iter.hasNext(); ) { - ((ManipPart) iter.next()).render(gl); - } - } -} diff --git a/src/gleem/ManipPartLineSeg.java b/src/gleem/ManipPartLineSeg.java deleted file mode 100644 index ce560c9..0000000 --- a/src/gleem/ManipPartLineSeg.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.util.*; - -import gleem.linalg.*; -import javax.media.opengl.*; - -/** A line segment from (-1, 0, 0) to (1, 0, 0). */ - -public class ManipPartLineSeg extends ManipPart { - private Vec3f color; - private Vec3f highlightColor; - private boolean highlighted; - private boolean visible; - private static Vec3f[] vertices = new Vec3f[] { - new Vec3f(-1, 0, 0), - new Vec3f(1, 0, 0) - }; - /** Current transformation matrix */ - private Mat4f xform; - /** Transformed vertices */ - private Vec3f[] curVertices; - - public ManipPartLineSeg() { - color = new Vec3f(0.8f, 0.8f, 0.8f); - highlightColor = new Vec3f(0.8f, 0.8f, 0.2f); - highlighted = false; - visible = true; - xform = new Mat4f(); - xform.makeIdent(); - curVertices = null; - } - - /** Default color is (0.8, 0.8, 0.8) */ - public void setColor(Vec3f color) { - this.color.set(color); - } - - public Vec3f getColor() { - return new Vec3f(color); - } - - /** Default highlight color is (0.8, 0.8, 0) */ - public void setHighlightColor(Vec3f highlightColor) { - this.highlightColor.set(highlightColor); - } - - public Vec3f getHighlightColor() { - return new Vec3f(highlightColor); - } - - public void intersectRay(Vec3f rayStart, - Vec3f rayDirection, - List results, - Manip caller) { - } - - public void setTransform(Mat4f xform) { - this.xform.set(xform); - recalcVertices(); - } - - public void highlight() { - highlighted = true; - } - - public void clearHighlight() { - highlighted = false; - } - - public void setPickable(boolean pickable) { - } - - public boolean getPickable() { - return false; - } - - /** Default is visible */ - public void setVisible(boolean visible) { - this.visible = visible; - } - - public boolean getVisible() { - return visible; - } - - public void render(GL gl) { - if (!visible) - return; - // FIXME: probably too slow - boolean reenable = gl.glIsEnabled(GL.GL_LIGHTING); - gl.glDisable(GL.GL_LIGHTING); - gl.glBegin(GL.GL_LINES); - if (highlighted) - gl.glColor3f(highlightColor.x(), highlightColor.y(), highlightColor.z()); - else - gl.glColor3f(color.x(), color.y(), color.z()); - for (int i = 0; i < curVertices.length; i++) { - Vec3f v = curVertices[i]; - gl.glVertex3f(v.x(), v.y(), v.z()); - } - gl.glEnd(); - if (reenable) - gl.glEnable(GL.GL_LIGHTING); - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private void recalcVertices() { - if ((curVertices == null) || - (curVertices.length != vertices.length)) { - curVertices = new Vec3f[vertices.length]; - for (int i = 0; i < vertices.length; i++) { - curVertices[i] = new Vec3f(); - } - } - - for (int i = 0; i < curVertices.length; i++) { - xform.xformPt(vertices[i], curVertices[i]); - } - } -} diff --git a/src/gleem/ManipPartSquare.java b/src/gleem/ManipPartSquare.java deleted file mode 100644 index e639904..0000000 --- a/src/gleem/ManipPartSquare.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.util.*; - -import gleem.linalg.*; - -/** A 2x2 square in the X-Y plane, centered about the origin, with the - normal pointing in the +Z direction. */ - -public class ManipPartSquare extends ManipPartTriBased { - private static final Vec3f[] vertices = { - // Counter-clockwise, starting from upper left - new Vec3f(-1, 1, 0), - new Vec3f(-1, -1, 0), - new Vec3f(1, -1, 0), - new Vec3f(1, 1, 0) - }; - - private static final int[] vertexIndices = { - // Just the front face - 0, 1, 2, - 0, 2, 3, - }; - - private static Vec3f[] normals = null; - private static int[] normalIndices = null; - - public ManipPartSquare() { - super(); - - if (normals == null) { - NormalCalc.NormalInfo normInfo = - NormalCalc.computeFacetedNormals(vertices, vertexIndices, true); - normals = normInfo.normals; - normalIndices = normInfo.normalIndices; - } - - setVertices(vertices); - setVertexIndices(vertexIndices); - setNormals(normals); - setNormalIndices(normalIndices); - } -} diff --git a/src/gleem/ManipPartTransform.java b/src/gleem/ManipPartTransform.java deleted file mode 100644 index 61a9bc5..0000000 --- a/src/gleem/ManipPartTransform.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.util.*; - -import gleem.linalg.*; - -/** A Group which contains an offset transformation which is performed - before the one handed down in setTransform. */ - -public class ManipPartTransform extends ManipPartGroup { - private Mat4f offsetTransform; - - public ManipPartTransform() { - super(); - offsetTransform = new Mat4f(); - offsetTransform.makeIdent(); - } - - public void setTransform(Mat4f xform) { - Mat4f totalXform = xform.mul(offsetTransform); - for (int i = 0; i < getNumChildren(); i++) { - getChild(i).setTransform(totalXform); - } - } - - public void setOffsetTransform(Mat4f offsetTransform) { - this.offsetTransform.set(offsetTransform); - } - - public Mat4f getOffsetTransform() { - return offsetTransform; - } -} diff --git a/src/gleem/ManipPartTriBased.java b/src/gleem/ManipPartTriBased.java deleted file mode 100644 index 759c491..0000000 --- a/src/gleem/ManipPartTriBased.java +++ /dev/null @@ -1,292 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.util.*; - -import gleem.linalg.*; -import javax.media.opengl.*; - -/** Triangle-based manipulator part. This is the base class for most - of the ManipParts that GLEEM uses internally. You can feel free to - subclass this if you want to replace geometry in the manipulators, - or re-derive from ManipPart. See ManipPartLineSeg for an example. */ - -public class ManipPartTriBased extends ManipPart { - private Vec3f color; - private Vec3f highlightColor; - private boolean highlighted; - private boolean pickable; - private boolean visible; - /** Direct references down to subclass-specific data */ - private Vec3f[] vertices; - private Vec3f[] normals; - private int[] vertexIndices; - private int[] normalIndices; - /** Current transformation matrix */ - private Mat4f xform; - /** Transformed vertices and normals */ - private Vec3f[] curVertices; - private Vec3f[] curNormals; - - public ManipPartTriBased() { - color = new Vec3f(0.8f, 0.8f, 0.8f); - highlightColor = new Vec3f(0.8f, 0.8f, 0.2f); - highlighted = false; - pickable = true; - visible = true; - vertices = null; - normals = null; - vertexIndices = null; - normalIndices = null; - xform = new Mat4f(); - xform.makeIdent(); - curVertices = null; - } - - /** Default color is (0.8, 0.8, 0.8) */ - public void setColor(Vec3f color) { - this.color.set(color); - } - - public Vec3f getColor() { - return new Vec3f(color); - } - - /** Default highlight color is (0.8, 0.8, 0) */ - public void setHighlightColor(Vec3f highlightColor) { - this.highlightColor.set(highlightColor); - } - - public Vec3f getHighlightColor() { - return new Vec3f(highlightColor); - } - - public void intersectRay(Vec3f rayStart, - Vec3f rayDirection, - List results, - Manip caller) { - consistencyCheck(); - if (!pickable) { - return; - } - - IntersectionPoint intPt = new IntersectionPoint(); - HitPoint hitPt = new HitPoint(); - hitPt.manipulator = caller; - hitPt.manipPart = this; - for (int i = 0; i < vertexIndices.length; i+=3) { - int i0 = vertexIndices[i]; - int i1 = vertexIndices[i+1]; - int i2 = vertexIndices[i+2]; - if (RayTriangleIntersection.intersectRayWithTriangle(rayStart, - rayDirection, - curVertices[i0], - curVertices[i1], - curVertices[i2], - intPt) - == RayTriangleIntersection.INTERSECTION) { - // Check for intersections behind the ray - if (intPt.getT() >= 0) { - hitPt.rayStart = rayStart; - hitPt.rayDirection = rayDirection; - hitPt.intPt = intPt; - results.add(hitPt); - } - } - } - } - - public void setTransform(Mat4f xform) { - this.xform.set(xform); - recalcVertices(); - } - - public void highlight() { - highlighted = true; - } - - public void clearHighlight() { - highlighted = false; - } - - /** Default is pickable */ - public void setPickable(boolean pickable) { - this.pickable = pickable; - } - - public boolean getPickable() { - return pickable; - } - - /** Default is visible */ - public void setVisible(boolean visible) { - this.visible = visible; - } - - public boolean getVisible() { - return visible; - } - - public void render(GL gl) { - if (!visible) - return; - boolean lightingOn = true; - // FIXME: this is too expensive; figure out another way - // if (glIsEnabled(GL.GL_LIGHTING)) - // lightingOn = true; - - if (lightingOn) { - gl.glEnable(GL.GL_COLOR_MATERIAL); - gl.glColorMaterial(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE); - } - gl.glBegin(GL.GL_TRIANGLES); - if (highlighted) - gl.glColor3f(highlightColor.x(), highlightColor.y(), highlightColor.z()); - else - gl.glColor3f(color.x(), color.y(), color.z()); - int i = 0; - while (i < vertexIndices.length) { - Vec3f n0 = curNormals[normalIndices[i]]; - Vec3f v0 = curVertices[vertexIndices[i]]; - gl.glNormal3f(n0.x(), n0.y(), n0.z()); - gl.glVertex3f(v0.x(), v0.y(), v0.z()); - i++; - - Vec3f n1 = curNormals[normalIndices[i]]; - Vec3f v1 = curVertices[vertexIndices[i]]; - gl.glNormal3f(n1.x(), n1.y(), n1.z()); - gl.glVertex3f(v1.x(), v1.y(), v1.z()); - i++; - - Vec3f n2 = curNormals[normalIndices[i]]; - Vec3f v2 = curVertices[vertexIndices[i]]; - gl.glNormal3f(n2.x(), n2.y(), n2.z()); - gl.glVertex3f(v2.x(), v2.y(), v2.z()); - i++; - } - gl.glEnd(); - if (lightingOn) - gl.glDisable(GL.GL_COLOR_MATERIAL); - } - - //---------------------------------------------------------------------- - // Used by subclasses to set up vertex, normals, and vertex and - // normal indices. - // - - protected void setVertices(Vec3f[] vertices) { - this.vertices = vertices; - } - - protected Vec3f[] getVertices() { - return vertices; - } - - protected void setNormals(Vec3f[] normals) { - this.normals = normals; - } - - protected Vec3f[] getNormals() { - return normals; - } - - protected void setVertexIndices(int[] vertexIndices) { - this.vertexIndices = vertexIndices; - } - - protected int[] getVertexIndices() { - return vertexIndices; - } - - protected void setNormalIndices(int[] normalIndices) { - this.normalIndices = normalIndices; - } - - protected int[] getNormalIndices() { - return normalIndices; - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private void consistencyCheck() { - if (vertexIndices.length != normalIndices.length) { - throw new RuntimeException("vertexIndices.length != normalIndices.length"); - } - - if ((vertexIndices.length % 3) != 0) { - throw new RuntimeException("(vertexIndices % 3) != 0"); - } - - if ((curVertices != null) && - (vertices.length != curVertices.length)) { - throw new RuntimeException("vertices.length != curVertices.length"); - } - } - - private void recalcVertices() { - if ((curVertices == null) || - (curVertices.length != vertices.length)) { - curVertices = new Vec3f[vertices.length]; - for (int i = 0; i < vertices.length; i++) { - curVertices[i] = new Vec3f(); - } - } - - for (int i = 0; i < vertices.length; i++) { - xform.xformPt(vertices[i], curVertices[i]); - } - - if ((curNormals == null) || - (curNormals.length != normals.length)) { - curNormals = new Vec3f[normals.length]; - for (int i = 0; i < normals.length; i++) { - curNormals[i] = new Vec3f(); - } - } - - for (int i = 0; i < normals.length; i++) { - xform.xformDir(normals[i], curNormals[i]); - curNormals[i].normalize(); - } - } -} diff --git a/src/gleem/ManipPartTwoWayArrow.java b/src/gleem/ManipPartTwoWayArrow.java deleted file mode 100644 index 77ba507..0000000 --- a/src/gleem/ManipPartTwoWayArrow.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.util.*; - -import gleem.linalg.*; - -/** Piece of geometry defining a two-way arrow, used in Translate1 and - Translate2 manips. */ - -public class ManipPartTwoWayArrow extends ManipPartTriBased { - private static final Vec3f[] vertices = { - // Left tetrahedron - new Vec3f(-1.0f, 0.0f, 0.0f), - new Vec3f(-0.666666f, 0.166666f, 0.166666f), - new Vec3f(-0.666666f, -0.166666f, 0.166666f), - new Vec3f(-0.666666f, -0.166666f, -0.166666f), - new Vec3f(-0.666666f, 0.166666f, -0.166666f), - - // Box at center - new Vec3f(-0.666666f, 0.041666f, 0.0416666f), - new Vec3f(-0.666666f, -0.041666f, 0.0416666f), - new Vec3f(-0.666666f, -0.041666f, -0.0416666f), - new Vec3f(-0.666666f, 0.041666f, -0.0416666f), - new Vec3f(0.666666f, 0.041666f, 0.0416666f), - new Vec3f(0.666666f, -0.041666f, 0.0416666f), - new Vec3f(0.666666f, -0.041666f, -0.0416666f), - new Vec3f(0.666666f, 0.041666f, -0.0416666f), - - // Right tetrahedron - new Vec3f(0.666666f, 0.166666f, 0.166666f), - new Vec3f(0.666666f, 0.166666f, -0.166666f), - new Vec3f(0.666666f, -0.166666f, -0.166666f), - new Vec3f(0.666666f, -0.166666f, 0.166666f), - new Vec3f(1.0f, 0.0f, 0.0f), - }; - - private static final int[] vertexIndices = { - // Left tetrahedron - 1, 0, 2, - 2, 0, 3, - 3, 0, 4, - 4, 0, 1, - 1, 2, 3, - 1, 3, 4, - - // Box - 5, 7, 6, // left face - 5, 8, 7, - 5, 6, 10, // front face - 5, 10, 9, - 6, 7, 11, // bottom face - 6, 11, 10, - 7, 8, 12, // back face - 7, 12, 11, - 8, 5, 9, // top face - 8, 9, 12, - 9, 10, 11, // right face - 9, 11, 12, - - // Right tetrahedron - 13, 14, 15, - 13, 15, 16, - 17, 14, 13, - 17, 15, 14, - 17, 16, 15, - 17, 13, 16 - }; - - private static Vec3f[] normals = null; - private static int[] normalIndices = null; - - public ManipPartTwoWayArrow() { - super(); - - if (normals == null) { - NormalCalc.NormalInfo normInfo = - NormalCalc.computeFacetedNormals(vertices, vertexIndices, true); - normals = normInfo.normals; - normalIndices = normInfo.normalIndices; - } - - setVertices(vertices); - setVertexIndices(vertexIndices); - setNormals(normals); - setNormalIndices(normalIndices); - } -} diff --git a/src/gleem/MouseButtonHelper.java b/src/gleem/MouseButtonHelper.java deleted file mode 100644 index f682c53..0000000 --- a/src/gleem/MouseButtonHelper.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.security.*; - -/** Helper class for figuring out how many mouse buttons are - available. (Does not seem to be a way of figuring this out with - the AWT.) */ - -public class MouseButtonHelper { - /** Returns the number of buttons on the mouse device. This is only - a guess and the implementation may need to be extended to - support other operating systems (in particular, Mac OS). */ - public static int numMouseButtons() { - String osName = null; - if (System.getSecurityManager() != null) { - osName = (String) - AccessController.doPrivileged(new PrivilegedAction() { - public Object run() { - return System.getProperty("os.name"); - } - }); - } else { - osName = System.getProperty("os.name"); - } - return mouseButtonsForOS(osName); - } - - private static int mouseButtonsForOS(String osName) { - if (osName.startsWith("Windows")) { - return 2; - } else { - // Assume X11 and a three-button mouse - return 3; - } - } -} diff --git a/src/gleem/NormalCalc.java b/src/gleem/NormalCalc.java deleted file mode 100644 index 635bd78..0000000 --- a/src/gleem/NormalCalc.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.util.*; - -import gleem.linalg.*; - -/** Calculates normals for a set of polygons. */ - -public class NormalCalc { - - /** Set of normals computed using {@link gleem.NormalCalc}. */ - public static class NormalInfo { - public Vec3f[] normals; - public int[] normalIndices; - - NormalInfo(Vec3f[] normals, int[] normalIndices) { - this.normals = normals; - this.normalIndices = normalIndices; - } - } - - /** Returns null upon failure, or a set of Vec3fs and integers - which represent faceted (non-averaged) normals, but per-vertex. - Performs bounds checking on indices with respect to vertex list. - Index list must represent independent triangles; indices are - taken in groups of three. If index list doesn't represent - triangles or other error occurred then returns null. ccw flag - indicates whether triangles are specified counterclockwise when - viewed from top or not. */ - - public static NormalInfo computeFacetedNormals(Vec3f[] vertices, - int[] indices, - boolean ccw) { - if ((indices.length % 3) != 0) { - System.err.println("NormalCalc.computeFacetedNormals: numIndices wasn't " + - "divisible by 3, so it can't possibly " + - "represent a set of triangles"); - return null; - } - - Vec3f[] outputNormals = new Vec3f[indices.length / 3]; - int[] outputNormalIndices = new int[indices.length]; - - Vec3f d1 = new Vec3f(); - Vec3f d2 = new Vec3f(); - int curNormalIndex = 0; - for (int i = 0; i < indices.length; i += 3) { - int i0 = indices[i]; - int i1 = indices[i+1]; - int i2 = indices[i+2]; - if ((i0 < 0) || (i0 >= indices.length) || - (i1 < 0) || (i1 >= indices.length) || - (i2 < 0) || (i2 >= indices.length)) { - System.err.println("NormalCalc.computeFacetedNormals: ERROR: " + - "vertex index out of bounds or no end of triangle " + - "index found"); - return null; - } - Vec3f v0 = vertices[i0]; - Vec3f v1 = vertices[i1]; - Vec3f v2 = vertices[i2]; - d1.sub(v1, v0); - d2.sub(v2, v0); - Vec3f n = new Vec3f(); - if (ccw) { - n.cross(d1, d2); - } else { - n.cross(d2, d1); - } - n.normalize(); - outputNormals[curNormalIndex] = n; - outputNormalIndices[i] = curNormalIndex; - outputNormalIndices[i+1] = curNormalIndex; - outputNormalIndices[i+2] = curNormalIndex; - curNormalIndex++; - } - return new NormalInfo(outputNormals, outputNormalIndices); - } -} diff --git a/src/gleem/RayTriangleIntersection.java b/src/gleem/RayTriangleIntersection.java deleted file mode 100644 index 8b3417d..0000000 --- a/src/gleem/RayTriangleIntersection.java +++ /dev/null @@ -1,226 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import gleem.linalg.*; - -/** Implements ray casting against a 3D triangle. */ - -public class RayTriangleIntersection { - public static final int ERROR = 0; - public static final int NO_INTERSECTION = 1; - public static final int INTERSECTION = 2; - - /** Allow roundoff error of this amount. Be very careful adjusting - this. Too big a value may cause valid triangles to be rejected. - Too small a value may trigger an assert in the code to create an - orthonormal basis in intersectRayWithTriangle. */ - private static final float epsilon = 1.0e-3f; - - /** Cast a ray starting at rayOrigin with rayDirection into the - triangle defined by vertices v0, v1, and v2. If intersection - occurred returns INTERSECTION and sets intersectionPoint - appropriately, including t parameter (scale factor for - rayDirection to reach intersection plane starting from - rayOrigin). Returns NO_INTERSECTION if no intersection, or ERROR - if triangle was degenerate or line was parallel to plane of - triangle. */ - public static int intersectRayWithTriangle(Vec3f rayOrigin, - Vec3f rayDirection, - Vec3f v0, - Vec3f v1, - Vec3f v2, - IntersectionPoint intersectionPoint) { - // Returns INTERSECTION if intersection computed, NO_INTERSECTION - // if no intersection with triangle, ERROR if triangle was - // degenerate or line did not intersect plane containing triangle. - - // NOTE these rays are TWO-SIDED. - - // Find point on line. P = ray origin, D = ray direction. - // P + tD = W - // Find point on plane. X, Y = orthonormal bases for plane; O = its origin. - // O + uX + vY = W - // Set equal - // O + uX + vY = tD + P - // uX + vY - tD = P - O = "B" - // [X0 Y0 -D0] [u] [B0] - // [X1 Y1 -D1] [v] = [B1] - // [X2 Y2 -D2] [t] [B2] - // Now we have u, v coordinates for the intersection point (if system - // wasn't degenerate). - // Find u, v coordinates for three points of triangle. (DON'T DUPLICATE - // WORK.) Now easy to do 2D inside/outside test. - // If point is inside, do some sort of interpolation to compute the - // 3D coordinates of the intersection point (may be unnecessary -- - // can reuse X, Y bases from above) and texture coordinates of this - // point (maybe compute "texture coordinate" bases using same algorithm - // and just use u, v coordinates??). - - Vec3f O = new Vec3f(v0); - Vec3f p2 = new Vec3f(); - p2.sub(v1, O); - Vec3f p3 = new Vec3f(); - p3.sub(v2, O); - - Vec3f X = new Vec3f(p2); - Vec3f Y = new Vec3f(p3); - - // Normalize X - if (X.length() < epsilon) - return ERROR; // coincident points in triangle - X.normalize(); - - // Use Gramm-Schmitt to orthogonalize X and Y - Vec3f tmp = new Vec3f(X); - tmp.scale(X.dot(Y)); - Y.sub(tmp); - if (Y.length() < epsilon) { - return ERROR; // coincident points in triangle - } - Y.normalize(); - - // X and Y are now orthonormal bases for the plane defined by the - // triangle. - - Vec3f Bv = new Vec3f(); - Bv.sub(rayOrigin, O); - - Mat3f A = new Mat3f(); - A.setCol(0, X); - A.setCol(1, Y); - Vec3f tmpRayDir = new Vec3f(rayDirection); - tmpRayDir.scale(-1.0f); - A.setCol(2, tmpRayDir); - if (!A.invert()) { - return ERROR; - } - Vec3f B = new Vec3f(); - A.xformVec(Bv, B); - - Vec2f W = new Vec2f(B.x(), B.y()); - - // Compute u,v coords of triangle - Vec2f[] uv = new Vec2f[3]; - uv[0] = new Vec2f(0,0); - uv[1] = new Vec2f(p2.dot(X), p2.dot(Y)); - uv[2] = new Vec2f(p3.dot(X), p3.dot(Y)); - - if (!(Math.abs(uv[1].y()) < epsilon)) { - throw new RuntimeException("Math.abs(uv[1].y()) >= epsilon"); - } - - // Test. For each of the sides of the triangle, is the intersection - // point on the same side as the third vertex of the triangle? - // If so, intersection point is inside triangle. - for (int i = 0; i < 3; i++) { - if (approxOnSameSide(uv[i], uv[(i+1)%3], - uv[(i+2)%3], W) == false) { - return NO_INTERSECTION; - } - } - - // Blend coordinates and texture coordinates according to - // distances from 3 points - // To do: find u,v coordinates of intersection point in coordinate - // system of axes defined by uv[1] and uv[2]. - // Blending coords == a, b. 0 <= a,b <= 1. - if (!(Math.abs(uv[2].y()) > epsilon)) { - throw new RuntimeException("Math.abs(uv[2].y()) <= epsilon"); - } - if (!(Math.abs(uv[1].x()) > epsilon)) { - throw new RuntimeException("Math.abs(uv[1].x()) <= epsilon"); - } - float a, b; - b = W.y() / uv[2].y(); - a = (W.x() - b * uv[2].x()) / uv[1].x(); - - p2.scale(a); - p3.scale(b); - O.add(p2); - O.add(p3); - intersectionPoint.setIntersectionPoint(O); - intersectionPoint.setT(B.z()); - return INTERSECTION; - } - - private static boolean approxOnSameSide(Vec2f linePt1, Vec2f linePt2, - Vec2f testPt1, Vec2f testPt2) { - // Evaluate line equation for testPt1 and testPt2 - - // ((y2 - y1) / (x2 - x1)) - ((y1 - y) / (x1 - x)) - // y - (mx + b) - float num0 = linePt2.y() - linePt1.y(); - float den0 = linePt2.x() - linePt1.x(); - float num1 = linePt1.y() - testPt1.y(); - float den1 = linePt1.x() - testPt1.x(); - float num2 = linePt1.y() - testPt2.y(); - float den2 = linePt1.x() - testPt2.x(); - - if (Math.abs(den0) < epsilon) { - // line goes vertically. - if ((Math.abs(den1) < epsilon) || - (Math.abs(den2) < epsilon)) { - return true; - } - - if (MathUtil.sgn(den1) == MathUtil.sgn(den2)) { - return true; - } - - return false; - } - - float m = num0 / den0; - // (y - y1) - m(x - x1) - float val1 = testPt1.y() - linePt1.y() - m * (testPt1.x() - linePt1.x()); - float val2 = testPt2.y() - linePt1.y() - m * (testPt2.x() - linePt1.x()); - if ((Math.abs(val1) < epsilon) || - (Math.abs(val2) < epsilon)) { - return true; - } - - if (MathUtil.sgn(val1) == MathUtil.sgn(val2)) { - return true; - } - - return false; - } -} diff --git a/src/gleem/RightTruncPyrMapping.java b/src/gleem/RightTruncPyrMapping.java deleted file mode 100644 index d25c17a..0000000 --- a/src/gleem/RightTruncPyrMapping.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import gleem.linalg.*; - -/** The only mapping gleem supports right now -- a right truncated - pyramid. */ - -public class RightTruncPyrMapping implements ScreenToRayMapping { - public void mapScreenToRay(Vec2f screenCoords, - CameraParameters params, - Vec3f raySource, - Vec3f rayDirection) { - Vec3f fwd = new Vec3f(params.getForwardDirection()); - Vec3f up = new Vec3f(params.getUpDirection()); - Vec3f right = fwd.cross(up); - fwd.normalize(); - up.normalize(); - right.normalize(); - float horizFOV = (float) Math.atan(params.imagePlaneAspectRatio * Math.tan(params.vertFOV)); - right.scale((float) (Math.tan(horizFOV) * screenCoords.get(0))); - up .scale((float) (Math.tan(params.vertFOV) * screenCoords.get(1))); - raySource.set(params.getPosition()); - rayDirection.set(fwd.plus(up).plus(right)); - } -} diff --git a/src/gleem/ScreenToRayMapping.java b/src/gleem/ScreenToRayMapping.java deleted file mode 100644 index f77da8b..0000000 --- a/src/gleem/ScreenToRayMapping.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import gleem.linalg.*; - -/** <P> This interface defines the mapping from normalized screen - coordinates to a 3D ray based on the given camera parameters. You - could subclass it to allow for more types of camera frusta, but - would also have to modify the CameraParameters structure. </P> - - <P> The "normalized" screen coordinates must have the following - properties: </P> - - <P> - upper left corner = (-1, 1) <BR> - lower left corner = (-1, -1) <BR> - lower right corner = (1, -1) <BR> - upper right corner = (1, 1) <BR> - center = (0, 0) - </P> - - <P> The application is responsible for specifying the window size - to allow the ManipManager to compute these coordinates. </P> -*/ - -public interface ScreenToRayMapping { - /** Maps screen (x, y) to 3D point source and direction based on - given CameraParameters. screenCoords and params are incoming - arguments; raySource and rayDirection are mutated to contain the - result. */ - public void mapScreenToRay(Vec2f screenCoords, - CameraParameters params, - Vec3f raySource, - Vec3f rayDirection); -} diff --git a/src/gleem/TestExaminerViewer.java b/src/gleem/TestExaminerViewer.java deleted file mode 100644 index 6a7bf1c..0000000 --- a/src/gleem/TestExaminerViewer.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.awt.*; -import java.awt.event.*; -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import gleem.linalg.*; - -/** Tests the Examiner Viewer. */ - -public class TestExaminerViewer { - private static final int X_SIZE = 400; - private static final int Y_SIZE = 400; - - static class HandleBoxManipBSphereProvider implements BSphereProvider { - private HandleBoxManip manip; - - private HandleBoxManipBSphereProvider(HandleBoxManip manip) { - this.manip = manip; - } - - public BSphere getBoundingSphere() { - BSphere bsph = new BSphere(); - bsph.setCenter(manip.getTranslation()); - Vec3f scale0 = manip.getScale(); - Vec3f scale1 = manip.getGeometryScale(); - Vec3f scale = new Vec3f(); - scale.setX(2.0f * scale0.x() * scale1.x()); - scale.setY(2.0f * scale0.y() * scale1.y()); - scale.setZ(2.0f * scale0.z() * scale1.z()); - bsph.setRadius(scale.length()); - return bsph; - } - } - - static class Listener implements GLEventListener { - private GLU glu = new GLU(); - private CameraParameters params = new CameraParameters(); - private ExaminerViewer viewer; - - public void init(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - - gl.glClearColor(0, 0, 0, 0); - float[] lightPosition = new float[] {1, 1, 1, 0}; - float[] ambient = new float[] { 0.0f, 0.0f, 0.0f, 1.0f }; - float[] diffuse = new float[] { 1.0f, 1.0f, 1.0f, 1.0f }; - gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, ambient, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, diffuse, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, lightPosition, 0); - - gl.glEnable(GL.GL_LIGHTING); - gl.glEnable(GL.GL_LIGHT0); - gl.glEnable(GL.GL_DEPTH_TEST); - - params.setPosition(new Vec3f(0, 0, 0)); - params.setForwardDirection(Vec3f.NEG_Z_AXIS); - params.setUpDirection(Vec3f.Y_AXIS); - params.setVertFOV((float) (Math.PI / 8.0)); - params.setImagePlaneAspectRatio(1); - params.xSize = X_SIZE; - params.ySize = Y_SIZE; - - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluPerspective(45, 1, 1, 100); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - - // Register the window with the ManipManager - ManipManager manager = ManipManager.getManipManager(); - manager.registerWindow(drawable); - - // Instantiate a HandleBoxManip - HandleBoxManip manip = new HandleBoxManip(); - manip.setTranslation(new Vec3f(0, 0, -10)); - manager.showManipInWindow(manip, drawable); - - // Instantiate ExaminerViewer - viewer = new ExaminerViewer(MouseButtonHelper.numMouseButtons()); - viewer.attach(drawable, new HandleBoxManipBSphereProvider(manip)); - viewer.viewAll(gl); - } - - public void display(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - viewer.update(gl); - ManipManager.getManipManager().updateCameraParameters(drawable, viewer.getCameraParameters()); - ManipManager.getManipManager().render(drawable, gl); - } - - // Unused routines - public void reshape(GLAutoDrawable drawable, int x, int y, int w, int h) {} - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - } - - public static void main(String[] args) { - Frame frame = new Frame("ExaminerViewer Test"); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - System.exit(0); - } - }); - frame.setLayout(new BorderLayout()); - GLCanvas canvas = new GLCanvas(); - canvas.setSize(400, 400); - canvas.addGLEventListener(new Listener()); - frame.add(canvas, BorderLayout.CENTER); - frame.pack(); - frame.show(); - } -} diff --git a/src/gleem/TestHandleBox.java b/src/gleem/TestHandleBox.java deleted file mode 100644 index cbf5327..0000000 --- a/src/gleem/TestHandleBox.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.awt.*; -import java.awt.event.*; -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import gleem.linalg.*; - -/** Tests the HandleBox Manip. */ - -public class TestHandleBox { - private static final int X_SIZE = 400; - private static final int Y_SIZE = 400; - - static class Listener implements GLEventListener { - private GLU glu = new GLU(); - private CameraParameters params = new CameraParameters(); - - public void init(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - - gl.glClearColor(0, 0, 0, 0); - float[] lightPosition = new float[] {1, 1, 1, 0}; - float[] ambient = new float[] { 0.0f, 0.0f, 0.0f, 1.0f }; - float[] diffuse = new float[] { 1.0f, 1.0f, 1.0f, 1.0f }; - gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, ambient, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, diffuse, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, lightPosition, 0); - - gl.glEnable(GL.GL_LIGHTING); - gl.glEnable(GL.GL_LIGHT0); - gl.glEnable(GL.GL_DEPTH_TEST); - - params.setPosition(new Vec3f(0, 0, 0)); - params.setForwardDirection(Vec3f.NEG_Z_AXIS); - params.setUpDirection(Vec3f.Y_AXIS); - params.setVertFOV((float) (Math.PI / 8.0)); - params.setImagePlaneAspectRatio(1); - params.xSize = X_SIZE; - params.ySize = Y_SIZE; - - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluPerspective(45, 1, 1, 100); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - - // Register the window with the ManipManager - ManipManager manager = ManipManager.getManipManager(); - manager.registerWindow(drawable); - - // Instantiate a HandleBoxManip - HandleBoxManip manip = new HandleBoxManip(); - manip.setTranslation(new Vec3f(0, 0, -10)); - manager.showManipInWindow(manip, drawable); - } - - public void display(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - ManipManager.getManipManager().updateCameraParameters(drawable, params); - ManipManager.getManipManager().render(drawable, gl); - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int w, int h) { - GL gl = drawable.getGL(); - float aspect, theta; - aspect = (float) w / (float) h; - if (w >= h) - theta = 45; - else - theta = (float) Math.toDegrees(Math.atan(1 / aspect)); - params.setVertFOV((float) Math.toRadians(theta) / 2.0f); - params.setImagePlaneAspectRatio(aspect); - params.setXSize(w); - params.setYSize(h); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluPerspective(theta, aspect, 1, 100); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - } - - // Unused routines - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - } - - public static void main(String[] args) { - Frame frame = new Frame("HandleBox Test"); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - System.exit(0); - } - }); - frame.setLayout(new BorderLayout()); - GLCanvas canvas = new GLCanvas(); - canvas.setSize(400, 400); - canvas.addGLEventListener(new Listener()); - frame.add(canvas, BorderLayout.CENTER); - frame.pack(); - frame.show(); - } -} diff --git a/src/gleem/TestMultiWin.java b/src/gleem/TestMultiWin.java deleted file mode 100644 index b79b821..0000000 --- a/src/gleem/TestMultiWin.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.awt.*; -import java.awt.event.*; -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import gleem.linalg.*; - -/** Tests viewing manipulators in multiple winodws. */ - -public class TestMultiWin { - private static final int X_SIZE = 400; - private static final int Y_SIZE = 400; - - private static HandleBoxManip manip; - - static class HandleBoxManipBSphereProvider implements BSphereProvider { - private HandleBoxManip manip; - - private HandleBoxManipBSphereProvider(HandleBoxManip manip) { - this.manip = manip; - } - - public BSphere getBoundingSphere() { - BSphere bsph = new BSphere(); - bsph.setCenter(manip.getTranslation()); - Vec3f scale0 = manip.getScale(); - Vec3f scale1 = manip.getGeometryScale(); - Vec3f scale = new Vec3f(); - scale.setX(2.0f * scale0.x() * scale1.x()); - scale.setY(2.0f * scale0.y() * scale1.y()); - scale.setZ(2.0f * scale0.z() * scale1.z()); - bsph.setRadius(scale.length()); - return bsph; - } - } - - static class Listener implements GLEventListener { - private GLU glu = new GLU(); - private CameraParameters params = new CameraParameters(); - private ExaminerViewer viewer; - - public void init(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - - gl.glClearColor(0, 0, 0, 0); - float[] lightPosition = new float[] {1, 1, 1, 0}; - float[] ambient = new float[] { 0.0f, 0.0f, 0.0f, 1.0f }; - float[] diffuse = new float[] { 1.0f, 1.0f, 1.0f, 1.0f }; - gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, ambient, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, diffuse, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, lightPosition, 0); - - gl.glEnable(GL.GL_LIGHTING); - gl.glEnable(GL.GL_LIGHT0); - gl.glEnable(GL.GL_DEPTH_TEST); - - params.setPosition(new Vec3f(0, 0, 0)); - params.setForwardDirection(Vec3f.NEG_Z_AXIS); - params.setUpDirection(Vec3f.Y_AXIS); - params.setVertFOV((float) (Math.PI / 8.0)); - params.setImagePlaneAspectRatio(1); - params.xSize = X_SIZE; - params.ySize = Y_SIZE; - - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluPerspective(45, 1, 1, 100); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - - // Register the window with the ManipManager - ManipManager manager = ManipManager.getManipManager(); - manager.registerWindow(drawable); - - manager.showManipInWindow(manip, drawable); - - // Instantiate ExaminerViewer - viewer = new ExaminerViewer(MouseButtonHelper.numMouseButtons()); - viewer.attach(drawable, new HandleBoxManipBSphereProvider(manip)); - viewer.viewAll(gl); - } - - public void display(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - viewer.update(gl); - ManipManager.getManipManager().updateCameraParameters(drawable, viewer.getCameraParameters()); - ManipManager.getManipManager().render(drawable, gl); - } - - // Unused routines - public void reshape(GLAutoDrawable drawable, int x, int y, int w, int h) {} - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - } - - private static void showFrame(String name, Point location) { - Frame frame = new Frame(name); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - System.exit(0); - } - }); - frame.setLayout(new BorderLayout()); - GLCanvas canvas = new GLCanvas(); - canvas.setSize(400, 400); - canvas.addGLEventListener(new Listener()); - frame.add(canvas, BorderLayout.CENTER); - frame.pack(); - frame.setLocation(location); - frame.show(); - } - - public static void main(String[] args) { - // Instantiate HandleBoxManip - manip = new HandleBoxManip(); - manip.setTranslation(new Vec3f(0, 0, -10)); - - showFrame("MultiWin Test 1/2", new Point(0, 0)); - showFrame("MultiWin Test 2/2", new Point(400, 0)); - } -} diff --git a/src/gleem/TestTranslate1.java b/src/gleem/TestTranslate1.java deleted file mode 100644 index 9b1cd23..0000000 --- a/src/gleem/TestTranslate1.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.awt.*; -import java.awt.event.*; -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import gleem.linalg.*; - -/** Tests the Translate1 Manip. */ - -public class TestTranslate1 { - private static final int X_SIZE = 400; - private static final int Y_SIZE = 400; - - static class Listener implements GLEventListener { - private GLU glu = new GLU(); - private CameraParameters params = new CameraParameters(); - - public void init(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - - gl.glClearColor(0, 0, 0, 0); - float[] lightPosition = new float[] {1, 1, 1, 0}; - float[] ambient = new float[] { 0.0f, 0.0f, 0.0f, 1.0f }; - float[] diffuse = new float[] { 1.0f, 1.0f, 1.0f, 1.0f }; - gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, ambient, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, diffuse, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, lightPosition, 0); - - gl.glEnable(GL.GL_LIGHTING); - gl.glEnable(GL.GL_LIGHT0); - gl.glEnable(GL.GL_DEPTH_TEST); - - params.setPosition(new Vec3f(0, 0, 0)); - params.setForwardDirection(Vec3f.NEG_Z_AXIS); - params.setUpDirection(Vec3f.Y_AXIS); - params.setVertFOV((float) (Math.PI / 8.0)); - params.setImagePlaneAspectRatio(1); - params.xSize = X_SIZE; - params.ySize = Y_SIZE; - - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluPerspective(45, 1, 1, 100); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - - // Register the window with the ManipManager - ManipManager manager = ManipManager.getManipManager(); - manager.registerWindow(drawable); - - // Instantiate a Translate1Manip - Translate1Manip manip = new Translate1Manip(); - manip.setTranslation(new Vec3f(0, 0, -5)); - manip.setAxis(new Vec3f(-1, 0.5f, 1)); - manager.showManipInWindow(manip, drawable); - } - - public void display(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - ManipManager.getManipManager().updateCameraParameters(drawable, params); - ManipManager.getManipManager().render(drawable, gl); - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int w, int h) { - GL gl = drawable.getGL(); - float aspect, theta; - aspect = (float) w / (float) h; - if (w >= h) - theta = 45; - else - theta = (float) Math.toDegrees(Math.atan(1 / aspect)); - params.setVertFOV((float) Math.toRadians(theta) / 2.0f); - params.setImagePlaneAspectRatio(aspect); - params.setXSize(w); - params.setYSize(h); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluPerspective(theta, aspect, 1, 100); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - } - - // Unused routines - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - } - - public static void main(String[] args) { - Frame frame = new Frame("Translate1 Test"); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - System.exit(0); - } - }); - frame.setLayout(new BorderLayout()); - GLCanvas canvas = new GLCanvas(); - canvas.setSize(400, 400); - canvas.addGLEventListener(new Listener()); - frame.add(canvas, BorderLayout.CENTER); - frame.pack(); - frame.show(); - } -} diff --git a/src/gleem/TestTranslate2.java b/src/gleem/TestTranslate2.java deleted file mode 100644 index 7bfa6c4..0000000 --- a/src/gleem/TestTranslate2.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.awt.*; -import java.awt.event.*; -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import gleem.linalg.*; - -/** Tests the Translate2 Manip. */ - -public class TestTranslate2 { - private static final int X_SIZE = 400; - private static final int Y_SIZE = 400; - - static class Listener implements GLEventListener { - private GLU glu = new GLU(); - private CameraParameters params = new CameraParameters(); - - public void init(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - - gl.glClearColor(0, 0, 0, 0); - float[] lightPosition = new float[] {1, 1, 1, 0}; - float[] ambient = new float[] { 0.0f, 0.0f, 0.0f, 1.0f }; - float[] diffuse = new float[] { 1.0f, 1.0f, 1.0f, 1.0f }; - gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, ambient, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, diffuse, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, lightPosition, 0); - - gl.glEnable(GL.GL_LIGHTING); - gl.glEnable(GL.GL_LIGHT0); - gl.glEnable(GL.GL_DEPTH_TEST); - - params.setPosition(new Vec3f(0, 0, 0)); - params.setForwardDirection(Vec3f.NEG_Z_AXIS); - params.setUpDirection(Vec3f.Y_AXIS); - params.setVertFOV((float) (Math.PI / 8.0)); - params.setImagePlaneAspectRatio(1); - params.xSize = X_SIZE; - params.ySize = Y_SIZE; - - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluPerspective(45, 1, 1, 100); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - - // Register the window with the ManipManager - ManipManager manager = ManipManager.getManipManager(); - manager.registerWindow(drawable); - - // Instantiate a Translate2Manip - Translate2Manip manip = new Translate2Manip(); - manip.setTranslation(new Vec3f(0, 0, -5)); - manip.setNormal(new Vec3f(-1, 1, 1)); - manager.showManipInWindow(manip, drawable); - } - - public void display(GLAutoDrawable drawable) { - GL gl = drawable.getGL(); - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - ManipManager.getManipManager().updateCameraParameters(drawable, params); - ManipManager.getManipManager().render(drawable, gl); - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int w, int h) { - GL gl = drawable.getGL(); - float aspect, theta; - aspect = (float) w / (float) h; - if (w >= h) - theta = 45; - else - theta = (float) Math.toDegrees(Math.atan(1 / aspect)); - params.setVertFOV((float) Math.toRadians(theta) / 2.0f); - params.setImagePlaneAspectRatio(aspect); - params.setXSize(w); - params.setYSize(h); - gl.glMatrixMode(GL.GL_PROJECTION); - gl.glLoadIdentity(); - glu.gluPerspective(theta, aspect, 1, 100); - gl.glMatrixMode(GL.GL_MODELVIEW); - gl.glLoadIdentity(); - } - - // Unused routines - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} - } - - public static void main(String[] args) { - Frame frame = new Frame("Translate2 Test"); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - System.exit(0); - } - }); - frame.setLayout(new BorderLayout()); - GLCanvas canvas = new GLCanvas(); - canvas.setSize(400, 400); - canvas.addGLEventListener(new Listener()); - frame.add(canvas, BorderLayout.CENTER); - frame.pack(); - frame.show(); - } -} diff --git a/src/gleem/Translate1Manip.java b/src/gleem/Translate1Manip.java deleted file mode 100644 index 0cde2d0..0000000 --- a/src/gleem/Translate1Manip.java +++ /dev/null @@ -1,208 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.util.*; - -import gleem.linalg.*; -import javax.media.opengl.*; - -/** A Translate1Manip is a Manip which translates in only one - dimension and whose default representation is a two-way arrow. */ - -public class Translate1Manip extends Manip { - private ManipPart parts; - private Vec3f translation; - /** Normalized */ - private Vec3f axis; - private Vec3f scale; - /** Local-to-world transform for geometry */ - private Mat4f xform; - - /** Dragging state */ - private Line dragLine; - /** Dragging state */ - private Vec3f dragOffset; - - public Translate1Manip() { - parts = new ManipPartTwoWayArrow(); - translation = new Vec3f(0, 0, 0); - axis = new Vec3f(1, 0, 0); - scale = new Vec3f(1, 1, 1); - xform = new Mat4f(); - dragLine = new Line(); - dragOffset = new Vec3f(); - recalc(); - } - - /** Set the translation of this Translate1Manip. This moves its - on-screen representation. Manipulations cause the translation to - be modified, not overwritten, so if you want the default - Translate1Manip to go through the point (0, 1, 0) but still - translate along the X axis, then setTranslation(0, 1, 0). */ - public void setTranslation(Vec3f translation) { - this.translation.set(translation); - recalc(); - } - - /** Get the translation of this Translate1Manip. This corresponds to - the center of its body. */ - public Vec3f getTranslation() { - return new Vec3f(translation); - } - - /** Set the axis of this Translate1Manip. This is the direction - along which it will travel. Does not need to be normalized, but - must not be the zero vector. */ - public void setAxis(Vec3f axis) { - this.axis.set(axis); - recalc(); - } - - /** Get the axis of this Translate1Manip. */ - public Vec3f getAxis() { - return new Vec3f(axis); - } - - /** Set the scale of the Translate1Manip. This only affects the size - of the on-screen geometry. */ - public void setScale(Vec3f scale) { - this.scale.set(scale); - recalc(); - } - - public Vec3f getScale() { - return new Vec3f(scale); - } - - /** Change the geometry of this manipulator to be the user-defined - piece. */ - public void replaceGeometry(ManipPart geom) { - parts = geom; - } - - public void intersectRay(Vec3f rayStart, - Vec3f rayDirection, - List results) { - parts.intersectRay(rayStart, rayDirection, results, this); - } - - public void highlight(HitPoint hit) { - if (hit.manipPart != parts) { - throw new RuntimeException("My old geometry disappeared; how did this happen?"); - } - parts.highlight(); - } - - public void clearHighlight() { - parts.clearHighlight(); - } - - public void makeActive(HitPoint hit) { - parts.highlight(); - dragLine.setDirection(axis); - dragLine.setPoint(hit.intPt.getIntersectionPoint()); - dragOffset.sub(translation, hit.intPt.getIntersectionPoint()); - } - - public void drag(Vec3f rayStart, - Vec3f rayDirection) { - // Algorithm: Find closest point of ray to dragLine. Add dragOffset - // to this point to get new translation. - Vec3f closestPoint = new Vec3f(); - if (dragLine.closestPointToRay(rayStart, - rayDirection, - closestPoint) == false) { - // Drag axis is parallel to ray. Punt. - return; - } - translation.set(closestPoint); - translation.add(dragOffset); - recalc(); - super.drag(rayStart, rayDirection); - } - - public void makeInactive() { - parts.clearHighlight(); - } - - public void render(GL gl) { - parts.render(gl); - } - - private void recalc() { - // Construct local to world transform for geometry. - // Scale, Rotation, Translation. Since we're right multiplying - // column vectors, the actual matrix composed is TRS. - Mat4f scaleMat = new Mat4f(); - Mat4f rotMat = new Mat4f(); - Mat4f xlateMat = new Mat4f(); - Mat4f tmpMat = new Mat4f(); - scaleMat.makeIdent(); - scaleMat.set(0, 0, scale.x()); - scaleMat.set(1, 1, scale.y()); - scaleMat.set(2, 2, scale.z()); - // Perpendiculars - Vec3f p0 = new Vec3f(); - Vec3f p1 = new Vec3f(); - MathUtil.makePerpendicular(axis, p0); - p1.cross(axis, p0); - // axis, p0, p1 correspond to x, y, z - p0.normalize(); - p1.normalize(); - rotMat.makeIdent(); - rotMat.set(0, 0, axis.x()); - rotMat.set(1, 0, axis.y()); - rotMat.set(2, 0, axis.z()); - rotMat.set(0, 1, p0.x()); - rotMat.set(1, 1, p0.y()); - rotMat.set(2, 1, p0.z()); - rotMat.set(0, 2, p1.x()); - rotMat.set(1, 2, p1.y()); - rotMat.set(2, 2, p1.z()); - xlateMat.makeIdent(); - xlateMat.set(0, 3, translation.x()); - xlateMat.set(1, 3, translation.y()); - xlateMat.set(2, 3, translation.z()); - tmpMat.mul(xlateMat, rotMat); - xform.mul(tmpMat, scaleMat); - parts.setTransform(xform); - } -} diff --git a/src/gleem/Translate2Manip.java b/src/gleem/Translate2Manip.java deleted file mode 100644 index 7fe8416..0000000 --- a/src/gleem/Translate2Manip.java +++ /dev/null @@ -1,230 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import java.util.*; - -import gleem.linalg.*; -import javax.media.opengl.*; - -/** A Translate2Manip is a Manip which translates in two dimensions and - whose default representation is two arrows. */ - -public class Translate2Manip extends Manip { - private ManipPart parts; - private Vec3f translation; - /** Normalized */ - private Vec3f normal; - private Vec3f scale; - /** Local-to-world transform for geometry */ - private Mat4f xform; - - /** Dragging state */ - private Plane dragPlane; - /** Dragging state */ - private Vec3f dragOffset; - - public Translate2Manip() { - parts = createGeometry(); - translation = new Vec3f(0, 0, 0); - normal = new Vec3f(0, 1, 0); - scale = new Vec3f(1, 1, 1); - xform = new Mat4f(); - dragPlane = new Plane(); - dragOffset = new Vec3f(); - recalc(); - } - - /** Set the translation of this Translate2Manip. This moves its - on-screen representation. Manipulations cause the translation to - be modified, not overwritten, so if you want the default - Translate2Manip to go through the point (0, 1, 0) but still - translate in the X-Z plane, then setTranslation(0, 1, 0). */ - public void setTranslation(Vec3f translation) { - this.translation.set(translation); - recalc(); - } - - /** Get the translation of this Translate2Manip. This corresponds to - the center of its body. */ - public Vec3f getTranslation() { - return new Vec3f(translation); - } - - /** Set the normal of this Translate2Manip. The manip moves in the - plane containing its current position and perpendicular to this - normal. Does not need to be normalized, but must not be the zero - vector. */ - public void setNormal(Vec3f normal) { - this.normal.set(normal); - this.normal.normalize(); - recalc(); - } - - /** Get the normal of this Translate2Manip. */ - public Vec3f getNormal() { - return new Vec3f(normal); - } - - /** Set the scale of the Translate2Manip. This only affects the size - of the on-screen geometry. */ - public void setScale(Vec3f scale) { - this.scale.set(scale); - recalc(); - } - - public Vec3f getScale() { - return new Vec3f(scale); - } - - /** Change the geometry of this manipulator to be the user-defined - piece. */ - public void replaceGeometry(ManipPart geom) { - parts = geom; - } - - public void intersectRay(Vec3f rayStart, - Vec3f rayDirection, - List results) { - parts.intersectRay(rayStart, rayDirection, results, this); - } - - public void highlight(HitPoint hit) { - if (hit.manipPart != parts) { - throw new RuntimeException("My old geometry disappeared; how did this happen?"); - } - parts.highlight(); - } - - public void clearHighlight() { - parts.clearHighlight(); - } - - public void makeActive(HitPoint hit) { - parts.highlight(); - dragPlane.setNormal(normal); - dragPlane.setPoint(hit.intPt.getIntersectionPoint()); - dragOffset.sub(translation, hit.intPt.getIntersectionPoint()); - } - - public void drag(Vec3f rayStart, - Vec3f rayDirection) { - // Algorithm: Find intersection of ray with dragPlane. Add - // dragOffset to this point to get new translation. - IntersectionPoint intPt = new IntersectionPoint(); - if (dragPlane.intersectRay(rayStart, - rayDirection, - intPt) == false) { - // Ray is parallel to plane. Punt. - return; - } - translation.set(intPt.getIntersectionPoint()); - translation.add(dragOffset); - recalc(); - super.drag(rayStart, rayDirection); - } - - public void makeInactive() { - parts.clearHighlight(); - } - - public void render(GL gl) { - parts.render(gl); - } - - private ManipPart createGeometry() { - ManipPartGroup group = new ManipPartGroup(); - ManipPartTwoWayArrow arrow1 = new ManipPartTwoWayArrow(); - group.addChild(arrow1); - ManipPartTransform xform = new ManipPartTransform(); - Mat4f rotMat = new Mat4f(); - rotMat.makeIdent(); - rotMat.set(0, 0, 0); - rotMat.set(1, 0, 0); - rotMat.set(2, 0, -1); - rotMat.set(0, 2, 1); - rotMat.set(1, 2, 0); - rotMat.set(2, 2, 0); - xform.setOffsetTransform(rotMat); - ManipPartTwoWayArrow arrow2 = new ManipPartTwoWayArrow(); - xform.addChild(arrow2); - group.addChild(xform); - return group; - } - - private void recalc() { - // Construct local to world transform for geometry. - // Scale, Rotation, Translation. Since we're right multiplying - // column vectors, the actual matrix composed is TRS. - Mat4f scaleMat = new Mat4f(); - Mat4f rotMat = new Mat4f(); - Mat4f xlateMat = new Mat4f(); - Mat4f tmpMat = new Mat4f(); - scaleMat.makeIdent(); - scaleMat.set(0, 0, scale.x()); - scaleMat.set(1, 1, scale.y()); - scaleMat.set(2, 2, scale.z()); - // Perpendiculars - Vec3f p0 = new Vec3f(); - Vec3f p1 = new Vec3f(); - MathUtil.makePerpendicular(normal, p0); - p1.cross(normal, p0); - // p1, normal, p0 correspond to x, y, z - p0.normalize(); - p1.normalize(); - rotMat.makeIdent(); - rotMat.set(0, 0, p1.x()); - rotMat.set(1, 0, p1.y()); - rotMat.set(2, 0, p1.z()); - rotMat.set(0, 1, normal.x()); - rotMat.set(1, 1, normal.y()); - rotMat.set(2, 1, normal.z()); - rotMat.set(0, 2, p0.x()); - rotMat.set(1, 2, p0.y()); - rotMat.set(2, 2, p0.z()); - xlateMat.makeIdent(); - xlateMat.set(0, 3, translation.x()); - xlateMat.set(1, 3, translation.y()); - xlateMat.set(2, 3, translation.z()); - tmpMat.mul(xlateMat, rotMat); - xform.mul(tmpMat, scaleMat); - parts.setTransform(xform); - } -} diff --git a/src/gleem/WindowUpdateListener.java b/src/gleem/WindowUpdateListener.java deleted file mode 100644 index efc139f..0000000 --- a/src/gleem/WindowUpdateListener.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; - -/** A WindowUpdateListener is used by the ManipManager to transmit - repaint() notifications to windows containing Manips. When a Manip - is moved, the ManipManager sends update notifications to all - GLAutoDrawables in which that Manip is shown. */ - -public interface WindowUpdateListener { - public void update(GLAutoDrawable window); -} diff --git a/src/gleem/linalg/DimensionMismatchException.java b/src/gleem/linalg/DimensionMismatchException.java deleted file mode 100644 index 612d49d..0000000 --- a/src/gleem/linalg/DimensionMismatchException.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem.linalg; - -/** Thrown to indicate a mismatch of dimensionality of a matrix or - vector. */ - -public class DimensionMismatchException extends RuntimeException { - public DimensionMismatchException() { - super(); - } - - public DimensionMismatchException(String msg) { - super(msg); - } -} diff --git a/src/gleem/linalg/IntersectionPoint.java b/src/gleem/linalg/IntersectionPoint.java deleted file mode 100644 index 486be06..0000000 --- a/src/gleem/linalg/IntersectionPoint.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem.linalg; - -/** Wraps a 3D point and parametric time value. */ - -public class IntersectionPoint { - private Vec3f intPt = new Vec3f(); - private float t; - - public Vec3f getIntersectionPoint() { - return intPt; - } - - public void setIntersectionPoint(Vec3f newPt) { - intPt.set(newPt); - } - - public float getT() { - return t; - } - - public void setT(float t) { - this.t = t; - } -} diff --git a/src/gleem/linalg/Line.java b/src/gleem/linalg/Line.java deleted file mode 100644 index cbf8efd..0000000 --- a/src/gleem/linalg/Line.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem.linalg; - -/** Represents a line in 3D space. */ - -public class Line { - private Vec3f point; - /** Normalized */ - private Vec3f direction; - /** For computing projections along line */ - private Vec3f alongVec; - - /** Default constructor initializes line to point (0, 0, 0) and - direction (1, 0, 0) */ - public Line() { - point = new Vec3f(0, 0, 0); - direction = new Vec3f(1, 0, 0); - alongVec = new Vec3f(); - recalc(); - } - - /** Line goes in direction <b>direction</b> through the point - <b>point</b>. <b>direction</b> does not need to be normalized but must - not be the zero vector. */ - public Line(Vec3f direction, Vec3f point) { - direction = new Vec3f(direction); - direction.normalize(); - point = new Vec3f(point); - alongVec = new Vec3f(); - recalc(); - } - - /** Setter does some work to maintain internal caches. - <b>direction</b> does not need to be normalized but must not be - the zero vector. */ - public void setDirection(Vec3f direction) { - this.direction.set(direction); - this.direction.normalize(); - recalc(); - } - - /** Direction is normalized internally, so <b>direction</b> is not - necessarily equal to <code>plane.setDirection(direction); - plane.getDirection();</code> */ - public Vec3f getDirection() { - return direction; - } - - /** Setter does some work to maintain internal caches. */ - public void setPoint(Vec3f point) { - this.point.set(point); - recalc(); - } - - public Vec3f getPoint() { - return point; - } - - /** Project a point onto the line */ - public void projectPoint(Vec3f pt, - Vec3f projPt) { - float dotp = direction.dot(pt); - projPt.set(direction); - projPt.scale(dotp); - projPt.add(alongVec); - } - - /** Find closest point on this line to the given ray, specified by - start point and direction. If ray is parallel to this line, - returns false and closestPoint is not modified. */ - public boolean closestPointToRay(Vec3f rayStart, - Vec3f rayDirection, - Vec3f closestPoint) { - // Line 1 is this one. Line 2 is the incoming one. - Mat2f A = new Mat2f(); - A.set(0, 0, -direction.lengthSquared()); - A.set(1, 1, -rayDirection.lengthSquared()); - A.set(0, 1, direction.dot(rayDirection)); - A.set(1, 0, A.get(0, 1)); - if (Math.abs(A.determinant()) == 0.0f) { - return false; - } - if (!A.invert()) { - return false; - } - Vec2f b = new Vec2f(); - b.setX(point.dot(direction) - rayStart.dot(direction)); - b.setY(rayStart.dot(rayDirection) - point.dot(rayDirection)); - Vec2f x = new Vec2f(); - A.xformVec(b, x); - if (x.y() < 0) { - // Means that ray start is closest point to this line - closestPoint.set(rayStart); - } else { - closestPoint.set(direction); - closestPoint.scale(x.x()); - closestPoint.add(point); - } - return true; - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private void recalc() { - float denom = direction.lengthSquared(); - if (denom == 0.0f) { - throw new RuntimeException("Line.recalc: ERROR: direction was the zero vector " + - "(not allowed)"); - } - alongVec.set(point.minus(direction.times(point.dot(direction)))); - } -} diff --git a/src/gleem/linalg/Mat2f.java b/src/gleem/linalg/Mat2f.java deleted file mode 100644 index 6852dbc..0000000 --- a/src/gleem/linalg/Mat2f.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem.linalg; - -/** 2x2 matrix class useful for simple linear algebra. Representation - is (as Mat4f) in row major order and assumes multiplication by - column vectors on the right. */ - -public class Mat2f { - private float[] data; - - /** Creates new matrix initialized to the zero matrix */ - public Mat2f() { - data = new float[4]; - } - - /** Initialize to the identity matrix. */ - public void makeIdent() { - for (int i = 0; i < 2; i++) { - for (int j = 0; j < 2; j++) { - if (i == j) { - set(i, j, 1.0f); - } else { - set(i, j, 0.0f); - } - } - } - } - - /** Gets the (i,j)th element of this matrix, where i is the row - index and j is the column index */ - public float get(int i, int j) { - return data[2 * i + j]; - } - - /** Sets the (i,j)th element of this matrix, where i is the row - index and j is the column index */ - public void set(int i, int j, float val) { - data[2 * i + j] = val; - } - - /** Set column i (i=[0..1]) to vector v. */ - public void setCol(int i, Vec2f v) { - set(0, i, v.x()); - set(1, i, v.y()); - } - - /** Set row i (i=[0..1]) to vector v. */ - public void setRow(int i, Vec2f v) { - set(i, 0, v.x()); - set(i, 1, v.y()); - } - - /** Transpose this matrix in place. */ - public void transpose() { - float t = get(0, 1); - set(0, 1, get(1, 0)); - set(1, 0, t); - } - - /** Return the determinant. */ - public float determinant() { - return (get(0, 0) * get(1, 1) - get(1, 0) * get(0, 1)); - } - - /** Full matrix inversion in place. If matrix is singular, returns - false and matrix contents are untouched. If you know the matrix - is orthonormal, you can call transpose() instead. */ - public boolean invert() { - float det = determinant(); - if (det == 0.0f) - return false; - - // Create transpose of cofactor matrix in place - float t = get(0, 0); - set(0, 0, get(1, 1)); - set(1, 1, t); - set(0, 1, -get(0, 1)); - set(1, 0, -get(1, 0)); - - // Now divide by determinant - for (int i = 0; i < 4; i++) { - data[i] /= det; - } - return true; - } - - /** Multiply a 2D vector by this matrix. NOTE: src and dest must be - different vectors. */ - public void xformVec(Vec2f src, Vec2f dest) { - dest.set(get(0, 0) * src.x() + - get(0, 1) * src.y(), - - get(1, 0) * src.x() + - get(1, 1) * src.y()); - } - - /** Returns this * b; creates new matrix */ - public Mat2f mul(Mat2f b) { - Mat2f tmp = new Mat2f(); - tmp.mul(this, b); - return tmp; - } - - /** this = a * b */ - public void mul(Mat2f a, Mat2f b) { - for (int rc = 0; rc < 2; rc++) - for (int cc = 0; cc < 2; cc++) { - float tmp = 0.0f; - for (int i = 0; i < 2; i++) - tmp += a.get(rc, i) * b.get(i, cc); - set(rc, cc, tmp); - } - } - - public Matf toMatf() { - Matf out = new Matf(2, 2); - for (int i = 0; i < 2; i++) { - for (int j = 0; j < 2; j++) { - out.set(i, j, get(i, j)); - } - } - return out; - } - - public String toString() { - String endl = System.getProperty("line.separator"); - return "(" + - get(0, 0) + ", " + get(0, 1) + endl + - get(1, 0) + ", " + get(1, 1) + ")"; - } -} diff --git a/src/gleem/linalg/Mat3f.java b/src/gleem/linalg/Mat3f.java deleted file mode 100644 index 024df82..0000000 --- a/src/gleem/linalg/Mat3f.java +++ /dev/null @@ -1,194 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem.linalg; - -/** 3x3 matrix class useful for simple linear algebra. Representation - is (as Mat4f) in row major order and assumes multiplication by - column vectors on the right. */ - -public class Mat3f { - private float[] data; - - /** Creates new matrix initialized to the zero matrix */ - public Mat3f() { - data = new float[9]; - } - - /** Initialize to the identity matrix. */ - public void makeIdent() { - for (int i = 0; i < 3; i++) { - for (int j = 0; j < 3; j++) { - if (i == j) { - set(i, j, 1.0f); - } else { - set(i, j, 0.0f); - } - } - } - } - - /** Gets the (i,j)th element of this matrix, where i is the row - index and j is the column index */ - public float get(int i, int j) { - return data[3 * i + j]; - } - - /** Sets the (i,j)th element of this matrix, where i is the row - index and j is the column index */ - public void set(int i, int j, float val) { - data[3 * i + j] = val; - } - - /** Set column i (i=[0..2]) to vector v. */ - public void setCol(int i, Vec3f v) { - set(0, i, v.x()); - set(1, i, v.y()); - set(2, i, v.z()); - } - - /** Set row i (i=[0..2]) to vector v. */ - public void setRow(int i, Vec3f v) { - set(i, 0, v.x()); - set(i, 1, v.y()); - set(i, 2, v.z()); - } - - /** Transpose this matrix in place. */ - public void transpose() { - float t; - t = get(0, 1); - set(0, 1, get(1, 0)); - set(1, 0, t); - - t = get(0, 2); - set(0, 2, get(2, 0)); - set(2, 0, t); - - t = get(1, 2); - set(1, 2, get(2, 1)); - set(2, 1, t); - } - - /** Return the determinant. Computed across the zeroth row. */ - public float determinant() { - return (get(0, 0) * (get(1, 1) * get(2, 2) - get(2, 1) * get(1, 2)) + - get(0, 1) * (get(2, 0) * get(1, 2) - get(1, 0) * get(2, 2)) + - get(0, 2) * (get(1, 0) * get(2, 1) - get(2, 0) * get(1, 1))); - } - - /** Full matrix inversion in place. If matrix is singular, returns - false and matrix contents are untouched. If you know the matrix - is orthonormal, you can call transpose() instead. */ - public boolean invert() { - float det = determinant(); - if (det == 0.0f) - return false; - - // Form cofactor matrix - Mat3f cf = new Mat3f(); - cf.set(0, 0, get(1, 1) * get(2, 2) - get(2, 1) * get(1, 2)); - cf.set(0, 1, get(2, 0) * get(1, 2) - get(1, 0) * get(2, 2)); - cf.set(0, 2, get(1, 0) * get(2, 1) - get(2, 0) * get(1, 1)); - cf.set(1, 0, get(2, 1) * get(0, 2) - get(0, 1) * get(2, 2)); - cf.set(1, 1, get(0, 0) * get(2, 2) - get(2, 0) * get(0, 2)); - cf.set(1, 2, get(2, 0) * get(0, 1) - get(0, 0) * get(2, 1)); - cf.set(2, 0, get(0, 1) * get(1, 2) - get(1, 1) * get(0, 2)); - cf.set(2, 1, get(1, 0) * get(0, 2) - get(0, 0) * get(1, 2)); - cf.set(2, 2, get(0, 0) * get(1, 1) - get(1, 0) * get(0, 1)); - - // Now copy back transposed - for (int i = 0; i < 3; i++) - for (int j = 0; j < 3; j++) - set(i, j, cf.get(j, i) / det); - return true; - } - - /** Multiply a 3D vector by this matrix. NOTE: src and dest must be - different vectors. */ - public void xformVec(Vec3f src, Vec3f dest) { - dest.set(get(0, 0) * src.x() + - get(0, 1) * src.y() + - get(0, 2) * src.z(), - - get(1, 0) * src.x() + - get(1, 1) * src.y() + - get(1, 2) * src.z(), - - get(2, 0) * src.x() + - get(2, 1) * src.y() + - get(2, 2) * src.z()); - } - - /** Returns this * b; creates new matrix */ - public Mat3f mul(Mat3f b) { - Mat3f tmp = new Mat3f(); - tmp.mul(this, b); - return tmp; - } - - /** this = a * b */ - public void mul(Mat3f a, Mat3f b) { - for (int rc = 0; rc < 3; rc++) - for (int cc = 0; cc < 3; cc++) { - float tmp = 0.0f; - for (int i = 0; i < 3; i++) - tmp += a.get(rc, i) * b.get(i, cc); - set(rc, cc, tmp); - } - } - - public Matf toMatf() { - Matf out = new Matf(3, 3); - for (int i = 0; i < 3; i++) { - for (int j = 0; j < 3; j++) { - out.set(i, j, get(i, j)); - } - } - return out; - } - - public String toString() { - String endl = System.getProperty("line.separator"); - return "(" + - get(0, 0) + ", " + get(0, 1) + ", " + get(0, 2) + endl + - get(1, 0) + ", " + get(1, 1) + ", " + get(1, 2) + endl + - get(2, 0) + ", " + get(2, 1) + ", " + get(2, 2) + ")"; - } -} diff --git a/src/gleem/linalg/Mat4f.java b/src/gleem/linalg/Mat4f.java deleted file mode 100644 index ed16cc6..0000000 --- a/src/gleem/linalg/Mat4f.java +++ /dev/null @@ -1,265 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem.linalg; - -/** A (very incomplete) 4x4 matrix class. Representation assumes - multiplication by column vectors on the right. */ - -public class Mat4f { - private float[] data; - - /** Creates new matrix initialized to the zero matrix */ - public Mat4f() { - data = new float[16]; - } - - /** Creates new matrix initialized to argument's contents */ - public Mat4f(Mat4f arg) { - this(); - set(arg); - } - - /** Sets this matrix to the identity matrix */ - public void makeIdent() { - for (int i = 0; i < 4; i++) { - for (int j = 0; j < 4; j++) { - if (i == j) { - set(i, j, 1.0f); - } else { - set(i, j, 0.0f); - } - } - } - } - - /** Sets this matrix to be equivalent to the given one */ - public void set(Mat4f arg) { - float[] mine = data; - float[] yours = arg.data; - for (int i = 0; i < mine.length; i++) { - mine[i] = yours[i]; - } - } - - /** Gets the (i,j)th element of this matrix, where i is the row - index and j is the column index */ - public float get(int i, int j) { - return data[4 * i + j]; - } - - /** Sets the (i,j)th element of this matrix, where i is the row - index and j is the column index */ - public void set(int i, int j, float val) { - data[4 * i + j] = val; - } - - /** Sets the translation component of this matrix (i.e., the three - top elements of the third column) without touching any of the - other parts of the matrix */ - public void setTranslation(Vec3f trans) { - set(0, 3, trans.x()); - set(1, 3, trans.y()); - set(2, 3, trans.z()); - } - - /** Sets the rotation component of this matrix (i.e., the upper left - 3x3) without touching any of the other parts of the matrix */ - public void setRotation(Rotf rot) { - rot.toMatrix(this); - } - - /** Sets the upper-left 3x3 of this matrix assuming that the given - x, y, and z vectors form an orthonormal basis */ - public void setRotation(Vec3f x, Vec3f y, Vec3f z) { - set(0, 0, x.x()); - set(1, 0, x.y()); - set(2, 0, x.z()); - - set(0, 1, y.x()); - set(1, 1, y.y()); - set(2, 1, y.z()); - - set(0, 2, z.x()); - set(1, 2, z.y()); - set(2, 2, z.z()); - } - - /** Gets the upper left 3x3 of this matrix as a rotation. Currently - does not work if there are scales. Ignores translation - component. */ - public void getRotation(Rotf rot) { - rot.fromMatrix(this); - } - - /** Sets the elements (0, 0), (1, 1), and (2, 2) with the - appropriate elements of the given three-dimensional scale - vector. Does not perform a full multiplication of the upper-left - 3x3; use this with an identity matrix in conjunction with - <code>mul</code> for that. */ - public void setScale(Vec3f scale) { - set(0, 0, scale.x()); - set(1, 1, scale.y()); - set(2, 2, scale.z()); - } - - /** Inverts this matrix assuming that it represents a rigid - transform (i.e., some combination of rotations and - translations). Assumes column vectors. Algorithm: transposes - upper left 3x3; negates translation in rightmost column and - transforms by inverted rotation. */ - public void invertRigid() { - float t; - // Transpose upper left 3x3 - t = get(0, 1); - set(0, 1, get(1, 0)); - set(1, 0, t); - t = get(0, 2); - set(0, 2, get(2, 0)); - set(2, 0, t); - t = get(1, 2); - set(1, 2, get(2, 1)); - set(2, 1, t); - // Transform negative translation by this - Vec3f negTrans = new Vec3f(-get(0, 3), -get(1, 3), -get(2, 3)); - Vec3f trans = new Vec3f(); - xformDir(negTrans, trans); - set(0, 3, trans.x()); - set(1, 3, trans.y()); - set(2, 3, trans.z()); - } - - /** Returns this * b; creates new matrix */ - public Mat4f mul(Mat4f b) { - Mat4f tmp = new Mat4f(); - tmp.mul(this, b); - return tmp; - } - - /** this = a * b */ - public void mul(Mat4f a, Mat4f b) { - for (int rc = 0; rc < 4; rc++) - for (int cc = 0; cc < 4; cc++) { - float tmp = 0.0f; - for (int i = 0; i < 4; i++) - tmp += a.get(rc, i) * b.get(i, cc); - set(rc, cc, tmp); - } - } - - /** Transpose this matrix in place. */ - public void transpose() { - float t; - for (int i = 0; i < 4; i++) { - for (int j = 0; j < i; j++) { - t = get(i, j); - set(i, j, get(j, i)); - set(j, i, t); - } - } - } - - /** Multiply a 4D vector by this matrix. NOTE: src and dest must be - different vectors. */ - public void xformVec(Vec4f src, Vec4f dest) { - for (int rc = 0; rc < 4; rc++) { - float tmp = 0.0f; - for (int cc = 0; cc < 4; cc++) { - tmp += get(rc, cc) * src.get(cc); - } - dest.set(rc, tmp); - } - } - - /** Transforms a 3D vector as though it had a homogeneous coordinate - and assuming that this matrix represents only rigid - transformations; i.e., is not a full transformation. NOTE: src - and dest must be different vectors. */ - public void xformPt(Vec3f src, Vec3f dest) { - for (int rc = 0; rc < 3; rc++) { - float tmp = 0.0f; - for (int cc = 0; cc < 3; cc++) { - tmp += get(rc, cc) * src.get(cc); - } - tmp += get(rc, 3); - dest.set(rc, tmp); - } - } - - /** Transforms src using only the upper left 3x3. NOTE: src and dest - must be different vectors. */ - public void xformDir(Vec3f src, Vec3f dest) { - for (int rc = 0; rc < 3; rc++) { - float tmp = 0.0f; - for (int cc = 0; cc < 3; cc++) { - tmp += get(rc, cc) * src.get(cc); - } - dest.set(rc, tmp); - } - } - - /** Copies data in column-major (OpenGL format) order into passed - float array, which must have length 16 or greater. */ - public void getColumnMajorData(float[] out) { - for (int i = 0; i < 4; i++) { - for (int j = 0; j < 4; j++) { - out[4 * j + i] = get(i, j); - } - } - } - - public Matf toMatf() { - Matf out = new Matf(4, 4); - for (int i = 0; i < 4; i++) { - for (int j = 0; j < 4; j++) { - out.set(i, j, get(i, j)); - } - } - return out; - } - - public String toString() { - String endl = System.getProperty("line.separator"); - return "(" + - get(0, 0) + ", " + get(0, 1) + ", " + get(0, 2) + ", " + get(0, 3) + endl + - get(1, 0) + ", " + get(1, 1) + ", " + get(1, 2) + ", " + get(1, 3) + endl + - get(2, 0) + ", " + get(2, 1) + ", " + get(2, 2) + ", " + get(2, 3) + endl + - get(3, 0) + ", " + get(3, 1) + ", " + get(3, 2) + ", " + get(3, 3) + ")"; - } -} diff --git a/src/gleem/linalg/Matf.java b/src/gleem/linalg/Matf.java deleted file mode 100644 index ae4ef92..0000000 --- a/src/gleem/linalg/Matf.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem.linalg; - -/** Arbitrary-size single-precision matrix class. Currently very - simple and only supports a few needed operations. */ - -public class Matf { - private float[] data; - private int nCol; // number of columns - private int nRow; // number of columns - - public Matf(int nRow, int nCol) { - data = new float[nRow * nCol]; - this.nCol = nCol; - this.nRow = nRow; - } - - public Matf(Matf arg) { - nRow = arg.nRow; - nCol = arg.nCol; - data = new float[nRow * nCol]; - System.arraycopy(arg.data, 0, data, 0, data.length); - } - - public int nRow() { - return nRow; - } - - public int nCol() { - return nCol; - } - - /** Gets the (i,j)th element of this matrix, where i is the row - index and j is the column index */ - public float get(int i, int j) { - return data[nCol * i + j]; - } - - /** Sets the (i,j)th element of this matrix, where i is the row - index and j is the column index */ - public void set(int i, int j, float val) { - data[nCol * i + j] = val; - } - - /** Returns transpose of this matrix; creates new matrix */ - public Matf transpose() { - Matf tmp = new Matf(nCol, nRow); - for (int i = 0; i < nRow; i++) { - for (int j = 0; j < nCol; j++) { - tmp.set(j, i, get(i, j)); - } - } - return tmp; - } - - /** Returns this * b; creates new matrix */ - public Matf mul(Matf b) throws DimensionMismatchException { - if (nCol() != b.nRow()) - throw new DimensionMismatchException(); - Matf tmp = new Matf(nRow(), b.nCol()); - for (int i = 0; i < nRow(); i++) { - for (int j = 0; j < b.nCol(); j++) { - float val = 0; - for (int t = 0; t < nCol(); t++) { - val += get(i, t) * b.get(t, j); - } - tmp.set(i, j, val); - } - } - return tmp; - } - - /** Returns this * v, assuming v is a column vector. */ - public Vecf mul(Vecf v) throws DimensionMismatchException { - if (nCol() != v.length()) { - throw new DimensionMismatchException(); - } - Vecf out = new Vecf(nRow()); - for (int i = 0; i < nRow(); i++) { - float tmp = 0; - for (int j = 0; j < nCol(); j++) { - tmp += get(i, j) * v.get(j); - } - out.set(i, tmp); - } - return out; - } - - /** If this is a 2x2 matrix, returns it as a Mat2f. */ - public Mat2f toMat2f() throws DimensionMismatchException { - if (nRow() != 2 || nCol() != 2) { - throw new DimensionMismatchException(); - } - Mat2f tmp = new Mat2f(); - for (int i = 0; i < 2; i++) { - for (int j = 0; j < 2; j++) { - tmp.set(i, j, get(i, j)); - } - } - return tmp; - } - - /** If this is a 3x3 matrix, returns it as a Mat3f. */ - public Mat3f toMat3f() throws DimensionMismatchException { - if (nRow() != 3 || nCol() != 3) { - throw new DimensionMismatchException(); - } - Mat3f tmp = new Mat3f(); - for (int i = 0; i < 3; i++) { - for (int j = 0; j < 3; j++) { - tmp.set(i, j, get(i, j)); - } - } - return tmp; - } - - /** If this is a 4x4 matrix, returns it as a Mat4f. */ - public Mat4f toMat4f() throws DimensionMismatchException { - if (nRow() != 4 || nCol() != 4) { - throw new DimensionMismatchException(); - } - Mat4f tmp = new Mat4f(); - for (int i = 0; i < 4; i++) { - for (int j = 0; j < 4; j++) { - tmp.set(i, j, get(i, j)); - } - } - return tmp; - } -} diff --git a/src/gleem/linalg/MathUtil.java b/src/gleem/linalg/MathUtil.java deleted file mode 100644 index 7415953..0000000 --- a/src/gleem/linalg/MathUtil.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem.linalg; - -/** Utility math routines. */ - -public class MathUtil { - /** Makes an arbitrary vector perpendicular to <B>src</B> and - inserts it into <B>dest</B>. Returns false if the source vector - was equal to (0, 0, 0). */ - public static boolean makePerpendicular(Vec3f src, - Vec3f dest) { - if ((src.x() == 0.0f) && (src.y() == 0.0f) && (src.z() == 0.0f)) { - return false; - } - - if (src.x() != 0.0f) { - if (src.y() != 0.0f) { - dest.set(-src.y(), src.x(), 0.0f); - } else { - dest.set(-src.z(), 0.0f, src.x()); - } - } else { - dest.set(1.0f, 0.0f, 0.0f); - } - return true; - } - - /** Returns 1 if the sign of the given argument is positive; -1 if - negative; 0 if 0. */ - public static int sgn(float f) { - if (f > 0) { - return 1; - } else if (f < 0) { - return -1; - } - return 0; - } - - /** Clamps argument between min and max values. */ - public static float clamp(float val, float min, float max) { - if (val < min) return min; - if (val > max) return max; - return val; - } - - /** Clamps argument between min and max values. */ - public static int clamp(int val, int min, int max) { - if (val < min) return min; - if (val > max) return max; - return val; - } -} diff --git a/src/gleem/linalg/NonSquareMatrixException.java b/src/gleem/linalg/NonSquareMatrixException.java deleted file mode 100644 index efc0c6a..0000000 --- a/src/gleem/linalg/NonSquareMatrixException.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem.linalg; - -/** Thrown to indicate a non-square matrix during an operation - requiring one. */ - -public class NonSquareMatrixException extends RuntimeException { - public NonSquareMatrixException() { - super(); - } - - public NonSquareMatrixException(String msg) { - super(msg); - } -} diff --git a/src/gleem/linalg/Plane.java b/src/gleem/linalg/Plane.java deleted file mode 100644 index d387806..0000000 --- a/src/gleem/linalg/Plane.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem.linalg; - -/** Represents a plane in 3D space. */ - -public class Plane { - /** Normalized */ - private Vec3f normal; - private Vec3f point; - /** Constant for faster projection and intersection */ - float c; - - /** Default constructor initializes normal to (0, 1, 0) and point to - (0, 0, 0) */ - public Plane() { - normal = new Vec3f(0, 1, 0); - point = new Vec3f(0, 0, 0); - recalc(); - } - - /** Sets all parameters of plane. Plane has normal <b>normal</b> and - goes through the point <b>point</b>. Normal does not need to be - unit length but must not be the zero vector. */ - public Plane(Vec3f normal, Vec3f point) { - this.normal = new Vec3f(normal); - this.normal.normalize(); - this.point = new Vec3f(point); - recalc(); - } - - /** Setter does some work to maintain internal caches. Normal does - not need to be unit length but must not be the zero vector. */ - public void setNormal(Vec3f normal) { - this.normal.set(normal); - this.normal.normalize(); - recalc(); - } - - /** Normal is normalized internally, so <b>normal</b> is not - necessarily equal to <code>plane.setNormal(normal); - plane.getNormal();</code> */ - public Vec3f getNormal() { - return normal; - } - - /** Setter does some work to maintain internal caches */ - public void setPoint(Vec3f point) { - this.point.set(point); - recalc(); - } - - public Vec3f getPoint() { - return point; - } - - /** Project a point onto the plane */ - public void projectPoint(Vec3f pt, - Vec3f projPt) { - float scale = normal.dot(pt) - c; - projPt.set(pt.minus(normal.times(normal.dot(point) - c))); - } - - /** Intersect a ray with the plane. Returns true if intersection occurred, false - otherwise. This is a two-sided ray cast. */ - public boolean intersectRay(Vec3f rayStart, - Vec3f rayDirection, - IntersectionPoint intPt) { - float denom = normal.dot(rayDirection); - if (denom == 0) - return false; - intPt.setT((c - normal.dot(rayStart)) / denom); - intPt.setIntersectionPoint(rayStart.plus(rayDirection.times(intPt.getT()))); - return true; - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private void recalc() { - c = normal.dot(point); - } -} diff --git a/src/gleem/linalg/PlaneUV.java b/src/gleem/linalg/PlaneUV.java deleted file mode 100644 index ff1baad..0000000 --- a/src/gleem/linalg/PlaneUV.java +++ /dev/null @@ -1,203 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem.linalg; - -/** This differs from the Plane class in that it maintains an origin - and orthonormal U, V axes in the plane so that it can project a 3D - point to a 2D one. U cross V = normal. U and V coordinates are - computed with respect to the origin. */ - -public class PlaneUV { - private Vec3f origin = new Vec3f(); - /** Normalized */ - private Vec3f normal = new Vec3f(); - private Vec3f uAxis = new Vec3f(); - private Vec3f vAxis = new Vec3f(); - - /** Default constructor initializes normal to (0, 1, 0), origin to - (0, 0, 0), U axis to (1, 0, 0) and V axis to (0, 0, -1). */ - public PlaneUV() { - setEverything(new Vec3f(0, 1, 0), - new Vec3f(0, 0, 0), - new Vec3f(1, 0, 0), - new Vec3f(0, 0, -1)); - } - - /** Takes normal vector and a point which the plane goes through - (which becomes the plane's "origin"). Normal does NOT have to be - normalized, but may not be zero vector. U and V axes are - initialized to arbitrary values. */ - public PlaneUV(Vec3f normal, Vec3f origin) { - setOrigin(origin); - setNormal(normal); - } - - /** Takes normal vector, point which plane goes through, and the "u" - axis in the plane. Computes the "v" axis by taking the cross - product of the normal and the u axis. Axis must be perpendicular - to normal. Normal and uAxis do NOT have to be normalized, but - neither may be the zero vector. */ - public PlaneUV(Vec3f normal, - Vec3f origin, - Vec3f uAxis) { - setOrigin(origin); - setNormalAndU(normal, uAxis); - } - - /** Takes normal vector, point which plane goes through, and both - the u and v axes. u axis cross v axis = normal. Normal, uAxis, and - vAxis do NOT have to be normalized, but none may be the zero - vector. */ - public PlaneUV(Vec3f normal, - Vec3f origin, - Vec3f uAxis, - Vec3f vAxis) { - setEverything(normal, origin, uAxis, vAxis); - } - - /** Set the origin, through which this plane goes and with respect - to which U and V coordinates are computed */ - public void setOrigin(Vec3f origin) { - this.origin.set(origin); - } - - public Vec3f getOrigin() { - return new Vec3f(origin); - } - - /** Normal, U and V axes must be orthogonal and satisfy U cross V = - normal, do not need to be unit length but must not be the zero - vector. */ - public void setNormalAndUV(Vec3f normal, - Vec3f uAxis, - Vec3f vAxis) { - setEverything(normal, origin, uAxis, vAxis); - } - - /** This version sets the normal vector and generates new U and V - axes. */ - public void setNormal(Vec3f normal) { - Vec3f uAxis = new Vec3f(); - MathUtil.makePerpendicular(normal, uAxis); - Vec3f vAxis = normal.cross(uAxis); - setEverything(normal, origin, uAxis, vAxis); - } - - /** This version computes the V axis from (normal cross U). */ - public void setNormalAndU(Vec3f normal, - Vec3f uAxis) { - Vec3f vAxis = normal.cross(uAxis); - setEverything(normal, origin, uAxis, vAxis); - } - - /** Normal, U and V axes are normalized internally, so, for example, - <b>normal</b> is not necessarily equal to - <code>plane.setNormal(normal); plane.getNormal();</code> */ - public Vec3f getNormal() { - return normal; - } - - public Vec3f getUAxis() { - return uAxis; - } - - public Vec3f getVAxis() { - return vAxis; - } - - /** Project a point onto the plane */ - public void projectPoint(Vec3f point, - Vec3f projPt, - Vec2f uvCoords) { - // Using projPt as a temporary - projPt.sub(point, origin); - float dotp = normal.dot(projPt); - // Component perpendicular to plane - Vec3f tmpDir = new Vec3f(); - tmpDir.set(normal); - tmpDir.scale(dotp); - projPt.sub(projPt, tmpDir); - // Take dot products with basis vectors - uvCoords.set(projPt.dot(uAxis), - projPt.dot(vAxis)); - // Add on center to intersection point - projPt.add(origin); - } - - /** Intersect a ray with this plane, outputting not only the 3D - intersection point but also the U, V coordinates of the - intersection. Returns true if intersection occurred, false - otherwise. This is a two-sided ray cast. */ - public boolean intersectRay(Vec3f rayStart, - Vec3f rayDirection, - IntersectionPoint intPt, - Vec2f uvCoords) { - float denom = rayDirection.dot(normal); - if (denom == 0.0f) - return false; - Vec3f tmpDir = new Vec3f(); - tmpDir.sub(origin, rayStart); - float t = tmpDir.dot(normal) / denom; - // Find intersection point - Vec3f tmpPt = new Vec3f(); - tmpPt.set(rayDirection); - tmpPt.scale(t); - tmpPt.add(rayStart); - intPt.setIntersectionPoint(tmpPt); - intPt.setT(t); - // Find UV coords - tmpDir.sub(intPt.getIntersectionPoint(), origin); - uvCoords.set(tmpDir.dot(uAxis), tmpDir.dot(vAxis)); - return true; - } - - private void setEverything(Vec3f normal, - Vec3f origin, - Vec3f uAxis, - Vec3f vAxis) { - this.normal.set(normal); - this.origin.set(origin); - this.uAxis.set(uAxis); - this.vAxis.set(vAxis); - this.normal.normalize(); - this.uAxis.normalize(); - this.vAxis.normalize(); - } -} diff --git a/src/gleem/linalg/Rotf.java b/src/gleem/linalg/Rotf.java deleted file mode 100644 index 4e39c21..0000000 --- a/src/gleem/linalg/Rotf.java +++ /dev/null @@ -1,309 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem.linalg; - -/** Represents a rotation with single-precision components */ - -public class Rotf { - private static float EPSILON = 1.0e-7f; - - // Representation is a quaternion. Element 0 is the scalar part (= - // cos(theta/2)), elements 1..3 the imaginary/"vector" part (= - // sin(theta/2) * axis). - private float q0; - private float q1; - private float q2; - private float q3; - - /** Default constructor initializes to the identity quaternion */ - public Rotf() { - init(); - } - - public Rotf(Rotf arg) { - set(arg); - } - - /** Axis does not need to be normalized but must not be the zero - vector. Angle is in radians. */ - public Rotf(Vec3f axis, float angle) { - set(axis, angle); - } - - /** Creates a rotation which will rotate vector "from" into vector - "to". */ - public Rotf(Vec3f from, Vec3f to) { - set(from, to); - } - - /** Re-initialize this quaternion to be the identity quaternion "e" - (i.e., no rotation) */ - public void init() { - q0 = 1; - q1 = q2 = q3 = 0; - } - - /** Test for "approximate equality" -- performs componentwise test - to see whether difference between all components is less than - epsilon. */ - public boolean withinEpsilon(Rotf arg, float epsilon) { - return ((Math.abs(q0 - arg.q0) < epsilon) && - (Math.abs(q1 - arg.q1) < epsilon) && - (Math.abs(q2 - arg.q2) < epsilon) && - (Math.abs(q3 - arg.q3) < epsilon)); - } - - /** Axis does not need to be normalized but must not be the zero - vector. Angle is in radians. */ - public void set(Vec3f axis, float angle) { - float halfTheta = angle / 2.0f; - q0 = (float) Math.cos(halfTheta); - float sinHalfTheta = (float) Math.sin(halfTheta); - Vec3f realAxis = new Vec3f(axis); - realAxis.normalize(); - q1 = realAxis.x() * sinHalfTheta; - q2 = realAxis.y() * sinHalfTheta; - q3 = realAxis.z() * sinHalfTheta; - } - - public void set(Rotf arg) { - q0 = arg.q0; - q1 = arg.q1; - q2 = arg.q2; - q3 = arg.q3; - } - - /** Sets this rotation to that which will rotate vector "from" into - vector "to". from and to do not have to be the same length. */ - public void set(Vec3f from, Vec3f to) { - Vec3f axis = from.cross(to); - if (axis.lengthSquared() < EPSILON) { - init(); - return; - } - float dotp = from.dot(to); - float denom = from.length() * to.length(); - if (denom < EPSILON) { - init(); - return; - } - dotp /= denom; - set(axis, (float) Math.acos(dotp)); - } - - /** Returns angle (in radians) and mutates the given vector to be - the axis. */ - public float get(Vec3f axis) { - // FIXME: Is this numerically stable? Is there a better way to - // extract the angle from a quaternion? - // NOTE: remove (float) to illustrate compiler bug - float retval = (float) (2.0f * Math.acos(q0)); - axis.set(q1, q2, q3); - float len = axis.length(); - if (len == 0.0f) { - axis.set(0, 0, 1); - } else { - axis.scale(1.0f / len); - } - return retval; - } - - /** Returns inverse of this rotation; creates new rotation */ - public Rotf inverse() { - Rotf tmp = new Rotf(this); - tmp.invert(); - return tmp; - } - - /** Mutate this quaternion to be its inverse. This is equivalent to - the conjugate of the quaternion. */ - public void invert() { - q1 = -q1; - q2 = -q2; - q3 = -q3; - } - - /** Length of this quaternion in four-space */ - public float length() { - return (float) Math.sqrt(lengthSquared()); - } - - /** This dotted with this */ - public float lengthSquared() { - return (q0 * q0 + - q1 * q1 + - q2 * q2 + - q3 * q3); - } - - /** Make this quaternion a unit quaternion again. If you are - composing dozens of quaternions you probably should call this - periodically to ensure that you have a valid rotation. */ - public void normalize() { - float len = length(); - q0 /= len; - q1 /= len; - q2 /= len; - q3 /= len; - } - - /** Returns this * b, in that order; creates new rotation */ - public Rotf times(Rotf b) { - Rotf tmp = new Rotf(); - tmp.mul(this, b); - return tmp; - } - - /** Compose two rotations: this = A * B in that order. NOTE that - because we assume a column vector representation that this - implies that a vector rotated by the cumulative rotation will be - rotated first by B, then A. NOTE: "this" must be different than - both a and b. */ - public void mul(Rotf a, Rotf b) { - q0 = (a.q0 * b.q0 - a.q1 * b.q1 - - a.q2 * b.q2 - a.q3 * b.q3); - q1 = (a.q0 * b.q1 + a.q1 * b.q0 + - a.q2 * b.q3 - a.q3 * b.q2); - q2 = (a.q0 * b.q2 + a.q2 * b.q0 - - a.q1 * b.q3 + a.q3 * b.q1); - q3 = (a.q0 * b.q3 + a.q3 * b.q0 + - a.q1 * b.q2 - a.q2 * b.q1); - } - - /** Turns this rotation into a 3x3 rotation matrix. NOTE: only - mutates the upper-left 3x3 of the passed Mat4f. Implementation - from B. K. P. Horn's <u>Robot Vision</u> textbook. */ - public void toMatrix(Mat4f mat) { - float q00 = q0 * q0; - float q11 = q1 * q1; - float q22 = q2 * q2; - float q33 = q3 * q3; - // Diagonal elements - mat.set(0, 0, q00 + q11 - q22 - q33); - mat.set(1, 1, q00 - q11 + q22 - q33); - mat.set(2, 2, q00 - q11 - q22 + q33); - // 0,1 and 1,0 elements - float q03 = q0 * q3; - float q12 = q1 * q2; - mat.set(0, 1, 2.0f * (q12 - q03)); - mat.set(1, 0, 2.0f * (q03 + q12)); - // 0,2 and 2,0 elements - float q02 = q0 * q2; - float q13 = q1 * q3; - mat.set(0, 2, 2.0f * (q02 + q13)); - mat.set(2, 0, 2.0f * (q13 - q02)); - // 1,2 and 2,1 elements - float q01 = q0 * q1; - float q23 = q2 * q3; - mat.set(1, 2, 2.0f * (q23 - q01)); - mat.set(2, 1, 2.0f * (q01 + q23)); - } - - /** Turns the upper left 3x3 of the passed matrix into a rotation. - Implementation from Watt and Watt, <u>Advanced Animation and - Rendering Techniques</u>. - @see gleem.linalg.Mat4f#getRotation */ - public void fromMatrix(Mat4f mat) { - // FIXME: Should reimplement to follow Horn's advice of using - // eigenvector decomposition to handle roundoff error in given - // matrix. - - float tr, s; - int i, j, k; - - tr = mat.get(0, 0) + mat.get(1, 1) + mat.get(2, 2); - if (tr > 0.0) { - s = (float) Math.sqrt(tr + 1.0f); - q0 = s * 0.5f; - s = 0.5f / s; - q1 = (mat.get(2, 1) - mat.get(1, 2)) * s; - q2 = (mat.get(0, 2) - mat.get(2, 0)) * s; - q3 = (mat.get(1, 0) - mat.get(0, 1)) * s; - } else { - i = 0; - if (mat.get(1, 1) > mat.get(0, 0)) - i = 1; - if (mat.get(2, 2) > mat.get(i, i)) - i = 2; - j = (i+1)%3; - k = (j+1)%3; - s = (float) Math.sqrt( (mat.get(i, i) - (mat.get(j, j) + mat.get(k, k))) + 1.0f); - setQ(i+1, s * 0.5f); - s = 0.5f / s; - q0 = (mat.get(k, j) - mat.get(j, k)) * s; - setQ(j+1, (mat.get(j, i) + mat.get(i, j)) * s); - setQ(k+1, (mat.get(k, i) + mat.get(i, k)) * s); - } - } - - /** Rotate a vector by this quaternion. Implementation is from - Horn's <u>Robot Vision</u>. NOTE: src and dest must be different - vectors. */ - public void rotateVector(Vec3f src, Vec3f dest) { - Vec3f qVec = new Vec3f(q1, q2, q3); - Vec3f qCrossX = qVec.cross(src); - Vec3f qCrossXCrossQ = qCrossX.cross(qVec); - qCrossX.scale(2.0f * q0); - qCrossXCrossQ.scale(-2.0f); - dest.add(src, qCrossX); - dest.add(dest, qCrossXCrossQ); - } - - /** Rotate a vector by this quaternion, returning newly-allocated result. */ - public Vec3f rotateVector(Vec3f src) { - Vec3f tmp = new Vec3f(); - rotateVector(src, tmp); - return tmp; - } - - public String toString() { - return "(" + q0 + ", " + q1 + ", " + q2 + ", " + q3 + ")"; - } - - private void setQ(int i, float val) { - switch (i) { - case 0: q0 = val; break; - case 1: q1 = val; break; - case 2: q2 = val; break; - case 3: q3 = val; break; - default: throw new IndexOutOfBoundsException(); - } - } -} diff --git a/src/gleem/linalg/SingularMatrixException.java b/src/gleem/linalg/SingularMatrixException.java deleted file mode 100644 index fa6ef32..0000000 --- a/src/gleem/linalg/SingularMatrixException.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem.linalg; - -/** Thrown to indicate a singular matrix during an inversion or - related operation. */ - -public class SingularMatrixException extends RuntimeException { - public SingularMatrixException() { - super(); - } - - public SingularMatrixException(String msg) { - super(msg); - } -} diff --git a/src/gleem/linalg/Vec2f.java b/src/gleem/linalg/Vec2f.java deleted file mode 100644 index 4c02b61..0000000 --- a/src/gleem/linalg/Vec2f.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem.linalg; - -/** 2-element single-precision vector */ - -public class Vec2f { - private float x; - private float y; - - public Vec2f() {} - - public Vec2f(Vec2f arg) { - this(arg.x, arg.y); - } - - public Vec2f(float x, float y) { - set(x, y); - } - - public Vec2f copy() { - return new Vec2f(this); - } - - public void set(Vec2f arg) { - set(arg.x, arg.y); - } - - public void set(float x, float y) { - this.x = x; - this.y = y; - } - - /** Sets the ith component, 0 <= i < 2 */ - public void set(int i, float val) { - switch (i) { - case 0: x = val; break; - case 1: y = val; break; - default: throw new IndexOutOfBoundsException(); - } - } - - /** Gets the ith component, 0 <= i < 2 */ - public float get(int i) { - switch (i) { - case 0: return x; - case 1: return y; - default: throw new IndexOutOfBoundsException(); - } - } - - public float x() { return x; } - public float y() { return y; } - - public void setX(float x) { this.x = x; } - public void setY(float y) { this.y = y; } - - public float dot(Vec2f arg) { - return x * arg.x + y * arg.y; - } - - public float length() { - return (float) Math.sqrt(lengthSquared()); - } - - public float lengthSquared() { - return this.dot(this); - } - - public void normalize() { - float len = length(); - if (len == 0.0f) return; - scale(1.0f / len); - } - - /** Returns this * val; creates new vector */ - public Vec2f times(float val) { - Vec2f tmp = new Vec2f(this); - tmp.scale(val); - return tmp; - } - - /** this = this * val */ - public void scale(float val) { - x *= val; - y *= val; - } - - /** Returns this + arg; creates new vector */ - public Vec2f plus(Vec2f arg) { - Vec2f tmp = new Vec2f(); - tmp.add(this, arg); - return tmp; - } - - /** this = this + b */ - public void add(Vec2f b) { - add(this, b); - } - - /** this = a + b */ - public void add(Vec2f a, Vec2f b) { - x = a.x + b.x; - y = a.y + b.y; - } - - /** Returns this + s * arg; creates new vector */ - public Vec2f addScaled(float s, Vec2f arg) { - Vec2f tmp = new Vec2f(); - tmp.addScaled(this, s, arg); - return tmp; - } - - /** this = a + s * b */ - public void addScaled(Vec2f a, float s, Vec2f b) { - x = a.x + s * b.x; - y = a.y + s * b.y; - } - - /** Returns this - arg; creates new vector */ - public Vec2f minus(Vec2f arg) { - Vec2f tmp = new Vec2f(); - tmp.sub(this, arg); - return tmp; - } - - /** this = this - b */ - public void sub(Vec2f b) { - sub(this, b); - } - - /** this = a - b */ - public void sub(Vec2f a, Vec2f b) { - x = a.x - b.x; - y = a.y - b.y; - } - - public Vecf toVecf() { - Vecf out = new Vecf(2); - for (int i = 0; i < 2; i++) { - out.set(i, get(i)); - } - return out; - } - - public String toString() { - return "(" + x + ", " + y + ")"; - } -} diff --git a/src/gleem/linalg/Vec3d.java b/src/gleem/linalg/Vec3d.java deleted file mode 100644 index 7a7a907..0000000 --- a/src/gleem/linalg/Vec3d.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * See the file GLEEM-LICENSE.txt in the doc/ directory for licensing terms. - */ - -package gleem.linalg; - -/** 3-element double-precision vector */ - -public class Vec3d { - private double x; - private double y; - private double z; - - public Vec3d() {} - - public Vec3d(Vec3d arg) { - set(arg); - } - - public Vec3d(double x, double y, double z) { - set(x, y, z); - } - - public Vec3d copy() { - return new Vec3d(this); - } - - /** Convert to single-precision */ - public Vec3f toFloat() { - return new Vec3f((float) x, (float) y, (float) z); - } - - public void set(Vec3d arg) { - set(arg.x, arg.y, arg.z); - } - - public void set(double x, double y, double z) { - this.x = x; - this.y = y; - this.z = z; - } - - /** Sets the ith component, 0 <= i < 3 */ - public void set(int i, double val) { - switch (i) { - case 0: x = val; break; - case 1: y = val; break; - case 2: z = val; break; - default: throw new IndexOutOfBoundsException(); - } - } - - /** Gets the ith component, 0 <= i < 3 */ - public double get(int i) { - switch (i) { - case 0: return x; - case 1: return y; - case 2: return z; - default: throw new IndexOutOfBoundsException(); - } - } - - public double x() { return x; } - public double y() { return y; } - public double z() { return z; } - - public void setX(double x) { this.x = x; } - public void setY(double y) { this.y = y; } - public void setZ(double z) { this.z = z; } - - public double dot(Vec3d arg) { - return x * arg.x + y * arg.y + z * arg.z; - } - - public double length() { - return Math.sqrt(lengthSquared()); - } - - public double lengthSquared() { - return this.dot(this); - } - - public void normalize() { - double len = length(); - if (len == 0.0) return; - scale(1.0f / len); - } - - /** Returns this * val; creates new vector */ - public Vec3d times(double val) { - Vec3d tmp = new Vec3d(this); - tmp.scale(val); - return tmp; - } - - /** this = this * val */ - public void scale(double val) { - x *= val; - y *= val; - z *= val; - } - - /** Returns this + arg; creates new vector */ - public Vec3d plus(Vec3d arg) { - Vec3d tmp = new Vec3d(); - tmp.add(this, arg); - return tmp; - } - - /** this = this + b */ - public void add(Vec3d b) { - add(this, b); - } - - /** this = a + b */ - public void add(Vec3d a, Vec3d b) { - x = a.x + b.x; - y = a.y + b.y; - z = a.z + b.z; - } - - /** Returns this + s * arg; creates new vector */ - public Vec3d addScaled(double s, Vec3d arg) { - Vec3d tmp = new Vec3d(); - tmp.addScaled(this, s, arg); - return tmp; - } - - /** this = a + s * b */ - public void addScaled(Vec3d a, double s, Vec3d b) { - x = a.x + s * b.x; - y = a.y + s * b.y; - z = a.z + s * b.z; - } - - /** Returns this - arg; creates new vector */ - public Vec3d minus(Vec3d arg) { - Vec3d tmp = new Vec3d(); - tmp.sub(this, arg); - return tmp; - } - - /** this = this - b */ - public void sub(Vec3d b) { - sub(this, b); - } - - /** this = a - b */ - public void sub(Vec3d a, Vec3d b) { - x = a.x - b.x; - y = a.y - b.y; - z = a.z - b.z; - } - - /** Returns this cross arg; creates new vector */ - public Vec3d cross(Vec3d arg) { - Vec3d tmp = new Vec3d(); - tmp.cross(this, arg); - return tmp; - } - - /** this = a cross b. NOTE: "this" must be a different vector than - both a and b. */ - public void cross(Vec3d a, Vec3d b) { - x = a.y * b.z - a.z * b.y; - y = a.z * b.x - a.x * b.z; - z = a.x * b.y - a.y * b.x; - } - - public String toString() { - return "(" + x + ", " + y + ", " + z + ")"; - } -} diff --git a/src/gleem/linalg/Vec3f.java b/src/gleem/linalg/Vec3f.java deleted file mode 100644 index 5468f3e..0000000 --- a/src/gleem/linalg/Vec3f.java +++ /dev/null @@ -1,232 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem.linalg; - -/** 3-element single-precision vector */ - -public class Vec3f { - public static final Vec3f X_AXIS = new Vec3f( 1, 0, 0); - public static final Vec3f Y_AXIS = new Vec3f( 0, 1, 0); - public static final Vec3f Z_AXIS = new Vec3f( 0, 0, 1); - public static final Vec3f NEG_X_AXIS = new Vec3f(-1, 0, 0); - public static final Vec3f NEG_Y_AXIS = new Vec3f( 0, -1, 0); - public static final Vec3f NEG_Z_AXIS = new Vec3f( 0, 0, -1); - - private float x; - private float y; - private float z; - - public Vec3f() {} - - public Vec3f(Vec3f arg) { - set(arg); - } - - public Vec3f(float x, float y, float z) { - set(x, y, z); - } - - public Vec3f copy() { - return new Vec3f(this); - } - - /** Convert to double-precision */ - public Vec3d toDouble() { - return new Vec3d(x, y, z); - } - - public void set(Vec3f arg) { - set(arg.x, arg.y, arg.z); - } - - public void set(float x, float y, float z) { - this.x = x; - this.y = y; - this.z = z; - } - - /** Sets the ith component, 0 <= i < 3 */ - public void set(int i, float val) { - switch (i) { - case 0: x = val; break; - case 1: y = val; break; - case 2: z = val; break; - default: throw new IndexOutOfBoundsException(); - } - } - - /** Gets the ith component, 0 <= i < 3 */ - public float get(int i) { - switch (i) { - case 0: return x; - case 1: return y; - case 2: return z; - default: throw new IndexOutOfBoundsException(); - } - } - - public float x() { return x; } - public float y() { return y; } - public float z() { return z; } - - public void setX(float x) { this.x = x; } - public void setY(float y) { this.y = y; } - public void setZ(float z) { this.z = z; } - - public float dot(Vec3f arg) { - return x * arg.x + y * arg.y + z * arg.z; - } - - public float length() { - return (float) Math.sqrt(lengthSquared()); - } - - public float lengthSquared() { - return this.dot(this); - } - - public void normalize() { - float len = length(); - if (len == 0.0f) return; - scale(1.0f / len); - } - - /** Returns this * val; creates new vector */ - public Vec3f times(float val) { - Vec3f tmp = new Vec3f(this); - tmp.scale(val); - return tmp; - } - - /** this = this * val */ - public void scale(float val) { - x *= val; - y *= val; - z *= val; - } - - /** Returns this + arg; creates new vector */ - public Vec3f plus(Vec3f arg) { - Vec3f tmp = new Vec3f(); - tmp.add(this, arg); - return tmp; - } - - /** this = this + b */ - public void add(Vec3f b) { - add(this, b); - } - - /** this = a + b */ - public void add(Vec3f a, Vec3f b) { - x = a.x + b.x; - y = a.y + b.y; - z = a.z + b.z; - } - - /** Returns this + s * arg; creates new vector */ - public Vec3f addScaled(float s, Vec3f arg) { - Vec3f tmp = new Vec3f(); - tmp.addScaled(this, s, arg); - return tmp; - } - - /** this = a + s * b */ - public void addScaled(Vec3f a, float s, Vec3f b) { - x = a.x + s * b.x; - y = a.y + s * b.y; - z = a.z + s * b.z; - } - - /** Returns this - arg; creates new vector */ - public Vec3f minus(Vec3f arg) { - Vec3f tmp = new Vec3f(); - tmp.sub(this, arg); - return tmp; - } - - /** this = this - b */ - public void sub(Vec3f b) { - sub(this, b); - } - - /** this = a - b */ - public void sub(Vec3f a, Vec3f b) { - x = a.x - b.x; - y = a.y - b.y; - z = a.z - b.z; - } - - /** Returns this cross arg; creates new vector */ - public Vec3f cross(Vec3f arg) { - Vec3f tmp = new Vec3f(); - tmp.cross(this, arg); - return tmp; - } - - /** this = a cross b. NOTE: "this" must be a different vector than - both a and b. */ - public void cross(Vec3f a, Vec3f b) { - x = a.y * b.z - a.z * b.y; - y = a.z * b.x - a.x * b.z; - z = a.x * b.y - a.y * b.x; - } - - /** Sets each component of this vector to the product of the - component with the corresponding component of the argument - vector. */ - public void componentMul(Vec3f arg) { - x *= arg.x; - y *= arg.y; - z *= arg.z; - } - - public Vecf toVecf() { - Vecf out = new Vecf(3); - for (int i = 0; i < 3; i++) { - out.set(i, get(i)); - } - return out; - } - - public String toString() { - return "(" + x + ", " + y + ", " + z + ")"; - } -} diff --git a/src/gleem/linalg/Vec4f.java b/src/gleem/linalg/Vec4f.java deleted file mode 100644 index bfb53ab..0000000 --- a/src/gleem/linalg/Vec4f.java +++ /dev/null @@ -1,216 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem.linalg; - -/** 4-element single-precision vector */ - -public class Vec4f { - private float x; - private float y; - private float z; - private float w; - - public Vec4f() {} - - public Vec4f(Vec4f arg) { - set(arg); - } - - public Vec4f(float x, float y, float z, float w) { - set(x, y, z, w); - } - - public Vec4f copy() { - return new Vec4f(this); - } - - public void set(Vec4f arg) { - set(arg.x, arg.y, arg.z, arg.w); - } - - public void set(float x, float y, float z, float w) { - this.x = x; - this.y = y; - this.z = z; - this.w = w; - } - - /** Sets the ith component, 0 <= i < 4 */ - public void set(int i, float val) { - switch (i) { - case 0: x = val; break; - case 1: y = val; break; - case 2: z = val; break; - case 3: w = val; break; - default: throw new IndexOutOfBoundsException(); - } - } - - /** Gets the ith component, 0 <= i < 4 */ - public float get(int i) { - switch (i) { - case 0: return x; - case 1: return y; - case 2: return z; - case 3: return w; - default: throw new IndexOutOfBoundsException(); - } - } - - public float x() { return x; } - public float y() { return y; } - public float z() { return z; } - public float w() { return w; } - - public void setX(float x) { this.x = x; } - public void setY(float y) { this.y = y; } - public void setZ(float z) { this.z = z; } - public void setW(float w) { this.w = w; } - - public float dot(Vec4f arg) { - return x * arg.x + y * arg.y + z * arg.z + w * arg.w; - } - - public float length() { - return (float) Math.sqrt(lengthSquared()); - } - - public float lengthSquared() { - return this.dot(this); - } - - public void normalize() { - float len = length(); - if (len == 0.0f) return; - scale(1.0f / len); - } - - /** Returns this * val; creates new vector */ - public Vec4f times(float val) { - Vec4f tmp = new Vec4f(this); - tmp.scale(val); - return tmp; - } - - /** this = this * val */ - public void scale(float val) { - x *= val; - y *= val; - z *= val; - w *= val; - } - - /** Returns this + arg; creates new vector */ - public Vec4f plus(Vec4f arg) { - Vec4f tmp = new Vec4f(); - tmp.add(this, arg); - return tmp; - } - - /** this = this + b */ - public void add(Vec4f b) { - add(this, b); - } - - /** this = a + b */ - public void add(Vec4f a, Vec4f b) { - x = a.x + b.x; - y = a.y + b.y; - z = a.z + b.z; - w = a.w + b.w; - } - - /** Returns this + s * arg; creates new vector */ - public Vec4f addScaled(float s, Vec4f arg) { - Vec4f tmp = new Vec4f(); - tmp.addScaled(this, s, arg); - return tmp; - } - - /** this = a + s * b */ - public void addScaled(Vec4f a, float s, Vec4f b) { - x = a.x + s * b.x; - y = a.y + s * b.y; - z = a.z + s * b.z; - w = a.w + s * b.w; - } - - /** Returns this - arg; creates new vector */ - public Vec4f minus(Vec4f arg) { - Vec4f tmp = new Vec4f(); - tmp.sub(this, arg); - return tmp; - } - - /** this = this - b */ - public void sub(Vec4f b) { - sub(this, b); - } - - /** this = a - b */ - public void sub(Vec4f a, Vec4f b) { - x = a.x - b.x; - y = a.y - b.y; - z = a.z - b.z; - w = a.w - b.w; - } - - /** Sets each component of this vector to the product of the - component with the corresponding component of the argument - vector. */ - public void componentMul(Vec4f arg) { - x *= arg.x; - y *= arg.y; - z *= arg.z; - w *= arg.w; - } - - public Vecf toVecf() { - Vecf out = new Vecf(4); - for (int i = 0; i < 4; i++) { - out.set(i, get(i)); - } - return out; - } - - public String toString() { - return "(" + x + ", " + y + ", " + z + ")"; - } -} diff --git a/src/gleem/linalg/Vecf.java b/src/gleem/linalg/Vecf.java deleted file mode 100644 index 1249695..0000000 --- a/src/gleem/linalg/Vecf.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem.linalg; - -/** Arbitrary-length single-precision vector class. Currently very - simple and only supports a few needed operations. */ - -public class Vecf { - private float[] data; - - public Vecf(int n) { - data = new float[n]; - } - - public Vecf(Vecf arg) { - data = new float[arg.data.length]; - System.arraycopy(arg.data, 0, data, 0, data.length); - } - - public int length() { - return data.length; - } - - public float get(int i) { - return data[i]; - } - - public void set(int i, float val) { - data[i] = val; - } - - public Vec2f toVec2f() throws DimensionMismatchException { - if (length() != 2) - throw new DimensionMismatchException(); - Vec2f out = new Vec2f(); - for (int i = 0; i < 2; i++) { - out.set(i, get(i)); - } - return out; - } - - public Vec3f toVec3f() throws DimensionMismatchException { - if (length() != 3) - throw new DimensionMismatchException(); - Vec3f out = new Vec3f(); - for (int i = 0; i < 3; i++) { - out.set(i, get(i)); - } - return out; - } - - public Veci toInt() { - Veci out = new Veci(length()); - for (int i = 0; i < length(); i++) { - out.set(i, (int) get(i)); - } - return out; - } -} diff --git a/src/gleem/linalg/Veci.java b/src/gleem/linalg/Veci.java deleted file mode 100644 index d7705e7..0000000 --- a/src/gleem/linalg/Veci.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * gleem -- OpenGL Extremely Easy-To-Use Manipulators. - * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected]) - * - * Copying, distribution and use of this software in source and binary - * forms, with or without modification, is permitted provided that the - * following conditions are met: - * - * Distributions of source code must reproduce the copyright notice, - * this list of conditions and the following disclaimer in the source - * code header files; and Distributions of binary code must reproduce - * the copyright notice, this list of conditions and the following - * disclaimer in the documentation, Read me file, license file and/or - * other materials provided with the software distribution. - * - * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright - * holder may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY - * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF - * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE - * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE - * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST - * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT - * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, - * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT - * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED - * WARRANTY OF FITNESS FOR SUCH USES. - */ - -package gleem.linalg; - -/** Arbitrary-length integer vector class. Currently very simple and - only supports a few needed operations. */ - -public class Veci { - private int[] data; - - public Veci(int n) { - data = new int[n]; - } - - public Veci(Veci arg) { - data = new int[arg.data.length]; - System.arraycopy(arg.data, 0, data, 0, data.length); - } - - public int length() { - return data.length; - } - - public int get(int i) { - return data[i]; - } - - public void set(int i, int val) { - data[i] = val; - } - - public Vec2f toVec2f() throws DimensionMismatchException { - if (length() != 2) - throw new DimensionMismatchException(); - Vec2f out = new Vec2f(); - for (int i = 0; i < 2; i++) { - out.set(i, get(i)); - } - return out; - } - - public Vec3f toVec3f() throws DimensionMismatchException { - if (length() != 3) - throw new DimensionMismatchException(); - Vec3f out = new Vec3f(); - for (int i = 0; i < 3; i++) { - out.set(i, get(i)); - } - return out; - } - - public Vecf toVecf() { - Vecf out = new Vecf(length()); - for (int i = 0; i < length(); i++) { - out.set(i, get(i)); - } - return out; - } -} diff --git a/src/gleem/linalg/package.html b/src/gleem/linalg/package.html deleted file mode 100644 index bc1e60f..0000000 --- a/src/gleem/linalg/package.html +++ /dev/null @@ -1,13 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> -<html> -<body> - -Linear algebra and classes implementing basic 3D operations. - -<P> - -See the <a href = "http://www.media.mit.edu/~kbrussel/gleem/"> gleem -home page </a> for more information. - -</body> -</html> diff --git a/src/gleem/package.html b/src/gleem/package.html deleted file mode 100644 index 2dc6d32..0000000 --- a/src/gleem/package.html +++ /dev/null @@ -1,13 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> -<html> -<body> - -Widgets and auxiliary classes for interaction with a 3D scene. - -<P> - -See the <a href = "http://www.media.mit.edu/~kbrussel/gleem/"> gleem -home page </a> for more information. - -</body> -</html> |